// TemplateDesigner.hpp // // Copyright (C) 2018-2026 Jaye 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_hpp #define TemplateDesigner_hpp #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_TemplateDesignerPathPage.h" #include "ui_TemplateDesignerContinuousPage.h" #include "ui_TemplateDesignerNLayoutsPage.h" #include "ui_TemplateDesignerOneLayoutPage.h" #include "ui_TemplateDesignerTwoLayoutPage.h" #include "ui_TemplateDesignerApplyPage.h" #include "model/Template.hpp" #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 TemplateDesignerPathPage; friend class TemplateDesignerContinuousPage; 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 addLayouts( model::Frame& frame ); void printTestSheet(); void loadFromTemplate( const model::Template& tmplate ); bool isBasedOnCopy(); ///////////////////////////////// // Private methods ///////////////////////////////// private: bool mIsBasedOnCopy{false}; bool mIsTemplatePathBased{false}; bool mIsTemplateContinuousBased{false}; }; // // 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; }; // // Path Page // class TemplateDesignerPathPage : public QWizardPage, public Ui::TemplateDesignerPathPage { Q_OBJECT public: TemplateDesignerPathPage( QWidget* parent = nullptr ); bool isComplete() const override; }; // // Continuous Page // class TemplateDesignerContinuousPage : public QWizardPage, public Ui::TemplateDesignerContinuousPage { Q_OBJECT public: TemplateDesignerContinuousPage( QWidget* parent = nullptr ); bool isComplete() const 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_hpp