Added Set/GetItemState, GetNextItem.. to wxTreeCtrl

Fixed functions name mismatch SetSizeHint in window and frame
  Added support for non-european fonts and X extension using
   gtk_set_locale()
  Added compile fixes for FreeBSD and folks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
1998-09-01 14:29:21 +00:00
parent 30f82ea416
commit edaa81ae5d
9 changed files with 212 additions and 98 deletions

View File

@@ -294,6 +294,8 @@ public:
int GetItemImage(long item) const; int GetItemImage(long item) const;
long GetParent( long item ) const; long GetParent( long item ) const;
long GetRootItem() const; long GetRootItem() const;
long GetChild(long item) const;
long GetNextItem(long item, int code) const;
long GetSelection() const; long GetSelection() const;
bool SelectItem( long item ); bool SelectItem( long item );
bool ItemHasChildren( long item ) const; bool ItemHasChildren( long item ) const;
@@ -305,6 +307,9 @@ public:
void SetItemImage(long item, int image, int imageSel) const; void SetItemImage(long item, int image, int imageSel) const;
long HitTest( const wxPoint& point, int &flags ); long HitTest( const wxPoint& point, int &flags );
int GetItemState(long item, long stateMask) const;
bool SetItemState(long item, long state, long stateMask);
void AdjustMyScrollbars(); void AdjustMyScrollbars();
void PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y ); void PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y );
void OnPaint( const wxPaintEvent &event ); void OnPaint( const wxPaintEvent &event );

View File

@@ -69,7 +69,7 @@ public:
// set minimal/maxmimal size for the frame // set minimal/maxmimal size for the frame
virtual void SetSizeHints(int minW, int minH, virtual void SetSizeHints(int minW, int minH,
int maxW = -1, int maxH = -1, int maxW = -1, int maxH = -1,
int incW = -1 ); int incW = -1, int incH = -1 );
virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
const wxString& name = "statusBar"); const wxString& name = "statusBar");

View File

@@ -69,7 +69,7 @@ public:
// set minimal/maxmimal size for the frame // set minimal/maxmimal size for the frame
virtual void SetSizeHints(int minW, int minH, virtual void SetSizeHints(int minW, int minH,
int maxW = -1, int maxH = -1, int maxW = -1, int maxH = -1,
int incW = -1 ); int incW = -1, int incH = -1 );
virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0, virtual wxStatusBar* CreateStatusBar(int number=1, long style = wxST_SIZEGRIP, wxWindowID id = 0,
const wxString& name = "statusBar"); const wxString& name = "statusBar");

View File

@@ -39,7 +39,8 @@
#include <sys/timeb.h> #include <sys/timeb.h>
#endif #endif
#if defined(__linux__) || defined(__SVR4__) || defined(__SYSV__) || defined(__SGI__) || defined(__ALPHA__) || defined(__GNUWIN32__) #if defined(__linux__) || defined(__SVR4__) || defined(__SYSV__) || defined(__SGI__) || \
defined(__ALPHA__) || defined(__GNUWIN32__) || defined(__FreeBSD__) || defined(__NetBSD__)
#include <sys/time.h> #include <sys/time.h>
#endif #endif

View File

