umbrello  2.35.2
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
41 class QDomNode;
42 class QDomElement;
43 class QPrinter;
44 
45 class IDChangeLog;
46 class DiagramsModel;
47 class ObjectsModel;
48 class StereotypesModel;
49 class UMLPackage;
50 class UMLFolder;
51 class DiagramPrintPage;
52 
69 class UMLDoc : public QObject
70 {
71  Q_OBJECT
72 public:
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 
126  void removeDiagram(Uml::ID::Type id);
128  void renameDiagram(Uml::ID::Type id);
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 
199  UMLViewList viewIterator() const;
201 
202  bool assignNewIDs(UMLObject* obj);
203 
204  bool addUMLObject(UMLObject * object);
205  bool addUMLView(UMLView * pView);
206 
209 
210  UMLFolder *currentRoot() const;
211  void setCurrentRoot(Uml::ModelType::Enum rootType);
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;
241  UMLStereotype *findOrCreateStereotype(const QString &name);
243  void addStereotype(UMLStereotype *s);
245  void addDefaultStereotypes();
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 
254  DiagramsModel *diagramsModel() const;
256  ObjectsModel *objectsModel() const;
257 
258  void setLoadingError(const QString &text);
259 
260 private:
261  void initSaveTimer();
262  void createDatatypeFolder();
263 
264  class Private;
266 
271 
277 
286 
287  QString m_Name;
289  int m_count;
291 #if QT_VERSION >= 0x050000
292  QUrl m_doc_url;
293 #else
294  KUrl m_doc_url;
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 
359 public slots:
361  void slotAutoSave();
362  void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
363 
364 signals:
369 
370  void sigObjectCreated(UMLObject *);
371  void sigObjectRemoved(UMLObject *);
372 
377 
383  void sigSetStatusbarProgressSteps(int totalSteps);
384 
390  void sigSetStatusbarProgress(int stepPosition);
391 
395  void sigWriteToStatusBar(const QString &text);
396 
401  void sigCurrentViewChanged();
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:1055
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:2061
void closeDocument()
Definition: umldoc.cpp:438
KUrl m_doc_url
Definition: umldoc.h:294
UMLFolder * m_root[Uml::ModelType::N_MODELTYPES]
Definition: umldoc.h:270
void slotAutoSave()
Definition: umldoc.cpp:3453
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:1396
const KUrl & url() const
Definition: umldoc.cpp:366
bool m_bTypesAreResolved
Definition: umldoc.h:329
void addView(UMLView *view)
Definition: umldoc.cpp:221
QString documentation() const
Definition: umldoc.cpp:3345
void sigDiagramRenamed(Uml::ID::Type t)
Definition: moc_umldoc.cpp:315
UMLFolder * currentRoot() const
Definition: umldoc.cpp:1902
UMLAssociation * createUMLAssociation(UMLObject *a, UMLObject *b, Uml::AssociationType::Enum type)
Definition: umldoc.cpp:1518
bool newDocument()
Definition: umldoc.cpp:490
void renameUMLObject(UMLObject *o)
Definition: umldoc.cpp:1767
UMLObject * findUMLObjectRecursive(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1188
UMLViewList viewIterator() const
Definition: umldoc.cpp:3164
bool m_bLoading
Definition: umldoc.h:304
void beginPaste()
Definition: umldoc.cpp:3304
void slotDiagramPopupMenu(QWidget *umlview, const QPoint &point)
Definition: umldoc.cpp:3596
void setResolution(qreal resolution)
Definition: umldoc.cpp:2071
UMLFolder * m_datatypeRoot
Definition: umldoc.h:276
UMLObject * findUMLObject(const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject, UMLObject *currentObj=0)
Definition: umldoc.cpp:1121
void removeView(UMLView *view, bool enforceOneView=true)
Definition: umldoc.cpp:260
UMLObject * findObjectById(Uml::ID::Type id)
Definition: umldoc.cpp:1092
void resolveTypes()
Definition: umldoc.cpp:2551
bool loadUMLObjectsFromXMI(QDomElement &element)
Definition: umldoc.cpp:2656
UMLClassifier * findUMLClassifier(const QString &name)
Definition: umldoc.cpp:1220
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:1453
void setUrlUntitled()
Definition: umldoc.cpp:375
void removeDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1859
void removeDiagramCmd(Uml::ID::Type id)
Definition: umldoc.cpp:1883
void setDocumentation(const QString &doc)
Definition: umldoc.cpp:3355
void sigObjectCreated(UMLObject *)
Definition: moc_umldoc.cpp:329
qreal dpiScale() const
Definition: umldoc.cpp:2096
void print(QPrinter *pPrinter, DiagramPrintPage *selectPage)
Definition: umldoc.cpp:3138
virtual IDChangeLog * changeLog() const
Definition: umldoc.cpp:3295
bool validateXMI1Header(QDomNode &headerNode)
Definition: umldoc.cpp:2633
bool isModified() const
Definition: umldoc.cpp:3210
void addDefaultStereotypes()
Definition: umldoc.cpp:1429
ObjectsModel * m_objectsModel
Definition: umldoc.h:344
void setUrl(const KUrl &url)
Definition: umldoc.cpp:352
UMLClassifierList datatypes(bool includeInactive=false) const
Definition: umldoc.cpp:3076
UMLDatatype * createDatatype(const QString &name)
Definition: umldoc.cpp:3551
Uml::ModelType::Enum rootFolderType(UMLObject *obj) const
Definition: umldoc.cpp:3279
int m_count
auxiliary counter for the progress bar
Definition: umldoc.h:289
void slotRemoveUMLObject(UMLObject *o)
Definition: umldoc.cpp:1272
UMLDoc()
Definition: umldoc.cpp:105
Uml::ID::Type modelID() const
Definition: umldoc.cpp:2110
Uml::ID::Type m_nViewID
Definition: umldoc.h:324
void removeUMLObject(UMLObject *umlobject, bool deleteObject=false)
Definition: umldoc.cpp:1939
void createDatatypeFolder()
Definition: umldoc.cpp:177
StereotypesModel * m_stereotypesModel
Definition: umldoc.h:345
void setLoading(bool state=true)
Definition: umldoc.cpp:1637
ObjectsModel * objectsModel() const
Definition: umldoc.cpp:2612
bool addUMLView(UMLView *pView)
Definition: umldoc.cpp:3370
Uml::ID::Type assignNewID(Uml::ID::Type oldID)
Definition: umldoc.cpp:3331
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition: umldoc.cpp:3048
const UMLStereotypeList & stereotypes() const
Definition: umldoc.cpp:1442
Private * m_d
Definition: umldoc.h:264
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition: umldoc.cpp:1675
UMLPackageList packages(bool includeNested=true, Uml::ModelType::Enum model=Uml::ModelType::Logical) const
Definition: umldoc.cpp:3010
void sigDiagramCreated(Uml::ID::Type id)
Definition: moc_umldoc.cpp:301
UMLStereotype * findStereotype(const QString &name) const
Definition: umldoc.cpp:1367
void writeToStatusBar(const QString &text)
Definition: umldoc.cpp:1263
bool addUMLObject(UMLObject *object)
Definition: umldoc.cpp:1234
void sigObjectRemoved(UMLObject *)
Definition: moc_umldoc.cpp:336
void removeAllObjects()
Definition: umldoc.cpp:2996
void signalUMLObjectCreated(UMLObject *o)
Definition: umldoc.cpp:2039
UMLEntityList entities(bool includeNested=true) const
Definition: umldoc.cpp:3062
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:3223
static bool tagEq(const QString &tag, const QString &pattern)
Definition: umldoc.cpp:3652
void setMainViewID(Uml::ID::Type viewID)
Definition: umldoc.cpp:2836
void addDiagramToLoad(UMLFolder *folder, QDomNode node)
Definition: umldoc.cpp:2599
UMLObject * findUMLObjectRaw(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1153
DiagramsModel * m_diagramsModel
Definition: umldoc.h:343
DiagramsModel * diagramsModel() const
Definition: umldoc.cpp:2607
qreal m_resolution
Definition: umldoc.h:351
short encoding(QIODevice &file)
Definition: umldoc.cpp:2261
QTimer * m_pAutoSaveTimer
Definition: umldoc.h:319
DiagramsMap m_diagramsToLoad
Definition: umldoc.h:357
void settingsChanged(Settings::OptionState &optionState)
Definition: umldoc.cpp:3422
void sigWriteToStatusBar(const QString &text)
Definition: moc_umldoc.cpp:363
UMLFolder * rootFolder(Uml::ModelType::Enum mt) const
Definition: umldoc.cpp:3264
virtual bool loadFromXMI(QIODevice &file, short encode=ENC_UNKNOWN)
Definition: umldoc.cpp:2313
QString uniqueViewName(const Uml::DiagramType::Enum type) const
Definition: umldoc.cpp:1579
void changeCurrentView(Uml::ID::Type id)
Definition: umldoc.cpp:1832
bool loading() const
Definition: umldoc.cpp:1628
void activateAllViews()
Definition: umldoc.cpp:3406
UMLClassifierList concepts(bool includeNested=true) const
Definition: umldoc.cpp:3034
UMLStereotypeList m_stereoList
Definition: umldoc.h:285
void signalDiagramRenamed(UMLView *view)
Definition: umldoc.cpp:3512
void setImporting(bool state=true)
Definition: umldoc.cpp:1654
UMLStereotype * findOrCreateStereotype(const QString &name)
Definition: umldoc.cpp:1382
bool saveModified()
Definition: umldoc.cpp:390
bool openDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:533
UMLDatatype * findDatatype(QString name, bool includeInactive=false)
Definition: umldoc.cpp:3096
UMLView * createDiagram(UMLFolder *folder, Uml::DiagramType::Enum type, const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: umldoc.cpp:1704
void removeAllViews()
Definition: umldoc.cpp:2982
qreal resolution() const
Definition: umldoc.cpp:2086
bool importing() const
Definition: umldoc.cpp:1646
bool m_modified
Definition: umldoc.h:290
void addAssociation(UMLAssociation *assoc)
Definition: umldoc.cpp:1536
void renameDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1735
void setupSignals()
Definition: umldoc.cpp:1043
~UMLDoc()
Definition: umldoc.cpp:190
bool m_bClosing
Definition: umldoc.h:341
void addDefaultDatatypes()
Definition: umldoc.cpp:3529
void setCurrentRoot(Uml::ModelType::Enum rootType)
Definition: umldoc.cpp:1926
virtual void saveToXMI(QIODevice &file)
Definition: umldoc.cpp:2122
UMLAssociation * findAssociation(Uml::AssociationType::Enum assocType, const UMLObject *roleAObj, const UMLObject *roleBObj, bool *swap=0) const
Definition: umldoc.cpp:1484
void removeStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1419
UMLStereotype * createStereotype(const QString &name)
Definition: umldoc.cpp:1354
bool closing() const
Definition: umldoc.cpp:1663
UMLViewList views(Uml::DiagramType::Enum type=Uml::DiagramType::Undefined) const
Definition: umldoc.cpp:3179
bool isUnique(const QString &name) const
Definition: umldoc.cpp:1289
QString m_Doc
Definition: umldoc.h:314
bool m_importing
Definition: umldoc.h:309
void removeDatatype(const QString &name)
Definition: umldoc.cpp:3578
void addStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1409
void setModified(bool modified=true)
Definition: umldoc.cpp:3195
bool loadDiagrams1()
Definition: umldoc.cpp:2577
bool loadDiagramsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2926
bool saveDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:817
void sigCurrentViewChanged()
Definition: moc_umldoc.cpp:370
StereotypesModel * stereotypesModel() const
Definition: umldoc.cpp:2622
void renameChildUMLObject(UMLObject *o)
Definition: umldoc.cpp:1795
void sigSetStatusbarProgressSteps(int totalSteps)
Definition: moc_umldoc.cpp:349
void initSaveTimer()
Definition: umldoc.cpp:3433
UMLFolder * datatypeFolder() const
Definition: umldoc.cpp:3022
void loadExtensionsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2846
UMLFolder * m_pCurrentRoot
Definition: umldoc.h:336
void setName(const QString &name)
Definition: umldoc.cpp:2053
void endPaste()
Definition: umldoc.cpp:3316
void setLoadingError(const QString &text)
Definition: umldoc.cpp:2617
UMLAssociationList associations() const
Definition: umldoc.cpp:3119
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