fixed compilation and added support for all 4 images (as a side effect) to the
generic tree control git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
37f6a9770c
commit
8dc9904630
@ -271,7 +271,7 @@ public:
|
||||
void SetItemText(const wxTreeItemId& item, const wxString& text);
|
||||
// get one of the images associated with the item (normal by default)
|
||||
void SetItemImage(const wxTreeItemId& item, int image,
|
||||
wxTreeItemIcon which = wxTreeItemIcon_Normal) const;
|
||||
wxTreeItemIcon which = wxTreeItemIcon_Normal);
|
||||
// associate some data with the item
|
||||
void SetItemData(const wxTreeItemId& item, wxTreeItemData *data);
|
||||
|
||||
|
@ -1,45 +1,42 @@
|
||||
/* XPM */
|
||||
static char *icon2_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 6 1",
|
||||
" 32 32 3 1",
|
||||
/* colors */
|
||||
". c #b2c0dc",
|
||||
"# c #000000",
|
||||
"a c #c0c0c0",
|
||||
"b c #808080",
|
||||
"c c #ffff00",
|
||||
"d c #ffffff",
|
||||
". c #000000",
|
||||
"# c #ff0000",
|
||||
"a c #ffffff",
|
||||
/* pixels */
|
||||
"................................",
|
||||
"................................",
|
||||
"......bbbbbbbbbb................",
|
||||
"......bbbbbbbbbb................",
|
||||
"....bbccaaccaaccbb..............",
|
||||
"....bbccaaccaaccbb..............",
|
||||
"..bbccaaccaaccaaccbbbbbbbbbbbb..",
|
||||
"..bbccaaccaaccaaccbbbbbbbbbbbb..",
|
||||
"..bbddddddddddddddddddddddddbb##",
|
||||
"..bbddddddddddddddddddddddddbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbbbbbbbbbbbbbbbbbbbbbbbbbbb##",
|
||||
"..bbbbbbbbbbbbbbbbbbbbbbbbbbbb##",
|
||||
"....############################",
|
||||
"....############################",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................"
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaa................aaaaaaaaaaaa",
|
||||
"aaaa................aaaaaaaaaaaa",
|
||||
"aaaa..############....aaaaaaaaaa",
|
||||
"aaaa..############....aaaaaaaaaa",
|
||||
"aaaa..##..##..####..aa..aaaaaaaa",
|
||||
"aaaa..##..##..####..aa..aaaaaaaa",
|
||||
"aaaa..############........aaaaaa",
|
||||
"aaaa..############........aaaaaa",
|
||||
"aaaa..##..##..##########..aaaaaa",
|
||||
"aaaa..##..##..##########..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##..##..##..##..##..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa..##################..aaaaaa",
|
||||
"aaaa......................aaaaaa",
|
||||
"aaaa......................aaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
};
|
||||
|
@ -1,45 +1,44 @@
|
||||
/* XPM */
|
||||
static char *icon2_xpm[] = {
|
||||
static char *icon3_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 6 1",
|
||||
" 32 32 5 1",
|
||||
/* colors */
|
||||
". c #b2c0dc",
|
||||
"# c #000000",
|
||||
"a c #c0c0c0",
|
||||
"b c #808080",
|
||||
"c c #ffff00",
|
||||
"d c #ffffff",
|
||||
". c #000000",
|
||||
"# c #c0c0c0",
|
||||
"a c #808080",
|
||||
"b c #ffff00",
|
||||
"c c #ffffff",
|
||||
/* pixels */
|
||||
"................................",
|
||||
"................................",
|
||||
"......bbbbbbbbbb................",
|
||||
"......bbbbbbbbbb................",
|
||||
"....bbccaaccaaccbb..............",
|
||||
"....bbccaaccaaccbb..............",
|
||||
"..bbccaaccaaccaaccbbbbbbbbbbbb..",
|
||||
"..bbccaaccaaccaaccbbbbbbbbbbbb..",
|
||||
"..bbddddddddddddddddddddddddbb##",
|
||||
"..bbddddddddddddddddddddddddbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddaaccaaccaaccaaccaaccaabb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbddccaaccaaccaaccaaccaaccbb##",
|
||||
"..bbbbbbbbbbbbbbbbbbbbbbbbbbbb##",
|
||||
"..bbbbbbbbbbbbbbbbbbbbbbbbbbbb##",
|
||||
"....############################",
|
||||
"....############################",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................",
|
||||
"................................"
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"ccccccaaaaaaaaaacccccccccccccccc",
|
||||
"ccccccaaaaaaaaaacccccccccccccccc",
|
||||
"ccccaabb##bb##bbaacccccccccccccc",
|
||||
"ccccaabb##bb##bbaacccccccccccccc",
|
||||
"ccaabb##bb##bb##bbaaaaaaaaaaaacc",
|
||||
"ccaabb##bb##bb##bbaaaaaaaaaaaacc",
|
||||
"ccaaccccccccccccccccccccccccaa..",
|
||||
"ccaaccccccccccccccccccccccccaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaaaaaaaaaaaaaaaaaaaaaaaaaaa..",
|
||||
"ccaaaaaaaaaaaaaaaaaaaaaaaaaaaa..",
|
||||
"cccc............................",
|
||||
"cccc............................",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc"
|
||||
};
|
||||
|
44
samples/treectrl/icon4.xpm
Normal file
44
samples/treectrl/icon4.xpm
Normal file
@ -0,0 +1,44 @@
|
||||
/* XPM */
|
||||
static char *icon4_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 5 1",
|
||||
/* colors */
|
||||
". c #000000",
|
||||
"# c #c0c0c0",
|
||||
"a c #808080",
|
||||
"b c #ff0000",
|
||||
"c c #ffffff",
|
||||
/* pixels */
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"ccccccaaaaaaaaaacccccccccccccccc",
|
||||
"ccccccaaaaaaaaaacccccccccccccccc",
|
||||
"ccccaabb##bb##bbaacccccccccccccc",
|
||||
"ccccaabb##bb##bbaacccccccccccccc",
|
||||
"ccaabb##bb##bb##bbaaaaaaaaaaaacc",
|
||||
"ccaabb##bb##bb##bbaaaaaaaaaaaacc",
|
||||
"ccaaccccccccccccccccccccccccaa..",
|
||||
"ccaaccccccccccccccccccccccccaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaacc##bb##bb##bb##bb##bb##aa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaccbb##bb##bb##bb##bb##bbaa..",
|
||||
"ccaaaaaaaaaaaaaaaaaaaaaaaaaaaa..",
|
||||
"ccaaaaaaaaaaaaaaaaaaaaaaaaaaaa..",
|
||||
"cccc............................",
|
||||
"cccc............................",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc",
|
||||
"cccccccccccccccccccccccccccccccc"
|
||||
};
|
43
samples/treectrl/icon5.xpm
Normal file
43
samples/treectrl/icon5.xpm
Normal file
@ -0,0 +1,43 @@
|
||||
/* XPM */
|
||||
static char *icon5_xpm[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 4 1",
|
||||
/* colors */
|
||||
". c #000000",
|
||||
"# c #808000",
|
||||
"a c #ffffff",
|
||||
"b c #ffff00",
|
||||
/* pixels */
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aa..........aaaaaaaaaaaaaaaaaaaa",
|
||||
"aa..........aaaaaaaaaaaaaaaaaaaa",
|
||||
"aa..bbbbbb................aaaaaa",
|
||||
"aa..bbbbbb................aaaaaa",
|
||||
"aa..bbbbbbbbbbbbbbbbbbbb..aaaaaa",
|
||||
"aa..bbbbbbbbbbbbbbbbbbbb..aaaaaa",
|
||||
"aa..bbbbbbbbbbbbbbbbbbbb..aaaaaa",
|
||||
"aa..bbbbbbbbbbbbbbbbbbbb..aaaaaa",
|
||||
"aa..bbbb......................aa",
|
||||
"aa..bbbb......................aa",
|
||||
"aa..bbb.####################..aa",
|
||||
"aa..bbb.####################..aa",
|
||||
"aa..bb..####################.aaa",
|
||||
"aa..bb..####################.aaa",
|
||||
"aa..b.####################..aaaa",
|
||||
"aa..b.####################..aaaa",
|
||||
"aa....####################.aaaaa",
|
||||
"aa....####################.aaaaa",
|
||||
"aa..####################..aaaaaa",
|
||||
"aa..####################..aaaaaa",
|
||||
"aa......................aaaaaaaa",
|
||||
"aa......................aaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
|
||||
};
|
@ -34,10 +34,13 @@
|
||||
#include "math.h"
|
||||
|
||||
#ifdef __WXMSW__
|
||||
// comment out this line to test multiple selection even under MSW (where
|
||||
// it looks ugly - but works)
|
||||
#define NO_MULTIPLE_SELECTION
|
||||
#define NO_VARIABLE_HEIGHT
|
||||
#endif
|
||||
|
||||
#define NO_VARIABLE_HEIGHT
|
||||
|
||||
#include "treetest.h"
|
||||
|
||||
// under Windows the icons are in the .rc file
|
||||
@ -46,6 +49,7 @@
|
||||
#include "icon2.xpm"
|
||||
#include "icon3.xpm"
|
||||
#include "icon4.xpm"
|
||||
#include "icon5.xpm"
|
||||
#include "mondrian.xpm"
|
||||
#endif
|
||||
|
||||
|
@ -47,6 +47,12 @@ class WXDLLEXPORT wxGenericTreeItem;
|
||||
WX_DEFINE_ARRAY(wxGenericTreeItem *, wxArrayGenericTreeItems);
|
||||
WX_DEFINE_OBJARRAY(wxArrayTreeItemIds);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// constants
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
static const int NO_IMAGE = -1;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// private classes
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -69,13 +75,16 @@ public:
|
||||
wxArrayGenericTreeItems& GetChildren() { return m_children; }
|
||||
|
||||
const wxString& GetText() const { return m_text; }
|
||||
int GetImage() const { return m_image; }
|
||||
int GetSelectedImage() const { return m_selImage; }
|
||||
int GetImage(wxTreeItemIcon which = wxTreeItemIcon_Normal) const
|
||||
{ return m_images[which]; }
|
||||
wxTreeItemData *GetData() const { return m_data; }
|
||||
|
||||
// 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) { m_image = image; }
|
||||
void SetSelectedImage(int image) { m_selImage = image; }
|
||||
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; }
|
||||
@ -125,7 +134,7 @@ public:
|
||||
|
||||
// status inquiries
|
||||
bool HasChildren() const { return !m_children.IsEmpty(); }
|
||||
bool HasHilight() const { return m_hasHilight; }
|
||||
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; }
|
||||
@ -133,8 +142,9 @@ public:
|
||||
private:
|
||||
wxString m_text;
|
||||
|
||||
int m_image,
|
||||
m_selImage;
|
||||
// tree ctrl images for the normal, selected, expanded and expanded+selected
|
||||
// states
|
||||
int m_images[wxTreeItemIcon_Max];
|
||||
|
||||
wxTreeItemData *m_data;
|
||||
|
||||
@ -251,8 +261,11 @@ wxGenericTreeItem::wxGenericTreeItem(wxGenericTreeItem *parent,
|
||||
wxTreeItemData *data)
|
||||
: m_text(text)
|
||||
{
|
||||
m_image = image;
|
||||
m_selImage = selImage;
|
||||
m_images[wxTreeItemIcon_Normal] = image;
|
||||
m_images[wxTreeItemIcon_Selected] = selImage;
|
||||
m_images[wxTreeItemIcon_Expanded] = NO_IMAGE;
|
||||
m_images[wxTreeItemIcon_SelectedExpanded] = NO_IMAGE;
|
||||
|
||||
m_data = data;
|
||||
m_x = m_y = 0;
|
||||
m_xCross = m_yCross = 0;
|
||||
@ -307,8 +320,11 @@ void wxGenericTreeItem::SetText( const wxString &text )
|
||||
void wxGenericTreeItem::Reset()
|
||||
{
|
||||
m_text.Empty();
|
||||
m_image =
|
||||
m_selImage = -1;
|
||||
for ( int i = 0; i < wxTreeItemIcon_Max; i++ )
|
||||
{
|
||||
m_images[i] = NO_IMAGE;
|
||||
}
|
||||
|
||||
m_data = NULL;
|
||||
m_x = m_y =
|
||||
m_height = m_width = 0;
|
||||
@ -367,11 +383,12 @@ wxGenericTreeItem *wxGenericTreeItem::HitTest( const wxPoint& point,
|
||||
{
|
||||
if ((point.y > m_y) && (point.y < m_y + theTree->GetLineHeight(this)))
|
||||
{
|
||||
if (point.y<m_y+theTree->GetLineHeight(this)/2) flags|=wxTREE_HITTEST_ONITEMUPPERPART;
|
||||
else flags|=wxTREE_HITTEST_ONITEMLOWERPART;
|
||||
if (point.y<m_y+theTree->GetLineHeight(this)/2)
|
||||
flags |= wxTREE_HITTEST_ONITEMUPPERPART;
|
||||
else
|
||||
flags |= wxTREE_HITTEST_ONITEMLOWERPART;
|
||||
|
||||
// FIXME why +5?
|
||||
// Because that is the size of the plus sign, RR
|
||||
// 5 is the size of the plus sign
|
||||
if ((point.x > m_xCross-5) && (point.x < m_xCross+5) &&
|
||||
(point.y > m_yCross-5) && (point.y < m_yCross+5) &&
|
||||
(IsExpanded() || HasPlus()))
|
||||
@ -386,19 +403,21 @@ wxGenericTreeItem *wxGenericTreeItem::HitTest( const wxPoint& point,
|
||||
int image_h;
|
||||
|
||||
// assuming every image (normal and selected ) has the same size !
|
||||
if ((m_image!=-1) && theTree->m_imageListNormal)
|
||||
theTree->m_imageListNormal->GetSize(m_image, image_w, image_h);
|
||||
if ( (GetImage() != NO_IMAGE) && theTree->m_imageListNormal )
|
||||
theTree->m_imageListNormal->GetSize(GetImage(), image_w, image_h);
|
||||
|
||||
if ((image_w != -1) && (point.x <= m_x + image_w + 1))
|
||||
flags|=wxTREE_HITTEST_ONITEMICON;
|
||||
flags |= wxTREE_HITTEST_ONITEMICON;
|
||||
else
|
||||
flags|=wxTREE_HITTEST_ONITEMLABEL;
|
||||
flags |= wxTREE_HITTEST_ONITEMLABEL;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
if (point.x < m_x) flags|=wxTREE_HITTEST_ONITEMIDENT;
|
||||
if (point.x > m_x+m_width) flags|=wxTREE_HITTEST_ONITEMRIGHT;
|
||||
if (point.x < m_x)
|
||||
flags |= wxTREE_HITTEST_ONITEMIDENT;
|
||||
if (point.x > m_x+m_width)
|
||||
flags |= wxTREE_HITTEST_ONITEMRIGHT;
|
||||
|
||||
return this;
|
||||
}
|
||||
@ -420,6 +439,39 @@ wxGenericTreeItem *wxGenericTreeItem::HitTest( const wxPoint& point,
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int wxGenericTreeItem::GetCurrentImage() const
|
||||
{
|
||||
int image = NO_IMAGE;
|
||||
if ( IsExpanded() )
|
||||
{
|
||||
if ( IsSelected() )
|
||||
{
|
||||
image = GetImage(wxTreeItemIcon_SelectedExpanded);
|
||||
}
|
||||
|
||||
if ( image == NO_IMAGE )
|
||||
{
|
||||
// we usually fall back to the normal item, but try just the
|
||||
// expanded one (and not selected) first in this case
|
||||
image = GetImage(wxTreeItemIcon_Expanded);
|
||||
}
|
||||
}
|
||||
else // not expanded
|
||||
{
|
||||
if ( IsSelected() )
|
||||
image = GetImage(wxTreeItemIcon_Selected);
|
||||
}
|
||||
|
||||
// may be it doesn't have the specific image we want, try the default one
|
||||
// instead
|
||||
if ( image == NO_IMAGE )
|
||||
{
|
||||
image = GetImage();
|
||||
}
|
||||
|
||||
return image;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
// wxTreeCtrl implementation
|
||||
// -----------------------------------------------------------------------------
|
||||
@ -538,18 +590,12 @@ wxString wxTreeCtrl::GetItemText(const wxTreeItemId& item) const
|
||||
return item.m_pItem->GetText();
|
||||
}
|
||||
|
||||
int wxTreeCtrl::GetItemImage(const wxTreeItemId& item) const
|
||||
int wxTreeCtrl::GetItemImage(const wxTreeItemId& item,
|
||||
wxTreeItemIcon which) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), -1, _T("invalid tree item") );
|
||||
|
||||
return item.m_pItem->GetImage();
|
||||
}
|
||||
|
||||
int wxTreeCtrl::GetItemSelectedImage(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), -1, _T("invalid tree item") );
|
||||
|
||||
return item.m_pItem->GetSelectedImage();
|
||||
return item.m_pItem->GetImage(which);
|
||||
}
|
||||
|
||||
wxTreeItemData *wxTreeCtrl::GetItemData(const wxTreeItemId& item) const
|
||||
@ -570,26 +616,18 @@ void wxTreeCtrl::SetItemText(const wxTreeItemId& item, const wxString& text)
|
||||
RefreshLine(pItem);
|
||||
}
|
||||
|
||||
void wxTreeCtrl::SetItemImage(const wxTreeItemId& item, int image)
|
||||
void wxTreeCtrl::SetItemImage(const wxTreeItemId& item,
|
||||
int image,
|
||||
wxTreeItemIcon which)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), _T("invalid tree item") );
|
||||
wxCHECK_RET( item.IsOk(), _T("invalid tree item") );
|
||||
|
||||
wxClientDC dc(this);
|
||||
wxGenericTreeItem *pItem = item.m_pItem;
|
||||
pItem->SetImage(image);
|
||||
CalculateSize(pItem, dc);
|
||||
RefreshLine(pItem);
|
||||
}
|
||||
wxGenericTreeItem *pItem = item.m_pItem;
|
||||
pItem->SetImage(image, which);
|
||||
|
||||
void wxTreeCtrl::SetItemSelectedImage(const wxTreeItemId& item, int image)
|
||||
{
|
||||
wxCHECK_RET( item.IsOk(), _T("invalid tree item") );
|
||||
|
||||
wxClientDC dc(this);
|
||||
wxGenericTreeItem *pItem = item.m_pItem;
|
||||
pItem->SetSelectedImage(image);
|
||||
CalculateSize(pItem, dc);
|
||||
RefreshLine(pItem);
|
||||
wxClientDC dc(this);
|
||||
CalculateSize(pItem, dc);
|
||||
RefreshLine(pItem);
|
||||
}
|
||||
|
||||
void wxTreeCtrl::SetItemData(const wxTreeItemId& item, wxTreeItemData *data)
|
||||
@ -650,7 +688,7 @@ bool wxTreeCtrl::IsSelected(const wxTreeItemId& item) const
|
||||
{
|
||||
wxCHECK_MSG( item.IsOk(), FALSE, _T("invalid tree item") );
|
||||
|
||||
return item.m_pItem->HasHilight();
|
||||
return item.m_pItem->IsSelected();
|
||||
}
|
||||
|
||||
bool wxTreeCtrl::IsBold(const wxTreeItemId& item) const
|
||||
@ -1066,19 +1104,20 @@ void wxTreeCtrl::SelectItemRange(wxGenericTreeItem *item1, wxGenericTreeItem *it
|
||||
|
||||
// choice first' and 'last' between item1 and item2
|
||||
if (item1->GetY()<item2->GetY())
|
||||
{
|
||||
{
|
||||
first=item1;
|
||||
last=item2;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
first=item2;
|
||||
last=item1;
|
||||
}
|
||||
}
|
||||
|
||||
bool select=m_current->HasHilight();
|
||||
bool select = m_current->IsSelected();
|
||||
|
||||
if (TagAllChildrenUntilLast(first,last,select)) return;
|
||||
if ( TagAllChildrenUntilLast(first,last,select) )
|
||||
return;
|
||||
|
||||
TagNextChildren(first,last,select);
|
||||
}
|
||||
@ -1097,18 +1136,19 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& itemId,
|
||||
|
||||
// to keep going anyhow !!!
|
||||
if (is_single)
|
||||
{
|
||||
if (item->HasHilight()) return; // nothing to do
|
||||
unselect_others=TRUE;
|
||||
extended_select=FALSE;
|
||||
}
|
||||
else // check if selection will really change
|
||||
if (unselect_others && item->HasHilight())
|
||||
{
|
||||
// selection change if there is more than one item currently selected
|
||||
wxArrayTreeItemIds selected_items;
|
||||
if (GetSelections(selected_items)==1) return;
|
||||
}
|
||||
{
|
||||
if (item->IsSelected())
|
||||
return; // nothing to do
|
||||
unselect_others = TRUE;
|
||||
extended_select = FALSE;
|
||||
}
|
||||
else if ( unselect_others && item->IsSelected() )
|
||||
{
|
||||
// selection change if there is more than one item currently selected
|
||||
wxArrayTreeItemIds selected_items;
|
||||
if ( GetSelections(selected_items) == 1 )
|
||||
return;
|
||||
}
|
||||
|
||||
wxTreeEvent event( wxEVT_COMMAND_TREE_SEL_CHANGING, GetId() );
|
||||
event.m_item = item;
|
||||
@ -1139,7 +1179,7 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& itemId,
|
||||
|
||||
// Check if we need to toggle hilight (ctrl mode)
|
||||
if (!unselect_others)
|
||||
select=!item->HasHilight();
|
||||
select=!item->IsSelected();
|
||||
|
||||
m_current = m_key_current = item;
|
||||
m_current->SetHilight(select);
|
||||
@ -1153,7 +1193,7 @@ void wxTreeCtrl::SelectItem(const wxTreeItemId& itemId,
|
||||
void wxTreeCtrl::FillArray(wxGenericTreeItem *item,
|
||||
wxArrayTreeItemIds &array) const
|
||||
{
|
||||
if ( item->HasHilight() )
|
||||
if ( item->IsSelected() )
|
||||
array.Add(wxTreeItemId(item));
|
||||
|
||||
if ( item->HasChildren() )
|
||||
@ -1183,7 +1223,7 @@ void wxTreeCtrl::EnsureVisible(const wxTreeItemId& item)
|
||||
wxGenericTreeItem *parent = gitem->GetParent();
|
||||
while ( parent )
|
||||
{
|
||||
Expand(parent);
|
||||
Expand(parent);
|
||||
parent = parent->GetParent();
|
||||
}
|
||||
|
||||
@ -1205,7 +1245,7 @@ void wxTreeCtrl::ScrollTo(const wxTreeItemId &item)
|
||||
|
||||
// now scroll to the item
|
||||
int item_y = gitem->GetY();
|
||||
|
||||
|
||||
int start_x = 0;
|
||||
int start_y = 0;
|
||||
ViewStart( &start_x, &start_y );
|
||||
@ -1381,14 +1421,10 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
||||
|
||||
int image_h = 0;
|
||||
int image_w = 0;
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
int image = item->GetCurrentImage();
|
||||
if ( image != NO_IMAGE )
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetSelectedImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetImage(), image_w, image_h );
|
||||
m_imageListNormal->GetSize( image, image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
|
||||
@ -1396,19 +1432,10 @@ void wxTreeCtrl::PaintItem(wxGenericTreeItem *item, wxDC& dc)
|
||||
|
||||
dc.DrawRectangle( item->GetX()-2, item->GetY(), item->GetWidth()+2, total_h );
|
||||
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
if ( image != NO_IMAGE )
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, total_h );
|
||||
m_imageListNormal->Draw( item->GetSelectedImage(), dc,
|
||||
item->GetX(),
|
||||
item->GetY() +((total_h > image_h)?((total_h-image_h)/2):0),
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
dc.DestroyClippingRegion();
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
dc.SetClippingRegion( item->GetX(), item->GetY(), image_w-2, total_h );
|
||||
m_imageListNormal->Draw( item->GetImage(), dc,
|
||||
m_imageListNormal->Draw( image, dc,
|
||||
item->GetX(),
|
||||
item->GetY() +((total_h > image_h)?((total_h-image_h)/2):0),
|
||||
wxIMAGELIST_DRAW_TRANSPARENT );
|
||||
@ -1467,7 +1494,7 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxDC &dc, int level, int &
|
||||
dc.SetPen( m_dottedPen );
|
||||
}
|
||||
|
||||
if (item->HasHilight())
|
||||
if (item->IsSelected())
|
||||
{
|
||||
dc.SetTextForeground( wxSystemSettings::GetSystemColour( wxSYS_COLOUR_HIGHLIGHTTEXT ) );
|
||||
|
||||
@ -1818,7 +1845,7 @@ void wxTreeCtrl::Edit( const wxTreeItemId& item )
|
||||
GetEventHandler()->ProcessEvent( te );
|
||||
|
||||
if (!te.IsAllowed()) return;
|
||||
|
||||
|
||||
// We have to call this here because the label in
|
||||
// question might just have been added and no screen
|
||||
// update taken place.
|
||||
@ -1832,14 +1859,11 @@ void wxTreeCtrl::Edit( const wxTreeItemId& item )
|
||||
|
||||
int image_h = 0;
|
||||
int image_w = 0;
|
||||
if ((m_currentEdit->IsExpanded()) && (m_currentEdit->GetSelectedImage() != -1))
|
||||
|
||||
int image = m_currentEdit->GetCurrentImage();
|
||||
if ( image != NO_IMAGE )
|
||||
{
|
||||
m_imageListNormal->GetSize( m_currentEdit->GetSelectedImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
else if (m_currentEdit->GetImage() != -1)
|
||||
{
|
||||
m_imageListNormal->GetSize( m_currentEdit->GetImage(), image_w, image_h );
|
||||
m_imageListNormal->GetSize( image, image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
x += image_w;
|
||||
@ -1891,20 +1915,20 @@ void wxTreeCtrl::OnMouse( wxMouseEvent &event )
|
||||
if (event.Dragging())
|
||||
{
|
||||
if (m_dragCount == 0)
|
||||
m_dragStart = wxPoint(x,y);
|
||||
|
||||
m_dragStart = wxPoint(x,y);
|
||||
|
||||
m_dragCount++;
|
||||
|
||||
if (m_dragCount != 3) return;
|
||||
|
||||
int command = wxEVT_COMMAND_TREE_BEGIN_DRAG;
|
||||
if (event.RightIsDown()) command = wxEVT_COMMAND_TREE_BEGIN_RDRAG;
|
||||
|
||||
|
||||
if (m_dragCount != 3) return;
|
||||
|
||||
int command = wxEVT_COMMAND_TREE_BEGIN_DRAG;
|
||||
if (event.RightIsDown()) command = wxEVT_COMMAND_TREE_BEGIN_RDRAG;
|
||||
|
||||
wxTreeEvent nevent( command, GetId() );
|
||||
nevent.m_item = m_current;
|
||||
nevent.SetEventObject(this);
|
||||
GetEventHandler()->ProcessEvent(nevent);
|
||||
return;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1994,14 +2018,10 @@ void wxTreeCtrl::CalculateSize( wxGenericTreeItem *item, wxDC &dc )
|
||||
|
||||
int image_h = 0;
|
||||
int image_w = 0;
|
||||
if ((item->IsExpanded()) && (item->GetSelectedImage() != -1))
|
||||
int image = item->GetCurrentImage();
|
||||
if ( image != NO_IMAGE )
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetSelectedImage(), image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
else if (item->GetImage() != -1)
|
||||
{
|
||||
m_imageListNormal->GetSize( item->GetImage(), image_w, image_h );
|
||||
m_imageListNormal->GetSize( image, image_w, image_h );
|
||||
image_w += 4;
|
||||
}
|
||||
|
||||
@ -2055,7 +2075,7 @@ void wxTreeCtrl::CalculatePositions()
|
||||
//if(GetImageList() == NULL)
|
||||
// m_lineHeight = (int)(dc.GetCharHeight() + 4);
|
||||
|
||||
int y = 2;
|
||||
int y = 2;
|
||||
CalculateLevel( m_anchor, dc, 0, y ); // start recursion
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user