00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef WSCOUT_GUI_MAIN_WINDOW_HH_
00024 # define WSCOUT_GUI_MAIN_WINDOW_HH_
00025
00026 # include <QtGui/QMainWindow>
00027 # include <QtGui/QLabel>
00028 # include <QtGui/QProgressDialog>
00029 # include <QtGui/QSpinBox>
00030 # include <QtGui/QShortcut>
00031 # include <QtGui/QComboBox>
00032 # include <QtGui/QCheckBox>
00033 # include <QtGui/QTabWidget>
00034
00035 # include "wscout_gui_trace.hh"
00036 # include "wscout_gui_hex_dump_dock.hh"
00037 # include "wscout_gui_find_dialog.hh"
00038
00039 namespace wscout
00040 {
00041
00042 namespace gui
00043 {
00044
00046 class MainWindow : public QMainWindow
00047 {
00048 Q_OBJECT
00049
00050 enum
00051 {
00052 status_bar_vmargin = 1,
00053 status_bar_hmargin = 4
00054 };
00055
00056 public:
00058 MainWindow();
00059
00061 MainWindow(const MainWindow&);
00062
00063 public slots:
00065 bool open(const QString& directoryHint = QString ());
00066
00068 bool openTrace(const QString&);
00069
00071 bool openInNewWindow() const;
00072
00074 MainWindow* duplicateWindow() const;
00075
00077 MainWindow* newWindow(bool show = true) const;
00078
00084 void closeTab();
00085
00087 void filter();
00088
00090 void find(bool show = true);
00091
00093 void stepTab(int);
00094
00096 void prevTab();
00097
00099 void nextTab();
00100
00102 void begin();
00103
00104
00106 void end();
00107
00109 void forward();
00110
00112 void backward();
00113
00115 void about();
00116
00118 bool writeSelection(QString file = QString (),
00119 bool open = true);
00120
00121 private slots:
00122 void found(int pos);
00123 void notFound();
00124 void tabChanged(int pos);
00125 void updateTrace();
00126 void updatePosition(int);
00127 void FinderEditingFinished();
00128 void swapContent(int);
00129 void updateHexDock(int);
00130 void showHexDock(int);
00131
00132 private:
00133 struct NewProgressDialog
00134 {
00135 NewProgressDialog(QProgressDialog**, QMainWindow*);
00136
00137 void operator () (std::streampos, std::streampos);
00138 private:
00139 QProgressDialog** d_;
00140 QMainWindow* w_;
00141 };
00142
00143 struct UpdateProgressDialog
00144 {
00145 UpdateProgressDialog(QProgressDialog**);
00146
00147 const std::string* operator () (std::streampos);
00148 private:
00149 QProgressDialog** d_;
00150 };
00151
00152 void addTrace(Trace*);
00153 Trace* trace();
00154 const Trace* trace() const;
00155 QString openDirectoryHint() const;
00156
00157 void initWidgets(const MainWindow* w = 0);
00158 void setupMenuBar();
00159 void setupToolBar();
00160 void setupCentralWidget();
00161 void setupStatusBar();
00162 void setupHexDock(const MainWindow* w);
00163 static MainWindow* setupNewWindow(MainWindow* w, bool show);
00164
00165 QTabWidget tabs_;
00166 QLabel trace_name_;
00167 QLabel trace_size_;
00168 QLabel position_;
00169 QComboBox step_;
00170 QSpinBox finder_;
00171 QCheckBox swap_;
00172 QShortcut focus_finder_;
00173 HexDumpDock hexFrameDock_;
00174 std::vector<QAction*> trace_related_actions_;
00175 std::vector<QAction*> tabs_related_actions_;
00176 FindDialog current_search_;
00177 };
00178
00179 }
00180
00181 }
00182
00183 # include "wscout_gui_main_window.hxx"
00184
00185 #endif // ! WSCOUT_GUI_MAIN_WINDOW_HH_