Warning, file /graphics/glaxnimate/src/gui/settings/document_templates.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <set> 0010 0011 #include "model/document.hpp" 0012 0013 class QAction; 0014 0015 namespace glaxnimate::gui::settings { 0016 0017 class DocumentTemplate 0018 { 0019 Q_GADGET 0020 0021 public: 0022 #if QT_VERSION_MAJOR >= 6 0023 DocumentTemplate() { throw "Qt dumb"; } 0024 DocumentTemplate(const DocumentTemplate&) { throw "Qt dumb"; } 0025 DocumentTemplate& operator=(const DocumentTemplate&) { throw "Qt dumb"; } 0026 DocumentTemplate(DocumentTemplate&&) = default; 0027 DocumentTemplate& operator=(DocumentTemplate&&) = default; 0028 #endif 0029 0030 DocumentTemplate(const QString& filename, bool* loaded); 0031 0032 QSize size() const; 0033 0034 model::FrameTime duration() const; 0035 0036 QString name() const; 0037 0038 QString long_name() const; 0039 0040 float fps() const; 0041 0042 std::unique_ptr<model::Document> create(bool* ok) const; 0043 0044 bool operator<(const DocumentTemplate& oth) const; 0045 0046 static KLocalizedString name_template(model::Composition* comp); 0047 0048 QString aspect_ratio() const; 0049 static QString aspect_ratio(const QSize& size); 0050 0051 model::Composition* main_comp() const; 0052 0053 private: 0054 QString filename; 0055 std::unique_ptr<model::Document> document; 0056 0057 std::unique_ptr<model::Document> load(bool* ok) const; 0058 }; 0059 0060 class DocumentTemplates : public QObject 0061 { 0062 Q_OBJECT 0063 0064 public: 0065 const std::vector<DocumentTemplate>& templates() const; 0066 0067 void load(); 0068 0069 bool save_as_template(model::Document* document); 0070 0071 static DocumentTemplates& instance(); 0072 0073 QAction* create_action(const DocumentTemplate& templ, QObject *parent = nullptr); 0074 0075 Q_SIGNALS: 0076 void loaded(const std::vector<DocumentTemplate>& templates); 0077 void create_from(const DocumentTemplate& templ); 0078 0079 private: 0080 DocumentTemplates(); 0081 0082 std::vector<DocumentTemplate> templates_; 0083 std::set<QString> names; 0084 0085 }; 0086 0087 } // namespace glaxnimate::gui::settings 0088