/*************************************************************************** * * * 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-2006 * * Umbrello UML Modeller Authors * ***************************************************************************/ #ifndef STATEWIDGET_H #define STATEWIDGET_H #include #include #include "umlwidget.h" #include "worktoolbar.h" #define STATE_MARGIN 5 #define STATE_WIDTH 30 #define STATE_HEIGHT 10 /** * This class is the graphical version of a UML State. * * A StateWidget is created by a @ref UMLView. A StateWidget belongs to * only one @ref UMLView instance. * When the @ref UMLView instance that this class belongs to is destroyed, * it will be automatically deleted. * * The StateWidget class inherits from the @ref UMLWidget class which adds * most of the functionality to this class. * * @short A graphical version of a UML State. * @author Paul Hensgen * Bugs and comments to uml-devel@lists.sf.net or http://bugs.trinitydesktop.org */ class StateWidget : public UMLWidget { TQ_OBJECT public: /// Enumeration that codes the different types of state. enum StateType { Initial = 0, Normal, End }; /** * Creates a State widget. * * @param view The parent of the widget. * @param stateType The type of state. * @param id The ID to assign (-1 will prompt a new ID.) */ explicit StateWidget( UMLView * view, StateType stateType = Normal, Uml::IDType id = Uml::id_None ); /** * destructor */ virtual ~StateWidget(); /** * Overrides the standard paint event. */ void draw(TQPainter & p, int offsetX, int offsetY); /** * Sets the name of the State. */ virtual void setName(const TQString &strName); /** * Returns the name of the State. */ virtual TQString getName() const; /** * Returns the type of state. */ StateType getStateType() const; /** * Sets the type of state. */ void setStateType( StateType stateType ); /** * Adds the given activity to the state. */ bool addActivity( const TQString &activity ); /** * Removes the given activity from the state. */ bool removeActivity( const TQString &activity ); /** * Renames the given activity. */ bool renameActivity( const TQString &activity, const TQString &newName ); /** * Sets the states activities to the ones given. */ void setActivities( TQStringList & list ); /** * Returns the list of activities. */ TQStringList & getActivityList(); /** * Show a properties dialog for a StateWidget. */ void showProperties(); /** * Returns true if the given toolbar button represents a State. * * @param tbb Input value of type WorkToolBar::ToolBar_Buttons. * @param resultType Output value, the StateType that corresponds to tbb. * Only set if the method returns true. */ static bool isState( WorkToolBar::ToolBar_Buttons tbb, StateType& resultType ); /** * Creates the "statewidget" XMI element. */ void saveToXMI( TQDomDocument & qDoc, TQDomElement & qElement ); /** * Loads a "statewidget" XMI element. */ bool loadFromXMI( TQDomElement & qElement ); protected: /** * Overrides method from UMLWidget */ TQSize calculateSize(); /** * Type of state. */ StateType m_StateType; /** * List of activities for the state. */ TQStringList m_Activities; public slots: /** * Captures any popup menu signals for menus it created. */ void slotMenuSelection(int sel); }; #endif