umbrello/umbrello
umldoc.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef UMLDOC_H
00012 #define UMLDOC_H
00013
00014
00015 #include "listpopupmenu.h"
00016 #include "umlnamespace.h"
00017 #include "optionstate.h"
00018 #include "umlobjectlist.h"
00019 #include "umlassociationlist.h"
00020 #include "umlclassifierlist.h"
00021 #include "umlentitylist.h"
00022 #include "umlviewlist.h"
00023 #include "umlstereotypelist.h"
00024 #include "umlpackagelist.h"
00025
00026
00027 #include <kurl.h>
00028
00029
00030 #include <typeinfo>
00031
00032 #define ENC_UNKNOWN 0
00033 #define ENC_UNICODE 1
00034 #define ENC_OLD_ENC 2
00035
00036
00037 class QDomNode;
00038 class QDomElement;
00039 class QPrinter;
00040
00041 class IDChangeLog;
00042 class UMLPackage;
00043 class UMLFolder;
00044 class DiagramPrintPage;
00045
00062 class UMLDoc : public QObject
00063 {
00064 Q_OBJECT
00065 public:
00066
00067 UMLDoc();
00068 ~UMLDoc();
00069
00070 void init();
00071
00072 void addView(UMLView *view);
00073 void removeView(UMLView *view , bool enforceOneView = true );
00074 void setMainViewID(Uml::IDType viewID);
00075 void changeCurrentView(Uml::IDType id);
00076 void activateAllViews();
00077 void removeAllViews();
00078
00079 void setModified(bool modified = true);
00080 bool isModified();
00081 bool saveModified();
00082
00083 bool newDocument();
00084 void closeDocument();
00085 bool openDocument(const KUrl& url, const char *format=0);
00086 bool saveDocument(const KUrl& url, const char *format=0);
00087
00088 const KUrl& url() const;
00089 void setUrl(const KUrl& url);
00090
00091 void setupSignals();
00092
00093 bool isUnique(const QString &name);
00094 bool isUnique(const QString &name, UMLPackage *package);
00095
00096 UMLStereotype* findOrCreateStereotype(const QString &name);
00097
00098 UMLAssociation* createUMLAssociation(UMLObject *a, UMLObject *b, Uml::Association_Type type);
00099
00100 void addAssociation(UMLAssociation *assoc);
00101 void removeAssociation(UMLAssociation *assoc, bool doSetModified = true);
00102 UMLAssociation * findAssociation(Uml::Association_Type assocType,
00103 const UMLObject *roleAObj,
00104 const UMLObject *roleBObj,
00105 bool *swap = NULL);
00106
00107 UMLView* createDiagram(UMLFolder *folder, Uml::Diagram_Type type, bool askForName = true);
00108 void removeDiagram(Uml::IDType id);
00109 void renameDiagram(Uml::IDType id);
00110
00111 void removeUMLObject(UMLObject* umlobject);
00112
00113 void renameUMLObject(UMLObject *o);
00114 void renameChildUMLObject(UMLObject *o);
00115
00116 UMLObject* findObjectById(Uml::IDType id);
00117
00118 UMLObject* findUMLObject(const QString &name,
00119 Uml::Object_Type type = Uml::ot_UMLObject,
00120 UMLObject *currentObj = NULL);
00121
00122
00123
00124 UMLClassifier * findUMLClassifier (const QString &name);
00125
00126 UMLStereotype * findStereotype(const QString &name);
00127
00128 UMLView * findView(Uml::IDType id);
00129 UMLView * findView(Uml::Diagram_Type type, const QString &name,
00130 bool searchAllScopes = false);
00131
00132 void setName(const QString& name);
00133 QString getName() const;
00134
00135 Uml::IDType getModelID() const;
00136
00137 virtual void saveToXMI(QIODevice& file);
00138
00139 short getEncoding(QIODevice & file);
00140
00141 virtual bool loadFromXMI(QIODevice& file, short encode = ENC_UNKNOWN);
00142
00143 bool validateXMIHeader(QDomNode& headerNode);
00144
00145 bool loadUMLObjectsFromXMI(QDomElement & element);
00146 void loadExtensionsFromXMI(QDomNode & node);
00147 bool loadDiagramsFromXMI(QDomNode & node);
00148
00149 void signalDiagramRenamed(UMLView * view);
00150 void signalUMLObjectCreated(UMLObject * o);
00151
00152 UMLFolder * getDatatypeFolder() const;
00153
00154 UMLClassifierList getConcepts(bool includeNested = true);
00155 UMLClassifierList getClasses(bool includeNested = true);
00156 UMLClassifierList getClassesAndInterfaces(bool includeNested = true);
00157 UMLEntityList getEntities(bool includeNested = true);
00158 UMLClassifierList getInterfaces(bool includeNested = true);
00159 UMLClassifierList getDatatypes();
00160 UMLAssociationList getAssociations();
00161 UMLPackageList getPackages(bool includeNested = true);
00162
00163 void print(QPrinter * pPrinter, DiagramPrintPage * selectPage);
00164
00165 UMLViewList getViewIterator();
00166
00167 bool assignNewIDs(UMLObject* obj);
00168
00169 bool addUMLObject(UMLObject * object);
00170 bool addUMLView(UMLView * pView );
00171
00172 UMLFolder *getRootFolder(Uml::Model_Type mt);
00173
00174 Uml::Model_Type rootFolderType(UMLObject *obj);
00175
00176 UMLFolder *currentRoot();
00177 void setCurrentRoot(Uml::Model_Type rootType);
00178
00179 virtual IDChangeLog* getChangeLog();
00180
00181 void beginPaste();
00182 void endPaste();
00183
00184 Uml::IDType assignNewID(Uml::IDType oldID);
00185
00186 void setDocumentation(const QString &doc);
00187 QString getDocumentation() const;
00188
00189 void settingsChanged(Settings::OptionState optionState);
00190
00191 int getFileVersion() const;
00192
00193 QString uniqViewName(const Uml::Diagram_Type type);
00194
00195 bool loading() const;
00196 void setLoading(bool state = true);
00197
00198 bool closing() const;
00199
00200 void addDefaultDatatypes();
00201 void createDatatype(const QString &name);
00202
00203 UMLStereotype * findStereotypeById(Uml::IDType id);
00204 void addStereotype(UMLStereotype *s);
00205 void removeStereotype(UMLStereotype *s);
00206 void addDefaultStereotypes();
00207 const UMLStereotypeList& getStereotypes();
00208
00209 void writeToStatusBar(const QString &text);
00210
00211 void resolveTypes();
00212
00213 ListPopupMenu::Menu_Type getPopupMenuSelection(QAction* action);
00214
00215 private:
00216 void initSaveTimer();
00217
00221 UMLFolder *m_root[Uml::N_MODELTYPES];
00222
00227 UMLFolder *m_datatypeRoot;
00228
00236 UMLStereotypeList m_stereoList;
00237
00238 QString m_Name;
00239 Uml::IDType m_modelID;
00240 int m_count;
00241 bool m_modified;
00242 KUrl m_doc_url;
00243
00247 IDChangeLog* m_pChangeLog;
00248
00252 bool m_bLoading;
00253
00257 QString m_Doc;
00258
00262 QTimer * m_pAutoSaveTimer;
00263
00267 int m_version;
00268
00272 Uml::IDType m_nViewID;
00273
00277 bool m_bTypesAreResolved;
00278
00283 ListPopupMenu* m_pTabPopupMenu;
00284
00290 UMLFolder * m_pCurrentRoot;
00291
00295 bool m_bClosing;
00296
00297 public slots:
00298 void slotRemoveUMLObject(UMLObject*o);
00299 void slotAutoSave();
00300 void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
00301
00302 signals:
00303 void sigDiagramCreated(Uml::IDType id);
00304 void sigDiagramRemoved(Uml::IDType id);
00305 void sigDiagramRenamed(Uml::IDType t);
00306 void sigDiagramChanged(Uml::Diagram_Type);
00307
00308 void sigObjectCreated(UMLObject *);
00309 void sigObjectRemoved(UMLObject *);
00310
00314 void sigResetStatusbarProgress();
00315
00321 void sigSetStatusbarProgressSteps(int totalSteps);
00322
00328 void sigSetStatusbarProgress(int stepPosition);
00329
00333 void sigWriteToStatusBar(const QString &text);
00334
00339 void sigCurrentViewChanged();
00340
00341 };
00342
00343 #endif // UMLDOC_H