21#if defined(__GNUG__) && !defined(__APPLE__)
22 #pragma implementation "treelistctrl.h"
34#include <wx/treebase.h>
36#include <wx/textctrl.h>
37#include <wx/imaglist.h>
38#include <wx/settings.h>
39#include <wx/dcclient.h>
40#include <wx/dcscreen.h>
41#include <wx/scrolwin.h>
42#include <wx/dcmemory.h>
43#include <wx/renderer.h>
44#include <wx/apptrait.h>
45#include <wx/dcbuffer.h>
46#include <wx/tooltip.h>
47#include <wx/hashmap.h>
48#include <wx/dynarray.h>
49#include <wx/arrimpl.cpp>
50#include <wx/itemattr.h>
52#if defined(__WXMAC__) && defined(__WXOSX__)
53#include "wx/osx/private.h"
54#elif defined(__WXMAC__)
55#include "wx/mac/private.h"
106#if !wxCHECK_VERSION(3,3,0)
153 const wxString &name =
_T(
"wxtreelistctrlcolumntitles") );
198 _T(
"Invalid column"));
209 _T(
"Invalid column"));
215 -1,
_T(
"Invalid column"));
222 false,
_T(
"Invalid column"));
228 true,
_T(
"Invalid column"));
267 const wxString& name =
_T(
"wxtreelistmainwindow"))
484 wxTreeItemData *data =
NULL);
490 wxTreeItemData *data =
NULL);
497 wxTreeItemData *data =
NULL);
504 wxTreeItemData *data =
NULL);
510 wxTreeItemData *data =
NULL);
691 wxTreeItemData *data);
830 wxTreeItemData *data );
856 return entry->second->m_image;
864 return entry->second->m_data;
904 entry->second->m_image = image;
918 entry->second->m_data = data;
931 entry->second->m_isBold =
bold;
932 entry->second->m_isBoldSet = 1;
954 return (entry->second->m_isBold != 0);
1021 return entry->second->m_attr;
1034 return *(entry->second->m_attr);
1131 (*m_accept) =
false;
1163 wxTheApp->ScheduleForDestruction(
this);
1288#if defined( __WXMAC__ )
1294 dc->DrawRectangle( x, y+h,
w+1, 1 );
1296#if defined( __WXMAC__ )
1301 dc->DrawRectangle( x+1, y+h-1,
w-2, 1 );
1305 dc->DrawRectangle( x, y, 1, h );
1306 dc->DrawLine( x, y+h-1, x+1, y+h-1 );
1307 dc->DrawLine( x+
w-1, y, x+
w-1, y+1 );
1320 dc.SetDeviceOrigin( -x *
xpix, 0 );
1359 int image =
column.GetImage();
1369 wxRendererNative::Get().DrawHeaderButton(
this,
dc,
rect);
1386 m_owner->ClientToScreen( &x2, &y2 );
1394 dc.DrawLine (x1, y1, x2, y2);
1429 width =
column.GetWidth();
1451 if (
event.Moving() )
1488 if (
event.ButtonUp()) {
1549 }
else if (
event.Moving()) {
1572 le.m_pointDrag =
pos;
1578 le.m_pointDrag.y -= GetSize().y;
1580 parent->GetEventHandler()->ProcessEvent (
le);
1635 wxTreeItemData *data)
1664 wxTreeListItemCellAttrHash::iterator entry =
m_props_cell.begin();
1666 if (entry->second)
delete entry->second;
1681 size_t total = count;
1682 for (
size_t n = 0;
n < count; ++
n) {
1692 if ( x < width ) x = width;
1696 for (
size_t n = 0;
n < count; ++
n ) {
1718 for (
int x = 0,
j = 0;
j <
theCtrl->GetColumnCount(); ++
j) {
1721 if (point.x >= x && point.x < x+
w) {
1729 int h =
theCtrl->GetLineHeight (
this);
1730 if ((point.y >=
m_y) && (point.y <=
m_y + h)) {
1734 if (point.y <
y_mid) {
1752 if (
theCtrl->m_imgWidth > 0) {
1769 if (point.x <
m_x) {
1800 for (
size_t n = 0;
n < count;
n++) {
1865 m_ownsImageListNormal = m_ownsImageListButtons =
1866 m_ownsImageListState =
false;
1868 m_imgWidth = 0, m_imgWidth2 = 0;
1869 m_imgHeight = 0, m_imgHeight2 = 0;
1870 m_btnWidth = 0, m_btnWidth2 = 0;
1871 m_btnHeight = 0, m_btnHeight2 = 0;
1873 m_isDragStarted = m_isDragging =
false;
1878 m_editControl =
NULL;
1880 m_lastOnSame =
false;
1881 m_left_down_selection =
false;
1883 m_findTimer =
new wxTimer (
this, -1);
1885#if defined( __WXMAC__ ) && defined(__WXMAC_CARBON__)
1890 m_boldFont =
wxFont( m_normalFont.GetPointSize(),
1891 m_normalFont.GetFamily(),
1892 m_normalFont.GetStyle(),
1894 m_normalFont.GetUnderlined(),
1895 m_normalFont.GetFaceName(),
1896 m_normalFont.GetEncoding());
1899 m_isItemToolTip =
false;
2059 if (
attr &&
attr->HasTextColour()) {
2060 return attr->GetTextColour();
2069 if (
attr &&
attr->HasTextColour()) {
2070 return attr->GetTextColour();
2080 if (
attr &&
attr->HasBackgroundColour()) {
2081 return attr->GetBackgroundColour();
2090 if (
attr &&
attr->HasBackgroundColour()) {
2091 return attr->GetBackgroundColour();
2102 return attr->GetFont();
2103 }
else if (
pItem->IsBold()) {
2214 wxScrolledWindow::SetFont (
font);
2239 if (!
parent->IsExpanded())
return false;
2373 }
while (!next.IsOk() &&
parent.IsOk());
2388 if (
children.GetCount() == 0)
break;
2457 wxTreeItemData *data) {
2477 wxTreeItemData *data) {
2503 wxTreeItemData *data) {
2511 wxTreeItemData *data) {
2517 _T(
"previous item in wxTreeListMainWindow::InsertItem() is not a sibling") );
2526 wxTreeItemData *data) {
2536 wxTreeItemData *data) {
2547 if (!
itemId.IsOk())
return;
2577 if (!
itemId.IsOk())
return;
2692 if (!
item->HasPlus() ||
item->IsExpanded())
return;
2714 while (
child.IsOk()) {
2724 if (!
item->HasPlus() || !
item->IsExpanded())
return;
2767 if (
item->IsSelected()) {
2768 item->SetHilight (
false);
2773 if (
item->HasChildren()) {
2776 for (
size_t n = 0;
n < count; ++
n) {
2807 for (
size_t n = (index+1);
n < count; ++
n) {
2825 for (
size_t n = 0;
n < count; ++
n) {
2876 }
else if (
itemId.IsOk()) {
2879 item->SetHilight (!
item->IsSelected());
2924 if (
item->HasChildren()) {
2926 size_t count =
children.GetCount();
2935 return array.Count();
2939 if (!
item.IsOk())
return;
2954 if (!
item.IsOk())
return;
2982 if (
item_y < start_y+3) {
3018 _T(
"wxTreeListMainWindow::SortChildren is not reentrant") );
3107 for (
int i = 0;
i <
n ;
i++) {
3108 int width = 0, height = 0;
3119 for (
int i = 0;
i <
n ;
i++) {
3120 int width = 0, height = 0;
3195 return item->GetHeight();
3224 if (
item->IsSelected()) {
3253 if (
col_w <= 0)
continue;
3275 image =
item->GetImage(
i);
3430 if (
item->HasPlus()) {
3453 dc.DestroyClippingRegion();
3461 if (
item->IsExpanded()) {
3483 wxRendererNative::Get().DrawTreeItemButton (
this,
dc,
rect, flag);
3495 if (
item->IsExpanded())
3520 dc.DrawLine (x,
oldY, x, y2);
3630 switch (
event.GetKeyCode()) {
3817 if (!
event.ControlDown()) {
3818 bool unselect_others = !((
event.ShiftDown() ||
event.ControlDown()) &&
3861 wxCHECK_MSG (
itemId.IsOk(),
false,
_T(
"invalid item in wxTreeListMainWindow::GetBoundingRect") );
3883 if (!
item.IsOk())
return;
3931 x =
dc.LogicalToDeviceX (x);
3932 y =
dc.LogicalToDeviceY (y);
3972 if (
m_owner->GetEventHandler()->ProcessEvent(
event))
return;
3993 if (
event.Dragging()) {
4015 if (
event.ControlDown() ||
event.ShiftDown()) {
4041 if (
event.LeftDown() ||
event.MiddleDown() ||
event.RightDown())
SetFocus();
4049 wxScrolledWindow::SetToolTip(
m_toolTip);
4058 wxScrolledWindow::SetToolTip(*
tip);
4064 wxScrolledWindow::SetToolTip(
wxString());
4069 wxScrolledWindow::SetToolTip(
m_toolTip);
4105 ||
event.ControlDown()
4117 if (
event.MiddleDown()) {
4125 if (
event.RightDown()) {
4133 if (
event.RightUp()) {
4197 }
else if (
event.Dragging()) {
4220 }
else if (
event.Dragging()) {
4257 if (
bSkip)
event.Skip();
4277 if (
m_owner->GetEventHandler()->ProcessEvent(
event))
return;
4341 if ( !
item->IsExpanded() )
return;
4347 for (
n = 0;
n < count; ++
n) {
4384 rect.x =
dc.LogicalToDeviceX( 0 );
4386 rect.y =
dc.LogicalToDeviceY(
item->GetY() - 2 );
4389 Refresh (
true, &
rect );
4404 rect.x =
dc.LogicalToDeviceX( 0 );
4405 rect.y =
dc.LogicalToDeviceY(
item->GetY() );
4409 Refresh (
true, &
rect);
4421 if (
item->IsSelected()) {
4427 for (
long n = 0;
n < count;
n++ ) {
4437 if (!wxWindow::SetBackgroundColour(
colour))
return false;
4444 if (!wxWindow::SetForegroundColour(
colour))
return false;
4482 wxWindow::SetFocus();
4487 if (!
item)
return 0;
4511 if (level) width += level *
GetIndent();
4528 if (width <
w) width =
w;
4534 while (
item.IsOk()) {
4536 if (width <
w) width =
w;
4542 if (width <
w) width =
w;
4564 event->SetEventObject (
m_owner);
4565 event->SetId(
m_owner->GetId());
4567 event->SetItem (
item);
4570 return m_owner->GetEventHandler()->ProcessEvent (*
event);
4621 h = (
int)(wxRendererNative::Get().GetHeaderButtonHeight(
m_header_win) * 0.8) + 2;
4623 h = wxRendererNative::Get().GetHeaderButtonHeight(
m_header_win);
4889 wxTreeItemData* data)
4896 wxTreeItemData* data)
4906 wxTreeItemData* data)
4915 wxTreeItemData* data)
5161wxTreeListCtrlXmlHandler::wxTreeListCtrlXmlHandler() : wxXmlResourceHandler() {
5163#define wxTR_NO_BUTTONS 0x0000
5164#define wxTR_HAS_BUTTONS 0x0001
5165#define wxTR_NO_LINES 0x0004
5166#define wxTR_LINES_AT_ROOT 0x0008
5167#define wxTR_TWIST_BUTTONS 0x0010
5169#define wxTR_SINGLE 0x0000
5170#define wxTR_MULTIPLE 0x0020
5171#define wxTR_EXTENDED 0x0040
5172#define wxTR_HAS_VARIABLE_ROW_HEIGHT 0x0080
5174#define wxTR_EDIT_LABELS 0x0200
5175#define wxTR_ROW_LINES 0x0400
5176#define wxTR_HIDE_ROOT 0x0800
5178#define wxTR_FULL_ROW_HIGHLIGHT 0x2000
5181#define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS | wxTR_NO_LINES)
5183#define wxTR_DEFAULT_STYLE (wxTR_HAS_BUTTONS | wxTR_LINES_AT_ROOT)
5195#if WXWIN_COMPATIBILITY_2_8
5217wxObject *wxTreeListCtrlXmlHandler::DoCreateResource() {
void EndEdit(bool isCancelled)
void SetOwner(wxTreeListMainWindow *owner)
wxTreeListMainWindow * m_owner
void OnKillFocus(wxFocusEvent &event)
wxEditTextCtrl(wxWindow *parent, const wxWindowID id, bool *accept, wxString *res, wxTreeListMainWindow *owner, const wxString &value=wxEmptyString, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=0, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxTextCtrlNameStr)
void OnKeyUp(wxKeyEvent &event)
void OnChar(wxKeyEvent &event)
void SetItemText(const wxTreeItemId &item, const wxString &text)
wxTreeItemId GetNextExpanded(const wxTreeItemId &item) const
void SetItemParent(const wxTreeItemId &parent, const wxTreeItemId &item)
wxTreeItemData * GetItemData(const wxTreeItemId &item) const
wxTreeItemId GetNext(const wxTreeItemId &item) const
size_t GetSelections(wxArrayTreeItemIds &) const
void SetButtonsImageList(wxImageList *imageList)
virtual bool SetForegroundColour(const wxColour &colour)
wxTreeItemId GetLastVisible(bool fullRow=false, bool within=true) const
wxTreeListHeaderWindow * m_header_win
bool IsExpanded(const wxTreeItemId &item) const
void SetToolTip(const wxString &tip)
void SetCurrentItem(const wxTreeItemId &item=(wxTreeItemId *) NULL)
void AddColumn(const wxString &text, int width=DEFAULT_COL_WIDTH, int flag=wxALIGN_LEFT, int image=-1, bool shown=true, bool edit=false, const wxString &tooltip=wxEmptyString)
void SetColumnText(int column, const wxString &text)
wxTreeListHeaderWindow * GetHeaderWindow() const
void InsertColumn(int before, const wxString &text, int width=DEFAULT_COL_WIDTH, int flag=wxALIGN_LEFT, int image=-1, bool shown=true, bool edit=false, const wxString &tooltip=wxEmptyString)
void SetColumnImage(int column, int image)
void SetItemToolTip(const wxTreeItemId &item, const wxString &tip)
friend class wxTreeListHeaderWindow
wxTreeItemId GetRootItem() const
wxTreeListMainWindow * m_main_win
void SetIndent(unsigned int indent)
size_t GetChildrenCount(const wxTreeItemId &item, bool recursively=true)
void Toggle(const wxTreeItemId &item)
int GetColumnImage(int column) const
void CollapseAndReset(const wxTreeItemId &item)
bool HasChildren(const wxTreeItemId &item) const
bool IsVisible(const wxTreeItemId &item, bool fullRow=false, bool within=true) const
wxString GetColumnText(int column) const
void RemoveColumn(int column)
void SetItemData(const wxTreeItemId &item, wxTreeItemData *data)
void EditLabel(const wxTreeItemId &item)
void SortChildren(const wxTreeItemId &item, int column=-1, bool reverseOrder=false)
bool IsSelected(const wxTreeItemId &item) const
wxTreeItemId AddRoot(const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
void Expand(const wxTreeItemId &item)
wxTreeItemId GetPrev(const wxTreeItemId &item) const
void SetItemImage(const wxTreeItemId &item, int image, wxTreeItemIcon which=wxTreeItemIcon_Normal)
void Refresh(bool erase=TRUE, const wxRect *rect=NULL)
void AssignButtonsImageList(wxImageList *imageList)
void CalculateAndSetHeaderHeight()
wxString GetItemText(const wxTreeItemId &item) const
wxTreeItemId GetSelection() const
void SetMainColumn(int column)
wxTreeItemId AppendItem(const wxTreeItemId &parent, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
bool GetItemBold(const wxTreeItemId &item) const
int GetColumnCount() const
void SetColumnWidth(int column, int width)
void SetColumnEditable(int column, bool edit=true)
int GetColumnWidth(int column) const
bool IsColumnEditable(int column) const
void SetColumnAlignment(int column, int flag)
virtual void SetWindowStyleFlag(long styles)
wxTreeItemId FindItem(const wxTreeItemId &item, const wxString &str, int mode=0)
bool SelectItem(const wxTreeItemId &item, const wxTreeItemId &last=(wxTreeItemId *) NULL, bool unselect_others=true)
void SetImageList(wxImageList *imageList)
bool IsColumnShown(int column) const
wxColour GetItemTextColour(const wxTreeItemId &item) const
void SetColumnShown(int column, bool shown=true)
void AssignStateImageList(wxImageList *imageList)
bool Create(wxWindow *parent, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTR_DEFAULT_STYLE, const wxValidator &validator=wxDefaultValidator, const wxString &name=wxTreeListCtrlNameStr)
void ExpandAll(const wxTreeItemId &item)
void Collapse(const wxTreeItemId &item)
int GetItemImage(const wxTreeItemId &item, wxTreeItemIcon which=wxTreeItemIcon_Normal) const
wxImageList * GetStateImageList() const
wxTreeItemId GetNextVisible(const wxTreeItemId &item, bool fullRow=false, bool within=true) const
wxTreeItemId HitTest(const wxPoint &point)
wxTreeItemId InsertItem(const wxTreeItemId &parent, const wxTreeItemId &idPrevious, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
wxTreeItemId GetFirstVisible(bool fullRow=false, bool within=true) const
wxTreeItemId GetFirstExpandedItem() const
void SetStateImageList(wxImageList *imageList)
void SetItemTextColour(const wxTreeItemId &item, const wxColour &colour)
wxFont GetItemFont(const wxTreeItemId &item) const
void ScrollTo(const wxTreeItemId &item)
virtual wxString OnGetItemText(wxTreeItemData *item, long column) const
void DeleteChildren(const wxTreeItemId &item)
int GetColumnAlignment(int column) const
virtual bool SetBackgroundColour(const wxColour &colour)
void SetDragItem(const wxTreeItemId &item=(wxTreeItemId *) NULL)
wxImageList * GetImageList() const
wxTreeListMainWindow * GetMainWindow() const
unsigned int GetIndent() const
void EnsureVisible(const wxTreeItemId &item)
friend class wxTreeListMainWindow
wxTreeItemId GetPrevExpanded(const wxTreeItemId &item) const
virtual int OnCompareItems(const wxTreeItemId &item1, const wxTreeItemId &item2)
void AssignImageList(wxImageList *imageList)
wxTreeItemId GetFirstVisibleItem(bool fullRow=false) const
wxTreeItemId PrependItem(const wxTreeItemId &parent, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
virtual long GetWindowStyleFlag() const
wxTreeItemId GetPrevVisible(const wxTreeItemId &item, bool fullRow=false, bool within=true) const
wxTreeItemId GetPrevChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
wxTreeItemId GetNextSibling(const wxTreeItemId &item) const
void SetItemFont(const wxTreeItemId &item, const wxFont &font)
wxTreeItemId GetItemParent(const wxTreeItemId &item) const
void SetColumn(int column, const wxTreeListColumnInfo &colInfo)
unsigned int GetLineSpacing() const
void SetLineSpacing(unsigned int spacing)
void SetItemBackgroundColour(const wxTreeItemId &item, const wxColour &colour)
wxTreeItemId GetPrevSibling(const wxTreeItemId &item) const
virtual wxSize DoGetBestSize() const
wxTreeItemId GetFirstChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
void SetItemBold(const wxTreeItemId &item, bool bold=true)
void EndEdit(bool isCancelled)
wxImageList * GetButtonsImageList() const
void SetItemHasChildren(const wxTreeItemId &item, bool has=true)
void Delete(const wxTreeItemId &item)
bool GetBoundingRect(const wxTreeItemId &item, wxRect &rect, bool textOnly=false) const
virtual bool SetFont(const wxFont &font)
void OnSize(wxSizeEvent &event)
wxTreeItemId GetLastChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
wxColour GetItemBackgroundColour(const wxTreeItemId &item) const
int GetMainColumn() const
wxTreeItemId GetNextChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
wxTreeListColumnInfo GetColumn(int column)
~wxTreeListItemCellAttr()
int GetTextX(int column) const
wxTreeListMainWindow * m_owner
bool IsBold(int column) const
wxTreeItemData * GetData(int column) const
void SetHeight(int height)
void SetItemParent(wxTreeListItem *parent)
wxArrayTreeListItems m_children
void SetHasPlus(bool has=true)
void SetData(wxTreeItemData *data)
const wxString GetText(int column) const
wxItemAttr & Attr(int column)
int GetCurrentImage() const
wxTreeListItemCellAttrHash m_props_cell
wxTreeItemData * GetData() const
wxTreeListItemCellAttr m_props_row
short m_images[wxTreeItemIcon_Max]
void SetToolTip(const wxString &tip)
int GetImage(int column, wxTreeItemIcon which=wxTreeItemIcon_Normal) const
void SetImage(int column, int image, wxTreeItemIcon which)
void SetHilight(bool set=true)
wxItemAttr * GetAttributes(int column) const
void SetTextX(int column, int text_x)
void SetImage(int image, wxTreeItemIcon which)
wxTreeListItem * GetItemParent() const
void GetSize(int &x, int &y, const wxTreeListMainWindow *)
void SetBold(int column, bool bold)
void SetData(int column, wxTreeItemData *data)
wxTreeListItem * m_parent
const wxString * GetToolTip() const
wxArrayTreeListItems & GetChildren()
void SetText(int column, const wxString &text)
int GetImage(wxTreeItemIcon which=wxTreeItemIcon_Normal) const
void Insert(wxTreeListItem *child, size_t index)
wxItemAttr * GetAttributes() const
wxTreeListItem * HitTest(const wxPoint &point, const wxTreeListMainWindow *, int &flags, int &column, int level)
size_t GetChildrenCount(bool recursively=true) const
wxTreeItemId InsertItem(const wxTreeItemId &parent, const wxTreeItemId &idPrevious, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
wxTreeListMainWindow(wxTreeListCtrl *parent, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTR_DEFAULT_STYLE, const wxValidator &validator=wxDefaultValidator, const wxString &name=_T("wxtreelistmainwindow"))
virtual int OnCompareItems(const wxTreeItemId &item1, const wxTreeItemId &item2)
bool SendEvent(wxEventType event_type, wxTreeListItem *item=NULL, wxTreeEvent *event=NULL)
bool m_left_down_selection
void OnEraseBackground(wxEraseEvent &WXUNUSED(event))
wxTreeItemId FindItem(const wxTreeItemId &item, int column, const wxString &str, int mode=0)
void CalculateLevel(wxTreeListItem *item, wxReadOnlyDC &dc, int level, int &y, int x_maincol)
void OnMouse(wxMouseEvent &event)
bool m_ownsImageListNormal
int GetMainColumn() const
void SetStateImageList(wxImageList *imageList)
int GetCurrentColumn() const
friend class wxTreeListItem
void DeleteChildren(const wxTreeItemId &item)
wxTreeItemId GetFirstVisible(bool fullRow, bool within) const
virtual bool SetForegroundColour(const wxColour &colour)
void Collapse(const wxTreeItemId &item)
void CalculatePositions()
void SetMainColumn(int column)
bool m_ownsImageListState
void EndEdit(bool isCancelled)
void RefreshSubtree(wxTreeListItem *item)
bool IsBold(const wxTreeItemId &item) const
wxTreeItemId GetPrev(const wxTreeItemId &item, bool fulltree=true) const
void OnCaptureLost(wxMouseCaptureLostEvent &WXUNUSED(event))
bool MatchItemText(const wxString &itemText, const wxString &pattern, int mode)
wxTreeListItem * m_shiftItem
void OnIdle(wxIdleEvent &event)
void OnScroll(wxScrollWinEvent &event)
bool TagNextChildren(wxTreeListItem *crt_item, wxTreeListItem *last_item)
void AssignButtonsImageList(wxImageList *imageList)
wxTreeListItem * m_curItem
wxTreeItemId GetSelection() const
int GetItemImage(const wxTreeItemId &item, wxTreeItemIcon which=wxTreeItemIcon_Normal) const
wxTreeItemId GetPrevExpanded(const wxTreeItemId &item) const
wxTreeListItem * m_dragItem
void SetItemText(const wxTreeItemId &item, int column, const wxString &text)
wxTreeItemId GetNextSibling(const wxTreeItemId &item) const
wxTreeListItem * m_rootItem
void Toggle(const wxTreeItemId &item)
void Delete(const wxTreeItemId &item)
wxImageList * GetButtonsImageList() const
void UnselectAllChildren(wxTreeListItem *item)
void SortChildren(const wxTreeItemId &item, int column, bool reverseOrder)
void SetItemData(const wxTreeItemId &item, wxTreeItemData *data)
wxTreeItemId GetNextExpanded(const wxTreeItemId &item) const
wxEditTextCtrl * m_editControl
wxTreeItemId DoInsertItem(const wxTreeItemId &parent, size_t previous, const wxString &text, int image, int selectedImage, wxTreeItemData *data)
void DoDeleteItem(wxTreeListItem *item)
wxImageList * GetStateImageList() const
wxTreeListItem * m_selectItem
void SetItemHasChildren(const wxTreeItemId &item, bool has=true)
unsigned int GetIndent() const
unsigned short m_linespacing
size_t GetSelections(wxArrayTreeItemIds &) const
void SetIndent(unsigned int indent)
wxTreeItemId AppendItem(const wxTreeItemId &parent, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
bool IsExpanded(const wxTreeItemId &item) const
wxTreeItemId GetRootItem() const
wxTreeItemId HitTest(const wxPoint &point, int &flags)
wxImageList * m_imageListButtons
bool GetBoundingRect(const wxTreeItemId &item, wxRect &rect, bool textOnly=false) const
wxTreeItemId HitTest(const wxPoint &point)
void SetItemBackgroundColour(const wxTreeItemId &item, const wxColour &colour)
void SetItemToolTip(const wxTreeItemId &item, const wxString &tip)
void AdjustMyScrollbars()
void OnDpiChanged(wxDPIChangedEvent &e)
wxFont GetItemFont(const wxTreeItemId &item) const
void OnSetFocus(wxFocusEvent &event)
void OnPaint(wxPaintEvent &event)
wxTreeItemId GetPrevSibling(const wxTreeItemId &item) const
void SetItemBold(const wxTreeItemId &item, bool bold=true)
int GetLineHeight(wxTreeListItem *item) const
void SetButtonsImageList(wxImageList *imageList)
void SetToolTip(const wxString &tip)
wxImageList * GetImageList() const
wxTreeListItem * m_toolTipItem
wxTreeItemId GetNextVisible(const wxTreeItemId &item, bool fullRow, bool within) const
wxTreeItemData * GetItemData(const wxTreeItemId &item) const
void SetItemTextColour(const wxTreeItemId &item, const wxColour &colour)
void CalculateSize(wxTreeListItem *item, wxReadOnlyDC &dc)
wxTreeItemId GetFirstChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
size_t GetChildrenCount(const wxTreeItemId &item, bool recursively=true)
bool HasChildren(const wxTreeItemId &item) const
void EditLabel(const wxTreeItemId &item, int column)
void CollapseAndReset(const wxTreeItemId &item)
virtual bool SetBackgroundColour(const wxColour &colour)
void SetWindowStyle(const long styles)
void Expand(const wxTreeItemId &item)
virtual bool SetFont(const wxFont &font)
bool GetItemBold(const wxTreeItemId &item) const
virtual ~wxTreeListMainWindow()
wxColour GetItemBackgroundColour(const wxTreeItemId &item) const
bool IsVisible(const wxTreeItemId &item, bool fullRow, bool within=true) const
void SetItemParent(const wxTreeItemId &parent, const wxTreeItemId &item)
wxTreeItemId GetNextChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
wxTreeItemId AddRoot(const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
wxImageList * m_imageListState
int GetBestColumnWidth(int column, wxTreeItemId parent=wxTreeItemId())
wxTreeItemId GetNext(const wxTreeItemId &item, bool fulltree=true) const
bool Create(wxTreeListCtrl *parent, wxWindowID id=-1, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTR_DEFAULT_STYLE, const wxValidator &validator=wxDefaultValidator, const wxString &name=_T("wxtreelistctrl"))
void AssignImageList(wxImageList *imageList)
void SetCurrentItem(const wxTreeItemId &item)
void PaintLevel(wxTreeListItem *item, wxDC &dc, int level, int &y, int x_maincol)
bool m_ownsImageListButtons
wxImageList * m_imageListNormal
wxTreeItemId GetLastChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
void PaintItem(wxTreeListItem *item, wxDC &dc)
void SetImageList(wxImageList *imageList)
int GetItemWidth(int column, wxTreeListItem *item)
wxTreeItemId GetPrevChild(const wxTreeItemId &item, wxTreeItemIdValue &cookie) const
friend class wxEditTextCtrl
unsigned int GetLineSpacing() const
void FillArray(wxTreeListItem *, wxArrayTreeItemIds &) const
bool TagAllChildrenUntilLast(wxTreeListItem *crt_item, wxTreeListItem *last_item)
bool SelectItem(const wxTreeItemId &item, const wxTreeItemId &prev=(wxTreeItemId *) NULL, bool unselect_others=true)
wxString GetItemText(const wxTreeItemId &item, int column) const
int GetColumnCount() const
void ExpandAll(const wxTreeItemId &item)
wxColour GetItemTextColour(const wxTreeItemId &item) const
void ScrollTo(const wxTreeItemId &item)
void EnsureVisible(const wxTreeItemId &item)
void SetDragItem(const wxTreeItemId &item=(wxTreeItemId *) NULL)
void OnKillFocus(wxFocusEvent &event)
void RefreshSelectedUnder(wxTreeListItem *item)
wxTreeListItem * m_editItem
wxBrush * m_hilightUnfocusedBrush
void OnChar(wxKeyEvent &event)
void AssignStateImageList(wxImageList *imageList)
void RefreshLine(wxTreeListItem *item)
void SetItemImage(const wxTreeItemId &item, int image, wxTreeItemIcon which=wxTreeItemIcon_Normal)
void CalculateLineHeight()
wxTreeItemId PrependItem(const wxTreeItemId &parent, const wxString &text, int image=-1, int selectedImage=-1, wxTreeItemData *data=NULL)
void OnRenameAccept(bool isCancelled)
wxTreeItemId GetPrevVisible(const wxTreeItemId &item, bool fullRow, bool within) const
wxTreeItemId GetFirstExpandedItem() const
void SetLineSpacing(unsigned int spacing)
void SetItemFont(const wxTreeItemId &item, const wxFont &font)
wxTreeItemId GetItemParent(const wxTreeItemId &item) const
bool HasButtons(void) const
wxTreeItemId GetLastVisible(bool fullRow, bool within) const
bool IsSelected(const wxTreeItemId &item) const
wxTreeListMainWindow * m_owner
wxTreeListRenameTimer(wxTreeListMainWindow *owner)
static const int RENAME_TIMER_TICKS
IMPLEMENT_DYNAMIC_CLASS(wxTreeListHeaderWindow, wxWindow)
static const int HEADER_OFFSET_Y
WX_DEFINE_ARRAY_PTR(wxTreeListItem *, wxArrayTreeListItems)
static const int EXTRA_WIDTH
static const int HEADER_OFFSET_X
const int wxTL_MODE_NAV_LEVEL
WX_DECLARE_HASH_MAP(int, wxTreeListItemCellAttr *, wxIntegerHash, wxIntegerEqual, wxTreeListItemCellAttrHash)
static const int BTNHEIGHT
static int LINKAGEMODE tree_ctrl_compare_func(wxTreeListItem **item1, wxTreeListItem **item2)
static wxTreeListMainWindow * s_treeBeingSorted
const int wxTREE_HITTEST_ONITEMCOLUMN
const int wxTL_MODE_NAV_EXPANDED
static const int FIND_TIMER_TICKS
static const int LINEHEIGHT
const int wxTL_MODE_FIND_PARTIAL
static const int DRAG_TIMER_TICKS
const int wxTL_MODE_NAV_VISIBLE
WX_DEFINE_OBJARRAY(wxArrayTreeListColumnInfo)
WX_DECLARE_OBJARRAY(wxTreeListColumnInfo, wxArrayTreeListColumnInfo)
static const int NO_IMAGE
static const int BTNWIDTH
static wxTreeListColumnInfo wxInvalidTreeListColumnInfo
static const int EXTRA_HEIGHT
static const int LINEATROOT
const int wxTL_MODE_FIND_NOCASE
const wxChar * wxTreeListCtrlNameStr
static const int MININDENT
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.
#define wxTR_COLUMN_LINES