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