You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/umbrello/umbrello/umlview.h

1257 lines
31 KiB

/***************************************************************************
* *
* 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 UMLVIEW_H
#define UMLVIEW_H
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
// system includes
#include <kurl.h>
#include <tqdom.h>
#include <tqcanvas.h>
//local includes
#include "umlobjectlist.h"
#include "umlwidgetlist.h"
#include "associationwidgetlist.h"
#include "messagewidgetlist.h"
#include "optionstate.h"
#include "worktoolbar.h"
// forward declarations
class ClassOptionsPage;
class IDChangeLog;
class ListPopupMenu;
class FloatingTextWidget;
class ObjectWidget;
class UMLFolder;
class UMLApp;
class UMLDoc;
class UMLAttribute;
class UMLCanvasObject;
class UMLClassifier;
class UMLViewImageExporter;
class KPrinter;
class ToolBarState;
class ToolBarStateFactory;
/**
* UMLView instances represent diagrams.
* The UMLApp instance manages a TQWidgetStack of UMLView instances.
* The visible diagram is at the top of stack.
* The UMLView class inherits from TQCanvasView and it owns the
* objects displayed on its related TQCanvas (see m_WidgetList.)
*
* @author Paul Hensgen <phensgen@techie.com>
* Bugs and comments to uml-devel@lists.sf.net or http://bugs.trinitydesktop.org
*/
class UMLView : public TQCanvasView {
TQ_OBJECT
public:
friend class UMLViewImageExporterModel;
/**
* Constructor
*/
UMLView(UMLFolder *parentFolder);
/**
* Destructor
*/
virtual ~UMLView();
// Accessors and other methods dealing with loaded/saved data
/**
* Return the UMLFolder in which this diagram lives.
*/
UMLFolder *getFolder() {
return m_pFolder;
}
/**
* Set the UMLFolder in which this diagram lives.
*/
void setFolder(UMLFolder *folder) {
m_pFolder = folder;
}
/**
* Return the documentation of the diagram.
*/
TQString getDoc() const {
return m_Documentation;
}
/**
* Set the documentation of the diagram.
*/
void setDoc( const TQString &doc ) {
m_Documentation = doc;
}
/**
* Return the name of the diagram.
*/
TQString getName() const;
/**
* Set the name of the diagram.
*/
void setName(const TQString &name);
/**
* Returns the type of the diagram.
*/
Uml::Diagram_Type getType() const {
return m_Type;
}
/**
* Set the type of diagram.
*/
void setType( Uml::Diagram_Type type ) {
m_Type = type;
}
/**
* Returns the fill color to use.
*/
TQColor getFillColor() const;
/**
* Set the background color.
*
* @param color The color to use.
*/
void setFillColor( const TQColor &color );
/**
* Returns the line color to use.
*/
TQColor getLineColor() const;
/**
* Sets the line color.
*
* @param color The color to use.
*/
void setLineColor( const TQColor &color );
/**
* Returns the line width to use.
*/
uint getLineWidth() const;
/**
* Sets the line width.
*
* @param width The width to use.
*/
void setLineWidth( uint width );
/**
* Returns the ID of the diagram.
*/
Uml::IDType getID() const {
return m_nID;
}
/**
* Sets the ID of the diagram.
*/
void setID( Uml::IDType id ) {
m_nID = id;
}
/**
* Returns the zoom of the diagram.
*/
int getZoom() const {
return m_nZoom;
}
/**
* Sets the zoom of the diagram.
*/
void setZoom(int zoom);
/**
* Returns the height of the diagram.
*/
int getCanvasHeight() const {
return m_nCanvasHeight;
}
/**
* Sets the height of the diagram.
*/
void setCanvasHeight(int height) {
m_nCanvasHeight = height;
}
/**
* Returns the width of the diagram.
*/
int getCanvasWidth() const {
return m_nCanvasWidth;
}
/**
* Sets the height of the diagram.
*/
void setCanvasWidth(int width) {
m_nCanvasWidth = width;
}
/**
* Return whether to use snap to grid.
*/
bool getSnapToGrid() const {
return m_bUseSnapToGrid;
}
/**
* Sets whether to snap to grid.
*/
void setSnapToGrid( bool bSnap );
/**
* Return whether to use snap to grid for component size.
*/
bool getSnapComponentSizeToGrid() const {
return m_bUseSnapComponentSizeToGrid;
}
/**
* Returns the x grid size.
*/
int getSnapX() const {
return m_nSnapX;
}
/**
* Returns the y grid size.
*/
int getSnapY() const {
return m_nSnapY;
}
/**
* Returns the input coordinate with possible grid-snap applied.
*/
int snappedX(int x);
/**
* Returns the input coordinate with possible grid-snap applied.
*/
int snappedY(int y);
/**
* Returns whether to show snap grid or not.
*/
bool getShowSnapGrid() const;
/**
* Sets whether to show snap grid.
*/
void setShowSnapGrid( bool bShow );
/**
* Sets whether to snap to grid for component size.
*/
void setSnapComponentSizeToGrid( bool bSnap );
/**
* Returns whether to use the fill/background color
*/
bool getUseFillColor() const;
/**
* Sets whether to use the fill/background color
*/
void setUseFillColor(bool ufc);
/**
* Returns the font to use
*/
TQFont getFont() const;
/**
* Sets the font for the view and optionally all the widgets on the view.
*/
void setFont(TQFont font, bool changeAllWidgets = false);
/**
* Returns whether to show operation signatures.
*/
bool getShowOpSig() const;
/**
* Sets whether to show operation signatures.
*/
void setShowOpSig(bool bShowOpSig);
/**
* Returns the options being used.
*/
const Settings::OptionState& getOptionState() const {
return m_Options;
}
/**
* Sets the options to be used.
*/
void setOptionState( const Settings::OptionState& options) {
m_Options = options;
}
/**
* Returns a reference to the association list.
*/
AssociationWidgetList& getAssociationList() {
return m_AssociationList;
}
/**
* Returns a reference to the widget list.
*/
UMLWidgetList& getWidgetList() {
return m_WidgetList;
}
/**
* Returns a reference to the message list.
*/
MessageWidgetList& getMessageList() {
return m_MessageList;
}
// End of accessors and methods that only deal with loaded/saved data
////////////////////////////////////////////////////////////////////////
/**
* return the current zoom factor
*/
int currentZoom();
/**
* contains the implementation for printing functionality
*/
void print(KPrinter *pPrinter, TQPainter & pPainter);
/**
* Overrides the standard operation.
*/
void hideEvent(TQHideEvent *he);
/**
* Overrides the standard operation.
*/
void showEvent(TQShowEvent *se);
/**
* Sees if a message is relevant to the given widget. If it does delete it.
* @param w The widget to check messages against.
*/
void checkMessages(ObjectWidget * w);
/**
* Finds a widget with the given ID.
*
* @param id The ID of the widget to find.
*
* @return Returns the widget found, returns 0 if no widget found.
*/
UMLWidget * findWidget(Uml::IDType id);
/**
* Finds an association widget with the given ID.
*
* @param id The ID of the widget to find.
*
* @return Returns the widget found, returns 0 if no widget found.
*/
AssociationWidget * findAssocWidget(Uml::IDType id);
/**
* Finds an association widget with the given type and widgets.
*
* @param at The Association_Type of the widget to find.
* @param pWidgetA Pointer to the UMLWidget of role A.
* @param pWidgetB Pointer to the UMLWidget of role B.
*
* @return Returns the widget found, returns 0 if no widget found.
*/
AssociationWidget * findAssocWidget(Uml::Association_Type at,
UMLWidget *pWidgetA, UMLWidget *pWidgetB);
/**
* Finds an association widget with the given widgets and the given role B name.
* Considers the following association types:
* at_Association, at_UniAssociation, at_Composition, at_Aggregation
* This is used for seeking an attribute association.
*
* @param pWidgetA Pointer to the UMLWidget of role A.
* @param pWidgetB Pointer to the UMLWidget of role B.
* @param roleNameB Name at the B side of the association (the attribute name)
*
* @return Returns the widget found, returns 0 if no widget found.
*/
AssociationWidget * findAssocWidget(UMLWidget *pWidgetA,
UMLWidget *pWidgetB, const TQString& roleNameB);
/**
* Remove a widget from view.
*
* @param o The widget to remove.
*/
void removeWidget(UMLWidget * o);
/**
* Sets a widget to a selected state and adds it to a list of selected widgets.
*
* @param w The widget to set to selected.
* @param me The mouse event containing the information about the selection.
*/
void setSelected(UMLWidget * w, TQMouseEvent * me);
/**
* Clear the selected widgets list.
*/
void clearSelected();
/**
* Move all the selected widgets by a relative X and Y offset.
*
* @param dX The distance to move horizontally.
* @param dY The distance to move vertically.
*/
void moveSelectedBy(int dX, int dY);
/**
* Return the amount of widgets selected.
*
* @param filterText When true, do NOT count floating text widgets that
* belong to other widgets (i.e. only count tr_Floating.)
* Default: Count all widgets.
* @return Number of widgets selected.
*/
int getSelectCount(bool filterText = false) const;
/**
* Set the useFillColor variable to all selected widgets
*
* @param useFC The state to set the widget to.
*/
void selectionUseFillColor(bool useFC);
/**
* Set the font for all the currently selected items.
*/
void selectionSetFont( const TQFont &font );
/**
* Set the line color for all the currently selected items.
*/
void selectionSetLineColor( const TQColor &color );
/**
* Set the line width for all the currently selected items.
*/
void selectionSetLineWidth( uint width );
/**
* Set the fill color for all the currently selected items.
*/
void selectionSetFillColor( const TQColor &color );
/**
* Toggles the show setting sel of all selected items.
*/
void selectionToggleShow(int sel);
/**
* Delete the selected widgets list and the widgets in it.
*/
void deleteSelection();
/**
* Selects all widgets
*/
void selectAll();
/**
* Return a unique ID for the diagram. Used by the @ref ObjectWidget class.
*
* @return Return a unique ID for the diagram.
*/
Uml::IDType getLocalID();
/**
* Returns whether a widget is already on the diagram.
*
* @param id The id of the widget to check for.
*
* @return Returns true if the widget is already on the diagram, false if not.
*/
bool widgetOnDiagram(Uml::IDType id);
/**
* Returns true if this diagram resides in an externalized folder.
* CHECK: It is probably cleaner to move this to the UMLListViewItem.
*/
bool isSavedInSeparateFile();
/**
* Get the pos variable. Used internally to keep track of the cursor.
*/
TQPoint & getPos() {
return m_Pos;
}
/**
* Set the pos variable. Used internally to keep track of the cursor.
*
* @param _pos The position to set to.
*/
void setPos(const TQPoint &_pos) {
m_Pos = _pos;
}
/**
* Sets the popup menu to use when clicking on a diagram background
* (rather than a widget or listView).
*/
void setMenu();
/**
* Reset the toolbar.
*/
void resetToolbar() {
emit sigResetToolBar();
}
/**
* Returns the status on whether in a paste state.
*
* @return Returns the status on whether in a paste state.
*/
bool getPaste() const {
return m_bPaste;
}
/**
* Sets the status on whether in a paste state.
*/
void setPaste(bool paste) {
m_bPaste = paste;
}
/**
* Returns a List of all the UMLObjects(Use Cases, Concepts and Actors) in the View
*/
UMLObjectList getUMLObjects();
/**
* Activate all the objects and associations after a load from the clipboard
*/
void activate();
/**
* Returns a list with all the selected associations from the diagram
*/
AssociationWidgetList getSelectedAssocs();
/**
* Fills the List with all the selected widgets from the diagram
* The list can be filled with all the selected widgets, or be filtered to prevent
* text widgets other than tr_Floating to be append.
*
* @param WidgetList The UMLWidgetList to fill.
* @param filterText Don't append the text, unless their role is tr_Floating
*/
bool getSelectedWidgets(UMLWidgetList& WidgetList, bool filterText = true);
/**
* Activate the view after a load a new file
*/
void activateAfterLoad( bool bUseLog = false );
void endPartialWidgetPaste();
void beginPartialWidgetPaste();
/**
* Removes a AssociationWidget from a diagram
* Physically deletes the AssociationWidget passed in.
*
* @param pAssoc Pointer to the AssociationWidget.
*/
void removeAssoc(AssociationWidget* pAssoc);
/**
* Removes all the associations related to Widget
*
* @param pWidget Pointer to the widget to remove.
*/
void removeAssociations(UMLWidget* pWidget);
/**
* Sets each association as selected if the widgets it associates are selected
*/
void selectAssociations(bool bSelect);
/**
* Fills Associations with all the associations that includes a widget related to object
*/
void getWidgetAssocs(UMLObject* Obj, AssociationWidgetList & Associations);
/**
* Removes All the associations of the diagram
*/
void removeAllAssociations();
/**
* Removes All the widgets of the diagram
*/
void removeAllWidgets();
/**
* Calls the same method in the DocWindow.
*/
void showDocumentation( UMLObject * object, bool overwrite );
/**
* Calls the same method in the DocWindow.
*/
void showDocumentation( UMLWidget * widget, bool overwrite );
/**
* Calls the same method in the DocWindow.
*/
void showDocumentation( AssociationWidget * widget, bool overwrite );
/**
* Calls the same method in the DocWindow.
*/
void updateDocumentation( bool clear );
/**
* Returns the PNG picture of the paste operation.
*
* @param rect the area of the diagram to copy
* @param diagram the class to store PNG picture of the paste operation.
*/
void getDiagram(const TQRect &rect, TQPixmap & diagram);
/**
* Paint diagram to the paint device
*/
void getDiagram(const TQRect &area, TQPainter & painter);
/**
* Returns the PNG picture of the paste operation.
*/
void copyAsImage(TQPixmap*& pix);
/**
* Returns the imageExporter used to export the view.
*
* @return The imageExporter used to export the view.
*/
UMLViewImageExporter* getImageExporter();
/**
* Adds an association to the view from the given data.
* Use this method when pasting.
*/
bool addAssociation( AssociationWidget* pAssoc , bool isPasteOperation = false);
/**
* Removes an AssociationWidget from the association list
* and removes the corresponding UMLAssociation from the current UMLDoc.
*/
void removeAssocInViewAndDoc(AssociationWidget* assoc);
/**
* Adds a widget to the view from the given data.
* Use this method when pasting.
*/
bool addWidget( UMLWidget * pWidget , bool isPasteOperation = false);
/**
* Returns the offset point at which to place the paste from clipboard.
* Just add the amount to your co-ords.
* Only call this straight after the event, the value won't stay valid.
* Should only be called by Assoc widgets at the moment. no one else needs it.
*/
TQPoint getPastePoint();
/**
* Reset the paste point.
*/
void resetPastePoint();
/**
* Called by the view or any of its children when they start a cut
* operation.
*/
void setStartedCut() {
m_bStartedCut = true;
}
/**
* Creates automatically any Associations that the given @ref UMLWidget
* may have on any diagram. This method is used when you just add the UMLWidget
* to a diagram.
*/
void createAutoAssociations( UMLWidget * widget );
/**
* If the m_Type of the given widget is Uml::wt_Class then
* iterate through the class' attributes and create an
* association to each attribute type widget that is present
* on the current diagram.
*/
void createAutoAttributeAssociations(UMLWidget *widget);
/**
* Refreshes containment association, i.e. removes possible old
* containment and adds new containment association if applicable.
*
* @param self Pointer to the contained object for which
* the association to the containing object is
* recomputed.
*/
void updateContainment(UMLCanvasObject *self);
/**
* Sets the x grid size.
*/
void setSnapX( int x) {
m_nSnapX = x;
canvas() -> setAllChanged();
}
/**
* Sets the y grid size.
*/
void setSnapY( int y) {
m_nSnapY = y;
canvas() -> setAllChanged();
}
/**
* Shows the properties dialog for the view.
*/
bool showPropDialog();
/**
* Sets some options for all the @ref ClassifierWidget on the view.
*/
void setClassWidgetOptions( ClassOptionsPage * page );
/**
* Call before copying/cutting selected widgets. This will make sure
* any associations/message selected will make sure both the widgets
* widgets they are connected to are selected.
*/
void checkSelections();
/**
* This function checks if the currently selected items have all the same
* type (class, interface, ...). If true, the selection is unique and true
* will be returned.
* If there are no items selected, the function will return always true.
*/
bool checkUniqueSelection();
/**
* Asks for confirmation and clears everything on the diagram.
* Called from menus.
*/
void clearDiagram();
/**
* Changes snap to grid boolean.
* Called from menus.
*/
void toggleSnapToGrid();
/**
* Changes snap to grid for component size boolean.
* Called from menus.
*/
void toggleSnapComponentSizeToGrid();
/**
* Changes show grid boolean.
* Called from menus.
*/
void toggleShowGrid();
/**
* Changes the zoom to the currently set level (now loaded from file)
* Called from UMLApp::slotUpdateViews()
*/
void fileLoaded();
/**
* Sets the diagram width and height in pixels
*/
void setCanvasSize(int width, int height);
/**
* Sets the size of the canvas to just fit on all the items
*/
void resizeCanvasToItems();
/**
* The width and height of a diagram canvas in pixels.
*/
static const int defaultCanvasSize;
// Load/Save interface:
/**
* Creates the "diagram" tag and fills it with the contents of the diagram.
*/
virtual void saveToXMI( TQDomDocument & qDoc, TQDomElement & qElement );
/**
* Loads the "diagram" tag.
*/
virtual bool loadFromXMI( TQDomElement & qElement );
/**
* Loads the "UISDiagram" tag of Unisys.IntegratePlus.2 generated files.
*/
bool loadUISDiagram(TQDomElement & qElement);
/**
* Loads a "widget" element from XMI, used by loadFromXMI() and the clipboard.
*/
UMLWidget* loadWidgetFromXMI(TQDomElement& widgetElement);
/**
* Add an object to the application, and update the view.
*/
void addObject(UMLObject *object);
/**
* Selects all the widgets within an internally kept rectangle.
*/
void selectWidgets(int px, int py, int qx, int qy);
/**
* Determine whether on a sequence diagram we have clicked on a line
* of an Object.
*
* @return The widget thats line was clicked on.
* Returns 0 if no line was clicked on.
*/
ObjectWidget * onWidgetLine( const TQPoint &point );
/**
* Return pointer to the first selected widget (for multi-selection)
*/
UMLWidget* getFirstMultiSelectedWidget() {
return m_SelectedList.first();
}
/**
* Tests the given point against all widgets and returns the
* widget for which the point is within its bounding rectangle.
* In case of multiple matches, returns the smallest widget.
* Returns NULL if the point is not inside any widget.
* Does not use or modify the m_pOnWidget member.
*/
UMLWidget *getWidgetAt(const TQPoint& p);
/**
* Initialize and announce a newly created widget.
* Auxiliary to contentsMouseReleaseEvent().
*/
void setupNewWidget(UMLWidget *w);
/**
* Return whether we are currently creating an object.
*/
bool getCreateObject() const {
return m_bCreateObject;
}
/**
* Set whether we are currently creating an object.
*/
void setCreateObject(bool bCreate) {
m_bCreateObject = bCreate;
}
/**
* Emit the sigRemovePopupMenu TQt signal.
*/
void emitRemovePopupMenu() {
emit sigRemovePopupMenu();
}
/**
* Used for creating unique name of collaboration messages.
*/
int generateCollaborationId();
protected:
// Methods and members related to loading/saving
bool loadWidgetsFromXMI( TQDomElement & qElement );
bool loadMessagesFromXMI( TQDomElement & qElement );
bool loadAssociationsFromXMI( TQDomElement & qElement );
bool loadUisDiagramPresentation(TQDomElement & qElement);
/**
* Contains the unique ID to allocate to a widget that needs an
* ID for the view. @ref ObjectWidget is an example of this.
*/
Uml::IDType m_nLocalID;
/**
* The ID of the view. Allocated by @ref UMLDoc
*/
Uml::IDType m_nID;
/**
* The type of diagram to represent.
*/
Uml::Diagram_Type m_Type;
/**
* The name of the diagram.
*/
TQString m_Name;
/**
* The documentation of the diagram.
*/
TQString m_Documentation;
/**
* Options used by view
*/
Settings::OptionState m_Options;
/**
* Contains all the message widgets on the diagram.
*/
MessageWidgetList m_MessageList;
/**
* Contains all the UMLWidgets on the diagram.
*/
UMLWidgetList m_WidgetList;
/**
* Contains all the AssociationWidgets on the diagram.
*/
AssociationWidgetList m_AssociationList;
/**
* The snap to grid x size.
*/
int m_nSnapX;
/**
* The snap to grid y size.
*/
int m_nSnapY;
/**
* Determines whether to use snap to grid. The default is off.
*/
bool m_bUseSnapToGrid;
/**
* Determines whether to use snap to grid for component
* size. The default is off.
*/
bool m_bUseSnapComponentSizeToGrid;
/**
* Determines whether to show the snap grid. The default will be on if the grid is on.
*/
bool m_bShowSnapGrid;
/**
* The zoom level in percent, default 100
*/
int m_nZoom;
/**
* Width of canvas in pixels
*/
int m_nCanvasWidth;
/**
* Height of canvas in pixels
*/
int m_nCanvasHeight;
// End of methods and members related to loading/saving
////////////////////////////////////////////////////////////////////////
/**
* Override standard method.
*/
void closeEvent ( TQCloseEvent * e );
/**
* Override standard method.
*/
void contentsDragEnterEvent(TQDragEnterEvent* mouseEvent);
/**
* Override standard method.
*/
void contentsDropEvent(TQDropEvent* mouseEvent);
/**
* Gets the smallest area to print.
*
* @return Returns the smallest area to print.
*/
TQRect getDiagramRect();
/**
* Initializes key variables.
*/
void init();
/**
* Overrides the standard operation.
* Calls the same method in the current tool bar state.
*/
void contentsMouseReleaseEvent(TQMouseEvent* mouseEvent);
/**
* Overrides the standard operation.
* Calls the same method in the current tool bar state.
*/
void contentsMouseMoveEvent(TQMouseEvent* mouseEvent);
/**
* Override standard method.
* Calls the same method in the current tool bar state.
*/
void contentsMouseDoubleClickEvent(TQMouseEvent* mouseEvent);
/**
* Override standard method.
* Calls the same method in the current tool bar state.
*/
void contentsMousePressEvent(TQMouseEvent* mouseEvent);
/**
* Selects all the widgets of the given association widget.
*/
void selectWidgetsOfAssoc (AssociationWidget * a);
/**
* Calls setSelected on the given UMLWidget and enters
* it into the m_SelectedList while making sure it is
* there only once.
*/
void makeSelected (UMLWidget * uw);
/**
* Updates the size of all components in this view.
*/
void updateComponentSizes();
/**
* Find the maximum bounding rectangle of FloatingTextWidget widgets.
* Auxiliary to copyAsImage().
*
* @param ft Pointer to the FloatingTextWidget widget to consider.
* @param px X coordinate of lower left corner. This value will be
* updated if the X coordinate of the lower left corner
* of ft is smaller than the px value passed in.
* @param py Y coordinate of lower left corner. This value will be
* updated if the Y coordinate of the lower left corner
* of ft is smaller than the py value passed in.
* @param qx X coordinate of upper right corner. This value will be
* updated if the X coordinate of the upper right corner
* of ft is larger than the qx value passed in.
* @param qy Y coordinate of upper right corner. This value will be
* updated if the Y coordinate of the upper right corner
* of ft is larger than the qy value passed in.
*/
void findMaxBoundingRectangle(const FloatingTextWidget* ft,
int& px, int& py, int& qx, int& qy);
void forceUpdateWidgetFontMetrics(TQPainter *painter);
/**
* Used for creating unique name of collaboration messages.
*/
int m_nCollaborationId;
TQPoint m_Pos;
bool m_bCreateObject, m_bDrawSelectedOnly, m_bPaste;
ListPopupMenu * m_pMenu;
UMLWidgetList m_SelectedList;
/**
* Flag if view/children started cut operation.
*/
bool m_bStartedCut;
private:
/**
* The folder in which this UMLView is contained
*/
UMLFolder *m_pFolder;
/**
* set to true when a child has used the showDocumentation method,
* thus when one clicks on a child widget.
* Reset to false when clicking in an empty region of the view.
*/
bool m_bChildDisplayedDoc;
ToolBarStateFactory* m_pToolBarStateFactory;
ToolBarState* m_pToolBarState;
/**
* LocalID Changes Log for paste actions
*/
IDChangeLog * m_pIDChangesLog;
/**
*
* True if the view was activated after the serialization(load)
*/
bool m_bActivated;
/**
* Status of a popupmenu on view.
* true - a popup is on view
*/
bool m_bPopupShowing;
/**
* The offset at which to paste the clipboard.
*/
TQPoint m_PastePoint;
/**
* Pointer to the UMLDoc
*/
UMLDoc* m_pDoc;
/**
* The UMLViewImageExporter used to export the view.
*/
UMLViewImageExporter* m_pImageExporter;
/**
* Create an association with the attribute attr associated with the UMLWidget
* widget if the UMLClassifier type is present on the current diagram.
*/
void createAutoAttributeAssociation(UMLClassifier *type,
UMLAttribute *attr,
UMLWidget *widget);
public slots:
void zoomIn();
void zoomOut();
/**
* Changes the current tool to the selected tool.
* The current tool is cleaned and the selected tool initialized.
*/
void slotToolBarChanged(int c);
void slotObjectCreated(UMLObject * o);
void slotObjectRemoved(UMLObject * o);
/**
* When a menu selection has been made on the menu
* that this view created, this method gets called.
*/
void slotMenuSelection(int sel);
/**
* This slot is entered when an event has occurred on the views display,
* most likely a mouse event. Before it sends out that mouse event everyone
* that displays a menu on the views surface (widgets and this ) thould remove any
* menu. This stops more then one menu bieing displayed.
*/
void slotRemovePopupMenu();
/**
* makes this view the active view by asking the document to show us
*/
void slotActivate();
/**
* Connects to the signal that @ref UMLApp emits when a cut operation
* is successful.
* If the view or a child started the operation the flag m_bStartedCut will
* be set and we can carry out any operation that is needed, like deleting the selected
* widgets for the cut operation.
*/
void slotCutSuccessful();
/**
* Called by menu when to show the instance of the view.
*/
void slotShowView();
/**
* Overrides standard method from TQWidget to resize canvas when
* it's shown.
*/
void show();
signals:
void sigResetToolBar();
void sigColorChanged( Uml::IDType );
void sigRemovePopupMenu();
void sigClearAllSelected();
void sigLineWidthChanged( Uml::IDType );
void sigSnapToGridToggled(bool);
void sigSnapComponentSizeToGridToggled(bool);
void sigShowGridToggled(bool);
/**
* Emitted when an association is removed.
*/
void sigAssociationRemoved(AssociationWidget*);
/**
* Emitted when a widget is removed.
*/
void sigWidgetRemoved(UMLWidget*);
};
#endif // UMLVIEW_H