@@ -33,7 +33,7 @@ wxTreeItem::wxTreeItem()
m_selectedImage = -1; m_selectedImage = -1;
m_children = 0; m_children = 0;
m_data = 0; m_data = 0;
}; }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxTreeEvent // wxTreeEvent
@@ -46,7 +46,7 @@ wxTreeEvent::wxTreeEvent( wxEventType commandType, int id ) :
{ {
m_code = 0; m_code = 0;
m_oldItem = 0; m_oldItem = 0;
}; }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxGenericTreeItem // wxGenericTreeItem
@@ -59,7 +59,7 @@ wxGenericTreeItem::wxGenericTreeItem( wxGenericTreeItem *parent )
Reset(); Reset();
m_parent = parent; m_parent = parent;
m_hasHilight = FALSE; m_hasHilight = FALSE;
}; }
wxGenericTreeItem::wxGenericTreeItem( wxGenericTreeItem *parent, const wxTreeItem& item, wxDC *dc ) wxGenericTreeItem::wxGenericTreeItem( wxGenericTreeItem *parent, const wxTreeItem& item, wxDC *dc )
{ {
@@ -67,7 +67,7 @@ wxGenericTreeItem::wxGenericTreeItem( wxGenericTreeItem *parent, const wxTreeIte
SetItem( item, dc ); SetItem( item, dc );
m_parent = parent; m_parent = parent;
m_hasHilight = FALSE; m_hasHilight = FALSE;
}; }
void wxGenericTreeItem::SetItem( const wxTreeItem &item, wxDC *dc ) void wxGenericTreeItem::SetItem( const wxTreeItem &item, wxDC *dc )
{ {
@@ -90,7 +90,7 @@ void wxGenericTreeItem::SetItem( const wxTreeItem &item, wxDC *dc )
dc->GetTextExtent( m_text, &lw, &lh ); dc->GetTextExtent( m_text, &lw, &lh );
m_width = lw; m_width = lw;
m_height = lh; m_height = lh;
}; }
void wxGenericTreeItem::SetText( const wxString &text, wxDC *dc ) void wxGenericTreeItem::SetText( const wxString &text, wxDC *dc )
{ {
@@ -100,7 +100,7 @@ void wxGenericTreeItem::SetText( const wxString &text, wxDC *dc )
dc->GetTextExtent( m_text, &lw, &lh ); dc->GetTextExtent( m_text, &lw, &lh );
m_width = lw; m_width = lw;
m_height = lh; m_height = lh;
}; }
void wxGenericTreeItem::Reset() void wxGenericTreeItem::Reset()
{ {
@@ -122,7 +122,7 @@ void wxGenericTreeItem::Reset()
m_children.DeleteContents( TRUE ); m_children.DeleteContents( TRUE );
m_isCollapsed = TRUE; m_isCollapsed = TRUE;
m_parent = (wxGenericTreeItem *) NULL; m_parent = (wxGenericTreeItem *) NULL;
}; }
void wxGenericTreeItem::GetItem( wxTreeItem &item ) const void wxGenericTreeItem::GetItem( wxTreeItem &item ) const
{ {
@@ -138,12 +138,12 @@ void wxGenericTreeItem::GetItem( wxTreeItem &item ) const
item.m_children = (int)m_hasChildren; item.m_children = (int)m_hasChildren;
if ((item.m_mask & wxTREE_MASK_DATA) == wxTREE_MASK_DATA) if ((item.m_mask & wxTREE_MASK_DATA) == wxTREE_MASK_DATA)
item.m_data = m_data; item.m_data = m_data;
}; }
bool wxGenericTreeItem::HasChildren() bool wxGenericTreeItem::HasChildren()
{ {
return m_hasChildren; return m_hasChildren;
}; }
bool wxGenericTreeItem::HasPlus() bool wxGenericTreeItem::HasPlus()
{ {
@@ -151,7 +151,7 @@ bool wxGenericTreeItem::HasPlus()
return FALSE; return FALSE;
return !IsExpanded(); return !IsExpanded();
}; }
int wxGenericTreeItem::NumberOfVisibleDescendents() int wxGenericTreeItem::NumberOfVisibleDescendents()
{ {
@@ -162,14 +162,14 @@ int wxGenericTreeItem::NumberOfVisibleDescendents()
wxGenericTreeItem *item = (wxGenericTreeItem*)node->Data(); wxGenericTreeItem *item = (wxGenericTreeItem*)node->Data();
ret += item->NumberOfVisibleDescendents(); ret += item->NumberOfVisibleDescendents();
node = node->Next(); node = node->Next();
}; }
return ret; return ret;
}; }
int wxGenericTreeItem::NumberOfVisibleChildren() int wxGenericTreeItem::NumberOfVisibleChildren()
{ {
return m_isCollapsed ? 0 : m_children.Number(); return m_isCollapsed ? 0 : m_children.Number();
}; }
wxGenericTreeItem *wxGenericTreeItem::FindItem( long itemId ) const wxGenericTreeItem *wxGenericTreeItem::FindItem( long itemId ) const
{ {
@@ -181,20 +181,20 @@ wxGenericTreeItem *wxGenericTreeItem::FindItem( long itemId ) const
wxGenericTreeItem *res = item->FindItem( itemId ); wxGenericTreeItem *res = item->FindItem( itemId );
if (res) return (wxGenericTreeItem*)(res); if (res) return (wxGenericTreeItem*)(res);
node = node->Next(); node = node->Next();
}; }
return (wxGenericTreeItem *) NULL; return (wxGenericTreeItem *) NULL;
}; }
void wxGenericTreeItem::AddChild( wxGenericTreeItem *child ) void wxGenericTreeItem::AddChild( wxGenericTreeItem *child )
{ {
m_children.Append( child ); m_children.Append( child );
}; }
void wxGenericTreeItem::SetCross( int x, int y ) void wxGenericTreeItem::SetCross( int x, int y )
{ {
m_xCross = x; m_xCross = x;
m_yCross = y; m_yCross = y;
}; }
void wxGenericTreeItem::GetSize( int &x, int &y ) void wxGenericTreeItem::GetSize( int &x, int &y )
{ {
@@ -207,8 +207,8 @@ void wxGenericTreeItem::GetSize( int &x, int &y )
wxGenericTreeItem *item = (wxGenericTreeItem*)node->Data(); wxGenericTreeItem *item = (wxGenericTreeItem*)node->Data();
item->GetSize( x, y ); item->GetSize( x, y );
node = node->Next(); node = node->Next();
}; }
}; }
long wxGenericTreeItem::HitTest( const wxPoint& point, int &flags ) long wxGenericTreeItem::HitTest( const wxPoint& point, int &flags )
{ {
@@ -222,17 +222,17 @@ long wxGenericTreeItem::HitTest( const wxPoint& point, int &flags )
{ {
flags = wxTREE_HITTEST_ONITEMBUTTON; flags = wxTREE_HITTEST_ONITEMBUTTON;
return m_itemId; return m_itemId;
}; }
if ((point.x > m_x) && (point.x < m_x+m_width)) if ((point.x > m_x) && (point.x < m_x+m_width))
{ {
flags = wxTREE_HITTEST_ONITEMLABEL; flags = wxTREE_HITTEST_ONITEMLABEL;
return m_itemId; return m_itemId;
}; }
if (point.x > m_x) if (point.x > m_x)
{ {
flags = wxTREE_HITTEST_ONITEMRIGHT; flags = wxTREE_HITTEST_ONITEMRIGHT;
return m_itemId; return m_itemId;
}; }
flags = wxTREE_HITTEST_ONITEMINDENT; flags = wxTREE_HITTEST_ONITEMINDENT;
return m_itemId; return m_itemId;
} }
@@ -247,11 +247,11 @@ long wxGenericTreeItem::HitTest( const wxPoint& point, int &flags )
long res = child->HitTest( point, flags ); long res = child->HitTest( point, flags );
if (res != -1) return res; if (res != -1) return res;
node = node->Next(); node = node->Next();
}; }
}; }
}; }
return -1; return -1;
}; }
void wxGenericTreeItem::PrepareEvent( wxTreeEvent &event ) void wxGenericTreeItem::PrepareEvent( wxTreeEvent &event )
{ {
@@ -266,7 +266,7 @@ void wxGenericTreeItem::PrepareEvent( wxTreeEvent &event )
event.m_code = 0; event.m_code = 0;
event.m_pointDrag.x = 0; event.m_pointDrag.x = 0;
event.m_pointDrag.y = 0; event.m_pointDrag.y = 0;
}; }
void wxGenericTreeItem::SendKeyDown( wxWindow *target ) void wxGenericTreeItem::SendKeyDown( wxWindow *target )
{ {
@@ -274,7 +274,7 @@ void wxGenericTreeItem::SendKeyDown( wxWindow *target )
PrepareEvent( event ); PrepareEvent( event );
event.SetEventObject( target ); event.SetEventObject( target );
target->ProcessEvent( event ); target->ProcessEvent( event );
}; }
void wxGenericTreeItem::SendSelected( wxWindow *target ) void wxGenericTreeItem::SendSelected( wxWindow *target )
{ {
@@ -282,7 +282,7 @@ void wxGenericTreeItem::SendSelected( wxWindow *target )
PrepareEvent( event ); PrepareEvent( event );
event.SetEventObject( target ); event.SetEventObject( target );
target->ProcessEvent( event ); target->ProcessEvent( event );
}; }
void wxGenericTreeItem::SendDelete( wxWindow *target ) void wxGenericTreeItem::SendDelete( wxWindow *target )
{ {
@@ -290,7 +290,7 @@ void wxGenericTreeItem::SendDelete( wxWindow *target )
PrepareEvent( event ); PrepareEvent( event );
event.SetEventObject( target ); event.SetEventObject( target );
target->ProcessEvent( event ); target->ProcessEvent( event );
}; }
void wxGenericTreeItem::SendExpand( wxWindow *target ) void wxGenericTreeItem::SendExpand( wxWindow *target )
{ {
@@ -304,7 +304,7 @@ void wxGenericTreeItem::SendExpand( wxWindow *target )
event.SetEventType(wxEVT_COMMAND_TREE_ITEM_EXPANDED); event.SetEventType(wxEVT_COMMAND_TREE_ITEM_EXPANDED);
PrepareEvent( event ); PrepareEvent( event );
target->ProcessEvent( event ); target->ProcessEvent( event );
}; }
void wxGenericTreeItem::SendCollapse( wxWindow *target ) void wxGenericTreeItem::SendCollapse( wxWindow *target )
{ {
@@ -318,17 +318,17 @@ void wxGenericTreeItem::SendCollapse( wxWindow *target )
event.SetEventType(wxEVT_COMMAND_TREE_ITEM_COLLAPSED); event.SetEventType(wxEVT_COMMAND_TREE_ITEM_COLLAPSED);
PrepareEvent( event ); PrepareEvent( event );
target->ProcessEvent( event ); target->ProcessEvent( event );
}; }
void wxGenericTreeItem::SetHilight( bool set ) void wxGenericTreeItem::SetHilight( bool set )
{ {
m_hasHilight = set; m_hasHilight = set;
}; }
bool wxGenericTreeItem::HasHilight() bool wxGenericTreeItem::HasHilight()
{ {
return m_hasHilight; return m_hasHilight;
}; }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// wxTreeCtrl // wxTreeCtrl
@@ -358,7 +358,7 @@ wxTreeCtrl::wxTreeCtrl()
m_hilightBrush = new wxBrush( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHT), wxSOLID ); m_hilightBrush = new wxBrush( wxSystemSettings::GetSystemColour(wxSYS_COLOUR_HIGHLIGHT), wxSOLID );
m_imageList = (wxImageList *) NULL; m_imageList = (wxImageList *) NULL;
m_smallImageList = (wxImageList *) NULL; m_smallImageList = (wxImageList *) NULL;
}; }
wxTreeCtrl::wxTreeCtrl(wxWindow *parent, wxWindowID id, wxTreeCtrl::wxTreeCtrl(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxSize& size, const wxPoint& pos, const wxSize& size,
@@ -377,11 +377,11 @@ wxTreeCtrl::wxTreeCtrl(wxWindow *parent, wxWindowID id,
m_imageList = (wxImageList *) NULL; m_imageList = (wxImageList *) NULL;
m_smallImageList = (wxImageList *) NULL; m_smallImageList = (wxImageList *) NULL;
Create( parent, id, pos, size, style, name ); Create( parent, id, pos, size, style, name );
}; }
wxTreeCtrl::~wxTreeCtrl() wxTreeCtrl::~wxTreeCtrl()
{ {
}; }
bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos, const wxSize& size, const wxPoint& pos, const wxSize& size,
@@ -391,13 +391,13 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id,
SetBackgroundColour( *wxWHITE ); SetBackgroundColour( *wxWHITE );
m_dottedPen = wxPen( *wxBLACK, 0, 0 ); m_dottedPen = wxPen( *wxBLACK, 0, 0 );
return TRUE; return TRUE;
}; }
int wxTreeCtrl::GetCount() const int wxTreeCtrl::GetCount() const
{ {
if (!m_anchor) return 0; if (!m_anchor) return 0;
return m_anchor->NumberOfVisibleDescendents(); return m_anchor->NumberOfVisibleDescendents();
}; }
long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image, long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image,
int selImage, long WXUNUSED(insertAfter) ) int selImage, long WXUNUSED(insertAfter) )
@@ -411,7 +411,7 @@ long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image,
{ {
p = FindItem( parent ); p = FindItem( parent );
if (!p) return -1; if (!p) return -1;
}; }
wxTreeItem item; wxTreeItem item;
m_lastId++; m_lastId++;
item.m_mask = wxTREE_MASK_HANDLE; item.m_mask = wxTREE_MASK_HANDLE;
@@ -420,17 +420,17 @@ long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image,
{ {
item.m_text = label; item.m_text = label;
item.m_mask |= wxTREE_MASK_TEXT; item.m_mask |= wxTREE_MASK_TEXT;
}; }
if (image >= 0) if (image >= 0)
{ {
item.m_image = image; item.m_image = image;
item.m_mask |= wxTREE_MASK_IMAGE; item.m_mask |= wxTREE_MASK_IMAGE;
}; }
if (selImage >= 0) if (selImage >= 0)
{ {
item.m_selectedImage = selImage; item.m_selectedImage = selImage;
item.m_mask |= wxTREE_MASK_SELECTED_IMAGE; item.m_mask |= wxTREE_MASK_SELECTED_IMAGE;
}; }
wxClientDC dc(this); wxClientDC dc(this);
wxGenericTreeItem *new_child = new wxGenericTreeItem( p, item, &dc ); wxGenericTreeItem *new_child = new wxGenericTreeItem( p, item, &dc );
@@ -465,7 +465,7 @@ long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image,
wxNode *node = p->m_children.Member( new_child )->Previous(); wxNode *node = p->m_children.Member( new_child )->Previous();
wxGenericTreeItem* last_child = (wxGenericTreeItem*)node->Data(); wxGenericTreeItem* last_child = (wxGenericTreeItem*)node->Data();
rect.y = dc.LogicalToDeviceY( last_child->m_y ); rect.y = dc.LogicalToDeviceY( last_child->m_y );
}; }
AdjustMyScrollbars(); AdjustMyScrollbars();
@@ -476,10 +476,10 @@ long wxTreeCtrl::InsertItem( long parent, const wxString& label, int image,
AdjustMyScrollbars(); AdjustMyScrollbars();
Refresh(); Refresh();
}; }
return m_lastId; return m_lastId;
}; }
long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insertAfter) ) long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insertAfter) )
{ {
@@ -496,8 +496,8 @@ long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insert
{ {
printf( "TreeItem not found.\n" ); printf( "TreeItem not found.\n" );
return -1; return -1;
}; }
}; }
long ret = 0; long ret = 0;
if ((info.m_mask & wxTREE_MASK_HANDLE) == 0) if ((info.m_mask & wxTREE_MASK_HANDLE) == 0)
{ {
@@ -509,7 +509,7 @@ long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insert
else else
{ {
ret = info.m_itemId; ret = info.m_itemId;
}; }
wxClientDC dc(this); wxClientDC dc(this);
wxGenericTreeItem *new_child = new wxGenericTreeItem( p, info, &dc ); wxGenericTreeItem *new_child = new wxGenericTreeItem( p, info, &dc );
@@ -544,7 +544,7 @@ long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insert
wxNode *node = p->m_children.Member( new_child )->Previous(); wxNode *node = p->m_children.Member( new_child )->Previous();
wxGenericTreeItem* last_child = (wxGenericTreeItem*)node->Data(); wxGenericTreeItem* last_child = (wxGenericTreeItem*)node->Data();
rect.y = dc.LogicalToDeviceY( last_child->m_y ); rect.y = dc.LogicalToDeviceY( last_child->m_y );
}; }
AdjustMyScrollbars(); AdjustMyScrollbars();
@@ -555,11 +555,11 @@ long wxTreeCtrl::InsertItem( long parent, wxTreeItem &info, long WXUNUSED(insert
AdjustMyScrollbars(); AdjustMyScrollbars();
Refresh(); Refresh();
}; }
info.m_mask = oldMask; info.m_mask = oldMask;
return ret; return ret;
}; }
bool wxTreeCtrl::ExpandItem( long item, int action ) bool wxTreeCtrl::ExpandItem( long item, int action )
{ {
@@ -585,7 +585,7 @@ bool wxTreeCtrl::ExpandItem( long item, int action )
if ( child->IsExpanded() ) if ( child->IsExpanded() )
ExpandItem( child->m_itemId, wxTREE_EXPAND_COLLAPSE ); ExpandItem( child->m_itemId, wxTREE_EXPAND_COLLAPSE );
node = node->Next(); node = node->Next();
}; }
CalculatePositions(); CalculatePositions();
@@ -601,7 +601,7 @@ bool wxTreeCtrl::ExpandItem( long item, int action )
ExpandItem( item, wxTREE_EXPAND_EXPAND ); ExpandItem( item, wxTREE_EXPAND_EXPAND );
return TRUE; return TRUE;
} }
}; }
wxClientDC dc(this); wxClientDC dc(this);
PrepareDC(dc); PrepareDC(dc);
@@ -620,7 +620,7 @@ bool wxTreeCtrl::ExpandItem( long item, int action )
AdjustMyScrollbars(); AdjustMyScrollbars();
return TRUE; return TRUE;
}; }
void wxTreeCtrl::DeleteItem( long item ) void wxTreeCtrl::DeleteItem( long item )
{ {
@@ -648,7 +648,7 @@ bool wxTreeCtrl::DeleteAllItems()
m_anchor = (wxGenericTreeItem *) NULL; m_anchor = (wxGenericTreeItem *) NULL;
Refresh(); Refresh();
return TRUE; return TRUE;
}; }
bool wxTreeCtrl::GetItem( wxTreeItem &info ) const bool wxTreeCtrl::GetItem( wxTreeItem &info ) const
{ {
@@ -656,21 +656,21 @@ bool wxTreeCtrl::GetItem( wxTreeItem &info ) const
if (!i) return FALSE; if (!i) return FALSE;
i->GetItem( info ); i->GetItem( info );
return TRUE; return TRUE;
}; }
long wxTreeCtrl::GetItemData( long item ) const long wxTreeCtrl::GetItemData( long item ) const
{ {
wxGenericTreeItem *i = FindItem( item ); wxGenericTreeItem *i = FindItem( item );
if (!i) return 0; if (!i) return 0;
return i->m_data; return i->m_data;
}; }
wxString wxTreeCtrl::GetItemText( long item ) const wxString wxTreeCtrl::GetItemText( long item ) const
{ {
wxGenericTreeItem *i = FindItem( item ); wxGenericTreeItem *i = FindItem( item );
if (!i) return ""; if (!i) return "";
return i->m_text; return i->m_text;
}; }
int wxTreeCtrl::GetItemImage(long item) const int wxTreeCtrl::GetItemImage(long item) const
{ {
@@ -685,20 +685,72 @@ long wxTreeCtrl::GetParent( long item ) const
i = i->m_parent; i = i->m_parent;
if (!i) return -1; if (!i) return -1;
return i->m_parent->m_itemId; return i->m_parent->m_itemId;
}; }
long wxTreeCtrl::GetRootItem() const long wxTreeCtrl::GetRootItem() const
{ {
if (m_anchor) return m_anchor->m_itemId; if (m_anchor) return m_anchor->m_itemId;
return -1; return -1;
}; }
long wxTreeCtrl::GetChild( long item ) const
{
wxGenericTreeItem *i = FindItem( item );
if (!i) return -1;
if (!i->HasChildren()) return -1;
wxNode *node = i->m_children.First();
i = (wxGenericTreeItem *)node->Data();
return i->m_itemId;
}
long wxTreeCtrl::GetNextItem( long item, int code ) const
{
switch (code)
{
case wxTREE_NEXT_CARET: return GetSelection();
case wxTREE_NEXT_CHILD: return GetChild( item );
case wxTREE_NEXT_ROOT: return GetRootItem();
case wxTREE_NEXT_PARENT: return GetParent( item );
case wxTREE_NEXT_NEXT:
{
wxGenericTreeItem *i = FindItem( item );
if (!i) return -1;
if (i->m_parent)
{
wxNode *node = i->m_parent->m_children.Member( i );
if (!node) return -1;
node = node->Next();
if (!node) return -1;
i = (wxGenericTreeItem *)node->Data();
return i->m_itemId;
}
break;
}
case wxTREE_NEXT_PREVIOUS:
{
wxGenericTreeItem *i = FindItem( item );
if (!i) return -1;
if (i->m_parent)
{
wxNode *node = i->m_parent->m_children.Member( i );
if (!node) return -1;
node = node->Previous();
if (!node) return -1;
i = (wxGenericTreeItem *)node->Data();
return i->m_itemId;
}
break;
}
}
return -1;
}
long wxTreeCtrl::GetSelection() const long wxTreeCtrl::GetSelection() const
{ {
return m_current ? m_current->GetItemId() : -1; return m_current ? m_current->GetItemId() : -1;
}; }
bool wxTreeCtrl::SelectItem(long itemId) bool wxTreeCtrl::SelectItem( long itemId )
{ {
wxGenericTreeItem *pItem = FindItem(itemId); wxGenericTreeItem *pItem = FindItem(itemId);
if ( !pItem ) { if ( !pItem ) {
@@ -710,7 +762,7 @@ bool wxTreeCtrl::SelectItem(long itemId)
SelectItem(pItem); SelectItem(pItem);
return TRUE; return TRUE;
}; }
void wxTreeCtrl::SelectItem(wxGenericTreeItem *item) void wxTreeCtrl::SelectItem(wxGenericTreeItem *item)
{ {
@@ -720,7 +772,7 @@ void wxTreeCtrl::SelectItem(wxGenericTreeItem *item)
{ {
m_current->SetHilight( FALSE ); m_current->SetHilight( FALSE );
RefreshLine( m_current ); RefreshLine( m_current );
}; }
m_current = item; m_current = item;
m_current->SetHilight( TRUE ); m_current->SetHilight( TRUE );
RefreshLine( m_current ); RefreshLine( m_current );
@@ -734,18 +786,18 @@ bool wxTreeCtrl::ItemHasChildren( long item ) const
wxGenericTreeItem *i = FindItem( item ); wxGenericTreeItem *i = FindItem( item );
if (!i) return FALSE; if (!i) return FALSE;
return i->m_hasChildren; return i->m_hasChildren;
}; }
void wxTreeCtrl::SetIndent( int indent ) void wxTreeCtrl::SetIndent( int indent )
{ {
m_indent = indent; m_indent = indent;
Refresh(); Refresh();
}; }
int wxTreeCtrl::GetIndent() const int wxTreeCtrl::GetIndent() const
{ {
return m_indent; return m_indent;
}; }
bool wxTreeCtrl::SetItem( wxTreeItem &info ) bool wxTreeCtrl::SetItem( wxTreeItem &info )
{ {
@@ -755,7 +807,7 @@ bool wxTreeCtrl::SetItem( wxTreeItem &info )
i->SetItem( info, &dc ); i->SetItem( info, &dc );
Refresh(); Refresh();
return TRUE; return TRUE;
}; }
bool wxTreeCtrl::SetItemData( long item, long data ) bool wxTreeCtrl::SetItemData( long item, long data )
{ {
@@ -763,7 +815,7 @@ bool wxTreeCtrl::SetItemData( long item, long data )
if (!i) return FALSE; if (!i) return FALSE;
i->m_data = data; i->m_data = data;
return TRUE; return TRUE;
}; }
bool wxTreeCtrl::SetItemText( long item, const wxString &text ) bool wxTreeCtrl::SetItemText( long item, const wxString &text )
{ {
@@ -772,29 +824,81 @@ bool wxTreeCtrl::SetItemText( long item, const wxString &text )
wxClientDC dc(this); wxClientDC dc(this);
i->SetText( text, &dc ); i->SetText( text, &dc );
return TRUE; return TRUE;
}; }
void wxTreeCtrl::SetItemImage(long item, int image, int imageSel) const void wxTreeCtrl::SetItemImage(long item, int image, int imageSel) const
{ {
wxGenericTreeItem *i = FindItem( item ); wxGenericTreeItem *i = FindItem( item );
if ( i != 0 ) { if ( i != 0 )
{
i->SetImage(image); i->SetImage(image);
i->SetSelectedImage(imageSel); i->SetSelectedImage(imageSel);
} }
} }
int wxTreeCtrl::GetItemState( long item, long stateMask ) const
{
wxGenericTreeItem *i = FindItem( item );
if (!i) return 0;
int ret = 0;
// Currently, an item is always selected _and_ focussed in wxGTK
if (stateMask & wxTREE_STATE_FOCUSED)
if (m_current == i)
ret += wxTREE_STATE_FOCUSED;
if (stateMask & wxTREE_STATE_SELECTED)
if (m_current == i)
ret += wxTREE_STATE_SELECTED;
if (stateMask & wxTREE_STATE_EXPANDED)
if (i->IsExpanded())
ret += wxTREE_STATE_EXPANDED;
return ret;
}
bool wxTreeCtrl::SetItemState( long item, long state, long stateMask )
{
wxGenericTreeItem *i = FindItem( item );
if (!i) return FALSE;
if (stateMask & wxTREE_STATE_FOCUSED)
{
if (state & wxTREE_STATE_FOCUSED)
SelectItem( i );
}
if (stateMask & wxTREE_STATE_SELECTED)
{
if (state & wxTREE_STATE_SELECTED)
SelectItem( i );
}
if (stateMask & wxTREE_STATE_EXPANDED)
{
if (state & wxTREE_STATE_EXPANDED)
ExpandItem( i->m_itemId, wxTREE_EXPAND_EXPAND );
else
ExpandItem( i->m_itemId, wxTREE_EXPAND_COLLAPSE );
}
return TRUE;
}
long wxTreeCtrl::HitTest( const wxPoint& point, int &flags ) long wxTreeCtrl::HitTest( const wxPoint& point, int &flags )
{ {
flags = 0; flags = 0;
if (!m_anchor) return -1; if (!m_anchor) return -1;
return m_anchor->HitTest( point, flags ); return m_anchor->HitTest( point, flags );
}; }
wxImageList *wxTreeCtrl::GetImageList( int which ) const wxImageList *wxTreeCtrl::GetImageList( int which ) const
{ {
if (which == wxIMAGE_LIST_NORMAL) return m_imageList; if (which == wxIMAGE_LIST_NORMAL) return m_imageList;
return m_smallImageList; return m_smallImageList;
}; }
void wxTreeCtrl::SetImageList( wxImageList *imageList, int which ) void wxTreeCtrl::SetImageList( wxImageList *imageList, int which )
{ {
@@ -807,8 +911,8 @@ void wxTreeCtrl::SetImageList( wxImageList *imageList, int which )
{ {
if (m_smallImageList) delete m_smallImageList; if (m_smallImageList) delete m_smallImageList;
m_smallImageList = imageList; m_smallImageList = imageList;
}; }
}; }
void wxTreeCtrl::AdjustMyScrollbars() void wxTreeCtrl::AdjustMyScrollbars()
{ {
@@ -825,8 +929,8 @@ void wxTreeCtrl::AdjustMyScrollbars()
else else
{ {
SetScrollbars( 0, 0, 0, 0 ); SetScrollbars( 0, 0, 0, 0 );
}; }
}; }
void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y ) void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y )
{ {
@@ -861,7 +965,7 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level,
dc.DrawLine( horizX+13, y, horizX+18, y ); dc.DrawLine( horizX+13, y, horizX+18, y );
if (item->HasPlus()) if (item->HasPlus())
dc.DrawLine( horizX+15, y-2, horizX+15, y+3 ); dc.DrawLine( horizX+15, y-2, horizX+15, y+3 );
}; }
if (item->HasHilight()) if (item->HasHilight())
{ {
@@ -894,8 +998,8 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level,
dc.DrawRectangle( item->m_x-2, item->m_y-2, tw+4, th+4 ); dc.DrawRectangle( item->m_x-2, item->m_y-2, tw+4, th+4 );
dc.DrawText( item->m_text, item->m_x, item->m_y ); dc.DrawText( item->m_text, item->m_x, item->m_y );
dc.SetPen( *wxBLACK_PEN ); dc.SetPen( *wxBLACK_PEN );
}; }
}; }
if (item->NumberOfVisibleChildren() == 0) return; if (item->NumberOfVisibleChildren() == 0) return;
@@ -912,7 +1016,7 @@ void wxTreeCtrl::PaintLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level,
PaintLevel( child, dc, level+1, y ); PaintLevel( child, dc, level+1, y );
node = node->Next(); node = node->Next();
}; }
dc.DrawLine( horizX+15, oldY+5, horizX+15, semiOldY ); dc.DrawLine( horizX+15, oldY+5, horizX+15, semiOldY );
} }
@@ -931,24 +1035,24 @@ void wxTreeCtrl::OnPaint( const wxPaintEvent &WXUNUSED(event) )
int y = m_lineHeight / 2 + 2; int y = m_lineHeight / 2 + 2;
PaintLevel( m_anchor, dc, 0, y ); PaintLevel( m_anchor, dc, 0, y );
}; }
void wxTreeCtrl::OnSetFocus( const wxFocusEvent &WXUNUSED(event) ) void wxTreeCtrl::OnSetFocus( const wxFocusEvent &WXUNUSED(event) )
{ {
m_hasFocus = TRUE; m_hasFocus = TRUE;
if (m_current) RefreshLine( m_current ); if (m_current) RefreshLine( m_current );
}; }
void wxTreeCtrl::OnKillFocus( const wxFocusEvent &WXUNUSED(event) ) void wxTreeCtrl::OnKillFocus( const wxFocusEvent &WXUNUSED(event) )
{ {
m_hasFocus = FALSE; m_hasFocus = FALSE;
if (m_current) RefreshLine( m_current ); if (m_current) RefreshLine( m_current );
}; }
void wxTreeCtrl::OnChar( wxKeyEvent &event ) void wxTreeCtrl::OnChar( wxKeyEvent &event )
{ {
event.Skip(); event.Skip();
}; }
void wxTreeCtrl::OnMouse( const wxMouseEvent &event ) void wxTreeCtrl::OnMouse( const wxMouseEvent &event )
{ {
@@ -979,8 +1083,8 @@ void wxTreeCtrl::OnMouse( const wxMouseEvent &event )
{ {
ExpandItem( item->m_itemId, wxTREE_EXPAND_TOGGLE ); ExpandItem( item->m_itemId, wxTREE_EXPAND_TOGGLE );
return; return;
}; }
}; }
void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y ) void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int level, int &y )
{ {
@@ -1001,8 +1105,8 @@ void wxTreeCtrl::CalculateLevel( wxGenericTreeItem *item, wxPaintDC &dc, int lev
CalculateLevel( child, dc, level+1, y ); CalculateLevel( child, dc, level+1, y );
node = node->Next(); node = node->Next();
}; }
}; }
void wxTreeCtrl::CalculatePositions() void wxTreeCtrl::CalculatePositions()
{ {
@@ -1019,13 +1123,13 @@ void wxTreeCtrl::CalculatePositions()
int y = m_lineHeight / 2 + 2; int y = m_lineHeight / 2 + 2;
CalculateLevel( m_anchor, dc, 0, y ); CalculateLevel( m_anchor, dc, 0, y );
}; }
wxGenericTreeItem *wxTreeCtrl::FindItem( long itemId ) const wxGenericTreeItem *wxTreeCtrl::FindItem( long itemId ) const
{ {
if (!m_anchor) return (wxGenericTreeItem *) NULL; if (!m_anchor) return (wxGenericTreeItem *) NULL;
return m_anchor->FindItem( itemId ); return m_anchor->FindItem( itemId );
}; }
void wxTreeCtrl::RefreshLine( wxGenericTreeItem *item ) void wxTreeCtrl::RefreshLine( wxGenericTreeItem *item )
{ {
@@ -1038,7 +1142,7 @@ void wxTreeCtrl::RefreshLine( wxGenericTreeItem *item )
rect.width = 1000; rect.width = 1000;
rect.height = dc.GetCharHeight()+6; rect.height = dc.GetCharHeight()+6;
Refresh( TRUE, &rect ); Refresh( TRUE, &rect );
}; }

