umbrello  2.38.5
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
umldoc.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3  SPDX-FileCopyrightText: 2002-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
4 */
5 
6 #ifndef UMLDOC_H
7 #define UMLDOC_H
8 
9 // app includes
10 #include "basictypes.h"
11 #include "optionstate.h"
12 #include "umlobject.h"
13 #include "umlobjectlist.h"
14 #include "umlassociationlist.h"
15 #include "umlclassifierlist.h"
16 #include "umlentitylist.h"
17 #include "umlviewlist.h"
18 #include "umlstereotypelist.h"
19 #include "umlpackagelist.h"
20 
21 // qt includes
22 #include <QUrl>
23 #include <QMap>
24 
25 // system includes
26 #include <typeinfo>
27 
28 #define ENC_UNKNOWN 0
29 #define ENC_UNICODE 1
30 #define ENC_WINDOWS 2
31 #define ENC_OLD_ENC 3
32 
33 // forward declarations
34 class QDomNode;
35 class QDomElement;
36 class QPrinter;
37 
38 class IDChangeLog;
39 class DiagramsModel;
40 class ObjectsModel;
41 class StereotypesModel;
42 class UMLPackage;
43 class UMLFolder;
44 class DiagramPrintPage;
45 
62 class UMLDoc : public QObject
63 {
64  Q_OBJECT
65 public:
66 
67  UMLDoc();
68  ~UMLDoc();
69 
70  void init();
71 
72  void addView(UMLView *view);
73  void removeView(UMLView *view, bool enforceOneView = true);
74  void setMainViewID(Uml::ID::Type viewID);
76  void activateAllViews();
77  void removeAllViews();
78  void removeAllObjects();
79 
80  void setModified(bool modified = true);
81  bool isModified() const;
82  bool saveModified();
83 
84  bool newDocument();
85  void closeDocument();
86  bool openDocument(const QUrl& url, const char *format = 0);
87  bool saveDocument(const QUrl& url, const char *format = 0);
88  const QUrl& url() const;
89  void setUrl(const QUrl& url);
90  void setUrlUntitled();
91 
92  void setupSignals();
93 
94  bool isUnique(const QString &name) const;
95  bool isUnique(const QString &name, UMLPackage *package) const;
96 
98 
99  void addAssociation(UMLAssociation *assoc);
100  void removeAssociation(UMLAssociation *assoc, bool doSetModified = true);
102  const UMLObject *roleAObj,
103  const UMLObject *roleBObj,
104  bool *swap = 0) const;
105 
106  QString createDiagramName(Uml::DiagramType::Enum type, bool askForName = true);
109  const QString& name,
111 
112  void removeDiagram(Uml::ID::Type id);
114  void renameDiagram(Uml::ID::Type id);
115 
116  void removeUMLObject(UMLObject* umlobject, bool deleteObject = false);
117  void renameUMLObject(UMLObject *o);
119 
121 
122  UMLObject* findUMLObject(const QString &name,
124  UMLObject *currentObj = 0);
125 
127  const QString &name,
129 
131  const QString &name,
133 
135  const QString &name,
137 
139  const QString &name,
141 
142  UMLClassifier * findUMLClassifier(const QString &name);
143 
144  UMLView * findView(Uml::ID::Type id) const;
145  UMLView * findView(Uml::DiagramType::Enum type, const QString &name,
146  bool searchAllScopes = false) const;
147 
148  void setName(const QString& name);
149  QString name() const;
150 
151  void setResolution(qreal resolution);
152  qreal resolution() const;
153  qreal dpiScale() const;
154 
155  Uml::ID::Type modelID() const;
156 
157  static bool tagEq (const QString& tag, const QString& pattern);
158 
159  virtual void saveToXMI(QIODevice& file);
160 
161  short encoding(QIODevice & file);
162 
163  virtual bool loadFromXMI(QIODevice& file, short encode = ENC_UNKNOWN);
164 
165  bool validateXMI1Header(QDomNode& headerNode);
166 
167  bool loadUMLObjectsFromXMI(QDomElement & element);
168  void loadExtensionsFromXMI1(QDomNode & node);
169  bool loadDiagramsFromXMI1(QDomNode & node);
170 
171  void signalDiagramRenamed(UMLView * view);
173 
174  UMLClassifierList concepts(bool includeNested = true) const;
175  UMLClassifierList classesAndInterfaces(bool includeNested = true) const;
176  UMLEntityList entities(bool includeNested = true) const;
177  UMLFolder * datatypeFolder() const;
178  UMLClassifierList datatypes(bool includeInactive = false) const;
179  UMLDatatype * findDatatype(QString name, bool includeInactive = false);
181  UMLPackageList packages(bool includeNested = true, Uml::ModelType::Enum model = Uml::ModelType::Logical) const;
182 
183  void print(QPrinter * pPrinter, DiagramPrintPage * selectPage);
184 
185  UMLViewList viewIterator() const;
187 
188  bool assignNewIDs(UMLObject* obj);
189 
190  bool addUMLObject(UMLObject * object);
191  bool addUMLView(UMLView * pView);
192 
195 
196  UMLFolder *currentRoot() const;
197  void setCurrentRoot(Uml::ModelType::Enum rootType);
198 
199  virtual IDChangeLog* changeLog() const;
200 
201  void beginPaste();
202  void endPaste();
203 
205 
206  void setDocumentation(const QString &doc);
207  QString documentation() const;
208 
210 
211  QString uniqueViewName(const Uml::DiagramType::Enum type) const;
212 
213  bool loading() const;
214  void setLoading(bool state = true);
215 
216  bool importing() const;
217  void setImporting(bool state = true);
218 
219  bool closing() const;
220 
221  void addDefaultDatatypes();
222  UMLDatatype * createDatatype(const QString &name);
223  void removeDatatype(const QString &name);
224 
225  UMLStereotype *createStereotype(const QString &name);
226  UMLStereotype *findStereotype(const QString &name) const;
227  UMLStereotype *findOrCreateStereotype(const QString &name);
229  void addStereotype(UMLStereotype *s);
231  void addDefaultStereotypes();
232  const UMLStereotypeList& stereotypes() const;
233 
234  void writeToStatusBar(const QString &text);
235 
236  void resolveTypes();
237  bool loadDiagrams1();
238  void addDiagramToLoad(UMLFolder *folder, QDomNode node);
239 
240  DiagramsModel *diagramsModel() const;
242  ObjectsModel *objectsModel() const;
243 
244  void setLoadingError(const QString &text);
245 
246 private:
247  void initSaveTimer();
248  void createDatatypeFolder();
249 
250  class Private;
251  Private *m_d;
252 
257 
263 
272 
273  QString m_Name;
275  int m_count;
277  QUrl m_doc_url;
282 
287 
292 
296  QString m_Doc;
297 
302 
307 
312 
319 
324 
328 
334 
338  typedef QMap<UMLFolder*, QList<QDomNode>> DiagramsMap;
339  DiagramsMap m_diagramsToLoad;
340 
341 public slots:
343  void slotAutoSave();
344  void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
345 
346 signals:
351 
352  void sigObjectCreated(UMLObject *);
353  void sigObjectRemoved(UMLObject *);
354 
359 
365  void sigSetStatusbarProgressSteps(int totalSteps);
366 
372  void sigSetStatusbarProgress(int stepPosition);
373 
377  void sigWriteToStatusBar(const QString &text);
378 
383  void sigCurrentViewChanged();
384 
385 };
386 
387 #endif // UMLDOC_H
UMLView * findView(Uml::ID::Type id) const
Definition: umldoc.cpp:872
void setUrl(const QUrl &url)
Definition: umldoc.cpp:329
void addDefaultStereotypes()
Definition: umldoc.cpp:1246
bool addUMLObject(UMLObject *object)
Definition: umldoc.cpp:1051
Definition: objectsmodel.h:15
Non-graphical information for a Package.
Definition: package.h:27
Uml::ID::Type m_modelID
xmi.id of this model in the
Definition: umldoc.h:274
void addDefaultDatatypes()
Definition: umldoc.cpp:3332
UMLView * createDiagram(UMLFolder *folder, Uml::DiagramType::Enum type, const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: umldoc.cpp:1521
bool loadDiagramsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2743
bool addUMLView(UMLView *pView)
Definition: umldoc.cpp:3187
Information for a non-graphical Concept/Class.
Definition: classifier.h:34
void setMainViewID(Uml::ID::Type viewID)
Definition: umldoc.cpp:2653
QString m_Doc
Definition: umldoc.h:296
bool newDocument()
Definition: umldoc.cpp:458
void endPaste()
Definition: umldoc.cpp:3133
UMLDatatype * createDatatype(const QString &name)
Definition: umldoc.cpp:3354
UMLDoc()
Definition: umldoc.cpp:88
OptionState & optionState()
Definition: optionstate.cpp:351
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
void setImporting(bool state=true)
Definition: umldoc.cpp:1471
UMLFolder * m_root[Uml::ModelType::N_MODELTYPES]
Definition: umldoc.h:256
bool m_bClosing
Definition: umldoc.h:323
void setName(const QString &name)
Definition: umldoc.cpp:1870
virtual IDChangeLog * changeLog() const
Definition: umldoc.cpp:3112
Definition: basictypes.h:66
UMLDatatype * findDatatype(QString name, bool includeInactive=false)
Definition: umldoc.cpp:2913
void sigObjectRemoved(UMLObject *)
Definition: moc_umldoc.cpp:336
UMLAssociation * createUMLAssociation(UMLObject *a, UMLObject *b, Uml::AssociationType::Enum type)
Definition: umldoc.cpp:1335
static bool tagEq(const QString &tag, const QString &pattern)
Definition: umldoc.cpp:3455
void setResolution(qreal resolution)
Definition: umldoc.cpp:1888
UMLFolder * m_pCurrentRoot
Definition: umldoc.h:318
Definition: idchangelog.h:21
QString a
Definition: petalnode.cpp:13
void writeToStatusBar(const QString &text)
Definition: umldoc.cpp:1080
Definition: umlview.h:29
virtual void saveToXMI(QIODevice &file)
Definition: umldoc.cpp:1939
bool isModified() const
Definition: umldoc.cpp:3027
bool openDocument(const QUrl &url, const char *format=0)
Definition: umldoc.cpp:498
UMLClassifierList concepts(bool includeNested=true) const
Definition: umldoc.cpp:2851
bool importing() const
Definition: umldoc.cpp:1463
UMLClassifierList datatypes(bool includeInactive=false) const
Definition: umldoc.cpp:2893
UMLFolder * m_datatypeRoot
Definition: umldoc.h:262
const QUrl & url() const
Definition: umldoc.cpp:339
void sigSetStatusbarProgressSteps(int totalSteps)
Definition: moc_umldoc.cpp:349
const UMLStereotypeList & stereotypes() const
Definition: umldoc.cpp:1259
Sets up stereotype information.
Definition: stereotype.h:35
Definition: optionstate.h:308
StereotypesModel * stereotypesModel() const
Definition: umldoc.cpp:2439
UMLViewList views(Uml::DiagramType::Enum type=Uml::DiagramType::Undefined) const
Definition: umldoc.cpp:2996
QList< UMLEntity * > UMLEntityList
Definition: umlentitylist.h:12
bool loadDiagrams1()
Definition: umldoc.cpp:2394
void removeUMLObject(UMLObject *umlobject, bool deleteObject=false)
Definition: umldoc.cpp:1756
void setLoadingError(const QString &text)
Definition: umldoc.cpp:2434
Private * m_d
Definition: umldoc.h:250
void sigDiagramCreated(Uml::ID::Type id)
Definition: moc_umldoc.cpp:301
void removeDatatype(const QString &name)
Definition: umldoc.cpp:3381
int m_count
auxiliary counter for the progress bar
Definition: umldoc.h:275
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition: umldoc.cpp:2865
UMLViewList viewIterator() const
Definition: umldoc.cpp:2981
void signalDiagramRenamed(UMLView *view)
Definition: umldoc.cpp:3315
~UMLDoc()
Definition: umldoc.cpp:169
QString m_Name
name of this model as stored in the tag
Definition: umldoc.h:273
The base class for UML objects.
Definition: umlobject.h:69
UMLStereotype * findStereotype(const QString &name) const
Definition: umldoc.cpp:1184
Sets up association information.
Definition: association.h:28
bool loading() const
Definition: umldoc.cpp:1445
qreal dpiScale() const
Definition: umldoc.cpp:1913
UMLFolder * datatypeFolder() const
Definition: umldoc.cpp:2839
void removeStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1236
QString documentation() const
Definition: umldoc.cpp:3162
QList< QPointer< UMLView > > UMLViewList
Definition: umlviewlist.h:14
void addAssociation(UMLAssociation *assoc)
Definition: umldoc.cpp:1353
void slotAutoSave()
Definition: umldoc.cpp:3270
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition: umldoc.cpp:1492
void sigSetStatusbarProgress(int stepPosition)
Definition: moc_umldoc.cpp:356
UMLStereotype * findStereotypeById(Uml::ID::Type id) const
Definition: umldoc.cpp:1213
bool isUnique(const QString &name) const
Definition: umldoc.cpp:1106
void removeDiagramCmd(Uml::ID::Type id)
Definition: umldoc.cpp:1700
bool assignNewIDs(UMLObject *obj)
Definition: umldoc.cpp:3040
void activateAllViews()
Definition: umldoc.cpp:3223
void loadExtensionsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2663
QMap< UMLFolder *, QList< QDomNode > > DiagramsMap
Definition: umldoc.h:338
qreal resolution() const
Definition: umldoc.cpp:1903
short encoding(QIODevice &file)
Definition: umldoc.cpp:2078
QList< UMLStereotype * > UMLStereotypeList
Definition: umlstereotypelist.h:12
Enum
Definition: basictypes.h:63
Definition: stereotypesmodel.h:19
UMLPackageList packages(bool includeNested=true, Uml::ModelType::Enum model=Uml::ModelType::Logical) const
Definition: umldoc.cpp:2827
void changeCurrentView(Uml::ID::Type id)
Definition: umldoc.cpp:1649
void setCurrentRoot(Uml::ModelType::Enum rootType)
Definition: umldoc.cpp:1743
void createDatatypeFolder()
Definition: umldoc.cpp:156
void sigObjectCreated(UMLObject *)
Definition: moc_umldoc.cpp:329
Uml::ModelType::Enum rootFolderType(UMLObject *obj) const
Definition: umldoc.cpp:3096
bool saveDocument(const QUrl &url, const char *format=0)
Definition: umldoc.cpp:699
Non-graphical information for a Datatype.
Definition: datatype.h:20
void removeAssociation(UMLAssociation *assoc, bool doSetModified=true)
Definition: umldoc.cpp:1270
UMLFolder * rootFolder(Uml::ModelType::Enum mt) const
Definition: umldoc.cpp:3081
#define ENC_UNKNOWN
Definition: umldoc.h:28
void slotDiagramPopupMenu(QWidget *umlview, const QPoint &point)
Definition: umldoc.cpp:3399
Enum
Definition: basictypes.h:92
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
bool validateXMI1Header(QDomNode &headerNode)
Definition: umldoc.cpp:2450
QUrl m_doc_url
Definition: umldoc.h:277
UMLStereotypeList m_stereoList
Definition: umldoc.h:271
StereotypesModel * m_stereotypesModel
Definition: umldoc.h:327
void init()
Definition: umldoc.cpp:119
void addView(UMLView *view)
Definition: umldoc.cpp:200
void removeAllViews()
Definition: umldoc.cpp:2799
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:29
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11
void setModified(bool modified=true)
Definition: umldoc.cpp:3012
void sigDiagramRenamed(Uml::ID::Type t)
Definition: moc_umldoc.cpp:315
Uml::ID::Type assignNewID(Uml::ID::Type oldID)
Definition: umldoc.cpp:3148
void renameChildUMLObject(UMLObject *o)
Definition: umldoc.cpp:1612
void setupSignals()
Definition: umldoc.cpp:860
void sigResetStatusbarProgress()
Definition: moc_umldoc.cpp:343
qreal m_resolution
Definition: umldoc.h:333
UMLAssociationList associations() const
Definition: umldoc.cpp:2936
UMLFolder * currentRoot() const
Definition: umldoc.cpp:1719
std::string Type
Definition: basictypes.h:371
bool closing() const
Definition: umldoc.cpp:1480
UMLObject * findUMLObjectRecursive(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1005
DiagramsMap m_diagramsToLoad
Definition: umldoc.h:339
UMLObject * findObjectById(Uml::ID::Type id)
Definition: umldoc.cpp:909
UMLAssociation * findAssociation(Uml::AssociationType::Enum assocType, const UMLObject *roleAObj, const UMLObject *roleBObj, bool *swap=0) const
Definition: umldoc.cpp:1301
DiagramsModel * diagramsModel() const
Definition: umldoc.cpp:2424
void print(QPrinter *pPrinter, DiagramPrintPage *selectPage)
Definition: umldoc.cpp:2955
ObjectsModel * m_objectsModel
Definition: umldoc.h:326
UMLStereotype * findOrCreateStereotype(const QString &name)
Definition: umldoc.cpp:1199
Definition: diagramsmodel.h:20
ObjectType
Definition: umlobject.h:75
UMLStereotype * createStereotype(const QString &name)
Definition: umldoc.cpp:1171
void initSaveTimer()
Definition: umldoc.cpp:3250
void sigCurrentViewChanged()
Definition: moc_umldoc.cpp:370
Definition: basictypes.h:33
void settingsChanged(Settings::OptionState &optionState)
Definition: umldoc.cpp:3239
QTimer * m_pAutoSaveTimer
Definition: umldoc.h:301
bool b
Definition: cxx11-null-pointer-constant.h:6
void renameDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1552
void setLoading(bool state=true)
Definition: umldoc.cpp:1454
void closeDocument()
Definition: umldoc.cpp:406
void removeDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1676
Definition: umlobject.h:78
IDChangeLog * m_pChangeLog
Definition: umldoc.h:281
bool m_bTypesAreResolved
Definition: umldoc.h:311
void renameUMLObject(UMLObject *o)
Definition: umldoc.cpp:1584
void sigDiagramRemoved(Uml::ID::Type id)
Definition: moc_umldoc.cpp:308
void setDocumentation(const QString &doc)
Definition: umldoc.cpp:3172
Definition: basictypes.h:28
void sigWriteToStatusBar(const QString &text)
Definition: moc_umldoc.cpp:363
void removeAllObjects()
Definition: umldoc.cpp:2813
void removeView(UMLView *view, bool enforceOneView=true)
Definition: umldoc.cpp:239
Uml::ID::Type modelID() const
Definition: umldoc.cpp:1927
UMLClassifier * findUMLClassifier(const QString &name)
Definition: umldoc.cpp:1037
bool m_modified
Definition: umldoc.h:276
A print dialog page.
Definition: diagramprintpage.h:32
UMLEntityList entities(bool includeNested=true) const
Definition: umldoc.cpp:2879
void slotRemoveUMLObject(UMLObject *o)
Definition: umldoc.cpp:1089
void addDiagramToLoad(UMLFolder *folder, QDomNode node)
Definition: umldoc.cpp:2416
void setUrlUntitled()
Definition: umldoc.cpp:347
bool loadUMLObjectsFromXMI(QDomElement &element)
Definition: umldoc.cpp:2473
bool saveModified()
Definition: umldoc.cpp:358
bool m_importing
Definition: umldoc.h:291
Enum
Definition: basictypes.h:27
void addStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1226
QString uniqueViewName(const Uml::DiagramType::Enum type) const
Definition: umldoc.cpp:1396
UMLObject * findUMLObjectRaw(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:970
void sigDiagramChanged(Uml::DiagramType::Enum)
Definition: moc_umldoc.cpp:322
void beginPaste()
Definition: umldoc.cpp:3121
bool m_bLoading
Definition: umldoc.h:286
DiagramsModel * m_diagramsModel
Definition: umldoc.h:325
QString name() const
Definition: umldoc.cpp:1878
const Type None
special value for uninitialized ID
Definition: basictypes.h:373
Uml::ID::Type m_nViewID
Definition: umldoc.h:306
UMLObject * findUMLObject(const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject, UMLObject *currentObj=0)
Definition: umldoc.cpp:938
Definition: umldoc.cpp:76
ObjectsModel * objectsModel() const
Definition: umldoc.cpp:2429
virtual bool loadFromXMI(QIODevice &file, short encode=ENC_UNKNOWN)
Definition: umldoc.cpp:2130
void signalUMLObjectCreated(UMLObject *o)
Definition: umldoc.cpp:1856
void resolveTypes()
Definition: umldoc.cpp:2368
Definition: umldoc.h:62