2008-03-08 13:52:38 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: treebase.h
|
2008-03-10 15:24:38 +00:00
|
|
|
// Purpose: interface of wxTreeItemId
|
2008-03-08 13:52:38 +00:00
|
|
|
// Author: wxWidgets team
|
2010-07-13 13:29:13 +00:00
|
|
|
// Licence: wxWindows licence
|
2008-03-08 13:52:38 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxTreeItemId
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
An opaque reference to a tree item.
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-03-08 13:52:38 +00:00
|
|
|
@library{wxcore}
|
2009-02-20 11:34:52 +00:00
|
|
|
@category{data}
|
2008-03-08 14:43:31 +00:00
|
|
|
|
2008-05-20 07:48:30 +00:00
|
|
|
@see wxTreeCtrl, wxTreeItemData, @ref overview_treectrl
|
2008-03-08 13:52:38 +00:00
|
|
|
*/
|
2008-03-08 14:43:31 +00:00
|
|
|
class wxTreeItemId
|
2008-03-08 13:52:38 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
2008-05-20 07:48:30 +00:00
|
|
|
Default constructor. A wxTreeItemId is not meant to be constructed
|
|
|
|
explicitly by the user; only those returned by the wxTreeCtrl functions
|
|
|
|
should be used.
|
2008-03-08 13:52:38 +00:00
|
|
|
*/
|
|
|
|
wxTreeItemId();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if this instance is referencing a valid tree item.
|
|
|
|
*/
|
2008-03-09 16:24:26 +00:00
|
|
|
bool IsOk() const;
|
2008-03-08 13:52:38 +00:00
|
|
|
|
2012-03-29 17:14:52 +00:00
|
|
|
void* GetID() const;
|
|
|
|
void Unset();
|
2008-03-08 13:52:38 +00:00
|
|
|
};
|
2008-03-10 15:24:38 +00:00
|
|
|
|
2012-03-29 17:14:52 +00:00
|
|
|
bool operator==(const wxTreeItemId& left, const wxTreeItemId& right);
|
|
|
|
bool operator!=(const wxTreeItemId& left, const wxTreeItemId& right);
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-05-20 07:48:30 +00:00
|
|
|
/**
|
|
|
|
@class wxTreeItemData
|
|
|
|
|
|
|
|
wxTreeItemData is some (arbitrary) user class associated with some item. The
|
|
|
|
main advantage of having this class is that wxTreeItemData objects are
|
|
|
|
destroyed automatically by the tree and, as this class has virtual
|
|
|
|
destructor, it means that the memory and any other resources associated with
|
|
|
|
a tree item will be automatically freed when it is deleted. Note that we
|
|
|
|
don't use wxObject as the base class for wxTreeItemData because the size of
|
|
|
|
this class is critical: in many applications, each tree leaf will have
|
|
|
|
wxTreeItemData associated with it and the number of leaves may be quite big.
|
|
|
|
|
|
|
|
Also please note that because the objects of this class are deleted by the
|
|
|
|
tree using the operator @c delete, they must always be allocated on the heap
|
|
|
|
using @c new.
|
|
|
|
|
|
|
|
@library{wxcore}
|
|
|
|
@category{containers}
|
|
|
|
|
|
|
|
@see wxTreeCtrl
|
|
|
|
*/
|
|
|
|
class wxTreeItemData : public wxClientData
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Default constructor.
|
|
|
|
|
2009-10-18 17:47:01 +00:00
|
|
|
@beginWxPerlOnly
|
|
|
|
In wxPerl the constructor accepts a scalar as an optional parameter
|
|
|
|
and stores it as client data; use
|
|
|
|
- GetData() to retrieve the value.
|
|
|
|
- SetData(data) to set it.
|
|
|
|
@endWxPerlOnly
|
2008-05-20 07:48:30 +00:00
|
|
|
*/
|
|
|
|
wxTreeItemData();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Virtual destructor.
|
|
|
|
*/
|
2008-09-27 11:21:10 +00:00
|
|
|
virtual ~wxTreeItemData();
|
2008-05-20 07:48:30 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the item associated with this node.
|
|
|
|
*/
|
2008-10-28 14:29:36 +00:00
|
|
|
const wxTreeItemId& GetId() const;
|
2008-05-20 07:48:30 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the item associated with this node.
|
2009-04-05 13:07:24 +00:00
|
|
|
|
|
|
|
Notice that this function is automatically called by wxTreeCtrl methods
|
|
|
|
associating an object of this class with a tree control item such as
|
|
|
|
wxTreeCtrl::AppendItem(), wxTreeCtrl::InsertItem() and
|
|
|
|
wxTreeCtrl::SetItemData() so there is usually no need to call it
|
|
|
|
yourself.
|
2008-05-20 07:48:30 +00:00
|
|
|
*/
|
|
|
|
void SetId(const wxTreeItemId& id);
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
Indicates which type to associate an image with a wxTreeCtrl item.
|
2008-10-28 14:29:36 +00:00
|
|
|
|
2008-05-20 07:48:30 +00:00
|
|
|
@see wxTreeCtrl::GetItemImage(), wxTreeCtrl::SetItemImage()
|
|
|
|
*/
|
|
|
|
enum wxTreeItemIcon
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
To get/set the item image for when the item is
|
|
|
|
@b not selected and @b not expanded.
|
|
|
|
*/
|
|
|
|
wxTreeItemIcon_Normal,
|
|
|
|
/**
|
|
|
|
To get/set the item image for when the item is
|
|
|
|
@b selected and @b not expanded.
|
|
|
|
*/
|
|
|
|
wxTreeItemIcon_Selected,
|
|
|
|
/**
|
|
|
|
To get/set the item image for when the item is
|
|
|
|
@b not selected and @b expanded.
|
|
|
|
*/
|
|
|
|
wxTreeItemIcon_Expanded,
|
|
|
|
/**
|
|
|
|
To get/set the item image for when the item is
|
|
|
|
@b selected and @b expanded.
|
|
|
|
*/
|
|
|
|
wxTreeItemIcon_SelectedExpanded,
|
|
|
|
wxTreeItemIcon_Max
|
|
|
|
};
|
2012-03-29 17:14:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
/// special values for the 'state' parameter of wxTreeCtrl::SetItemState()
|
|
|
|
static const int wxTREE_ITEMSTATE_NONE = -1; // not state (no display state image)
|
|
|
|
static const int wxTREE_ITEMSTATE_NEXT = -2; // cycle to the next state
|
|
|
|
static const int wxTREE_ITEMSTATE_PREV = -3; // cycle to the previous state
|
|
|
|
|
|
|
|
#define wxTR_NO_BUTTONS 0x0000 // for convenience
|
|
|
|
#define wxTR_HAS_BUTTONS 0x0001 // draw collapsed/expanded btns
|
|
|
|
#define wxTR_NO_LINES 0x0004 // don't draw lines at all
|
|
|
|
#define wxTR_LINES_AT_ROOT 0x0008 // connect top-level nodes
|
|
|
|
#define wxTR_TWIST_BUTTONS 0x0010 // still used by wxTreeListCtrl
|
|
|
|
|
|
|
|
#define wxTR_SINGLE 0x0000 // for convenience
|
|
|
|
#define wxTR_MULTIPLE 0x0020 // can select multiple items
|
|
|
|
|
|
|
|
#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080 // what it says
|
|
|
|
|
|
|
|
#define wxTR_EDIT_LABELS 0x0200 // can edit item labels
|
|
|
|
#define wxTR_ROW_LINES 0x0400 // put border around items
|
|
|
|
#define wxTR_HIDE_ROOT 0x0800 // don't display root node
|
|
|
|
|
|
|
|
#define wxTR_FULL_ROW_HIGHLIGHT 0x2000 // highlight full horz space
|
|
|
|
|
|
|
|
// make the default control appearance look more native-like depending on the
|
|
|
|
// platform
|
|
|
|
#define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT)
|
|
|
|
|
|
|
|
|
|
|
|
// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine
|
|
|
|
// where exactly the specified point is situated:
|
|
|
|
|
|
|
|
static const int wxTREE_HITTEST_ABOVE = 0x0001;
|
|
|
|
static const int wxTREE_HITTEST_BELOW = 0x0002;
|
|
|
|
static const int wxTREE_HITTEST_NOWHERE = 0x0004;
|
|
|
|
// on the button associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0008;
|
|
|
|
// on the bitmap associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMICON = 0x0010;
|
|
|
|
// on the indent associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMINDENT = 0x0020;
|
|
|
|
// on the label (string) associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMLABEL = 0x0040;
|
|
|
|
// on the right of the label associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0080;
|
|
|
|
// on the label (string) associated with an item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0100;
|
|
|
|
// on the left of the wxTreeCtrl.
|
|
|
|
static const int wxTREE_HITTEST_TOLEFT = 0x0200;
|
|
|
|
// on the right of the wxTreeCtrl.
|
|
|
|
static const int wxTREE_HITTEST_TORIGHT = 0x0400;
|
|
|
|
// on the upper part (first half) of the item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMUPPERPART = 0x0800;
|
|
|
|
// on the lower part (second half) of the item.
|
|
|
|
static const int wxTREE_HITTEST_ONITEMLOWERPART = 0x1000;
|
|
|
|
|
|
|
|
// anywhere on the item
|
|
|
|
static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON |
|
|
|
|
wxTREE_HITTEST_ONITEMLABEL;
|
|
|
|
|
|
|
|
|