View File

@@ -346,6 +346,8 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->argc = argc; wxTheApp->argc = argc;
wxTheApp->argv = argv; wxTheApp->argv = argv;
gtk_set_locale();
gtk_init( &argc, &argv ); gtk_init( &argc, &argv );
#ifdef USE_GDK_IMLIB #ifdef USE_GDK_IMLIB

View File

@@ -517,7 +517,7 @@ void wxFrame::SetTitle( const wxString &title )
void wxFrame::SetSizeHints(int minW, int minH, void wxFrame::SetSizeHints(int minW, int minH,
int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(maxW), int WXUNUSED(maxH),
int WXUNUSED(incW) ) int WXUNUSED(incW), int WXUNUSED(incH) )
{ {
// gdk_window_set_hints alone doesn't really prevent the user from shrinking // gdk_window_set_hints alone doesn't really prevent the user from shrinking
// the window to the size smaller than (minW, minH) // the window to the size smaller than (minW, minH)

View File

@@ -346,6 +346,8 @@ int wxEntry( int argc, char *argv[] )
wxTheApp->argc = argc; wxTheApp->argc = argc;
wxTheApp->argv = argv; wxTheApp->argv = argv;
gtk_set_locale();
gtk_init( &argc, &argv ); gtk_init( &argc, &argv );
#ifdef USE_GDK_IMLIB #ifdef USE_GDK_IMLIB

View File

@@ -517,7 +517,7 @@ void wxFrame::SetTitle( const wxString &title )
void wxFrame::SetSizeHints(int minW, int minH, void wxFrame::SetSizeHints(int minW, int minH,
int WXUNUSED(maxW), int WXUNUSED(maxH), int WXUNUSED(maxW), int WXUNUSED(maxH),
int WXUNUSED(incW) ) int WXUNUSED(incW), int WXUNUSED(incH) )
{ {
// gdk_window_set_hints alone doesn't really prevent the user from shrinking // gdk_window_set_hints alone doesn't really prevent the user from shrinking
// the window to the size smaller than (minW, minH) // the window to the size smaller than (minW, minH)