#ifndef MAINWINDOW_H #define MAINWINDOW_H #include "DocsManager.h" #include "manager_docs.h" #include "messageview.h" #include "parsebridge.h" #include "presentcontainerview.h" #include "projectview.h" #include "viewsession.h" #include "viewstackedbar.h" #include "welcomepanel.h" #include "xapp.h" #include #include #include #include #include #include #include class MainWindow : public QMainWindow , public Project::ManagerListener{ Q_OBJECT public: MainWindow(XApp *core, const QString &layout, QWidget *parent = nullptr); virtual ~MainWindow(); SplitFrame::SplitPanel *bindPresent() const; QString layoutName() const; void resetLayoutName(const QString &name); private: QString layout_name_store; // model ============================================ XApp *const core_bind; SplitFrame::SplitPanel *const present_host; Core::ViewSession *const session_service; // view ============================================= QToolBar *const actions_stack; Components::ViewStackedBar *const views_bar; Components::PresentContainerView *const center_frame; Components::ProjectView *const project_present; // menu ============================================= QMenu *project; QAction *project_open; QAction *project_new; QAction *project_close; QAction *project_newpath; QMenu *project_newfile; QAction *project_save; QAction *software_exit; QMenu *edit; QAction *edit_undo; QAction *edit_redo; QAction *edit_find; QAction *edit_replace; QMenu *view; QMenu *view_area; QAction *view_area_toolbar; QAction *view_area_statusbar; QAction *view_config; QMenu *tool; QAction *tool_console; QMenu *tool_wcheck; QAction *tool_wcheck_setting; QAction *tool_wcheck_wordslist; QMenu *tool_version; QAction *tool_version_enable; QAction *tool_version_setting; QAction *tool_version_commit; QAction *tool_version_rollback; QMenu *tool_inout; QAction *tool_inout_outline_in; QAction *tool_inout_outline_out; QAction *tool_inout_outline_webout; QAction *tool_inout_storytxt_out; QAction *tool_inout_storyepub_out; QMenu *window; QMenu *window_winnew; QAction *window_winclose; QAction *window_layout_store; QMenu *window_layout_load; QMenu *window_layout_del; QMenu *system; QAction *system_active; QAction *system_info; QAction *system_about; // 内部逻辑 =========================================== void initial_menubar(QMenuBar *mbar); void build_project_menu(QMenu *pmenu); void build_edit_menu(QMenu *pmenu); void build_view_menu(QMenu *pmenu); void build_tools_menu(QMenu *pmenu); void build_window_menu(QMenu *pmenu); // QWidget interface protected: virtual void closeEvent(QCloseEvent *event) override; // QObject interface public: virtual bool eventFilter(QObject *watched, QEvent *event) override; // Project::ManagerListener interface public: virtual void ProjectNEW(const QString &project_file) override; virtual void ProjectOPEN(const QString &project_file) override; virtual void hasBeenSAVE() override; virtual void hasBeenCLOSE() override; virtual void hasBeenRENAME(const QModelIndex &path, const QString &new_name) override; virtual void hasBeenAPPEND(const QModelIndex &new_path) override; virtual void hasBeenMOVE(const QModelIndex &new_path) override; virtual void aboutToBeSAVE() override; virtual void aboutToBeCLOSE() override; virtual void aboutToBeDELETE(const QModelIndex &path) override; virtual void aboutToBeMOVE(const QModelIndex &old_path) override; }; #endif // MAINWINDOW_H