QElectroTech  0.70
templatescollection.h
Go to the documentation of this file.
1 /*
2  Copyright 2006-2019 The QElectroTech Team
3  This file is part of QElectroTech.
4 
5  QElectroTech is free software: you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation, either version 2 of the License, or
8  (at your option) any later version.
9 
10  QElectroTech is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17 */
18 #ifndef TITLEBLOCK_SLASH_TEMPLATES_COLLECTION_H
19 #define TITLEBLOCK_SLASH_TEMPLATES_COLLECTION_H
20 #define TITLEBLOCKS_FILE_EXTENSION ".titleblock"
21 #include <QtCore>
22 #include <QtXml>
23 #include "templatelocation.h"
24 #include "qet.h"
25 class TitleBlockTemplate;
26 class QETProject;
27 
34 class TitleBlockTemplatesCollection : public QObject {
35  Q_OBJECT
36 
37  // Constructors, destructor
38  public:
39  TitleBlockTemplatesCollection(QObject *parent);
41  private:
43 
44  // methods
45  public:
46  virtual QStringList templates() = 0;
47  virtual TitleBlockTemplate *getTemplate(const QString &) = 0;
48  virtual QDomElement getTemplateXmlDescription(const QString &) = 0;
49  virtual bool setTemplateXmlDescription(const QString &, const QDomElement &) = 0;
50  virtual void removeTemplate(const QString &) = 0;
51  virtual TitleBlockTemplateLocation location(const QString & = QString()) = 0;
52  virtual bool hasFilePath() = 0;
53  virtual QString filePath() = 0;
54  virtual bool isReadOnly(const QString & = QString()) const = 0;
55  virtual QString title() const;
56  virtual void setTitle(const QString &);
57  virtual QString protocol() const;
58  virtual void setProtocol(const QString &);
59  virtual QET::QetCollection collection () const;
60  virtual void setCollection (QET::QetCollection);
61  virtual QETProject *parentProject();
62  virtual QList<TitleBlockTemplateLocation> templatesLocations();
63 
64  signals:
65  void changed(TitleBlockTemplatesCollection *, const QString & = QString());
66  void aboutToRemove(TitleBlockTemplatesCollection *, const QString &);
67 
68  // attributes
69  protected:
71  QString title_;
73  QString protocol_;
76  QHash<QString, TitleBlockTemplate *> titleblock_templates_;
77 };
78 
84  Q_OBJECT
85 
86  // Constructors, destructor
87  public:
88  TitleBlockTemplatesProjectCollection(QETProject *, QObject *parent = nullptr);
90  private:
92 
93  // methods
94  public:
95  QString title() const override;
96  QString protocol() const override;
97  QETProject *parentProject() override;
98  QStringList templates() override;
99  TitleBlockTemplate *getTemplate(const QString &) override;
100  QDomElement getTemplateXmlDescription(const QString &) override;
101  bool setTemplateXmlDescription(const QString &, const QDomElement &) override;
102  void removeTemplate(const QString &) override;
103  TitleBlockTemplateLocation location(const QString & = QString()) override;
104  bool hasFilePath() override;
105  QString filePath() override;
106  bool isReadOnly(const QString & = QString()) const override;
107  virtual void fromXml(const QDomElement &);
108  virtual void deleteUnusedTitleBlocKTemplates();
109 
110  // attributes
111  private:
115  QDomDocument xml_document_;
117  QHash<QString, QDomElement> titleblock_templates_xml_;
118 };
119 
125  Q_OBJECT
126 
127  // Constructors, destructor
128  public:
129  TitleBlockTemplatesFilesCollection(const QString &, QObject * = nullptr);
131  private:
133 
134  // methods
135  public:
136  QString path(const QString & = QString()) const;
137  QStringList templates() override;
138  TitleBlockTemplate *getTemplate(const QString &) override;
139  QDomElement getTemplateXmlDescription(const QString &) override;
140  bool setTemplateXmlDescription(const QString &, const QDomElement &) override;
141  void removeTemplate(const QString &) override;
142  TitleBlockTemplateLocation location(const QString & = QString()) override;
143  bool hasFilePath() override;
144  QString filePath() override;
145  bool isReadOnly(const QString & = QString()) const override;
146 
147  static QString toTemplateName(const QString &);
148  static QString toFileName(const QString &);
149 
150  private slots:
151  void fileSystemChanged(const QString &str);
152 
153  // attributes
154  private:
156  QFileSystemWatcher watcher_;
158  QDir dir_;
159 };
160 #endif
virtual void setProtocol(const QString &)
virtual QETProject * parentProject()
QHash< QString, TitleBlockTemplate * > titleblock_templates_
Already parsed embedded titleblock templates.
void changed(TitleBlockTemplatesCollection *, const QString &=QString())
QString protocol_
Protocol used to designate this collection.
TitleBlockTemplatesFilesCollection(const QString &, QObject *=nullptr)
void removeTemplate(const QString &) override
void fileSystemChanged(const QString &str)
virtual bool setTemplateXmlDescription(const QString &, const QDomElement &)=0
QFileSystemWatcher watcher_
File System Watcher object to track the files changes made outside the application.
static QString toFileName(const QString &)
virtual QString protocol() const
QETProject * project_
Parent project.
virtual QStringList templates()=0
TitleBlockTemplateLocation location(const QString &=QString()) override
QDomDocument xml_document_
Parent QDomDocument for stored QDomElements.
virtual QString filePath()=0
void removeTemplate(const QString &) override
QetCollection
Enum used to specify the origin of a collection of thing (title block, element etc...)
Definition: qet.h:150
void aboutToRemove(TitleBlockTemplatesCollection *, const QString &)
TitleBlockTemplateLocation location(const QString &=QString()) override
TitleBlockTemplatesCollection(QObject *parent)
static QString toTemplateName(const QString &)
virtual void removeTemplate(const QString &)=0
virtual TitleBlockTemplate * getTemplate(const QString &)=0
virtual void setCollection(QET::QetCollection)
TitleBlockTemplatesCollection::setCollection Set the storage of this collection.
QDomElement getTemplateXmlDescription(const QString &) override
virtual QET::QetCollection collection() const
TitleBlockTemplatesCollection::collection.
virtual void setTitle(const QString &)
virtual TitleBlockTemplateLocation location(const QString &=QString())=0
TitleBlockTemplate * getTemplate(const QString &) override
QString title_
Human-readable title for this collection.
QHash< QString, QDomElement > titleblock_templates_xml_
XML descriptions of embedded titleblock templates.
TitleBlockTemplate * getTemplate(const QString &) override
bool setTemplateXmlDescription(const QString &, const QDomElement &) override
QString path(const QString &=QString()) const
QDir dir_
Collection real directory.
virtual QList< TitleBlockTemplateLocation > templatesLocations()
QDomElement getTemplateXmlDescription(const QString &) override
virtual bool isReadOnly(const QString &=QString()) const =0
bool isReadOnly(const QString &=QString()) const override
virtual bool hasFilePath()=0
virtual QDomElement getTemplateXmlDescription(const QString &)=0
bool isReadOnly(const QString &=QString()) const override
bool setTemplateXmlDescription(const QString &, const QDomElement &) override
TitleBlockTemplatesProjectCollection(QETProject *, QObject *parent=nullptr)
virtual void fromXml(const QDomElement &)