/* TemplateDesigner.h * * Copyright (C) 2018 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 TemplateDesigner_h #define TemplateDesigner_h #include "ui_TemplateDesignerIntroPage.h" #include "ui_TemplateDesignerNamePage.h" #include "ui_TemplateDesignerPageSizePage.h" #include "ui_TemplateDesignerShapePage.h" #include "ui_TemplateDesignerRectPage.h" #include "ui_TemplateDesignerRoundPage.h" #include "ui_TemplateDesignerEllipsePage.h" #include "ui_TemplateDesignerCdPage.h" #include "ui_TemplateDesignerNLayoutsPage.h" #include "ui_TemplateDesignerOneLayoutPage.h" #include "ui_TemplateDesignerTwoLayoutPage.h" #include "ui_TemplateDesignerApplyPage.h" #include "model/Template.h" #include #include namespace glabels { /// /// About Dialog Widget /// class TemplateDesigner : public QWizard { Q_OBJECT // My subpages are my friends :-) friend class TemplateDesignerIntroPage; friend class TemplateDesignerNamePage; friend class TemplateDesignerPageSizePage; friend class TemplateDesignerShapePage; friend class TemplateDesignerRectPage; friend class TemplateDesignerRoundPage; friend class TemplateDesignerEllipsePage; friend class TemplateDesignerCdPage; friend class TemplateDesignerNLayoutsPage; friend class TemplateDesignerOneLayoutPage; friend class TemplateDesignerTwoLayoutPage; friend class TemplateDesignerApplyPage; ///////////////////////////////// // Life Cycle ///////////////////////////////// public: TemplateDesigner( QWidget *parent = nullptr ); ///////////////////////////////// // Private methods ///////////////////////////////// private: int nextId() const override; double itemWidth(); double itemHeight(); double itemXWaste(); double itemYWaste(); model::Template* buildTemplate(); void printTestSheet(); void loadFromTemplate( const model::Template* tmplate ); bool isBasedOnCopy(); ///////////////////////////////// // Private methods ///////////////////////////////// private: bool mIsBasedOnCopy; }; // // Intro Page // class TemplateDesignerIntroPage : public QWizardPage, public Ui::TemplateDesignerIntroPage { Q_OBJECT public: TemplateDesignerIntroPage( QWidget* parent = nullptr ); bool isComplete() const override; private slots: void onCopyButtonClicked(); void onNewButtonClicked(); }; // // Name Page // class TemplateDesignerNamePage : public QWizardPage, public Ui::TemplateDesignerNamePage { Q_OBJECT public: TemplateDesignerNamePage( QWidget* parent = nullptr ); bool isComplete() const override; private slots: void onChanged(); private: bool mCanContinue = false; }; // // Page Size Page // class TemplateDesignerPageSizePage : public QWizardPage, public Ui::TemplateDesignerPageSizePage { Q_OBJECT public: TemplateDesignerPageSizePage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; private slots: void onComboChanged(); }; // // Shape Page // class TemplateDesignerShapePage : public QWizardPage, public Ui::TemplateDesignerShapePage { Q_OBJECT public: TemplateDesignerShapePage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // Rect Page // class TemplateDesignerRectPage : public QWizardPage, public Ui::TemplateDesignerRectPage { Q_OBJECT public: TemplateDesignerRectPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // Round Page // class TemplateDesignerRoundPage : public QWizardPage, public Ui::TemplateDesignerRoundPage { Q_OBJECT public: TemplateDesignerRoundPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // Ellipse Page // class TemplateDesignerEllipsePage : public QWizardPage, public Ui::TemplateDesignerEllipsePage { Q_OBJECT public: TemplateDesignerEllipsePage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // Cd Page // class TemplateDesignerCdPage : public QWizardPage, public Ui::TemplateDesignerCdPage { Q_OBJECT public: TemplateDesignerCdPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // NLayouts Page // class TemplateDesignerNLayoutsPage : public QWizardPage, public Ui::TemplateDesignerNLayoutsPage { Q_OBJECT public: TemplateDesignerNLayoutsPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; }; // // OneLayout Page // class TemplateDesignerOneLayoutPage : public QWizardPage, public Ui::TemplateDesignerOneLayoutPage { Q_OBJECT public: TemplateDesignerOneLayoutPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; private slots: void onChanged(); void onPrintButtonClicked(); }; // // TwoLayout Page // class TemplateDesignerTwoLayoutPage : public QWizardPage, public Ui::TemplateDesignerTwoLayoutPage { Q_OBJECT public: TemplateDesignerTwoLayoutPage( QWidget* parent = nullptr ); void initializePage() override; void cleanupPage() override; private slots: void onChanged(); void onPrintButtonClicked(); }; // // Apply Page // class TemplateDesignerApplyPage : public QWizardPage, public Ui::TemplateDesignerApplyPage { Q_OBJECT public: TemplateDesignerApplyPage( QWidget* parent = nullptr ); bool validatePage(); }; } #endif // TemplateDesigner_h