1 // Copyright (c) 2016 The SigViewer Development Team 2 // Licensed under the GNU General Public License (GPL) 3 // https://www.gnu.org/licenses/gpl 4 5 6 #ifndef MAIN_WINDOW_H 7 #define MAIN_WINDOW_H 8 9 #include "gui/application_context.h" 10 11 #include <QMainWindow> 12 #include <QProgressBar> 13 14 class QAction; 15 class QComboBox; 16 class QMenu; 17 class QLabel; 18 19 namespace sigviewer 20 { 21 22 // main window 23 class MainWindow : public QMainWindow 24 { 25 Q_OBJECT 26 27 public: 28 MainWindow (QSharedPointer<ApplicationContext> application_context); ~MainWindow()29 virtual ~MainWindow () {} 30 31 void setStatusBarSignalLength(float64 length); 32 void setStatusBarNrChannels(int32 nr_channels); 33 34 void setRecentFiles(const QStringList& recent_file_list); 35 36 signals: 37 void recentFileActivated(QAction* recent_file_action); 38 void recentFileMenuAboutToShow(); 39 40 41 protected: 42 virtual void closeEvent(QCloseEvent* close_event); 43 virtual void dropEvent (QDropEvent* event); 44 virtual void dragEnterEvent(QDragEnterEvent *event); 45 virtual void resizeEvent (QResizeEvent* event); 46 private slots: 47 void toggleStatusBar (bool visible); 48 void toggleAllToolbars (); 49 void addBackgroundProcessToStatusBar (QString name, int max); 50 void updateBackgroundProcessonStatusBar (QString name, int value); 51 void removeBackgroundProcessFromStatusBar (QString name); 52 53 private: 54 QAction* action (QString const& action_id); 55 56 MainWindow(const MainWindow&); 57 const MainWindow& operator=(const MainWindow&); 58 59 void initActions(); 60 void initToolBars(); 61 void initMenus (QSharedPointer<ApplicationContext> application_context); 62 void initStatusBar(); 63 64 QMenu* file_menu_; 65 QMenu* file_recent_files_menu_; 66 QMenu* edit_menu_; 67 QMenu* mouse_mode_menu_; 68 QMenu* view_menu_; 69 QMenu* view_toolbar_views_menu_; 70 QMenu* tools_menu_; 71 QMenu* help_menu_; 72 73 QToolBar* file_toolbar_; 74 QToolBar* mouse_mode_toolbar_; 75 QToolBar* view_toolbar_; 76 77 QLabel* status_bar_signal_length_label_; 78 QLabel* status_bar_nr_channels_label_; 79 80 QAction* toggle_all_toolbars_; 81 QMap<QString, QProgressBar*> background_processes_progressbars_; 82 QMap<QString, QLabel*> background_processes_labels_; 83 }; 84 85 } 86 87 #endif 88 89