umbrello  2.32.1
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  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2002-2020 *
8  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
9  ***************************************************************************/
10 
11 #ifndef UMLDOC_H
12 #define UMLDOC_H
13 
14 // app includes
15 #include "basictypes.h"
16 #include "optionstate.h"
17 #include "umlobject.h"
18 #include "umlobjectlist.h"
19 #include "umlassociationlist.h"
20 #include "umlclassifierlist.h"
21 #include "umlentitylist.h"
22 #include "umlviewlist.h"
23 #include "umlstereotypelist.h"
24 #include "umlpackagelist.h"
25 
26 // kde includes
27 #if QT_VERSION < 0x050000
28 #include <kurl.h>
29 #endif
30 
31 // qt includes
32 #if QT_VERSION >= 0x050000
33 #include <QUrl>
34 #endif
35 #include <QMap>
36 
37 // system includes
38 #include <typeinfo>
39 
40 #define ENC_UNKNOWN 0
41 #define ENC_UNICODE 1
42 #define ENC_WINDOWS 2
43 #define ENC_OLD_ENC 3
44 
45 // forward declarations
46 class QDomNode;
47 class QDomElement;
48 class QPrinter;
49 
50 class IDChangeLog;
51 class DiagramsModel;
52 class ObjectsModel;
53 class StereotypesModel;
54 class UMLPackage;
55 class UMLFolder;
56 class DiagramPrintPage;
57 
74 class UMLDoc : public QObject
75 {
76  Q_OBJECT
77 public:
78 
79  UMLDoc();
80  ~UMLDoc();
81 
82  void init();
83 
84  void addView(UMLView *view);
85  void removeView(UMLView *view, bool enforceOneView = true);
86  void setMainViewID(Uml::ID::Type viewID);
88  void activateAllViews();
89  void removeAllViews();
90  void removeAllObjects();
91 
92  void setModified(bool modified = true);
93  bool isModified();
94  bool saveModified();
95 
96  bool newDocument();
97  void closeDocument();
98 #if QT_VERSION >= 0x050000
99  bool openDocument(const QUrl& url, const char *format = 0);
100  bool saveDocument(const QUrl& url, const char *format = 0);
101  const QUrl& url() const;
102  void setUrl(const QUrl& url);
103 #else
104  bool openDocument(const KUrl& url, const char *format = 0);
105  bool saveDocument(const KUrl& url, const char *format = 0);
106  const KUrl& url() const;
107  void setUrl(const KUrl& url);
108 #endif
109  void setUrlUntitled();
110 
111  void setupSignals();
112 
113  bool isUnique(const QString &name);
114  bool isUnique(const QString &name, UMLPackage *package);
115 
117 
118  void addAssociation(UMLAssociation *assoc);
119  void removeAssociation(UMLAssociation *assoc, bool doSetModified = true);
121  const UMLObject *roleAObj,
122  const UMLObject *roleBObj,
123  bool *swap = 0);
124 
125  QString createDiagramName(Uml::DiagramType::Enum type, bool askForName = true);
128  const QString& name,
130 
131  void removeDiagram(Uml::ID::Type id);
133  void renameDiagram(Uml::ID::Type id);
134 
135  void removeUMLObject(UMLObject* umlobject, bool deleteObject = false);
136  void renameUMLObject(UMLObject *o);
138 
140 
141  UMLObject* findUMLObject(const QString &name,
143  UMLObject *currentObj = 0);
144 
146  const QString &name,
148 
150  const QString &name,
152 
154  const QString &name,
156 
158  const QString &name,
160 
161  UMLClassifier * findUMLClassifier(const QString &name);
162 
164  UMLView * findView(Uml::DiagramType::Enum type, const QString &name,
165  bool searchAllScopes = false);
166 
167  void setName(const QString& name);
168  QString name() const;
169 
170  void setResolution(qreal resolution);
171  qreal resolution() const;
172  qreal dpiScale() const;
173 
174  Uml::ID::Type modelID() const;
175 
176  static bool tagEq (const QString& tag, const QString& pattern);
177 
178  virtual void saveToXMI1(QIODevice& file);
179 
180  short encoding(QIODevice & file);
181 
182  virtual bool loadFromXMI1(QIODevice& file, short encode = ENC_UNKNOWN);
183 
184  bool validateXMI1Header(QDomNode& headerNode);
185 
186  bool loadUMLObjectsFromXMI1(QDomElement & element);
187  void loadExtensionsFromXMI1(QDomNode & node);
188  bool loadDiagramsFromXMI1(QDomNode & node);
189 
190  void signalDiagramRenamed(UMLView * view);
192 
193  UMLClassifierList concepts(bool includeNested = true);
194  UMLClassifierList classesAndInterfaces(bool includeNested = true);
195  UMLEntityList entities(bool includeNested = true);
196  UMLFolder * datatypeFolder() const;
197  UMLClassifierList datatypes(bool includeInactive = false);
199  UMLPackageList packages(bool includeNested = true, Uml::ModelType::Enum model = Uml::ModelType::Logical);
200 
201  void print(QPrinter * pPrinter, DiagramPrintPage * selectPage);
202 
205 
206  bool assignNewIDs(UMLObject* obj);
207 
208  bool addUMLObject(UMLObject * object);
209  bool addUMLView(UMLView * pView);
210 
213 
215  void setCurrentRoot(Uml::ModelType::Enum rootType);
216 
217  virtual IDChangeLog* changeLog();
218 
219  void beginPaste();
220  void endPaste();
221 
223 
224  void setDocumentation(const QString &doc);
225  QString documentation() const;
226 
228 
229  QString uniqueViewName(const Uml::DiagramType::Enum type);
230 
231  bool loading() const;
232  void setLoading(bool state = true);
233 
234  bool importing() const;
235  void setImporting(bool state = true);
236 
237  bool closing() const;
238 
239  void addDefaultDatatypes();
240  void createDatatype(const QString &name);
241  void removeDatatype(const QString &name);
242 
243  UMLStereotype *createStereotype(const QString &name);
244  UMLStereotype *findStereotype(const QString &name);
245  UMLStereotype *findOrCreateStereotype(const QString &name);
247  void addStereotype(UMLStereotype *s);
249  void addDefaultStereotypes();
250  const UMLStereotypeList& stereotypes() const;
251 
252  void writeToStatusBar(const QString &text);
253 
254  void resolveTypes();
255  bool loadDiagrams1();
256  void addDiagramToLoad(UMLFolder *folder, QDomNode node);
257 
261 
262  void setLoadingError(const QString &text);
263 
264 private:
265  void initSaveTimer();
266  void createDatatypeFolder();
267 
268  class Private;
270 
275 
281 
290 
291  QString m_Name;
293  int m_count;
295 #if QT_VERSION >= 0x050000
296  QUrl m_doc_url;
297 #else
298  KUrl m_doc_url;
299 #endif
304 
309 
314 
318  QString m_Doc;
319 
324 
329 
334 
341 
346 
350 
356 
360  typedef QMap<UMLFolder*, QList<QDomNode>> DiagramsMap;
362 
363 public slots:
365  void slotAutoSave();
366  void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
367 
368 signals:
373 
376 
381 
387  void sigSetStatusbarProgressSteps(int totalSteps);
388 
394  void sigSetStatusbarProgress(int stepPosition);
395 
399  void sigWriteToStatusBar(const QString &text);
400 
406 
407 };
408 
409 #endif // UMLDOC_H
A print dialog page.
Definition: diagramprintpage.h:38
Definition: diagramsmodel.h:26
Definition: idchangelog.h:27
Definition: objectsmodel.h:21
Definition: optionstate.h:315
Definition: stereotypesmodel.h:25
Sets up association information.
Definition: association.h:34
Information for a non-graphical Concept/Class.
Definition: classifier.h:40
Definition: umldoc.cpp:99
Definition: umldoc.h:75
QMap< UMLFolder *, QList< QDomNode > > DiagramsMap
Definition: umldoc.h:360
QString m_Name
name of this model as stored in the <UML:Model> tag
Definition: umldoc.h:291
void sigResetStatusbarProgress()
QString name() const
Definition: umldoc.cpp:2006
void closeDocument()
Definition: umldoc.cpp:404
KUrl m_doc_url
Definition: umldoc.h:298
UMLFolder * m_root[Uml::ModelType::N_MODELTYPES]
Definition: umldoc.h:274
void slotAutoSave()
Definition: umldoc.cpp:3356
void sigDiagramRemoved(Uml::ID::Type id)
void sigSetStatusbarProgress(int stepPosition)
const KUrl & url() const
Definition: umldoc.cpp:332
bool m_bTypesAreResolved
Definition: umldoc.h:333
void addView(UMLView *view)
Definition: umldoc.cpp:226
QString documentation() const
Definition: umldoc.cpp:3248
void sigDiagramRenamed(Uml::ID::Type t)
UMLAssociation * createUMLAssociation(UMLObject *a, UMLObject *b, Uml::AssociationType::Enum type)
Definition: umldoc.cpp:1464
bool newDocument()
Definition: umldoc.cpp:456
void renameUMLObject(UMLObject *o)
Definition: umldoc.cpp:1713
UMLObject * findUMLObjectRecursive(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1135
bool m_bLoading
Definition: umldoc.h:308
ObjectsModel * objectsModel()
Definition: umldoc.cpp:2561
void beginPaste()
Definition: umldoc.cpp:3207
void slotDiagramPopupMenu(QWidget *umlview, const QPoint &point)
Definition: umldoc.cpp:3497
void setResolution(qreal resolution)
Definition: umldoc.cpp:2016
UMLStereotype * findStereotypeById(Uml::ID::Type id)
Definition: umldoc.cpp:1342
UMLFolder * m_datatypeRoot
Definition: umldoc.h:280
UMLObject * findUMLObject(const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject, UMLObject *currentObj=0)
Definition: umldoc.cpp:1068
void removeView(UMLView *view, bool enforceOneView=true)
Definition: umldoc.cpp:265
UMLEntityList entities(bool includeNested=true)
Definition: umldoc.cpp:2990
UMLObject * findObjectById(Uml::ID::Type id)
Definition: umldoc.cpp:1039
void resolveTypes()
Definition: umldoc.cpp:2500
UMLClassifier * findUMLClassifier(const QString &name)
Definition: umldoc.cpp:1167
virtual bool loadFromXMI1(QIODevice &file, short encode=ENC_UNKNOWN)
Definition: umldoc.cpp:2277
void init()
Definition: umldoc.cpp:145
void sigDiagramChanged(Uml::DiagramType::Enum)
void removeAssociation(UMLAssociation *assoc, bool doSetModified=true)
Definition: umldoc.cpp:1399
void setUrlUntitled()
Definition: umldoc.cpp:341
void removeDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1804
UMLViewList viewIterator()
Definition: umldoc.cpp:3067
void removeDiagramCmd(Uml::ID::Type id)
Definition: umldoc.cpp:1828
void setDocumentation(const QString &doc)
Definition: umldoc.cpp:3258
void sigObjectCreated(UMLObject *)
qreal dpiScale() const
Definition: umldoc.cpp:2037
virtual void saveToXMI1(QIODevice &file)
Definition: umldoc.cpp:2063
void print(QPrinter *pPrinter, DiagramPrintPage *selectPage)
Definition: umldoc.cpp:3041
UMLStereotype * findStereotype(const QString &name)
Definition: umldoc.cpp:1313
virtual IDChangeLog * changeLog()
Definition: umldoc.cpp:3198
bool validateXMI1Header(QDomNode &headerNode)
Definition: umldoc.cpp:2582
void addDefaultStereotypes()
Definition: umldoc.cpp:1375
UMLClassifierList classesAndInterfaces(bool includeNested=true)
Definition: umldoc.cpp:2976
ObjectsModel * m_objectsModel
Definition: umldoc.h:348
void setUrl(const KUrl &url)
Definition: umldoc.cpp:318
bool loadUMLObjectsFromXMI1(QDomElement &element)
Definition: umldoc.cpp:2605
int m_count
auxiliary counter for the progress bar
Definition: umldoc.h:293
void slotRemoveUMLObject(UMLObject *o)
Definition: umldoc.cpp:1218
UMLDoc()
Definition: umldoc.cpp:110
UMLPackageList packages(bool includeNested=true, Uml::ModelType::Enum model=Uml::ModelType::Logical)
Definition: umldoc.cpp:2938
Uml::ID::Type modelID() const
Definition: umldoc.cpp:2051
DiagramsModel * diagramsModel()
Definition: umldoc.cpp:2556
Uml::ID::Type m_nViewID
Definition: umldoc.h:328
Uml::ModelType::Enum rootFolderType(UMLObject *obj)
Definition: umldoc.cpp:3182
void removeUMLObject(UMLObject *umlobject, bool deleteObject=false)
Definition: umldoc.cpp:1884
void createDatatypeFolder()
Definition: umldoc.cpp:182
StereotypesModel * m_stereotypesModel
Definition: umldoc.h:349
void setLoading(bool state=true)
Definition: umldoc.cpp:1582
bool addUMLView(UMLView *pView)
Definition: umldoc.cpp:3273
Uml::ID::Type assignNewID(Uml::ID::Type oldID)
Definition: umldoc.cpp:3234
const UMLStereotypeList & stereotypes() const
Definition: umldoc.cpp:1388
Private * m_d
Definition: umldoc.h:268
QString createDiagramName(Uml::DiagramType::Enum type, bool askForName=true)
Definition: umldoc.cpp:1620
void sigDiagramCreated(Uml::ID::Type id)
void writeToStatusBar(const QString &text)
Definition: umldoc.cpp:1209
bool isModified()
Definition: umldoc.cpp:3113
bool addUMLObject(UMLObject *object)
Definition: umldoc.cpp:1181
void sigObjectRemoved(UMLObject *)
void removeAllObjects()
Definition: umldoc.cpp:2924
void signalUMLObjectCreated(UMLObject *o)
Definition: umldoc.cpp:1984
IDChangeLog * m_pChangeLog
Definition: umldoc.h:303
Uml::ID::Type m_modelID
xmi.id of this model in the <UML:Model>
Definition: umldoc.h:292
bool assignNewIDs(UMLObject *obj)
Definition: umldoc.cpp:3126
StereotypesModel * stereotypesModel()
Definition: umldoc.cpp:2571
static bool tagEq(const QString &tag, const QString &pattern)
Definition: umldoc.cpp:3553
void setMainViewID(Uml::ID::Type viewID)
Definition: umldoc.cpp:2770
void addDiagramToLoad(UMLFolder *folder, QDomNode node)
Definition: umldoc.cpp:2548
UMLObject * findUMLObjectRaw(Uml::ModelType::Enum, const QString &name, UMLObject::ObjectType type=UMLObject::ot_UMLObject)
Definition: umldoc.cpp:1100
DiagramsModel * m_diagramsModel
Definition: umldoc.h:347
UMLViewList views(Uml::DiagramType::Enum type=Uml::DiagramType::Undefined)
Definition: umldoc.cpp:3082
qreal m_resolution
Definition: umldoc.h:355
short encoding(QIODevice &file)
Definition: umldoc.cpp:2175
QTimer * m_pAutoSaveTimer
Definition: umldoc.h:323
DiagramsMap m_diagramsToLoad
Definition: umldoc.h:361
UMLView * findView(Uml::ID::Type id)
Definition: umldoc.cpp:1006
void settingsChanged(Settings::OptionState &optionState)
Definition: umldoc.cpp:3325
void sigWriteToStatusBar(const QString &text)
void createDatatype(const QString &name)
Definition: umldoc.cpp:3454
void changeCurrentView(Uml::ID::Type id)
Definition: umldoc.cpp:1777
bool isUnique(const QString &name)
Definition: umldoc.cpp:1235
bool loading() const
Definition: umldoc.cpp:1573
void activateAllViews()
Definition: umldoc.cpp:3309
UMLAssociation * findAssociation(Uml::AssociationType::Enum assocType, const UMLObject *roleAObj, const UMLObject *roleBObj, bool *swap=0)
Definition: umldoc.cpp:1430
UMLStereotypeList m_stereoList
Definition: umldoc.h:289
void signalDiagramRenamed(UMLView *view)
Definition: umldoc.cpp:3415
void setImporting(bool state=true)
Definition: umldoc.cpp:1599
UMLStereotype * findOrCreateStereotype(const QString &name)
Definition: umldoc.cpp:1328
bool saveModified()
Definition: umldoc.cpp:356
bool openDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:499
UMLView * createDiagram(UMLFolder *folder, Uml::DiagramType::Enum type, const QString &name, Uml::ID::Type id=Uml::ID::None)
Definition: umldoc.cpp:1649
void removeAllViews()
Definition: umldoc.cpp:2910
qreal resolution() const
Definition: umldoc.cpp:2027
bool importing() const
Definition: umldoc.cpp:1591
bool m_modified
Definition: umldoc.h:294
UMLClassifierList datatypes(bool includeInactive=false)
Definition: umldoc.cpp:3004
void addAssociation(UMLAssociation *assoc)
Definition: umldoc.cpp:1482
void renameDiagram(Uml::ID::Type id)
Definition: umldoc.cpp:1681
void setupSignals()
Definition: umldoc.cpp:994
~UMLDoc()
Definition: umldoc.cpp:195
bool m_bClosing
Definition: umldoc.h:345
UMLClassifierList concepts(bool includeNested=true)
Definition: umldoc.cpp:2962
void addDefaultDatatypes()
Definition: umldoc.cpp:3432
void setCurrentRoot(Uml::ModelType::Enum rootType)
Definition: umldoc.cpp:1871
void removeStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1365
UMLStereotype * createStereotype(const QString &name)
Definition: umldoc.cpp:1300
bool closing() const
Definition: umldoc.cpp:1608
UMLFolder * currentRoot()
Definition: umldoc.cpp:1847
QString m_Doc
Definition: umldoc.h:318
bool m_importing
Definition: umldoc.h:313
void removeDatatype(const QString &name)
Definition: umldoc.cpp:3479
void addStereotype(UMLStereotype *s)
Definition: umldoc.cpp:1355
void setModified(bool modified=true)
Definition: umldoc.cpp:3098
bool loadDiagrams1()
Definition: umldoc.cpp:2526
bool loadDiagramsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2859
bool saveDocument(const KUrl &url, const char *format=0)
Definition: umldoc.cpp:777
void sigCurrentViewChanged()
UMLAssociationList associations()
Definition: umldoc.cpp:3022
QString uniqueViewName(const Uml::DiagramType::Enum type)
Definition: umldoc.cpp:1524
UMLFolder * rootFolder(Uml::ModelType::Enum mt)
Definition: umldoc.cpp:3167
void renameChildUMLObject(UMLObject *o)
Definition: umldoc.cpp:1741
void sigSetStatusbarProgressSteps(int totalSteps)
void initSaveTimer()
Definition: umldoc.cpp:3336
UMLFolder * datatypeFolder() const
Definition: umldoc.cpp:2950
void loadExtensionsFromXMI1(QDomNode &node)
Definition: umldoc.cpp:2780
UMLFolder * m_pCurrentRoot
Definition: umldoc.h:340
void setName(const QString &name)
Definition: umldoc.cpp:1998
void endPaste()
Definition: umldoc.cpp:3219
void setLoadingError(const QString &text)
Definition: umldoc.cpp:2566
Non-graphical management of objects and diagrams of a Folder.
Definition: folder.h:35
The base class for UML objects.
Definition: umlobject.h:75
ObjectType
Definition: umlobject.h:81
@ ot_UMLObject
Definition: umlobject.h:83
Non-graphical information for a Package.
Definition: package.h:33
Sets up stereotype information.
Definition: stereotype.h:41
Definition: umlview.h:35
bool b
Definition: cxx11-null-pointer-constant.h:6
OptionState & optionState()
Definition: optionstate.cpp:362
Enum
Definition: basictypes.h:106
Enum
Definition: basictypes.h:77
@ Undefined
Definition: basictypes.h:80
const Type None
special value for uninitialized ID
Definition: basictypes.h:387
std::string Type
Definition: basictypes.h:385
Enum
Definition: basictypes.h:41
@ N_MODELTYPES
Definition: basictypes.h:47
@ Logical
Definition: basictypes.h:42
QString a
Definition: petalnode.cpp:18
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:18
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:17
#define ENC_UNKNOWN
Definition: umldoc.h:40
QList< UMLEntity * > UMLEntityList
Definition: umlentitylist.h:17
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:17
QList< UMLStereotype * > UMLStereotypeList
Definition: umlstereotypelist.h:17
QList< QPointer< UMLView > > UMLViewList
Definition: umlviewlist.h:26