summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/umldoc.h
diff options
context:
space:
mode:
authortoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
committertoma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2009-11-25 17:56:58 +0000
commitbd9e6617827818fd043452c08c606f07b78014a0 (patch)
tree425bb4c3168f9c02f10150f235d2cb998dcc6108 /umbrello/umbrello/umldoc.h
downloadtdesdk-bd9e6617827818fd043452c08c606f07b78014a0.tar.gz
tdesdk-bd9e6617827818fd043452c08c606f07b78014a0.zip
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923 git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdesdk@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'umbrello/umbrello/umldoc.h')
-rw-r--r--umbrello/umbrello/umldoc.h920
1 files changed, 920 insertions, 0 deletions
diff --git a/umbrello/umbrello/umldoc.h b/umbrello/umbrello/umldoc.h
new file mode 100644
index 00000000..2e936a3f
--- /dev/null
+++ b/umbrello/umbrello/umldoc.h
@@ -0,0 +1,920 @@
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2002-2007 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+#ifndef UMLDOC_H
+#define UMLDOC_H
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+// system includes
+#include <typeinfo>
+
+// qt includes
+#include <qdatastream.h>
+#include <qmap.h>
+#include <qdict.h>
+#include <qptrstack.h>
+
+// kde includes
+#include <kurl.h>
+#include <kdockwidget.h>
+#include <kpopupmenu.h>
+
+// app includes
+#include "umlnamespace.h"
+#include "optionstate.h"
+#include "umlobjectlist.h"
+#include "umlassociationlist.h"
+#include "umlclassifierlist.h"
+#include "umlviewlist.h"
+#include "umlstereotypelist.h"
+
+#define ENC_UNKNOWN 0
+#define ENC_UNICODE 1
+#define ENC_OLD_ENC 2
+
+
+// forward declarations
+class QDomNode;
+class QFile;
+class QSplitter;
+
+class KPrinter;
+
+class DocWindow;
+class IDChangeLog;
+class ObjectWidget;
+class UMLWidget;
+class UMLPackage;
+class UMLFolder;
+
+/**
+ * UMLDoc provides a document object for a document-view model.
+ *
+ * The UMLDoc class provides a document object that can be used
+ * in conjunction with the classes UMLApp and UMLView to create
+ * a document-view model for standard KDE applications based on
+ * KApplication and KMainWindow. Thereby, the document object
+ * is created by the UMLApp instance and contains the document
+ * structure with the according methods for manipulation of the
+ * document data by UMLView objects. Also, UMLDoc contains the
+ * methods for serialization of the document data from and to
+ * files.
+ *
+ * @author Paul Hensgen <phensgen@techie.com>
+ * Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org
+ */
+class UMLDoc : public QObject {
+ Q_OBJECT
+public:
+ /**
+ * Constructor for the fileclass of the application
+ */
+ UMLDoc();
+
+ /**
+ * Destructor for the fileclass of the application
+ */
+ ~UMLDoc();
+
+ /**
+ * Initialize the UMLDoc.
+ * To be called after the constructor, before anything else.
+ */
+ void init();
+
+ /**
+ * Adds a view to the document which represents the document
+ * contents. Usually this is your main view.
+ *
+ * @param view Pointer to the UMLView to add.
+ */
+ void addView(UMLView *view);
+
+ /**
+ * Removes a view from the list of currently connected views.
+ *
+ * @param view Pointer to the UMLView to remove.
+ * @param enforceOneView switch to determine if we have a current view or not.
+ * most of the time, we DO want this, except when exiting the program.
+ */
+ void removeView(UMLView *view , bool enforceOneView = true );
+
+ /**
+ * Sets m_nViewID.
+ */
+ void setMainViewID(Uml::IDType viewID);
+
+ /**
+ * Sets the modified flag for the document after a modifying
+ * action on the view connected to the document.
+ *
+ * @param _m The value to set the modified flag to.
+ * @param addToUndo Whether this is an action which should be
+ * added to the undo stack.
+ */
+ void setModified(bool _m=true, bool addToUndo=true);
+
+ /**
+ * Returns if the document is modified or not. Use this to
+ * determine if your document needs saving by the user on
+ * closing.
+ *
+ * @return True if this UMLDoc is modified.
+ */
+ bool isModified() {
+ return m_modified;
+ }
+
+ /**
+ * "save modified" - Asks the user for saving if the document
+ * is modified.
+ *
+ * @return True if document can be closed.
+ */
+ bool saveModified();
+
+ /**
+ * Initializes the document generally.
+ *
+ * @return True if operation successful.
+ */
+ bool newDocument();
+
+ /**
+ * Closes the current document.
+ */
+ void closeDocument();
+
+ /**
+ * Loads the document by filename and format and emits the
+ * updateViews() signal.
+ *
+ * @param url The filename in KURL format.
+ * @param format The format (optional.)
+ * @return True if operation successful.
+ */
+ bool openDocument(const KURL& url, const char *format=0);
+
+ /**
+ * Saves the document using the given filename and format.
+ *
+ * @param url The filename in KURL format.
+ * @param format The format (optional.)
+ * @return True if operation successful.
+ */
+ bool saveDocument(const KURL& url, const char *format=0);
+
+ /**
+ * Returns the KURL of the document.
+ *
+ * @return The KURL of this UMLDoc.
+ */
+ const KURL& URL() const;
+
+ /**
+ * Sets the URL of the document.
+ *
+ * @param url The KURL to set.
+ */
+ void setURL(const KURL& url);
+
+ /**
+ * Sets up the signals needed by the program for it to work.
+ */
+ void setupSignals();
+
+ /**
+ * Returns true if the given name is unique within its scope.
+ *
+ * @param name The name to check.
+ * @return True if name is unique.
+ */
+ bool isUnique(const QString &name);
+
+ /**
+ * Returns true if the given name is unique within its scope of given package.
+ *
+ * @param name The name to check.
+ * @package The UMLPackage in which we have to determine the unique-ness
+ * @return True if name is unique.
+ */
+ bool isUnique(const QString &name, UMLPackage *package);
+
+ /**
+ * Finds or creates a stereotype for the parent object.
+ */
+ UMLStereotype* findOrCreateStereotype(const QString &name);
+
+ /**
+ * Creates an association between two UMLObjects.
+ * NOTE: this method does not check if the association is valid / legal
+ *
+ * @param a The UMLObject "A" for the association (source)
+ * @param b The UMLObject "B" for the association (destination)
+ * @param type The association's type
+ * @return The Association created
+ */
+ UMLAssociation* createUMLAssociation(UMLObject *a, UMLObject *b, Uml::Association_Type type);
+
+ /**
+ * Adds an association.
+ *
+ * @param pAssoc Pointer to the UMLAssociation to add.
+ */
+ void addAssociation(UMLAssociation *pAssoc);
+
+ /**
+ * Removes an association.
+ *
+ * @param pAssoc Pointer to the UMLAssociation to remove.
+ * @param doSetModified Whether to mark the document as modified (default: true.)
+ */
+ void removeAssociation(UMLAssociation *pAssoc, bool doSetModified = true);
+
+ /**
+ * Finds an association.
+ *
+ * @param assocType Type of the UMLAssociation to seek.
+ * @param roleAObj Pointer to the role A UMLCanvasObject.
+ * @param roleBObj Pointer to the role B UMLCanvasObject.
+ * @param swap Optional pointer to boolean.
+ * The bool is set to true if the assocation
+ * matched with swapped roles, else it is set
+ * to false.
+ * @return Pointer to the UMLAssociation found or NULL if not found.
+ */
+ UMLAssociation * findAssociation(Uml::Association_Type assocType,
+ const UMLObject *roleAObj,
+ const UMLObject *roleBObj,
+ bool *swap = NULL);
+
+ /**
+ * Creates a diagram of the given type.
+ *
+ * @param folder The folder in which tp create the diagram.
+ * @param type The type of diagram to create.
+ * @param askForName If true shows a dialog box asking for name,
+ * else uses a default name.
+ * @return Pointer to the UMLView of the new diagram.
+ */
+ UMLView* createDiagram(UMLFolder *folder, Uml::Diagram_Type type, bool askForName = true);
+
+ /**
+ * Removes an @ref UMLObject from the current file. If this object
+ * is being represented on a diagram it will also delete all those
+ * representations.
+ *
+ * @param o Pointer to the UMLObject to delete.
+ */
+ void removeUMLObject(UMLObject*o);
+
+ /**
+ * Used to rename a document. This method takes care of everything.
+ * You just need to give the ID of the diagram to the method.
+ *
+ * @param id The ID of the diagram to rename.
+ */
+ void renameDiagram(Uml::IDType id);
+
+ /**
+ * Used to rename a @ref UMLObject. The @ref UMLObject is to be an
+ * actor, use case or concept.
+ *
+ * @param o The object to rename.
+ */
+ void renameUMLObject(UMLObject *o);
+
+ /**
+ * Used to rename an operation or attribute of a concept.
+ *
+ * @param o The attribute or operation to rename.
+ */
+ void renameChildUMLObject(UMLObject *o);
+
+
+ /**
+ * Changes the current view (diagram) to the view with the given ID.
+ *
+ * @param id The ID of the view to change to.
+ */
+ void changeCurrentView(Uml::IDType id);
+
+ /**
+ * Deletes a diagram from the current file.
+ *
+ * @param id The ID of the diagram to delete.
+ */
+ void removeDiagram(Uml::IDType id);
+
+ /**
+ * Used to find a reference to a @ref UMLObject by its ID.
+ *
+ * @param id The @ref UMLObject to find.
+ * @return Pointer to the UMLObject found, or NULL if not found.
+ */
+ UMLObject* findObjectById(Uml::IDType id);
+
+ /**
+ * Used to find a @ref UMLObject by its type and name.
+ *
+ * @param name The name of the @ref UMLObject to find.
+ * @param type Object_Type of the object to find (optional.)
+ * When the given type is ot_UMLObject the type is
+ * disregarded, i.e. the given name is the only
+ * search criterion.
+ * @param currentObj Object relative to which to search (optional.)
+ * If given then the enclosing scope(s) of this
+ * object are searched before the global scope.
+ * @return Pointer to the UMLObject found, or NULL if not found.
+ */
+ UMLObject* findUMLObject(const QString &name,
+ Uml::Object_Type type = Uml::ot_UMLObject,
+ UMLObject *currentObj = NULL);
+
+ /**
+ * Used to find a reference to a @ref UMLObject given its non-numeric
+ * ID string.
+ * Only used for intermediate processing while loading files
+ * containing objects with non-numeric xmi.id's.
+ *
+ * @param idStr The AuxId for the @ref UMLObject to find.
+ * @return Pointer to the UMLObject found, or NULL if not found.
+ */
+ UMLObject* findObjectByAuxId(const QString &idStr);
+
+ /**
+ * Used to find a @ref UMLClassifier by its name.
+ *
+ * @param name The name of the @ref UMLObject to find.
+ */
+ UMLClassifier * findUMLClassifier (const QString &name);
+
+ /**
+ * Finds a UMLStereotype by its name.
+ *
+ * @param name The name of the UMLStereotype to find.
+ * @return Pointer to the UMLStereotype found, or NULL if not found.
+ */
+ UMLStereotype * findStereotype(const QString &name);
+
+ /**
+ * Finds a view (diagram) by the ID given to method.
+ *
+ * @param id The ID of the view to search for.
+ * @return Pointer to the view found, or NULL if not found.
+ */
+ UMLView * findView(Uml::IDType id);
+
+ /**
+ * Finds a view (diagram) by the type and name given.
+ *
+ * @param type The type of view to find.
+ * @param name The name of the view to find.
+ * @param searchAllScopes Search in all subfolders (default: false.)
+ * @return Pointer to the view found, or NULL if not found.
+ */
+ UMLView * findView(Uml::Diagram_Type type, const QString &name,
+ bool searchAllScopes = false);
+
+ /**
+ * Set the name of this model.
+ */
+ void setName(const QString& name);
+
+ /**
+ * Return the name of this model.
+ */
+ QString getName() const;
+
+ /**
+ * Return the m_modelID (currently this a fixed value:
+ * Umbrello supports only a single document.)
+ */
+ Uml::IDType getModelID() const;
+
+ /**
+ * This method is called for saving the given model as a XMI file.
+ * It is virtual and calls the corresponding saveToXMI() functions
+ * of the derived classes.
+ *
+ * @param file The file to be saved to.
+ */
+ virtual void saveToXMI(QIODevice& file);
+
+ /**
+ * Checks the given XMI file if it was saved with correct Unicode
+ * encoding set or not.
+ *
+ * @param file The file to be checked.
+ */
+ short getEncoding(QIODevice & file);
+
+ /**
+ * Load a given XMI model from a file. If the encoding of the file
+ * is already known it can be passed to the function. If this info
+ * isn't given, loadFromXMI will check which encoding was used.
+ *
+ * @param file The file to be loaded.
+ * @param encode The encoding used.
+ */
+ virtual bool loadFromXMI(QIODevice& file, short encode = ENC_UNKNOWN);
+
+ /**
+ * Ensures the XMI file is a valid UML file.
+ * Currently only checks for metamodel=UML.
+ *
+ * @param headerNode The <XMI.header> node
+ */
+ bool validateXMIHeader(QDomNode& headerNode);
+
+ /**
+ * Loads all UML objects from XMI into the current UMLDoc.
+ *
+ * @return True if operation successful.
+ */
+ bool loadUMLObjectsFromXMI( QDomElement & element );
+
+ /**
+ * Loads umbrello specific extensions from XMI to the UMLDoc.
+ * The extension tags are: "docsettings", "diagrams", "listview",
+ * and "codegeneration".
+ */
+ void loadExtensionsFromXMI(QDomNode & node);
+
+ /**
+ * Loads all diagrams from XMI into the current UMLDoc.
+ *
+ * @return True if operation successful.
+ */
+ bool loadDiagramsFromXMI( QDomNode & node );
+
+ /**
+ * Signal a view/diagram has been renamed.
+ */
+ void signalDiagramRenamed(UMLView * pView );
+
+ /**
+ * Call to remove all the views (diagrams) in the current file.
+ */
+ void removeAllViews();
+
+ /**
+ * Signal that a UMLObject has been created.
+ *
+ * @param o The object that has been created.
+ */
+ void signalUMLObjectCreated(UMLObject * o);
+
+ /**
+ * Returns the datatype folder.
+ *
+ * @return Pointer to the predefined folder for datatypes.
+ */
+ UMLFolder * getDatatypeFolder() {
+ return m_datatypeRoot;
+ }
+
+ /**
+ * Returns a list of the concepts in this UMLDoc.
+ *
+ * @param includeNested Whether to include the concepts from
+ * nested packages (default: true.)
+ * @return List of UML concepts.
+ */
+ UMLClassifierList getConcepts(bool includeNested = true);
+
+ /**
+ * Returns a list of the classes in this UMLDoc.
+ *
+ * @param includeNested Whether to include the concepts from
+ * nested packages (default: true.)
+ * @return List of UML classes.
+ */
+ UMLClassifierList getClasses(bool includeNested = true);
+
+ /**
+ * Returns a list of the classes and interfaces in this UMLDoc.
+ *
+ * @param includeNested Whether to include the concepts from
+ * nested packages (default: true.)
+ * @return List of UML concepts.
+ */
+ UMLClassifierList getClassesAndInterfaces(bool includeNested = true);
+
+ /**
+ * Returns a list of the interfaces in this UMLDoc.
+ *
+ * @param includeNested Whether to include the concepts from
+ * nested packages (default: true.)
+ * @return List of UML interfaces.
+ */
+ UMLClassifierList getInterfaces(bool includeNested = true);
+
+ /**
+ * Returns a list of the datatypes in this UMLDoc.
+ *
+ * @return List of datatypes.
+ */
+ UMLClassifierList getDatatypes();
+
+ /**
+ * Returns a list of the associations in this UMLDoc.
+ *
+ * @return List of UML associations.
+ */
+ UMLAssociationList getAssociations();
+
+ /**
+ * Controls the printing of the program.
+ *
+ * @param pPrinter The printer (object) to use.
+ */
+ void print(KPrinter * pPrinter);
+
+ /**
+ * Return the list of views for this document.
+ *
+ * @return List of UML views.
+ */
+ UMLViewList getViewIterator();
+
+ /**
+ * Assigns an already created UMLObject a new ID.
+ * If the object is a classifier then the operations/attributes
+ * are also assigned new IDs.
+ *
+ * @param Obj Pointer to the UMLObject to add.
+ * @return True if operation successful.
+ */
+ bool assignNewIDs(UMLObject* Obj);
+
+ /**
+ * Adds a UMLObject thats already created but doesn't change
+ * any ids or signal. Use AddUMLObjectPaste if pasting.
+ *
+ * @param object The object to add.
+ * @return True if the object was actually added.
+ */
+ bool addUMLObject(UMLObject * object);
+
+ /**
+ * Adds an already created UMLView to the document, it gets
+ * assigned a new ID, if its name is already in use then the
+ * function appends a number to it to differentiate it from
+ * the others; this number is incremental so if number 1 is in
+ * use then it tries 2 and then 3 and so on
+ *
+ * @param pView Pointer to the UMLView to add.
+ * @return True if operation successful.
+ */
+ bool addUMLView(UMLView * pView );
+
+ /**
+ * Return the predefined root folder of the given type.
+ */
+ UMLFolder *getRootFolder(Uml::Model_Type mt);
+
+ /**
+ * Return the corresponding Model_Type if the given object
+ * is one of the root folders.
+ * When the given object is not one of the root folders then
+ * return Uml::N_MODELTYPES.
+ */
+ Uml::Model_Type rootFolderType(UMLObject *obj);
+
+ /**
+ * Return the currently selected root folder.
+ * This will be an element from the m_root[] array.
+ */
+ UMLFolder *currentRoot();
+
+ /**
+ * Set the current root folder.
+ *
+ * @param rootType The type of the root folder to set.
+ * The element from m_root[] which is indexed
+ * by this type is selected.
+ */
+ void setCurrentRoot(Uml::Model_Type rootType);
+
+ /**
+ * Read property of IDChangeLog* m_pChangeLog.
+ *
+ * @return Pointer to the IDChangeLog object.
+ */
+ virtual IDChangeLog* getChangeLog();
+
+ /**
+ * Closes a paste session, deletes the ChangeLog.
+ */
+ void endPaste();
+
+ /**
+ * Opens a Paste session, deletes the old ChangeLog and
+ * creates an empty one.
+ */
+ void beginPaste();
+
+ /**
+ * Assigns a New ID to an Object, and also logs the assignment
+ * to its internal ChangeLog.
+ *
+ * @param OldID The present ID of the object.
+ * @return The new ID assigned to the object.
+ */
+ Uml::IDType assignNewID(Uml::IDType OldID);
+
+ /**
+ * Returns the documentation for the project.
+ *
+ * @return The documentation text of this UMLDoc.
+ */
+ QString getDocumentation() const {
+ return m_Doc;
+ }
+
+ /**
+ * Sets the documentation for the project.
+ *
+ * @param doc The documentation to set for this UMLDoc.
+ */
+ void setDocumentation(const QString &doc) {
+ m_Doc = doc;
+ }
+
+ /**
+ * Activate all the diagrams/views after loading so all their
+ * widgets keep their IDs.
+ */
+ void activateAllViews();
+
+ /**
+ * Sets the default settings to the given settings.
+ */
+ void settingsChanged(Settings::OptionState optionState);
+
+
+ /**
+ * Returns the version of the old UML files.
+ */
+ int getFileVersion(void) {return version;}
+
+ /**
+ * Performs the undo function, loading the document back to the
+ * state is was before the last addToUndoStack()
+ */
+ void loadUndoData();
+
+ /**
+ * Performs the redo function, loading the document back to the
+ * state is was before the last undo()
+ */
+ void loadRedoData();
+
+ /**
+ * Takes an image of the document and adds it to the UndoStack.
+ * Implemented using the saveToXMI functions.
+ */
+ void addToUndoStack();
+
+ /**
+ * Removes all entries from the UndoStack and RedoStack and disables the
+ * undo and redo actions.
+ */
+ void clearUndoStack();
+
+ /**
+ * Removes all entries from the RedoStack and disables the
+ * redo action.
+ */
+ void clearRedoStack();
+
+ /**
+ * Returns a name for the new object, appended with a number
+ * if the default name is taken e.g. class diagram, class
+ * diagram_1 etc
+ */
+ QString uniqViewName(const Uml::Diagram_Type type);
+
+ /**
+ * Returns true when loading a document file.
+ */
+ bool loading() const;
+
+ /**
+ * Sets loading boolean flag to the value given.
+ */
+ void setLoading(bool state = true);
+
+ /**
+ * Calls the active code generator to create its default datatypes
+ */
+ void addDefaultDatatypes();
+
+ /**
+ * Add a datatype if it doesn't already exist.
+ * Used by code generators and attribute dialog.
+ */
+ void createDatatype(const QString &name);
+
+ /**
+ * Find a UMLStereotype by its unique ID.
+ */
+ UMLStereotype * findStereotypeById(Uml::IDType id);
+
+ /**
+ * Add a UMLStereotype to the application.
+ */
+ void addStereotype(const UMLStereotype *s);
+
+ /**
+ * Remove a UMLStereotype from the application.
+ */
+ void removeStereotype(const UMLStereotype *s);
+
+ /**
+ * Add a stereotype if it doesn't already exist.
+ * Used by code generators, operations and attribute dialog.
+ */
+ void addDefaultStereotypes();
+
+ /**
+ * Returns a list of the stereotypes in this UMLDoc.
+ *
+ * @return List of UML stereotypes.
+ */
+ const UMLStereotypeList& getStereotypes();
+
+ /**
+ * Write text to the status bar.
+ */
+ void writeToStatusBar(const QString &text);
+
+ /**
+ * Type resolution pass.
+ */
+ void resolveTypes();
+
+private:
+ /**
+ * Sets up the autosave timer.
+ */
+ void initSaveTimer();
+
+ /**
+ * Array of predefined root folders.
+ */
+ UMLFolder *m_root[Uml::N_MODELTYPES];
+ /**
+ * Predefined root folder for datatypes, contained in
+ * m_root[Uml::mt_Logical]
+ */
+ UMLFolder *m_datatypeRoot;
+
+ /**
+ * The UMLDoc is the sole owner of all stereotypes.
+ * UMLStereotype instances are reference counted.
+ * When an UMLStereotype is no longer referenced anywhere,
+ * its refcount drops to zero. It is then removed from the
+ * m_stereoList and it is physically deleted.
+ */
+ UMLStereotypeList m_stereoList;
+
+ QString m_Name; ///< name of this model as stored in the <UML:Model> tag
+ Uml::IDType m_modelID; ///< xmi.id of this model in the <UML:Model>
+ int m_count; ///< auxiliary counter for the progress bar
+ bool m_modified;
+ KURL m_doc_url;
+
+ /**
+ * Contains all the UMLObject id changes of paste session.
+ */
+ IDChangeLog* m_pChangeLog;
+
+ /**
+ * true if the we're loading a new document
+ */
+ bool m_bLoading;
+
+ /**
+ * Documentation for the project.
+ */
+ QString m_Doc;
+
+ /**
+ * Used for autosave
+ */
+ QTimer * m_pAutoSaveTimer;
+
+ /**
+ * Stores the version of old UML files.
+ */
+ int version;
+
+ /**
+ * The stack of images of the document added to each time
+ * something is changed. A QPtrList is used rather than a
+ * QPtrStack to be able to remove the ones off the bottom once
+ * the stack gets too big.
+ */
+ QPtrList<QDataStream> undoStack;
+
+ /**
+ * The stack of images of the document added to each time
+ * undo is called.
+ */
+ QPtrList<QDataStream> redoStack;
+
+ /**
+ * Auxiliary to <docsettings> processing
+ */
+ Uml::IDType m_nViewID;
+
+ /**
+ * True when type resolution pass has been executed.
+ */
+ bool m_bTypesAreResolved;
+
+ /**
+ * the context menu on the tabs,
+ * plugs into umlview::slotMenuSelection()
+ */
+ KPopupMenu* m_pTabPopupMenu;
+
+ /**
+ * Auxiliary variable for currentRoot():
+ * m_pCurrentRoot is only used if UMLApp::app()->getCurrentView()
+ * returns NULL.
+ */
+ UMLFolder * m_pCurrentRoot;
+
+public slots:
+
+ void slotRemoveUMLObject(UMLObject*o);
+
+ /**
+ * Called after a specified time to autosave the document.
+ */
+ void slotAutoSave();
+
+ /**
+ * Make a popup menu for the tabs
+ * signalled from tabWidget's contextMenu()
+ */
+ void slotDiagramPopupMenu(QWidget* umlview, const QPoint& point);
+
+signals:
+ void sigDiagramCreated(Uml::IDType id);
+ void sigDiagramRemoved(Uml::IDType id);
+ void sigDiagramRenamed(Uml::IDType t);
+ void sigDiagramChanged(Uml::Diagram_Type);
+
+ void sigObjectCreated(UMLObject *);
+ void sigObjectRemoved(UMLObject *);
+
+ /**
+ * Reset the status bar.
+ */
+ void sigResetStatusbarProgress();
+
+ /**
+ * Set the total range of the progressbar.
+ *
+ * @param totalSteps Total range of the progressbar (0..totalSteps)
+ */
+ void sigSetStatusbarProgressSteps(int totalSteps);
+
+
+ /**
+ * Set the progress position of the progressbar.
+ *
+ * @param stepPosition The step position to set.
+ */
+ void sigSetStatusbarProgress(int stepPosition);
+
+ /**
+ * Write text to the status bar.
+ */
+ void sigWriteToStatusBar(const QString &text);
+
+ /**
+ * The diagram being displayed has changed.
+ * UMLApp uses this to keep its menu items state up to date.
+ */
+ void sigCurrentViewChanged();
+
+
+};
+
+#endif // UMLDOC_H