umbrello 2.39.0
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
34class QDomNode;
35class QDomElement;
36class QPrinter;
37
38class IDChangeLog;
39class DiagramsModel;
40class ObjectsModel;
42class UMLPackage;
43class UMLFolder;
45
62class UMLDoc : public QObject
63{
64 Q_OBJECT
65public:
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 = nullptr);
87 bool saveDocument(const QUrl& url, const char *format = nullptr);
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 = nullptr) const;
105
106 QString createDiagramName(Uml::DiagramType::Enum type, bool askForName = true);
109 const QString& name,
111
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 = nullptr);
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
187
188 bool assignNewIDs(UMLObject* obj);
189
190 bool addUMLObject(UMLObject * object);
191 bool addUMLView(UMLView * pView);
192
195
196 UMLFolder *currentRoot() const;
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
209 void settingsChanged(Settings::OptionState &optionState);
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;
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
242 ObjectsModel *objectsModel() const;
243
244 void setLoadingError(const QString &text);
245
246private:
247 void initSaveTimer();
249
250 class Private;
252
257
263
272
273 QString m_Name;
282
287
292
296 QString m_Doc;
297
302
307
312
319
324
328
334
338 typedef QMap<UMLFolder*, QList<QDomNode>> DiagramsMap;
340
341public Q_SLOTS:
343 void slotAutoSave();
344 void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
345
346Q_SIGNALS:
351
354
359
365 void sigSetStatusbarProgressSteps(int totalSteps);
366
372 void sigSetStatusbarProgress(int stepPosition);
373
377 void sigWriteToStatusBar(const QString &text);
378
384
385};
386
387#endif // UMLDOC_H
A print dialog page.
Definition diagramprintpage.h:33
Definition diagramsmodel.h:21
Definition idchangelog.h:22
Definition objectsmodel.h:16
Definition optionstate.h:308
Definition stereotypesmodel.h:19
Sets up association information.
Definition association.h:29
Information for a non-graphical Concept/Class.
Definition classifier.h:35
Non-graphical information for a Datatype.
Definition datatype.h:21
Definition umldoc.cpp:77
Definition umldoc.h:63
UMLView * findView(Uml::ID::Type id) const
Definition umldoc.cpp:879
QMap< UMLFolder *, QList< QDomNode > > DiagramsMap
Definition umldoc.h:338
QString m_Name
name of this model as stored in the <UML:Model> tag
Definition umldoc.h:273
void sigResetStatusbarProgress()
QString name() const
Definition umldoc.cpp:1885
void closeDocument()
Definition umldoc.cpp:406
bool saveDocument(const QUrl &url, const char *format=nullptr)
Definition umldoc.cpp:706
UMLFolder * m_root[Uml::ModelType::N_MODELTYPES]
Definition umldoc.h:256
void slotAutoSave()
Definition umldoc.cpp:3278
void sigDiagramRemoved(Uml::ID::Type id)
void sigSetStatusbarProgress(int stepPosition)
UMLStereotype * findStereotypeById(Uml::ID::Type id) const
Definition umldoc.cpp:1220
bool m_bTypesAreResolved
Definition umldoc.h:311
void addView(UMLView *view)
Definition umldoc.cpp:200
UMLObject * findUMLObject(const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject, UMLObject *currentObj=nullptr)
Definition umldoc.cpp:945
QString documentation() const
Definition umldoc.cpp:3170
void sigDiagramRenamed(Uml::ID::Type t)
UMLFolder * currentRoot() const
Definition umldoc.cpp:1726
UMLAssociation * createUMLAssociation(UMLObject *a, UMLObject *b, Uml::AssociationType::Enum type)
Definition umldoc.cpp:1342
bool newDocument()
Definition umldoc.cpp:465
void renameUMLObject(UMLObject *o)
Definition umldoc.cpp:1591
UMLObject * findUMLObjectRecursive(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition umldoc.cpp:1012
UMLViewList viewIterator() const
Definition umldoc.cpp:2989
bool m_bLoading
Definition umldoc.h:286
void setUrl(const QUrl &url)
Definition umldoc.cpp:329
UMLAssociation * findAssociation(Uml::AssociationType::Enum assocType, const UMLObject *roleAObj, const UMLObject *roleBObj, bool *swap=nullptr) const
Definition umldoc.cpp:1308
void beginPaste()
Definition umldoc.cpp:3129
void slotDiagramPopupMenu(QWidget *umlview, const QPoint &point)
Definition umldoc.cpp:3407
void setResolution(qreal resolution)
Definition umldoc.cpp:1895
UMLFolder * m_datatypeRoot
Definition umldoc.h:262
void removeView(UMLView *view, bool enforceOneView=true)
Definition umldoc.cpp:239
UMLObject * findObjectById(Uml::ID::Type id)
Definition umldoc.cpp:916
void resolveTypes()
Definition umldoc.cpp:2376
bool loadUMLObjectsFromXMI(QDomElement &element)
Definition umldoc.cpp:2481
UMLClassifier * findUMLClassifier(const QString &name)
Definition umldoc.cpp:1044
void init()
Definition umldoc.cpp:119
void sigDiagramChanged(Uml::DiagramType::Enum)
void removeAssociation(UMLAssociation *assoc, bool doSetModified=true)
Definition umldoc.cpp:1277
void setUrlUntitled()
Definition umldoc.cpp:347
void removeDiagram(Uml::ID::Type id)
Definition umldoc.cpp:1683
void removeDiagramCmd(Uml::ID::Type id)
Definition umldoc.cpp:1707
void setDocumentation(const QString &doc)
Definition umldoc.cpp:3180
void sigObjectCreated(UMLObject *)
qreal dpiScale() const
Definition umldoc.cpp:1920
void print(QPrinter *pPrinter, DiagramPrintPage *selectPage)
Definition umldoc.cpp:2963
virtual IDChangeLog * changeLog() const
Definition umldoc.cpp:3120
bool validateXMI1Header(QDomNode &headerNode)
Definition umldoc.cpp:2458
bool isModified() const
Definition umldoc.cpp:3035
void addDefaultStereotypes()
Definition umldoc.cpp:1253
ObjectsModel * m_objectsModel
Definition umldoc.h:326
UMLClassifierList datatypes(bool includeInactive=false) const
Definition umldoc.cpp:2901
UMLDatatype * createDatatype(const QString &name)
Definition umldoc.cpp:3362
Uml::ModelType::Enum rootFolderType(UMLObject *obj) const
Definition umldoc.cpp:3104
int m_count
auxiliary counter for the progress bar
Definition umldoc.h:275
void slotRemoveUMLObject(UMLObject *o)
Definition umldoc.cpp:1096
UMLDoc()
Definition umldoc.cpp:88
Uml::ID::Type modelID() const
Definition umldoc.cpp:1934
Uml::ID::Type m_nViewID
Definition umldoc.h:306
void removeUMLObject(UMLObject *umlobject, bool deleteObject=false)
Definition umldoc.cpp:1763
void createDatatypeFolder()
Definition umldoc.cpp:156
StereotypesModel * m_stereotypesModel
Definition umldoc.h:327
void setLoading(bool state=true)
Definition umldoc.cpp:1461
QUrl m_doc_url
Definition umldoc.h:277
ObjectsModel * objectsModel() const
Definition umldoc.cpp:2437
bool addUMLView(UMLView *pView)
Definition umldoc.cpp:3195
Uml::ID::Type assignNewID(Uml::ID::Type oldID)
Definition umldoc.cpp:3156
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition umldoc.cpp:2873
const UMLStereotypeList & stereotypes() const
Definition umldoc.cpp:1266
Private * m_d
Definition umldoc.h:251
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition umldoc.cpp:1499
UMLPackageList packages(bool includeNested=true, Uml::ModelType::Enum model=Uml::ModelType::Logical) const
Definition umldoc.cpp:2835
void sigDiagramCreated(Uml::ID::Type id)
UMLStereotype * findStereotype(const QString &name) const
Definition umldoc.cpp:1191
void writeToStatusBar(const QString &text)
Definition umldoc.cpp:1087
bool addUMLObject(UMLObject *object)
Definition umldoc.cpp:1058
void sigObjectRemoved(UMLObject *)
void removeAllObjects()
Definition umldoc.cpp:2821
void signalUMLObjectCreated(UMLObject *o)
Definition umldoc.cpp:1863
UMLEntityList entities(bool includeNested=true) const
Definition umldoc.cpp:2887
IDChangeLog * m_pChangeLog
Definition umldoc.h:281
Uml::ID::Type m_modelID
xmi.id of this model in the <UML:Model>
Definition umldoc.h:274
bool assignNewIDs(UMLObject *obj)
Definition umldoc.cpp:3048
static bool tagEq(const QString &tag, const QString &pattern)
Definition umldoc.cpp:3463
void setMainViewID(Uml::ID::Type viewID)
Definition umldoc.cpp:2661
void addDiagramToLoad(UMLFolder *folder, QDomNode node)
Definition umldoc.cpp:2424
UMLObject * findUMLObjectRaw(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition umldoc.cpp:977
DiagramsModel * m_diagramsModel
Definition umldoc.h:325
DiagramsModel * diagramsModel() const
Definition umldoc.cpp:2432
qreal m_resolution
Definition umldoc.h:333
short encoding(QIODevice &file)
Definition umldoc.cpp:2085
QTimer * m_pAutoSaveTimer
Definition umldoc.h:301
DiagramsMap m_diagramsToLoad
Definition umldoc.h:339
void settingsChanged(Settings::OptionState &optionState)
Definition umldoc.cpp:3247
void sigWriteToStatusBar(const QString &text)
UMLFolder * rootFolder(Uml::ModelType::Enum mt) const
Definition umldoc.cpp:3089
virtual bool loadFromXMI(QIODevice &file, short encode=ENC_UNKNOWN)
Definition umldoc.cpp:2138
QString uniqueViewName(const Uml::DiagramType::Enum type) const
Definition umldoc.cpp:1403
void changeCurrentView(Uml::ID::Type id)
Definition umldoc.cpp:1656
bool loading() const
Definition umldoc.cpp:1452
void activateAllViews()
Definition umldoc.cpp:3231
UMLClassifierList concepts(bool includeNested=true) const
Definition umldoc.cpp:2859
UMLStereotypeList m_stereoList
Definition umldoc.h:271
void signalDiagramRenamed(UMLView *view)
Definition umldoc.cpp:3323
void setImporting(bool state=true)
Definition umldoc.cpp:1478
UMLStereotype * findOrCreateStereotype(const QString &name)
Definition umldoc.cpp:1206
bool saveModified()
Definition umldoc.cpp:358
bool openDocument(const QUrl &url, const char *format=nullptr)
Definition umldoc.cpp:505
UMLDatatype * findDatatype(QString name, bool includeInactive=false)
Definition umldoc.cpp:2921
UMLView * createDiagram(UMLFolder *folder, Uml::DiagramType::Enum type, const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition umldoc.cpp:1528
void removeAllViews()
Definition umldoc.cpp:2807
qreal resolution() const
Definition umldoc.cpp:1910
bool importing() const
Definition umldoc.cpp:1470
bool m_modified
Definition umldoc.h:276
void addAssociation(UMLAssociation *assoc)
Definition umldoc.cpp:1360
void renameDiagram(Uml::ID::Type id)
Definition umldoc.cpp:1559
void setupSignals()
Definition umldoc.cpp:867
~UMLDoc()
Definition umldoc.cpp:169
bool m_bClosing
Definition umldoc.h:323
void addDefaultDatatypes()
Definition umldoc.cpp:3340
const QUrl & url() const
Definition umldoc.cpp:339
void setCurrentRoot(Uml::ModelType::Enum rootType)
Definition umldoc.cpp:1750
virtual void saveToXMI(QIODevice &file)
Definition umldoc.cpp:1946
void removeStereotype(UMLStereotype *s)
Definition umldoc.cpp:1243
UMLStereotype * createStereotype(const QString &name)
Definition umldoc.cpp:1178
bool closing() const
Definition umldoc.cpp:1487
UMLViewList views(Uml::DiagramType::Enum type=Uml::DiagramType::Undefined) const
Definition umldoc.cpp:3004
bool isUnique(const QString &name) const
Definition umldoc.cpp:1113
QString m_Doc
Definition umldoc.h:296
bool m_importing
Definition umldoc.h:291
void removeDatatype(const QString &name)
Definition umldoc.cpp:3389
void addStereotype(UMLStereotype *s)
Definition umldoc.cpp:1233
void setModified(bool modified=true)
Definition umldoc.cpp:3020
bool loadDiagrams1()
Definition umldoc.cpp:2402
bool loadDiagramsFromXMI1(QDomNode &node)
Definition umldoc.cpp:2751
void sigCurrentViewChanged()
StereotypesModel * stereotypesModel() const
Definition umldoc.cpp:2447
void renameChildUMLObject(UMLObject *o)
Definition umldoc.cpp:1619
void sigSetStatusbarProgressSteps(int totalSteps)
void initSaveTimer()
Definition umldoc.cpp:3258
UMLFolder * datatypeFolder() const
Definition umldoc.cpp:2847
void loadExtensionsFromXMI1(QDomNode &node)
Definition umldoc.cpp:2671
UMLFolder * m_pCurrentRoot
Definition umldoc.h:318
void setName(const QString &name)
Definition umldoc.cpp:1877
void endPaste()
Definition umldoc.cpp:3141
void setLoadingError(const QString &text)
Definition umldoc.cpp:2442
UMLAssociationList associations() const
Definition umldoc.cpp:2944
Non-graphical management of objects and diagrams of a Folder.
Definition folder.h:30
The base class for UML objects.
Definition umlobject.h:70
ObjectType
Definition umlobject.h:76
@ ot_UMLObject
Definition umlobject.h:78
Non-graphical information for a Package.
Definition package.h:28
Sets up stereotype information.
Definition stereotype.h:36
Definition umlview.h:30
bool b
Definition cxx11-null-pointer-constant.h:6
Enum
Definition basictypes.h:92
Enum
Definition basictypes.h:63
@ Undefined
Definition basictypes.h:66
const Type None
special value for uninitialized ID
Definition basictypes.h:373
std::string Type
Definition basictypes.h:371
Enum
Definition basictypes.h:27
@ N_MODELTYPES
Definition basictypes.h:33
@ Logical
Definition basictypes.h:28
QString a
Definition petalnode.cpp:13
QList< UMLAssociation * > UMLAssociationList
Definition umlassociationlist.h:14
QList< UMLClassifier * > UMLClassifierList
Definition umlclassifierlist.h:14
#define ENC_UNKNOWN
Definition umldoc.h:28
QList< UMLEntity * > UMLEntityList
Definition umlentitylist.h:14
QList< UMLPackage * > UMLPackageList
Definition umlpackagelist.h:13
QList< UMLStereotype * > UMLStereotypeList
Definition umlstereotypelist.h:14
QList< QPointer< UMLView > > UMLViewList
Definition umlviewlist.h:16