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/listpopupmenu.h

331 lines
10 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) 2003-2007 *
* Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
***************************************************************************/
#ifndef LISTPOPUPMENU_H
#define LISTPOPUPMENU_H
#include <tdepopupmenu.h>
#include "umlnamespace.h"
class UMLView;
class UMLWidget;
class ClassifierWidget;
/**
* A popup menu that depending on what type it is set to will
* display a different menu.
*
* @short Displays a popup menu.
* @author Paul Hensgen <phensgen@techie.com>
* Bugs and comments to uml-devel@lists.sf.net or http://bugs.trinitydesktop.org
*/
class ListPopupMenu : public TDEPopupMenu {
public:
/// This type hosts all possible menu types.
enum Menu_Type
{
mt_Model,
mt_Logical_View,
mt_UseCase_View,
mt_Component_View,
mt_Deployment_View,
mt_EntityRelationship_Model,
mt_UseCase_Diagram,
mt_Sequence_Diagram,
mt_Class_Diagram,
mt_Collaboration_Diagram,
mt_State_Diagram,
mt_Activity_Diagram,
mt_Component_Diagram,
mt_Deployment_Diagram,
mt_EntityRelationship_Diagram,
mt_On_UseCase_Diagram,
mt_On_Sequence_Diagram,
mt_On_Class_Diagram,
mt_On_Collaboration_Diagram,
mt_On_State_Diagram,
mt_On_Activity_Diagram,
mt_On_Component_Diagram,
mt_On_Deployment_Diagram,
mt_On_EntityRelationship_Diagram,
mt_Logical_Folder,
mt_UseCase_Folder,
mt_Component_Folder,
mt_Deployment_Folder,
mt_EntityRelationship_Folder,
mt_Class,
mt_Package,
mt_Subsystem,
mt_Component,
mt_Node,
mt_Artifact,
mt_Interface,
mt_Enum,
mt_Entity,
mt_Datatype,
mt_Actor,
mt_UseCase,
mt_Attribute,
mt_EntityAttribute,
mt_EnumLiteral,
mt_Object,
mt_Initial_State,
mt_End_State,
mt_State,
mt_Activity,
mt_Initial_Activity,
mt_End_Activity,
mt_Operation,
mt_Template,
mt_New_Parameter,
mt_New_Operation,
mt_New_Attribute,
mt_New_Template,
mt_New_EnumLiteral,
mt_New_EntityAttribute,
mt_Parameter_Selected,
mt_Operation_Selected,
mt_Attribute_Selected,
mt_Template_Selected,
mt_EnumLiteral_Selected,
mt_EntityAttribute_Selected,
mt_Association_Selected, // Association without role names
mt_Show_Attributes,
mt_Show_Attributes_Selection, //SHOWATTS, multiple items
mt_Show_Operations,
mt_Show_Operations_Selection, //SHOWOPS, multiple items
mt_Show_Packages,
mt_Show_Packages_Selection, //SHOWPACKAGE, multiple items
mt_Show_Stereotypes,
mt_Show_Stereotypes_Selection, //SHOWSTEREOTYPE, multiple items
mt_Visibility,
mt_Visibility_Selection, //SCOPE, multiple items
mt_DrawAsCircle,
mt_DrawAsCircle_Selection, //DRAWASCIRCLE, multiple items
mt_ChangeToClass,
mt_ChangeToClass_Selection,
mt_ChangeToInterface,
mt_ChangeToInterface_Selection,
mt_Rename_Object,
mt_Select_Operation,
mt_Anchor,
mt_Properties,
mt_Rename,
mt_Delete,
mt_Export_Image,
mt_Import_Classes,
mt_Sequence_Number,
mt_Cut,
mt_Copy,
mt_Paste,
mt_Clear,
mt_Redo,
mt_Undo,
mt_Link_Docs,
mt_Show_Operation_Signature,
mt_Show_Operation_Signature_Selection, //SHOWOPSIG, multiple items
mt_Show_Attribute_Signature,
mt_Show_Attribute_Signature_Selection, //SHOWATTSIG, multiple items
mt_Message_Text,
mt_Collaboration_Message,
mt_FloatText,
mt_MultiA,
mt_MultiB,
mt_Name, //Association name
mt_FullAssociation, // Association with role names
mt_AttributeAssociation, // Rendering of an attribute as an association
mt_RoleNameA,
mt_RoleNameB,
mt_Delete_Selection,
mt_Reset_Label_Positions,
mt_Line_Color,
mt_Line_Color_Selection, //LINECOLOR, multiple items
mt_Fill_Color,
mt_Fill_Color_Selection, //FILLCOLOR, multiple items
mt_Use_Fill_Color,
mt_Default_Properties,
mt_Rename_MultiA,
mt_Rename_MultiB,
mt_Rename_Name,
mt_Rename_RoleAName,
mt_Rename_RoleBName,
mt_Change_Font,
mt_Change_Font_Selection,
mt_SnapToGrid,
mt_ShowSnapGrid,
mt_Activity_Selected,
mt_New_Activity,
mt_Up,
mt_Down,
mt_Branch,
mt_Flip,
mt_Expand_All, //Expand all items in the list
mt_Collapse_All, //Collapse all items in the list
mt_Refactoring,
mt_ViewCode, // view code document contents
mt_Clone, // Create a deep copy of the object.
mt_Show_Public_Only, // (not currently used)
mt_Show_Public_Only_Selection, // Show public operations/attributes only.
mt_Externalize_Folder, // Mark folder for saving as separate submodel
mt_Internalize_Folder, // Reintegrate separate submodel into main model
mt_Undefined = - 1
};
/**
* Constructs the popup menu for a diagram
*
* @param parent The parent to ListPopupMenu.
* @param type The type of menu to display.
* @param view The UMLView in which this ListPopupMenu is going to be displayed
*/
explicit ListPopupMenu(TQWidget* parent, Menu_Type type = mt_Undefined, UMLView* view = 0);
/**
* Constructs the popup menu for a list view item.
*
* @param parent The parent to ListPopupMenu.
* @param type The type of menu to display.
*/
ListPopupMenu(TQWidget* parent, Uml::ListView_Type type);
/**
* Constructs the popup menu for a canvas widget.
*
* @param parent The parent to ListPopupMenu.
* @param object The UMLWidget to represent a menu for.
* @param multi True if multiple items are selected.
* @param unique True if multiple selected items all have
* the same type (e.g. Class, Interface)
*/
ListPopupMenu(TQWidget* parent, UMLWidget* object, bool multi = false, bool unique = false);
/**
* Standard deconstructor.
*/
~ListPopupMenu();
/**
* Utility: Convert a Menu_Type value to an Object_Type value.
*/
static Uml::Object_Type convert_MT_OT(Menu_Type mt);
/**
* Utility: Convert a Menu_Type value to a Diagram_Type value.
*/
static Uml::Diagram_Type convert_MT_DT(Menu_Type mt);
private:
/**
* Basic initialization - common to all constructors.
*/
void init();
/**
* Shortcut for inserting a "File->New" choice.
*/
void insertFileNew();
/**
* Shortcut for the most frequently used insertItem() calls.
*
* @param m The Menu_Type for which to insert a menu item.
*/
void insertStdItem(Menu_Type m);
/**
* Shortcut for the most frequently used insertStdItem() calls.
*
* @param insertLeadingSeparator Set this true if the group shall
* start with a separator.
* @param type The Widget_Type for which to insert the menu items.
* If no argument is supplied then a Rename item will be
* included.
*/
void insertStdItems(bool insertLeadingSeparator = true,
Uml::Widget_Type type = Uml::wt_UMLWidget);
/**
* Shortcut for inserting standard model items (Class, Interface,
* Datatype, Enum, Package) as well as diagram choices.
*
* @param folderAndDiagrams Set this true if folders and diagram
* types shall be included as choices.
*/
void insertContainerItems(bool folderAndDiagrams);
/**
* Inserts a menu item for an association related text
* (such as name, role, multiplicity etc.)
*
* @param label The menu text.
* @param mt The menu type.
*/
void insertAssocItem(const TQString &label, Menu_Type mt);
/**
* Inserts a menu item for externalization/de-externalization
* of a folder.
*/
void insertSubmodelAction();
/**
* Creates a popup menu for a multiple selection of class and
* interface widgets.
*/
void makeMultiClassifierPopup(ClassifierWidget *c);
/**
* Creates a popup menu for a single class or interface widgets.
*/
void makeClassifierPopup(ClassifierWidget *c);
/**
* Shortcut for commonly used menu initializations.
*
* @param type The Menu_Type for which to set up the menu.
* @param view The UMLView parent of the menu.
*/
void setupMenu(Menu_Type type, UMLView * view = 0);
enum PixMap_Type {
pm_Class,
pm_Package,
pm_Interface,
pm_Datatype,
pm_Enum,
pm_Actor,
pm_Usecase,
pm_InitialState,
pm_EndState,
pm_Branch,
pm_Object,
pm_Component,
pm_Node,
pm_Artifact,
pm_Text,
pm_Entity,
pm_Subsystem,
pm_NUMBER_OF_PIXMAPS
};
TQPixmap m_pixmap[pm_NUMBER_OF_PIXMAPS];
TDEPopupMenu * m_pInsert, * m_pShow, * m_pColor;
void setupColor(bool fc);
void setupColorSelection(bool fc);
void setupDiagramMenu(UMLView* view);
};
#endif