- wxMenu(Bar)::Insert() and Remove() functions for dynamic menu menagament
- wxToolBar supports arbitrary controls (not only buttons) and can be
dynamically changed (Delete/Insert functions)
-- wxListCtrl allows setting colour/fonts for individual items
+- wxTreeCtrl and wxListCtrl allow setting colour/fonts for individual items
+- "file open" dialog allows selecting multiple files at once (contributed by
+ John Norris)
- wxDC::DrawRotatedText() (contributed by Hans-Joachim Baader, limited to
+/-90 degrees for now - contributions to improve it are welcome!)
- wxTreeCtrl::IsVisible() bug fixed (thanks to Gary Chessun)
- tooltips work with wxRadioBox
+- returning FALSE from OnPrintPage() aborts printing
wxGTK:
Sets the normal image list.
+\membersection{wxTreeCtrl::SetItemBackgroundColour}\label{wxtreectrlsetitembackgroundcolour}
+
+\func{void}{SetItemBackgroundColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
+
+Sets the colour of the items background.
+
\membersection{wxTreeCtrl::SetItemBold}\label{wxtreectrlsetitembold}
\func{void}{SetItemBold}{\param{const wxTreeItemId\& }{item}, \param{bool}{ bold = TRUE}}
\end{twocollist}}
}
+\membersection{wxTreeCtrl::SetItemFont}\label{wxtreectrlsetitemfont}
+
+\func{void}{SetItemFont}{\param{const wxTreeItemId\&}{ item}, \param{const wxFont\& }{font}}
+
+Sets the items font. All items in the tree should have the same height to avoid
+text clipping, so the fonts height should be the same for all of them,
+although font attributes may vary.
+
+\wxheading{See also}
+
+\helpref{SetItemBold}{wxtreectrlsetitembold}
+
\membersection{wxTreeCtrl::SetItemHasChildren}\label{wxtreectrlsetitemhaschildren}
\func{void}{SetItemHasChildren}{\param{const wxTreeItemId\&}{ item}, \param{bool }{hasChildren = TRUE}}
Sets the item label.
+\membersection{wxTreeCtrl::SetItemTextColour}\label{wxtreectrlsetitemtextcolour}
+
+\func{void}{SetItemTextColour}{\param{const wxTreeItemId\&}{ item}, \param{const wxColour\& }{col}}
+
+Sets the colour of the items text.
+
\membersection{wxTreeCtrl::SetStateImageList}\label{wxtreectrlsetstateimagelist}
\func{void}{SetStateImageList}{\param{wxImageList*}{ imageList}}
#pragma interface "treectrl.h"
#endif
-#ifdef __WXMSW__
-WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr;
-#else
-#define wxTreeCtrlNameStr "wxTreeCtrl"
-#endif
-
#include "wx/defs.h"
#include "wx/string.h"
#include "wx/object.h"
#include "wx/dynarray.h"
#include "wx/timer.h"
-//those defines should only be done in generic/treectrl.h,
-//because wxMSW doesn't allow mutiple selection
-
-#ifndef wxTR_SINGLE
-#define wxTR_SINGLE 0x0000
-#define wxTR_MULTIPLE 0x0020
-#define wxTR_EXTENDED 0x0040
-#define wxTR_HAS_VARIABLE_ROW_HIGHT 0x0080
-#endif
-
-// -----------------------------------------------------------------------------
-// constants
-// -----------------------------------------------------------------------------
-
-// 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 ident associated with an item.
-static const int wxTREE_HITTEST_ONITEMIDENT = 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;
-
// -----------------------------------------------------------------------------
// forward declaration
// -----------------------------------------------------------------------------
bool *accept, wxString *res, wxTreeCtrl *owner,
const wxString &value = wxEmptyString,
const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize,
+ int style = 0,
#if wxUSE_VALIDATORS
- int style = 0, const wxValidator& validator = wxDefaultValidator,
+ const wxValidator& validator = wxDefaultValidator,
#endif
const wxString &name = wxTextCtrlNameStr );
void OnChar( wxKeyEvent &event );
// the item will be shown in bold
void SetItemBold(const wxTreeItemId& item, bool bold = TRUE);
+ // set the items text colour
+ void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
+
+ // set the items background colour
+ void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col);
+
+ // set the items font (should be of the same height for all items)
+ void SetItemFont(const wxTreeItemId& item, const wxFont& font);
+
// item status inquiries
// ---------------------
// they're equivalent
class wxTreeItemData;
-// ----------------------------------------------------------------------------
-// constants
-// ----------------------------------------------------------------------------
-
-// values for the `flags' parameter of wxTreeCtrl::HitTest() which determine
-// where exactly the specified point is situated:
- // above the client area.
-static const int wxTREE_HITTEST_ABOVE = 0x0001;
- // below the client area.
-static const int wxTREE_HITTEST_BELOW = 0x0002;
- // in the client area but below the last item.
-static const int wxTREE_HITTEST_NOWHERE = 0x0004;
- // on the button associated with an item.
-static const int wxTREE_HITTEST_ONITEMBUTTON = 0x0010;
- // on the bitmap associated with an item.
-static const int wxTREE_HITTEST_ONITEMICON = 0x0020;
- // in the indentation associated with an item.
-static const int wxTREE_HITTEST_ONITEMINDENT = 0x0040;
- // on the label (string) associated with an item.
-static const int wxTREE_HITTEST_ONITEMLABEL = 0x0080;
- // in the area to the right of an item.
-static const int wxTREE_HITTEST_ONITEMRIGHT = 0x0100;
- // on the state icon for a tree view item that is in a user-defined state.
-static const int wxTREE_HITTEST_ONITEMSTATEICON = 0x0200;
- // to the right of the client area.
-static const int wxTREE_HITTEST_TOLEFT = 0x0400;
- // to the left of the client area.
-static const int wxTREE_HITTEST_TORIGHT = 0x0800;
- // anywhere on the item
-static const int wxTREE_HITTEST_ONITEM = wxTREE_HITTEST_ONITEMICON |
- wxTREE_HITTEST_ONITEMLABEL |
- wxTREE_HITTEST_ONITEMSTATEICON;
-
// NB: all the following flags are for compatbility only and will be removed in the
// next versions
// the item will be shown with a drop highlight
void SetItemDropHighlight(const wxTreeItemId& item, bool highlight = TRUE);
+ // set the items text colour
+ void SetItemTextColour(const wxTreeItemId& item, const wxColour& col);
+
+ // set the items background colour
+ void SetItemBackgroundColour(const wxTreeItemId& item, const wxColour& col);
+
+ // set the items font (should be of the same height for all items)
+ void SetItemFont(const wxTreeItemId& item, const wxFont& font);
+
// item status inquiries
// ---------------------
wxTreeItemIcon_Max
};
+
+// 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 ident associated with an item.
+static const int wxTREE_HITTEST_ONITEMIDENT = 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;
+
// tree ctrl default name
-#ifdef __WXMSW__
- WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr;
-#else
- #define wxTreeCtrlNameStr "wxTreeCtrl"
-#endif
+WXDLLEXPORT_DATA(extern const char*) wxTreeCtrlNameStr;
+
+// ----------------------------------------------------------------------------
+// wxTreeItemAttr: a structure containing the visual attributes of an item
+// ----------------------------------------------------------------------------
+
+class WXDLLEXPORT wxTreeItemAttr
+{
+public:
+ // ctors
+ wxTreeItemAttr() { }
+ wxTreeItemAttr(const wxColour& colText,
+ const wxColour& colBack,
+ const wxFont& font)
+ : m_colText(colText), m_colBack(colBack), m_font(font) { }
+
+ // setters
+ void SetTextColour(const wxColour& colText) { m_colText = colText; }
+ void SetBackgroundColour(const wxColour& colBack) { m_colBack = colBack; }
+ void SetFont(const wxFont& font) { m_font = font; }
+
+ // accessors
+ bool HasTextColour() const { return m_colText.Ok(); }
+ bool HasBackgroundColour() const { return m_colBack.Ok(); }
+ bool HasFont() const { return m_font.Ok(); }
+
+ const wxColour& GetTextColour() const { return m_colText; }
+ const wxColour& GetBackgroundColour() const { return m_colBack; }
+ const wxFont& GetFont() const { return m_font; }
+
+private:
+ wxColour m_colText,
+ m_colBack;
+ wxFont m_font;
+};
// ----------------------------------------------------------------------------
// include the platform-dependent wxTreeCtrl class
SetItemImage(rootId, TreeCtrlIcon_FolderOpened, wxTreeItemIcon_Expanded);
AddItemsRecursively(rootId, numChildren, depth, 0);
+
+ // set some colours/fonts for testing
+ SetItemFont(rootId, *wxITALIC_FONT);
+
+ long cookie;
+ wxTreeItemId id = GetFirstChild(rootId, cookie);
+ SetItemTextColour(id, *wxBLUE);
+
+ id = GetNextChild(rootId, cookie);
+ id = GetNextChild(rootId, cookie);
+ SetItemTextColour(id, *wxRED);
+ SetItemBackgroundColour(id, *wxLIGHT_GREY);
}
void MyTreeCtrl::GetItemsRecursively(const wxTreeItemId& idParent, long cookie)
/* Define if you have strtok_r function. */
#undef HAVE_STRTOK_R
+/* Define if you have thr_setconcurrency function */
+#undef HaVE_THR_SETCONCURRENCY
+
/* Define if you have the uname function. */
#undef HAVE_UNAME
class WXDLLEXPORT wxGenericTreeItem
{
public:
- // ctors & dtor
- wxGenericTreeItem() { m_data = NULL; }
- wxGenericTreeItem( wxGenericTreeItem *parent,
- const wxString& text,
- wxDC& dc,
- int image, int selImage,
- wxTreeItemData *data );
+ // ctors & dtor
+ wxGenericTreeItem() { m_data = NULL; }
+ wxGenericTreeItem( wxGenericTreeItem *parent,
+ const wxString& text,
+ wxDC& dc,
+ int image, int selImage,
+ wxTreeItemData *data );
- ~wxGenericTreeItem();
+ ~wxGenericTreeItem();
- // trivial accessors
- wxArrayGenericTreeItems& GetChildren() { return m_children; }
+ // trivial accessors
+ wxArrayGenericTreeItems& GetChildren() { return m_children; }
- const wxString& GetText() const { return m_text; }
- int GetImage(wxTreeItemIcon which = wxTreeItemIcon_Normal) const
+ const wxString& GetText() const { return m_text; }
+ int GetImage(wxTreeItemIcon which = wxTreeItemIcon_Normal) const
{ return m_images[which]; }
- wxTreeItemData *GetData() const { return m_data; }
+ wxTreeItemData *GetData() const { return m_data; }
- // returns the current image for the item (depending on its
- // selected/expanded/whatever state)
- int GetCurrentImage() const;
+ // returns the current image for the item (depending on its
+ // selected/expanded/whatever state)
+ int GetCurrentImage() const;
- void SetText( const wxString &text );
- void SetImage(int image, wxTreeItemIcon which) { m_images[which] = image; }
- void SetData(wxTreeItemData *data) { m_data = data; }
+ void SetText( const wxString &text );
+ void SetImage(int image, wxTreeItemIcon which) { m_images[which] = image; }
+ void SetData(wxTreeItemData *data) { m_data = data; }
- void SetHasPlus(bool has = TRUE) { m_hasPlus = has; }
+ void SetHasPlus(bool has = TRUE) { m_hasPlus = has; }
- void SetBold(bool bold) { m_isBold = bold; }
+ void SetBold(bool bold) { m_isBold = bold; }
- int GetX() const { return m_x; }
- int GetY() const { return m_y; }
+ int GetX() const { return m_x; }
+ int GetY() const { return m_y; }
- void SetX(int x) { m_x = x; }
- void SetY(int y) { m_y = y; }
+ void SetX(int x) { m_x = x; }
+ void SetY(int y) { m_y = y; }
- int GetHeight() const { return m_height; }
- int GetWidth() const { return m_width; }
+ int GetHeight() const { return m_height; }
+ int GetWidth() const { return m_width; }
- void SetHeight(int h) { m_height = h; }
- void SetWidth(int w) { m_width = w; }
+ void SetHeight(int h) { m_height = h; }
+ void SetWidth(int w) { m_width = w; }
- wxGenericTreeItem *GetParent() const { return m_parent; }
+ wxGenericTreeItem *GetParent() const { return m_parent; }
- // operations
- // deletes all children notifying the treectrl about it if !NULL pointer
- // given
- void DeleteChildren(wxTreeCtrl *tree = NULL);
- // FIXME don't know what is it for
- void Reset();
+ // operations
+ // deletes all children notifying the treectrl about it if !NULL
+ // pointer given
+ void DeleteChildren(wxTreeCtrl *tree = NULL);
+ // FIXME don't know what is it for
+ void Reset();
- // get count of all children (and grand children if 'recursively')
- size_t GetChildrenCount(bool recursively = TRUE) const;
+ // get count of all children (and grand children if 'recursively')
+ size_t GetChildrenCount(bool recursively = TRUE) const;
- void Insert(wxGenericTreeItem *child, size_t index)
+ void Insert(wxGenericTreeItem *child, size_t index)
{ m_children.Insert(child, index); }
- void SetCross( int x, int y );
- void GetSize( int &x, int &y, const wxTreeCtrl* );
+ void SetCross( int x, int y );
+ void GetSize( int &x, int &y, const wxTreeCtrl* );
- // return the item at given position (or NULL if no item), onButton is TRUE
- // if the point belongs to the item's button, otherwise it lies on the
- // button's label
- wxGenericTreeItem *HitTest( const wxPoint& point, const wxTreeCtrl *, int &flags);
+ // return the item at given position (or NULL if no item), onButton is
+ // TRUE if the point belongs to the item's button, otherwise it lies
+ // on the button's label
+ wxGenericTreeItem *HitTest( const wxPoint& point, const wxTreeCtrl *, int &flags);
- void Expand() { m_isCollapsed = FALSE; }
- void Collapse() { m_isCollapsed = TRUE; }
+ void Expand() { m_isCollapsed = FALSE; }
+ void Collapse() { m_isCollapsed = TRUE; }
- void SetHilight( bool set = TRUE ) { m_hasHilight = set; }
+ void SetHilight( bool set = TRUE ) { m_hasHilight = set; }
- // status inquiries
- bool HasChildren() const { return !m_children.IsEmpty(); }
- bool IsSelected() const { return m_hasHilight; }
- bool IsExpanded() const { return !m_isCollapsed; }
- bool HasPlus() const { return m_hasPlus || HasChildren(); }
- bool IsBold() const { return m_isBold; }
+ // status inquiries
+ bool HasChildren() const { return !m_children.IsEmpty(); }
+ bool IsSelected() const { return m_hasHilight; }
+ bool IsExpanded() const { return !m_isCollapsed; }
+ bool HasPlus() const { return m_hasPlus || HasChildren(); }
+ bool IsBold() const { return m_isBold; }
+
+ // attributes
+ // get them - may be NULL
+ wxTreeItemAttr *GetAttributes() const { return m_attr; }
+ // get them ensuring that the pointer is not NULL
+ wxTreeItemAttr& Attr()
+ {
+ if ( !m_attr )
+ m_attr = new wxTreeItemAttr;
+
+ return *m_attr;
+ }
private:
- wxString m_text;
-
- // tree ctrl images for the normal, selected, expanded and expanded+selected
- // states
- int m_images[wxTreeItemIcon_Max];
-
- wxTreeItemData *m_data;
-
- // use bitfields to save size
- int m_isCollapsed :1;
- int m_hasHilight :1; // same as focused
- int m_hasPlus :1; // used for item which doesn't have
- // children but still has a [+] button
- int m_isBold :1; // render the label in bold font
-
- int m_x, m_y;
- long m_height, m_width;
- int m_xCross, m_yCross;
- int m_level;
- wxArrayGenericTreeItems m_children;
- wxGenericTreeItem *m_parent;
+ wxString m_text;
+
+ // tree ctrl images for the normal, selected, expanded and
+ // expanded+selected states
+ int m_images[wxTreeItemIcon_Max];
+
+ wxTreeItemData *m_data;
+
+ // use bitfields to save size
+ int m_isCollapsed :1;
+ int m_hasHilight :1; // same as focused
+ int m_hasPlus :1; // used for item which doesn't have
+ // children but has a [+] button
+ int m_isBold :1; // render the label in bold font
+
+ int m_x, m_y;
+ long m_height, m_width;
+ int m_xCross, m_yCross;
+ int m_level;
+
+ wxArrayGenericTreeItems m_children;
+ wxGenericTreeItem *m_parent;
+
+ wxTreeItemAttr *m_attr;
};
// =============================================================================
m_parent = parent;
+ m_attr = (wxTreeItemAttr *)NULL;
+
dc.GetTextExtent( m_text, &m_width, &m_height );
// TODO : Add the width of the image
// PB : We don't know which image is shown (image, selImage)
{
delete m_data;
+ delete m_attr;
+
wxASSERT_MSG( m_children.IsEmpty(),
wxT("please call DeleteChildren() before deleting the item") );
}
void wxTreeCtrl::SetItemBold(const wxTreeItemId& item, bool bold)
{
- wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
+ wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
- // avoid redrawing the tree if no real change
- wxGenericTreeItem *pItem = item.m_pItem;
- if ( pItem->IsBold() != bold )
- {
- pItem->SetBold(bold);
+ // avoid redrawing the tree if no real change
+ wxGenericTreeItem *pItem = item.m_pItem;
+ if ( pItem->IsBold() != bold )
+ {
+ pItem->SetBold(bold);
+ RefreshLine(pItem);
+ }
+}
+
+void wxTreeCtrl::SetItemTextColour(const wxTreeItemId& item,
+ const wxColour& col)
+{
+ wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
+
+ wxGenericTreeItem *pItem = item.m_pItem;
+ pItem->Attr().SetTextColour(col);
+ RefreshLine(pItem);
+}
+
+void wxTreeCtrl::SetItemBackgroundColour(const wxTreeItemId& item,
+ const wxColour& col)
+{
+ wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
+
+ wxGenericTreeItem *pItem = item.m_pItem;
+ pItem->Attr().SetBackgroundColour(col);
+ RefreshLine(pItem);
+}
+
+void wxTreeCtrl::SetItemFont(const wxTreeItemId& item, const wxFont& font)
+{
+ wxCHECK_RET( item.IsOk(), wxT("invalid tree item") );
+
+ wxGenericTreeItem *pItem = item.m_pItem;
+ pItem->Attr().SetFont(font);
RefreshLine(pItem);
- }
}
// -----------------------------------------------------------------------------
void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
{
- if (item->IsBold())
+ wxTreeItemAttr *attr = item->GetAttributes();
+ if ( attr && attr->HasFont() )
+ dc.SetFont(attr->GetFont());
+ else if (item->IsBold())
dc.SetFont(m_boldFont);
long text_w = 0;
dc.DestroyClippingRegion();
}
- dc.SetBackgroundMode(wxTRANSPARENT);
+ bool hasBgCol = attr && attr->HasBackgroundColour();
+ dc.SetBackgroundMode(hasBgCol ? wxSOLID : wxTRANSPARENT);
+ if ( hasBgCol )
+ dc.SetTextBackground(attr->GetBackgroundColour());
dc.DrawText( item->GetText(), image_w + item->GetX(), item->GetY()
+ ((total_h > text_h) ? (total_h - text_h)/2 : 0));
dc.SetPen( m_dottedPen );
}
- if (item->IsSelected())
- {
- dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
+ wxPen *pen = wxTRANSPARENT_PEN;
+ wxBrush *brush; // FIXME is this really needed?
+ wxColour colText;
- dc.SetBrush( *m_hilightBrush );
+ if ( item->IsSelected() )
+ {
+ colText = wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT );
- if (m_hasFocus)
- dc.SetPen( *wxBLACK_PEN );
- else
- dc.SetPen( *wxTRANSPARENT_PEN );
+ brush = m_hilightBrush;
- PaintItem(item, dc);
+ if ( m_hasFocus )
+ pen = wxBLACK_PEN;
- dc.SetPen( m_dottedPen );
- dc.SetTextForeground( *wxBLACK );
- dc.SetBrush( *wxWHITE_BRUSH );
}
else
{
- dc.SetBrush( *wxWHITE_BRUSH );
- dc.SetPen( *wxTRANSPARENT_PEN );
-
- PaintItem(item, dc);
+ wxTreeItemAttr *attr = item->GetAttributes();
+ if ( attr && attr->HasTextColour() )
+ colText = attr->GetTextColour();
+ else
+ colText = *wxBLACK;
- dc.SetPen( m_dottedPen );
+ brush = wxWHITE_BRUSH;
}
+
+ // prepare to draw
+ dc.SetTextForeground(colText);
+ dc.SetPen(*pen);
+ dc.SetBrush(*brush);
+
+ // draw
+ PaintItem(item, dc);
+
+ // restore DC objects
+ dc.SetBrush( *wxWHITE_BRUSH );
+ dc.SetPen( m_dottedPen );
+ dc.SetTextForeground( *wxBLACK );
}
y = oldY+GetLineHeight(item);
if (item->IsExpanded())
{
oldY+=GetLineHeight(item)/2;
- int semiOldY=y; // (=y) for stupid compilator
+ int semiOldY=0;
wxArrayGenericTreeItems& children = item->GetChildren();
size_t n, count = children.Count();
// delete all its children for example) - don't draw the vertical line
// in this case
if (count > 0)
- {
+ {
semiOldY+=GetLineHeight(children[--n])/2;
dc.DrawLine( horizX+m_indent, oldY+5, horizX+m_indent, semiOldY );
- }
+ }
}
}
const wxChar *wxFatalErrorStr = wxT("wxWindows Fatal Error");
const wxChar *wxDirDialogNameStr = wxT("wxDirCtrl");
const wxChar *wxDirDialogDefaultFolderStr = wxT("/");
+const wxChar *wxTreeCtrlNameStr = wxT("wxTreeCtrl");
/* See wx/utils.h */
const wxChar *wxFloatToStringStr = wxT("%.2f");
const wxChar *wxFatalErrorStr = wxT("wxWindows Fatal Error");
const wxChar *wxDirDialogNameStr = wxT("wxDirCtrl");
const wxChar *wxDirDialogDefaultFolderStr = wxT("/");
+const wxChar *wxTreeCtrlNameStr = wxT("wxTreeCtrl");
/* See wx/utils.h */
const wxChar *wxFloatToStringStr = wxT("%.2f");