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/dialogs/classifierlistpage.h

193 lines
5.6 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 CLASSIFIERLISTPAGE_H
#define CLASSIFIERLISTPAGE_H
//qt includes
#include <tqwidget.h>
#include <tqgroupbox.h>
#include <tqlistbox.h>
#include <tqtextedit.h>
//kde includes
#include <karrowbutton.h>
//app includes
#include "../listpopupmenu.h"
#include "../umlclassifierlistitemlist.h"
class UMLObject;
class UMLClassifier;
class UMLDoc;
/**
* A dialog page to display classifier list properties. This is not normally setup
* by you. It is used by the @ref ClassPropDlg and new class wizard.
*
* @short A dialog page to display classifier properties.
* @author Paul Hensgen, Jonathan Riddell
* Bugs and comments to uml-devel@lists.sf.net or http://bugs.trinitydesktop.org
*/
class ClassifierListPage : public TQWidget {
TQ_OBJECT
public:
/**
* Sets up the ClassifierListPage
*
* @param parent The parent to the ClassAttPage.
* @param classifier The Concept to display the properties of.
* @param doc The UMLDoc document
* @param type The type of listItem this handles
*/
ClassifierListPage(TQWidget* parent, UMLClassifier* classifier, UMLDoc* doc, Uml::Object_Type type);
/**
* Standard deconstructor.
*/
~ClassifierListPage();
/**
* Will move information from the dialog into the object.
* Call when the ok or apply button is pressed.
*/
void updateObject();
private:
/**
* Set the state of the widgets on the page with the given value.
*
* @param state The state to set the widgets as.
*/
void enableWidgets(bool state);
/**
* Saves the documentation for the currently selected item
*/
void saveCurrentItemDocumentation();
/**
* Get classifiers
*/
UMLClassifierListItemList getItemList();
/**
* Attempts to add classifier to the appropriate list
*
* @param classifier Pointer to the classifier to add.
* @param position Index at which to insert into the list.
* @return true if the classifier could be added
*
*/
bool addClassifier(UMLClassifierListItem* classifier, int position = -1);
/**
* Take a classifier's subordinate item.
* Ownership of the classifier list item is transferred to the caller.
* @param listitem UMLClassifierListItem to take.
* @param seekPeerBefore True if a peer index should be sought which
* is smaller than the current listitem's index.
* @param peerIndex Return value: Index in the UMLClassifier's
* item list at which a peer item, i.e. another
* UMLClassifierListItem of the same type as
* listItem, is found. If no such item exists
* then return -1.
* @return True for success.
*/
bool takeItem(UMLClassifierListItem* listitem,
bool seekPeerBefore, int &peerIndex);
/**
* Utility for debugging, prints the current item list.
* Only effective if VERBOSE_DEBUGGING is defined.
*/
void printItemList(TQString prologue);
UMLClassifier* m_pClassifier;
TQGroupBox* m_pDocGB;
TQGroupBox* m_pItemListGB;
TQListBox* m_pItemListLB;
TQTextEdit* m_pDocTE;
Uml::Object_Type m_itemType;
KArrowButton* m_pTopArrowB;
KArrowButton* m_pUpArrowB;
KArrowButton* m_pDownArrowB;
KArrowButton* m_pBottomArrowB;
TQPushButton* m_pDeleteListItemButton;
TQPushButton* m_pPropertiesButton;
UMLClassifierListItem* m_pOldListItem;
UMLDoc* m_pDoc;
ListPopupMenu* m_pMenu;
bool m_bSigWaiting;
public slots:
/**
* called when list view is clicked on
* calls enableWidgets()
*/
void slotClicked(TQListBoxItem* item);
/**
* Called when an item is selected in a right click menu
*/
void slotPopupMenuSel(int id);
void slotListItemCreated(UMLObject* object);
void slotListItemModified();
void slotRightButtonClicked(TQListBoxItem* item, const TQPoint& p);
void slotRightButtonPressed(TQListBoxItem* item, const TQPoint& p);
/**
* shows properties dialog for the attribute clicked on
*/
void slotDoubleClick(TQListBoxItem* item);
/**
* moves selected attribute to the top of the list
*/
void slotTopClicked();
/**
* moves selected attribute up in list
*/
void slotUpClicked();
/**
* moved selected attribute down in list
*/
void slotDownClicked();
/**
* moved selected attribute to the bottom of the list
*/
void slotBottomClicked();
/**
* shows dialog for new attribute
*/
void slotNewListItem();
/**
* removes currently seleted attribute
*/
void slotDelete();
/**
* shows properties dialog for currently selected attribute
*/
void slotProperties();
};
#endif