HyperTreeList is a class that mimics the behaviour of wx.gizmos.TreeListCtrl, with some more functionalities.
HyperTreeList is a class that mimics the behaviour of wx.gizmos.TreeListCtrl, with almost the same base functionalities plus some more enhancements. This class does not rely on the native control, as it is a full owner-drawn tree-list control.
HyperTreeList is somewhat an hybrid between CustomTreeCtrl and wx.gizmos.TreeListCtrl.
In addition to the standard wx.gizmos.TreeListCtrl behaviour this class supports:
And a lot more. Check the demo for an almost complete review of the functionalities.
HyperTreeList supports all the wx.gizmos.TreeListCtrl styles, except:
Plus it has 3 more styles to handle checkbox-type items:
And a style useful to hide the TreeListCtrl header:
And a style related to long items (with a lot of text in them), which can be ellipsized:
All the methods available in wx.gizmos.TreeListCtrl are also available in HyperTreeList.
Usage example:
import wx
import wx.lib.agw.hypertreelist as HTL
class MyFrame(wx.Frame):
def __init__(self, parent):
wx.Frame.__init__(self, parent, -1, "HyperTreeList Demo")
tree_list = HTL.HyperTreeList(self)
tree_list.AddColumn("First column")
root = tree_list.AddRoot("Root", ct_type=1)
parent = tree_list.AppendItem(root, "First child", ct_type=1)
child = tree_list.AppendItem(parent, "First Grandchild", ct_type=1)
tree_list.AppendItem(root, "Second child", ct_type=1)
# our normal wxApp-derived class, as usual
app = wx.PySimpleApp()
frame = MyFrame(None)
app.SetTopWindow(frame)
frame.Show()
app.MainLoop()
This code snippet can be downloaded, see this example script.
Note
Some of the AGW snippets of code in the documentation use images and external files (to create bitmaps or access external data). As these files are not provided in these snippets, you should make the approriate modifications to the code to actually run it.
All the events supported by wx.gizmos.TreeListCtrl are also available in HyperTreeList, with a few exceptions:
Plus, HyperTreeList supports the events related to the checkbutton-type items:
And to hyperlink-type items:
This class supports the following window styles:
Window Styles | Hex Value | Description |
---|---|---|
TR_NO_BUTTONS | 0x0 | For convenience to document that no buttons are to be drawn. |
TR_SINGLE | 0x0 | For convenience to document that only one item may be selected at a time. Selecting another item causes the current selection, if any, to be deselected. This is the default. |
TR_HAS_BUTTONS | 0x1 | Use this style to show + and - buttons to the left of parent items. |
TR_NO_LINES | 0x4 | Use this style to hide vertical level connectors. |
TR_LINES_AT_ROOT | 0x8 | Use this style to show lines between root nodes. Only applicable if TR_HIDE_ROOT is set and TR_NO_LINES is not set. |
TR_DEFAULT_STYLE | 0x9 | The set of flags that are closest to the defaults for the native control for a particular toolkit. |
TR_TWIST_BUTTONS | 0x10 | Use old Mac-twist style buttons. |
TR_MULTIPLE | 0x20 | Use this style to allow a range of items to be selected. If a second range is selected, the current range, if any, is deselected. |
TR_EXTENDED | 0x40 | Use this style to allow disjoint items to be selected. (Only partially implemented; may not work in all cases). |
TR_HAS_VARIABLE_ROW_HEIGHT | 0x80 | Use this style to cause row heights to be just big enough to fit the content. If not set, all rows use the largest row height. The default is that this flag is unset. |
TR_EDIT_LABELS | 0x200 | Use this style if you wish the user to be able to edit labels in the tree control. |
TR_ROW_LINES | 0x400 | Use this style to draw a contrasting border between displayed rows. |
TR_HIDE_ROOT | 0x800 | Use this style to suppress the display of the root node, effectively causing the first-level nodes to appear as a series of root nodes. |
TR_COLUMN_LINES | 0x1000 | Use this style to draw a contrasting border between displayed columns. |
TR_FULL_ROW_HIGHLIGHT | 0x2000 | Use this style to have the background colour and the selection highlight extend over the entire horizontal row of the tree control window. |
TR_AUTO_CHECK_CHILD | 0x4000 | Only meaningful foe checkbox-type items: when a parent item is checked/unchecked its children are checked/unchecked as well. |
TR_AUTO_TOGGLE_CHILD | 0x8000 | Only meaningful foe checkbox-type items: when a parent item is checked/unchecked its children are toggled accordingly. |
TR_AUTO_CHECK_PARENT | 0x10000 | Only meaningful foe checkbox-type items: when a child item is checked/unchecked its parent item is checked/unchecked as well. |
TR_ALIGN_WINDOWS | 0x20000 | Flag used to align windows (in items with windows) at the same horizontal position. |
TR_NO_HEADER | 0x40000 | Use this style to hide the columns header. |
TR_ELLIPSIZE_LONG_ITEMS | 0x80000 | Flag used to ellipsize long items when the horizontal space for HyperTreeList columns is low. |
TR_VIRTUAL | 0x100000 | HyperTreeList will have virtual behaviour. |
This class processes the following events:
Event Name | Description |
---|---|
EVT_LIST_COL_BEGIN_DRAG | The user started resizing a column - can be vetoed. |
EVT_LIST_COL_CLICK | A column has been left-clicked. |
EVT_LIST_COL_DRAGGING | The divider between columns is being dragged. |
EVT_LIST_COL_END_DRAG | A column has been resized by the user. |
EVT_LIST_COL_RIGHT_CLICK | A column has been right-clicked. |
EVT_TREE_BEGIN_DRAG | Begin dragging with the left mouse button. |
EVT_TREE_BEGIN_LABEL_EDIT | Begin editing a label. This can be prevented by calling Veto. |
EVT_TREE_BEGIN_RDRAG | Begin dragging with the right mouse button. |
EVT_TREE_DELETE_ITEM | Delete an item. |
EVT_TREE_END_DRAG | End dragging with the left or right mouse button. |
EVT_TREE_END_LABEL_EDIT | End editing a label. This can be prevented by calling Veto. |
EVT_TREE_GET_INFO | Request information from the application (not implemented in HyperTreeList). |
EVT_TREE_ITEM_ACTIVATED | The item has been activated, i.e. chosen by double clicking it with mouse or from keyboard. |
EVT_TREE_ITEM_CHECKED | A checkbox or radiobox type item has been checked. |
EVT_TREE_ITEM_CHECKING | A checkbox or radiobox type item is being checked. |
EVT_TREE_ITEM_COLLAPSED | The item has been collapsed. |
EVT_TREE_ITEM_COLLAPSING | The item is being collapsed. This can be prevented by calling Veto. |
EVT_TREE_ITEM_EXPANDED | The item has been expanded.s |
EVT_TREE_ITEM_EXPANDING | The item is being expanded. This can be prevented by calling Veto. |
EVT_TREE_ITEM_GETTOOLTIP | The opportunity to set the item tooltip is being given to the application (call SetToolTip). |
EVT_TREE_ITEM_HYPERLINK | An hyperlink type item has been clicked. |
EVT_TREE_ITEM_MENU | The context menu for the selected item has been requested, either by a right click or by using the menu key. |
EVT_TREE_ITEM_MIDDLE_CLICK | The user has clicked the item with the middle mouse button (not implemented in HyperTreeList). |
EVT_TREE_ITEM_RIGHT_CLICK | The user has clicked the item with the right mouse button. |
EVT_TREE_KEY_DOWN | A key has been pressed. |
EVT_TREE_SEL_CHANGED | Selection has changed. |
EVT_TREE_SEL_CHANGING | Selection is changing. This can be prevented by calling Veto. |
EVT_TREE_SET_INFO | Information is being supplied to the application (not implemented in HyperTreeList). |
EVT_TREE_STATE_IMAGE_CLICK | The state image has been clicked (not implemented in HyperTreeList). |
HyperTreeList is distributed under the wxPython license.
Latest Revision: Andrea Gavana @ 03 Mar 2012, 21.00 GMT
Version 1.3
Module author: Andrea Gavana <andrea.gavana@gmail.com>
A graphical representation of the SVN commits in the last year.
Click on any date in the picture to jump to that particular revision page, containing information about committers, log messages and SVN diffs.