/* MainWindow.h * * Copyright (C) 2014 Jim Evins * * This file is part of gLabels-qt. * * gLabels-qt is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * gLabels-qt is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with gLabels-qt. If not, see . */ #ifndef MainWindow_h #define MainWindow_h #include #include #include #include #include #include #include #include #include #include #include #include namespace glabels { // Forward References class LabelEditor; class MergeView; class ObjectEditor; class PrintView; class PropertiesView; class StartupView; class UndoRedoModel; /// /// MainWindow Widget /// class MainWindow : public QMainWindow { Q_OBJECT ///////////////////////////////////// // Lifecycle ///////////////////////////////////// public: MainWindow(); ~MainWindow() override; ///////////////////////////////////// // Public Methods ///////////////////////////////////// public: model::Model* model() const; void setModel( model::Model* model ); bool isEmpty() const; ///////////////////////////////////// // Events ///////////////////////////////////// protected: void closeEvent( QCloseEvent *event ) override; ///////////////////////////////////// // Slots ///////////////////////////////////// private slots: void changePage( bool checked ); void clipboardChanged(); void fileNew(); void fileOpen(); void fileOpenRecent(); void fileSave(); void fileSaveAs(); void fileShowEditorPage(); void fileShowPropertiesPage(); void fileShowMergePage(); void fileShowPrintPage(); void fileTemplateDesigner(); void fileClose(); void fileExit(); void editUndo(); void editRedo(); void editCut(); void editCopy(); void editPaste(); void editDelete(); void editSelectAll(); void editUnSelectAll(); void editPreferences(); void viewFileToolBar( bool ); void viewEditorToolBar( bool ); void viewGrid( bool ); void viewMarkup( bool ); void viewZoomIn(); void viewZoomOut(); void viewZoom1To1(); void viewZoomToFit(); void objectsArrowMode(); void objectsCreateText(); void objectsCreateBox(); void objectsCreateLine(); void objectsCreateEllipse(); void objectsCreateImage(); void objectsCreateBarcode(); void objectsOrderRaise(); void objectsOrderLower(); void objectsXformRotateLeft(); void objectsXformRotateRight(); void objectsXformFlipHoriz(); void objectsXformFlipVert(); void objectsAlignLeft(); void objectsAlignHCenter(); void objectsAlignRight(); void objectsAlignTop(); void objectsAlignVCenter(); void objectsAlignBottom(); void objectsCenterHoriz(); void objectsCenterVert(); void helpContents(); void helpReportBug(); void helpAbout(); void onContextMenuActivate(); void onZoomChanged(); void onPointerMoved( double, double ); void onPointerExit(); void onNameChanged(); void onModifiedChanged(); void onSelectionChanged(); void onLabelChanged(); void onUndoRedoChanged(); void onSettingsChanged(); ///////////////////////////////////// // Internal Private Methods ///////////////////////////////////// private: void createActions(); void createMenus(); void createToolBars(); void createStatusBar(); QWidget* createWelcomePage(); QWidget* createEditorPage(); QWidget* createPropertiesPage(); QWidget* createMergePage(); QWidget* createPrintPage(); void manageActions(); void setTitle(); void readSettings(); void writeSettings(); bool isOkToClose(); ///////////////////////////////////// // Private Data ///////////////////////////////////// private: QMenu* fileMenu; QMenu* fileRecentMenu; QMenu* editMenu; QMenu* viewMenu; QMenu* viewToolBarsMenu; QMenu* objectsMenu; QMenu* objectsCreateMenu; QMenu* objectsOrderMenu; QMenu* objectsXformMenu; QMenu* objectsAlignMenu; QMenu* objectsCenterMenu; QMenu* helpMenu; QMenu* contextMenu; QMenu* contextOrderMenu; QMenu* contextXformMenu; QMenu* contextAlignMenu; QMenu* contextCenterMenu; QMenu* noSelectionContextMenu; QToolBar* fileToolBar; QToolBar* editorToolBar; model::Model* mModel; UndoRedoModel* mUndoRedoModel; QToolBar* mContents; QToolButton* mWelcomeButton; QToolButton* mEditorButton; QToolButton* mPropertiesButton; QToolButton* mMergeButton; QToolButton* mPrintButton; QAction* mWelcomeAction; QAction* mEditorAction; QAction* mPropertiesAction; QAction* mMergeAction; QAction* mPrintAction; QStackedWidget* mPages; StartupView* mWelcomeView; QScrollArea* mLabelEditorScrollArea; LabelEditor* mLabelEditor; ObjectEditor* mObjectEditor; PropertiesView* mPropertiesView; MergeView* mMergeView; PrintView* mPrintView; QLabel* zoomInfoLabel; QLabel* cursorInfoLabel; QAction* fileNewAction; QAction* fileOpenAction; QAction* fileSaveAction; QAction* fileSaveAsAction; QAction* fileShowEditorPageAction; QAction* fileShowPropertiesPageAction; QAction* fileShowMergePageAction; QAction* fileShowPrintPageAction; QAction* fileTemplateDesignerAction; QAction* fileCloseAction; QAction* fileExitAction; QList fileRecentActionList; QAction* editUndoAction; QAction* editRedoAction; QAction* editCutAction; QAction* editCopyAction; QAction* editPasteAction; QAction* editDeleteAction; QAction* editSelectAllAction; QAction* editUnSelectAllAction; QAction* editPreferencesAction; QAction* viewFileToolBarAction; QAction* viewEditorToolBarAction; QAction* viewGridAction; QAction* viewMarkupAction; QAction* viewZoomInAction; QAction* viewZoomOutAction; QAction* viewZoom1To1Action; QAction* viewZoomToFitAction; QAction* objectsArrowModeAction; QAction* objectsCreateTextAction; QAction* objectsCreateBoxAction; QAction* objectsCreateLineAction; QAction* objectsCreateEllipseAction; QAction* objectsCreateImageAction; QAction* objectsCreateBarcodeAction; QAction* objectsOrderRaiseAction; QAction* objectsOrderLowerAction; QAction* objectsXformRotateLeftAction; QAction* objectsXformRotateRightAction; QAction* objectsXformFlipHorizAction; QAction* objectsXformFlipVertAction; QAction* objectsAlignLeftAction; QAction* objectsAlignHCenterAction; QAction* objectsAlignRightAction; QAction* objectsAlignTopAction; QAction* objectsAlignVCenterAction; QAction* objectsAlignBottomAction; QAction* objectsCenterHorizAction; QAction* objectsCenterVertAction; QAction* helpContentsAction; QAction* helpReportBugAction; QAction* helpAboutAction; QAction* contextCutAction; QAction* contextCopyAction; QAction* contextPasteAction; QAction* contextDeleteAction; }; } #endif // MainWindow_h