#ifndef EMAINWINDOW_H #define EMAINWINDOW_H #include #include #include #include #include #include #include #include #include #include #include "session_manager.h" #include "ribbon.h" class UAction: public QAction { Q_OBJECT public: UAction(int ind,const QString & text, QObject * parent): QAction(text, parent) { index = ind; connect(this, SIGNAL(triggered()), this, SLOT(triggered())); connect(this, SIGNAL(toggled(bool)), this, SLOT(toggled(bool))); connect(this, SIGNAL(hovered()), this, SLOT(hovered())); } UAction(int ind, const QIcon & icon, const QString & text, QObject * parent): QAction(icon, text, parent) { index = ind; connect(this, SIGNAL(triggered()), this, SLOT(triggered())); connect(this, SIGNAL(toggled(bool)), this, SLOT(toggled(bool))); connect(this, SIGNAL(hovered()), this, SLOT(hovered())); } public slots: void show() {setVisible(true);} void hide() {setVisible(false);} void setCheckedTrue() {setChecked(true);} void setCheckedFalse() {setChecked(false);} private: int index; private slots: void triggered() {emit itriggered(this, index);} void toggled(bool t) {emit itoggled(t, this, index);} void hovered() {emit ihovered(this);} signals: void itriggered(QAction *, int); void itoggled(bool, QAction *, int); void ihovered(QAction * action); }; class EMainWindow: public QMainWindow { Q_OBJECT public: EMainWindow(QWidget * parent = 0); ~EMainWindow(); virtual void reset(bool full = false) {} virtual bool load(const QString & path) {return true;} virtual bool save(const QString & path) {return true;} void addSeparator() {} protected: // Qt`s overloaded void showEvent(QShowEvent * ); void closeEvent(QCloseEvent * ); bool eventFilter(QObject * o, QEvent * e); void timerEvent(QTimerEvent * e); QMenu * createPopupMenu(); void init(const QString & config) {session.setFile(config); initMenus(); initSession(); loadSession();} // unusable void saveSession(); void loadSession(); virtual void savingSession(QPIConfig & conf) {} virtual void loadingSession(QPIConfig & conf) {} virtual QSize dockTabsIconSIze() const {return iconSize();} virtual QString loadFilter() {return "All files(*)";} virtual QString saveFilter() {return "All files(*)";} bool checkSave(); void setChanged(bool yes = true) {isChanged = yes; setWindowModified(yes);} void initMenus(); void initSession(); QAction action_show_all_tools, action_hide_all_tools, action_show_all_docks, action_hide_all_docks; QString file_name, title_src; QList tbars; QList tdocks; SessionManager session; bool isChanged, first_show; int tid; private slots: void changedDock(); void sessionLoading(QPIConfig & conf) {loadingSession(conf);} void sessionSaving(QPIConfig & conf) {savingSession(conf);} // void changedDockClose(QObject * dock); void closeDock(int index); public slots: void changed() {setChanged(true);} void newFile(); void openFile(); bool saveFile(bool ask = false); bool saveAsFile(); signals: }; #endif // MAINWINDOW_H