umbrello 2.34.70-5524f40e1
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// kde includes
22#if QT_VERSION < 0x050000
23#include <kurl.h>
24#endif
25
26// qt includes
27#if QT_VERSION >= 0x050000
28#include <QUrl>
29#endif
30#include <QMap>
31
32// system includes
33#include <typeinfo>
34
35#define ENC_UNKNOWN 0
36#define ENC_UNICODE 1
37#define ENC_WINDOWS 2
38#define ENC_OLD_ENC 3
39
40// forward declarations
41class QDomNode;
42class QDomElement;
43class QPrinter;
44
45class IDChangeLog;
46class DiagramsModel;
47class ObjectsModel;
49class UMLPackage;
50class UMLFolder;
52
69class UMLDoc : public QObject
70{
71 Q_OBJECT
72public:
73
74 UMLDoc();
75 ~UMLDoc();
76
77 void init();
78
79 void addView(UMLView *view);
80 void removeView(UMLView *view, bool enforceOneView = true);
81 void setMainViewID(Uml::ID::Type viewID);
83 void activateAllViews();
84 void removeAllViews();
85 void removeAllObjects();
86
87 void setModified(bool modified = true);
88 bool isModified() const;
89 bool saveModified();
90
91 bool newDocument();
92 void closeDocument();
93#if QT_VERSION >= 0x050000
94 bool openDocument(const QUrl& url, const char *format = 0);
95 bool saveDocument(const QUrl& url, const char *format = 0);
96 const QUrl& url() const;
97 void setUrl(const QUrl& url);
98#else
99 bool openDocument(const KUrl& url, const char *format = 0);
100 bool saveDocument(const KUrl& url, const char *format = 0);
101 const KUrl& url() const;
102 void setUrl(const KUrl& url);
103#endif
104 void setUrlUntitled();
105
106 void setupSignals();
107
108 bool isUnique(const QString &name) const;
109 bool isUnique(const QString &name, UMLPackage *package) const;
110
112
113 void addAssociation(UMLAssociation *assoc);
114 void removeAssociation(UMLAssociation *assoc, bool doSetModified = true);
116 const UMLObject *roleAObj,
117 const UMLObject *roleBObj,
118 bool *swap = 0) const;
119
120 QString createDiagramName(Uml::DiagramType::Enum type, bool askForName = true);
123 const QString& name,
125
129
130 void removeUMLObject(UMLObject* umlobject, bool deleteObject = false);
131 void renameUMLObject(UMLObject *o);
133
135
136 UMLObject* findUMLObject(const QString &name,
138 UMLObject *currentObj = 0);
139
141 const QString &name,
143
145 const QString &name,
147
149 const QString &name,
151
153 const QString &name,
155
156 UMLClassifier * findUMLClassifier(const QString &name);
157
158 UMLView * findView(Uml::ID::Type id) const;
159 UMLView * findView(Uml::DiagramType::Enum type, const QString &name,
160 bool searchAllScopes = false) const;
161
162 void setName(const QString& name);
163 QString name() const;
164
165 void setResolution(qreal resolution);
166 qreal resolution() const;
167 qreal dpiScale() const;
168
169 Uml::ID::Type modelID() const;
170
171 static bool tagEq (const QString& tag, const QString& pattern);
172
173 virtual void saveToXMI(QIODevice& file);
174
175 short encoding(QIODevice & file);
176
177 virtual bool loadFromXMI(QIODevice& file, short encode = ENC_UNKNOWN);
178
179 bool validateXMI1Header(QDomNode& headerNode);
180
181 bool loadUMLObjectsFromXMI(QDomElement & element);
182 void loadExtensionsFromXMI1(QDomNode & node);
183 bool loadDiagramsFromXMI1(QDomNode & node);
184
185 void signalDiagramRenamed(UMLView * view);
187
188 UMLClassifierList concepts(bool includeNested = true) const;
189 UMLClassifierList classesAndInterfaces(bool includeNested = true) const;
190 UMLEntityList entities(bool includeNested = true) const;
191 UMLFolder * datatypeFolder() const;
192 UMLClassifierList datatypes(bool includeInactive = false) const;
193 UMLDatatype * findDatatype(QString name, bool includeInactive = false);
195 UMLPackageList packages(bool includeNested = true, Uml::ModelType::Enum model = Uml::ModelType::Logical) const;
196
197 void print(QPrinter * pPrinter, DiagramPrintPage * selectPage);
198
201
202 bool assignNewIDs(UMLObject* obj);
203
204 bool addUMLObject(UMLObject * object);
205 bool addUMLView(UMLView * pView);
206
209
210 UMLFolder *currentRoot() const;
212
213 virtual IDChangeLog* changeLog() const;
214
215 void beginPaste();
216 void endPaste();
217
219
220 void setDocumentation(const QString &doc);
221 QString documentation() const;
222
224
225 QString uniqueViewName(const Uml::DiagramType::Enum type) const;
226
227 bool loading() const;
228 void setLoading(bool state = true);
229
230 bool importing() const;
231 void setImporting(bool state = true);
232
233 bool closing() const;
234
235 void addDefaultDatatypes();
236 UMLDatatype * createDatatype(const QString &name);
237 void removeDatatype(const QString &name);
238
239 UMLStereotype *createStereotype(const QString &name);
240 UMLStereotype *findStereotype(const QString &name) const;
246 const UMLStereotypeList& stereotypes() const;
247
248 void writeToStatusBar(const QString &text);
249
250 void resolveTypes();
251 bool loadDiagrams1();
252 void addDiagramToLoad(UMLFolder *folder, QDomNode node);
253
256 ObjectsModel *objectsModel() const;
257
258 void setLoadingError(const QString &text);
259
260private:
261 void initSaveTimer();
263
264 class Private;
266
271
277
286
287 QString m_Name;
291#if QT_VERSION >= 0x050000
292 QUrl m_doc_url;
293#else
295#endif
300
305
310
314 QString m_Doc;
315
320
325
330
337
342
346
352
356 typedef QMap<UMLFolder*, QList<QDomNode>> DiagramsMap;
358
359public slots:
361 void slotAutoSave();
362 void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
363
364signals:
369
372
377
383 void sigSetStatusbarProgressSteps(int totalSteps);
384
390 void sigSetStatusbarProgress(int stepPosition);
391
395 void sigWriteToStatusBar(const QString &text);
396
402
403};
404
405#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:310
Definition: stereotypesmodel.h:20
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:94
Definition: umldoc.h:70
UMLView * findView(Uml::ID::Type id) const
Definition: umldoc.cpp:1016
QMap< UMLFolder *, QList< QDomNode > > DiagramsMap
Definition: umldoc.h:356
QString m_Name
name of this model as stored in the <UML:Model> tag
Definition: umldoc.h:287
void sigResetStatusbarProgress()
Definition: moc_umldoc.cpp:343
QString name() const
Definition: umldoc.cpp:2022
void closeDocument()
Definition: umldoc.cpp:399
KUrl m_doc_url
Definition: umldoc.h:294
UMLFolder * m_root[Uml::ModelType::N_MODELTYPES]
Definition: umldoc.h:270
void slotAutoSave()
Definition: umldoc.cpp:3411
void sigDiagramRemoved(Uml::ID::Type id)
Definition: moc_umldoc.cpp:308
void sigSetStatusbarProgress(int stepPosition)
Definition: moc_umldoc.cpp:356
UMLStereotype * findStereotypeById(Uml::ID::Type id) const
Definition: umldoc.cpp:1357
const KUrl & url() const
Definition: umldoc.cpp:327
bool m_bTypesAreResolved
Definition: umldoc.h:329
void addView(UMLView *view)
Definition: umldoc.cpp:221
QString documentation() const
Definition: umldoc.cpp:3303
void sigDiagramRenamed(Uml::ID::Type t)
Definition: moc_umldoc.cpp:315
UMLFolder * currentRoot() const
Definition: umldoc.cpp:1863
UMLAssociation * createUMLAssociation(UMLObject *a, UMLObject *b, Uml::AssociationType::Enum type)
Definition: umldoc.cpp:1479
bool newDocument()
Definition: umldoc.cpp:451
void renameUMLObject(UMLObject *o)
Definition: umldoc.cpp:1728
UMLObject * findUMLObjectRecursive(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1149
UMLViewList viewIterator() const
Definition: umldoc.cpp:3122
bool m_bLoading
Definition: umldoc.h:304
void beginPaste()
Definition: umldoc.cpp:3262
void slotDiagramPopupMenu(QWidget *umlview, const QPoint &point)
Definition: umldoc.cpp:3554
void setResolution(qreal resolution)
Definition: umldoc.cpp:2032
UMLFolder * m_datatypeRoot
Definition: umldoc.h:276
UMLObject * findUMLObject(const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject, UMLObject *currentObj=0)
Definition: umldoc.cpp:1082
void removeView(UMLView *view, bool enforceOneView=true)
Definition: umldoc.cpp:260
UMLObject * findObjectById(Uml::ID::Type id)
Definition: umldoc.cpp:1053
void resolveTypes()
Definition: umldoc.cpp:2509
bool loadUMLObjectsFromXMI(QDomElement &element)
Definition: umldoc.cpp:2614
UMLClassifier * findUMLClassifier(const QString &name)
Definition: umldoc.cpp:1181
void init()
Definition: umldoc.cpp:140
void sigDiagramChanged(Uml::DiagramType::Enum)
Definition: moc_umldoc.cpp:322
void removeAssociation(UMLAssociation *assoc, bool doSetModified=true)
Definition: umldoc.cpp:1414
void setUrlUntitled()
Definition: umldoc.cpp:336
void removeDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1820
void removeDiagramCmd(Uml::ID::Type id)
Definition: umldoc.cpp:1844
void setDocumentation(const QString &doc)
Definition: umldoc.cpp:3313
void sigObjectCreated(UMLObject *)
Definition: moc_umldoc.cpp:329
qreal dpiScale() const
Definition: umldoc.cpp:2057
void print(QPrinter *pPrinter, DiagramPrintPage *selectPage)
Definition: umldoc.cpp:3096
virtual IDChangeLog * changeLog() const
Definition: umldoc.cpp:3253
bool validateXMI1Header(QDomNode &headerNode)
Definition: umldoc.cpp:2591
bool isModified() const
Definition: umldoc.cpp:3168
void addDefaultStereotypes()
Definition: umldoc.cpp:1390
ObjectsModel * m_objectsModel
Definition: umldoc.h:344
void setUrl(const KUrl &url)
Definition: umldoc.cpp:313
UMLClassifierList datatypes(bool includeInactive=false) const
Definition: umldoc.cpp:3034
UMLDatatype * createDatatype(const QString &name)
Definition: umldoc.cpp:3509
Uml::ModelType::Enum rootFolderType(UMLObject *obj) const
Definition: umldoc.cpp:3237
int m_count
auxiliary counter for the progress bar
Definition: umldoc.h:289
void slotRemoveUMLObject(UMLObject *o)
Definition: umldoc.cpp:1233
UMLDoc()
Definition: umldoc.cpp:105
Uml::ID::Type modelID() const
Definition: umldoc.cpp:2071
Uml::ID::Type m_nViewID
Definition: umldoc.h:324
void removeUMLObject(UMLObject *umlobject, bool deleteObject=false)
Definition: umldoc.cpp:1900
void createDatatypeFolder()
Definition: umldoc.cpp:177
StereotypesModel * m_stereotypesModel
Definition: umldoc.h:345
void setLoading(bool state=true)
Definition: umldoc.cpp:1598
ObjectsModel * objectsModel() const
Definition: umldoc.cpp:2570
bool addUMLView(UMLView *pView)
Definition: umldoc.cpp:3328
Uml::ID::Type assignNewID(Uml::ID::Type oldID)
Definition: umldoc.cpp:3289
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition: umldoc.cpp:3006
const UMLStereotypeList & stereotypes() const
Definition: umldoc.cpp:1403
Private * m_d
Definition: umldoc.h:264
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition: umldoc.cpp:1636
UMLPackageList packages(bool includeNested=true, Uml::ModelType::Enum model=Uml::ModelType::Logical) const
Definition: umldoc.cpp:2968
void sigDiagramCreated(Uml::ID::Type id)
Definition: moc_umldoc.cpp:301
UMLStereotype * findStereotype(const QString &name) const
Definition: umldoc.cpp:1328
void writeToStatusBar(const QString &text)
Definition: umldoc.cpp:1224
bool addUMLObject(UMLObject *object)
Definition: umldoc.cpp:1195
void sigObjectRemoved(UMLObject *)
Definition: moc_umldoc.cpp:336
void removeAllObjects()
Definition: umldoc.cpp:2954
void signalUMLObjectCreated(UMLObject *o)
Definition: umldoc.cpp:2000
UMLEntityList entities(bool includeNested=true) const
Definition: umldoc.cpp:3020
IDChangeLog * m_pChangeLog
Definition: umldoc.h:299
Uml::ID::Type m_modelID
xmi.id of this model in the <UML:Model>
Definition: umldoc.h:288
bool assignNewIDs(UMLObject *obj)
Definition: umldoc.cpp:3181
static bool tagEq(const QString &tag, const QString &pattern)
Definition: umldoc.cpp:3610
void setMainViewID(Uml::ID::Type viewID)
Definition: umldoc.cpp:2794
void addDiagramToLoad(UMLFolder *folder, QDomNode node)
Definition: umldoc.cpp:2557
UMLObject * findUMLObjectRaw(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1114
DiagramsModel * m_diagramsModel
Definition: umldoc.h:343
DiagramsModel * diagramsModel() const
Definition: umldoc.cpp:2565
qreal m_resolution
Definition: umldoc.h:351
short encoding(QIODevice &file)
Definition: umldoc.cpp:2222
QTimer * m_pAutoSaveTimer
Definition: umldoc.h:319
DiagramsMap m_diagramsToLoad
Definition: umldoc.h:357
void settingsChanged(Settings::OptionState &optionState)
Definition: umldoc.cpp:3380
void sigWriteToStatusBar(const QString &text)
Definition: moc_umldoc.cpp:363
UMLFolder * rootFolder(Uml::ModelType::Enum mt) const
Definition: umldoc.cpp:3222
virtual bool loadFromXMI(QIODevice &file, short encode=ENC_UNKNOWN)
Definition: umldoc.cpp:2274
QString uniqueViewName(const Uml::DiagramType::Enum type) const
Definition: umldoc.cpp:1540
void changeCurrentView(Uml::ID::Type id)
Definition: umldoc.cpp:1793
bool loading() const
Definition: umldoc.cpp:1589
void activateAllViews()
Definition: umldoc.cpp:3364
UMLClassifierList concepts(bool includeNested=true) const
Definition: umldoc.cpp:2992
UMLStereotypeList m_stereoList
Definition: umldoc.h:285
void signalDiagramRenamed(UMLView *view)
Definition: umldoc.cpp:3470
void setImporting(bool state=true)
Definition: umldoc.cpp:1615
UMLStereotype * findOrCreateStereotype(const QString &name)
Definition: umldoc.cpp:1343
bool saveModified()
Definition: umldoc.cpp:351
bool openDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:494
UMLDatatype * findDatatype(QString name, bool includeInactive=false)
Definition: umldoc.cpp:3054
UMLView * createDiagram(UMLFolder *folder, Uml::DiagramType::Enum type, const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: umldoc.cpp:1665
void removeAllViews()
Definition: umldoc.cpp:2940
qreal resolution() const
Definition: umldoc.cpp:2047
bool importing() const
Definition: umldoc.cpp:1607
bool m_modified
Definition: umldoc.h:290
void addAssociation(UMLAssociation *assoc)
Definition: umldoc.cpp:1497
void renameDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1696
void setupSignals()
Definition: umldoc.cpp:1004
~UMLDoc()
Definition: umldoc.cpp:190
bool m_bClosing
Definition: umldoc.h:341
void addDefaultDatatypes()
Definition: umldoc.cpp:3487
void setCurrentRoot(Uml::ModelType::Enum rootType)
Definition: umldoc.cpp:1887
virtual void saveToXMI(QIODevice &file)
Definition: umldoc.cpp:2083
UMLAssociation * findAssociation(Uml::AssociationType::Enum assocType, const UMLObject *roleAObj, const UMLObject *roleBObj, bool *swap=0) const
Definition: umldoc.cpp:1445
void removeStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1380
UMLStereotype * createStereotype(const QString &name)
Definition: umldoc.cpp:1315
bool closing() const
Definition: umldoc.cpp:1624
UMLViewList views(Uml::DiagramType::Enum type=Uml::DiagramType::Undefined) const
Definition: umldoc.cpp:3137
bool isUnique(const QString &name) const
Definition: umldoc.cpp:1250
QString m_Doc
Definition: umldoc.h:314
bool m_importing
Definition: umldoc.h:309
void removeDatatype(const QString &name)
Definition: umldoc.cpp:3536
void addStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1370
void setModified(bool modified=true)
Definition: umldoc.cpp:3153
bool loadDiagrams1()
Definition: umldoc.cpp:2535
bool loadDiagramsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2884
bool saveDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:778
void sigCurrentViewChanged()
Definition: moc_umldoc.cpp:370
StereotypesModel * stereotypesModel() const
Definition: umldoc.cpp:2580
void renameChildUMLObject(UMLObject *o)
Definition: umldoc.cpp:1756
void sigSetStatusbarProgressSteps(int totalSteps)
Definition: moc_umldoc.cpp:349
void initSaveTimer()
Definition: umldoc.cpp:3391
UMLFolder * datatypeFolder() const
Definition: umldoc.cpp:2980
void loadExtensionsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2804
UMLFolder * m_pCurrentRoot
Definition: umldoc.h:336
void setName(const QString &name)
Definition: umldoc.cpp:2014
void endPaste()
Definition: umldoc.cpp:3274
void setLoadingError(const QString &text)
Definition: umldoc.cpp:2575
UMLAssociationList associations() const
Definition: umldoc.cpp:3077
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
OptionState & optionState()
Definition: optionstate.cpp:357
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:12
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
#define ENC_UNKNOWN
Definition: umldoc.h:35
QList< UMLEntity * > UMLEntityList
Definition: umlentitylist.h:12
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11
QList< UMLStereotype * > UMLStereotypeList
Definition: umlstereotypelist.h:12
QList< QPointer< UMLView > > UMLViewList
Definition: umlviewlist.h:14