1) wxGTK now use the new, native implementation of wxTreeCtrl.

2) The treectrl sample uses the icons (not only under Windows).
3) A couple of minor changes in treectrl.cpp itself.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@785 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
1998-09-29 20:02:53 +00:00
parent 8248314dbd
commit c89a610604
7 changed files with 364 additions and 155 deletions

View File

@@ -6,7 +6,7 @@
#elif defined(__WXMOTIF__) #elif defined(__WXMOTIF__)
#include "wx/generic/treectrl.h" #include "wx/generic/treectrl.h"
#elif defined(__WXGTK__) #elif defined(__WXGTK__)
#include "wx/generic/treectrl.h" #include "wx/gtk/treectrl.h"
#elif defined(__WXQT__) #elif defined(__WXQT__)
#include "wx/qt/treectrl.h" #include "wx/qt/treectrl.h"
#elif defined(__WXMAC__) #elif defined(__WXMAC__)

View File

@@ -0,0 +1,44 @@
/* XPM */
static char *icon1_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 6 1",
" c Black",
". c Blue",
"X c #00bf00",
"o c Red",
"O c Yellow",
"+ c Gray100",
/* pixels */
" ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ +++++++XXX++++++++ .... ",
" ++++++ ++++++X+XX++++++++ .... ",
" ++++++ +++++X++XX++++++++ .... ",
" ++++++ ++++++++XX++++++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" "
};

View File

@@ -0,0 +1,44 @@
/* XPM */
static char *icon2_xpm[] = {
/* columns rows colors chars-per-pixel */
"32 32 6 1",
" c Black",
". c Blue",
"X c #00bf00",
"o c Red",
"O c Yellow",
"+ c Gray100",
/* pixels */
" ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" oooooo +++++++++++++++++++++++ ",
" ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ ++++++++++++++++++ .... ",
" ++++++ +++++XXXXXX+++++++ .... ",
" ++++++ ++++X++++++X++++++ .... ",
" ++++++ +++++++++++X++++++ ",
" ++++++ ++++++++++X+++++++ ++++ ",
" ++++++ ++++++++XX++++++++ ++++ ",
" ++++++ +++++++XX+++++++++ ++++ ",
" ++++++ ++++++X+++++++++++ ++++ ",
" ++++++ +++++X++++++++++++ ++++ ",
" ++++++ +++++XXXXXXXX+++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++++++++++++++++ ++++ ",
" ++++++ ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" ++++++ OOOOOOOOOOOO XXXXX ++++ ",
" "
};

View File

@@ -25,8 +25,10 @@
#include "wx/wx.h" #include "wx/wx.h"
#endif #endif
#ifdef __WXGTK__ #ifndef __WXMSW__
#include "mondrian.xpm" #include "icon1.xpm"
#include "icon2.xpm"
#include "mondrian.xpm"
#endif #endif
#include "wx/treectrl.h" #include "wx/treectrl.h"
@@ -56,7 +58,7 @@ END_EVENT_TABLE()
IMPLEMENT_APP(MyApp) IMPLEMENT_APP(MyApp)
// `Main program' equivalent, creating windows and returning main app frame // `Main program' equivalent, creating windows and returning main app frame
bool MyApp::OnInit(void) bool MyApp::OnInit()
{ {
// Create the main frame window // Create the main frame window
MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxTreeCtrl Test", 50, 50, 450, 340); MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "wxTreeCtrl Test", 50, 50, 450, 340);
@@ -67,22 +69,13 @@ bool MyApp::OnInit(void)
frame->SetBackgroundColour(wxColour(255, 255, 255)); frame->SetBackgroundColour(wxColour(255, 255, 255));
// Give it an icon // Give it an icon
#ifdef __WXMSW__ frame->SetIcon(wxICON(mondrian));
frame->SetIcon(wxIcon("mondrian"));
#else
frame->SetIcon(wxIcon(mondrian_xpm));
#endif
// Make an image list containing small icons // Make an image list containing small icons
m_imageListNormal = new wxImageList(16, 16, TRUE); m_imageListNormal = new wxImageList(16, 16, TRUE);
#ifdef __WXMSW__ m_imageListNormal->Add(wxICON(icon1));
wxIcon icon1("icon1", wxBITMAP_TYPE_ICO_RESOURCE); m_imageListNormal->Add(wxICON(icon2));
m_imageListNormal->Add(icon1);
wxIcon icon2("icon2", wxBITMAP_TYPE_ICO_RESOURCE);
m_imageListNormal->Add(icon2);
#else
#endif
// Make a menubar // Make a menubar
wxMenu *file_menu = new wxMenu; wxMenu *file_menu = new wxMenu;
@@ -161,7 +154,7 @@ MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
m_logWindow = (wxTextCtrl *) NULL; m_logWindow = (wxTextCtrl *) NULL;
} }
MyFrame::~MyFrame(void) MyFrame::~MyFrame()
{ {
delete wxGetApp().m_imageListNormal; delete wxGetApp().m_imageListNormal;
} }

View File

@@ -108,6 +108,7 @@ LIB_CPP_SRC=\
gtk/tbargtk.cpp \ gtk/tbargtk.cpp \
gtk/textctrl.cpp \ gtk/textctrl.cpp \
gtk/timer.cpp \ gtk/timer.cpp \
gtk/treectrl.cpp \
gtk/utilsgtk.cpp \ gtk/utilsgtk.cpp \
gtk/utilsres.cpp \ gtk/utilsres.cpp \
gtk/window.cpp \ gtk/window.cpp \
@@ -128,8 +129,7 @@ LIB_CPP_SRC=\
generic/splitter.cpp \ generic/splitter.cpp \
generic/statusbr.cpp \ generic/statusbr.cpp \
generic/tabg.cpp \ generic/tabg.cpp \
generic/textdlgg.cpp \ generic/textdlgg.cpp
generic/treectrl.cpp
LIB_C_SRC=\ LIB_C_SRC=\

View File

@@ -6,7 +6,7 @@
// Created: 07/05/98 // Created: 07/05/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Denis Pershin // Copyright: (c) Denis Pershin
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
@@ -40,7 +40,8 @@ static void gtk_treeitem_expand_callback(GtkWidget *WXUNUSED(widget), wxTreeItem
static void gtk_treeitem_collapse_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem); static void gtk_treeitem_collapse_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem);
static void gtk_treeitem_select_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem); static void gtk_treeitem_select_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem);
static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -50,7 +51,8 @@ static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem
owner->SendExpanded(id); owner->SendExpanded(id);
}; };
static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -60,7 +62,8 @@ static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeit
owner->SendCollapsed(id); owner->SendCollapsed(id);
}; };
static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -71,12 +74,12 @@ static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem
} }
#if !USE_SHARED_LIBRARY #if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject)
#endif #endif
wxTreeCtrl::wxTreeCtrl(void) { wxTreeCtrl::wxTreeCtrl()
{
m_imageListNormal = NULL; m_imageListNormal = NULL;
m_imageListState = NULL; m_imageListState = NULL;
m_textCtrl = NULL; m_textCtrl = NULL;
@@ -115,12 +118,11 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, con
m_widget = gtk_scrolled_window_new(NULL, NULL); m_widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget), gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
m_tree = GTK_TREE(gtk_tree_new()); m_tree = GTK_TREE(gtk_tree_new());
gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree)); gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree));
gtk_widget_set_parent(GTK_WIDGET(m_tree), m_widget);
gtk_widget_show(GTK_WIDGET(m_tree)); gtk_widget_show(GTK_WIDGET(m_tree));
wxSystemSettings settings; wxSystemSettings settings;
@@ -139,13 +141,14 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, con
return TRUE; return TRUE;
} }
wxTreeCtrl::~wxTreeCtrl(void) { wxTreeCtrl::~wxTreeCtrl()
if (m_textCtrl) {
delete m_textCtrl; wxDELETE(m_textCtrl);
} }
// Attributes // Attributes
static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) { static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data)
{
int count = (*((int *)data)); int count = (*((int *)data));
count++; count++;
@@ -153,7 +156,8 @@ static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) {
gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data); gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data);
} }
int wxTreeCtrl::GetCount(void) const { int wxTreeCtrl::GetCount() const
{
int count = 0; int count = 0;
if (m_anchor != NULL) if (m_anchor != NULL)
@@ -161,15 +165,18 @@ int wxTreeCtrl::GetCount(void) const {
return count; return count;
} }
int wxTreeCtrl::GetIndent(void) const { int wxTreeCtrl::GetIndent() const
{
return m_tree->indent_value; return m_tree->indent_value;
} }
void wxTreeCtrl::SetIndent(int indent) { void wxTreeCtrl::SetIndent(int indent)
{
m_tree->indent_value = indent; m_tree->indent_value = indent;
} }
wxImageList *wxTreeCtrl::GetImageList(int which) const { wxImageList *wxTreeCtrl::GetImageList(int which) const
{
if (which == wxIMAGE_LIST_NORMAL) { if (which == wxIMAGE_LIST_NORMAL) {
return m_imageListNormal; return m_imageListNormal;
} }
@@ -180,7 +187,8 @@ wxImageList *wxTreeCtrl::GetImageList(int which) const {
return NULL; return NULL;
} }
void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) { void wxTreeCtrl::SetImageList(wxImageList *imageList, int which)
{
if (which == wxIMAGE_LIST_NORMAL) if (which == wxIMAGE_LIST_NORMAL)
m_imageListNormal = imageList; m_imageListNormal = imageList;
else else
@@ -188,7 +196,8 @@ void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) {
m_imageListState = imageList; m_imageListState = imageList;
} }
long wxTreeCtrl::GetNextItem(long item, int code) const { long wxTreeCtrl::GetNextItem(long item, int code) const
{
switch (code) { switch (code) {
case wxTREE_NEXT_CARET: case wxTREE_NEXT_CARET:
// flag = TVGN_CARET; // flag = TVGN_CARET;
@@ -228,7 +237,8 @@ long wxTreeCtrl::GetNextItem(long item, int code) const {
return 0; return 0;
} }
bool wxTreeCtrl::ItemHasChildren(long item) const { bool wxTreeCtrl::ItemHasChildren(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
int count = 0; int count = 0;
@@ -239,7 +249,8 @@ bool wxTreeCtrl::ItemHasChildren(long item) const {
return (count != 0); return (count != 0);
} }
static GtkTreeItem *findItem(GtkTreeItem *p, long id) { static GtkTreeItem *findItem(GtkTreeItem *p, long id)
{
GtkTreeItem *q; GtkTreeItem *q;
if (((long)gtk_object_get_data(GTK_OBJECT(p), "id")) == id) if (((long)gtk_object_get_data(GTK_OBJECT(p), "id")) == id)
@@ -266,11 +277,13 @@ static GtkTreeItem *findItem(GtkTreeItem *p, long id) {
return NULL; return NULL;
} }
GtkTreeItem *wxTreeCtrl::findGtkTreeItem(long id) const { GtkTreeItem *wxTreeCtrl::findGtkTreeItem(long id) const
{
return findItem(m_anchor, id); return findItem(m_anchor, id);
} }
long wxTreeCtrl::GetChild(long item) const { long wxTreeCtrl::GetChild(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
@@ -284,7 +297,8 @@ long wxTreeCtrl::GetChild(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetParent(long item) const { long wxTreeCtrl::GetParent(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -294,7 +308,8 @@ long wxTreeCtrl::GetParent(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetFirstVisibleItem(void) const { long wxTreeCtrl::GetFirstVisibleItem() const
{
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); GList *list = gtk_container_children(GTK_CONTAINER(m_anchor));
@@ -307,7 +322,8 @@ long wxTreeCtrl::GetFirstVisibleItem(void) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetNextVisibleItem(long item) const { long wxTreeCtrl::GetNextVisibleItem(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
@@ -322,7 +338,8 @@ long wxTreeCtrl::GetNextVisibleItem(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetSelection(void) const { long wxTreeCtrl::GetSelection() const
{
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); GList *list = gtk_container_children(GTK_CONTAINER(m_anchor));
@@ -335,17 +352,19 @@ long wxTreeCtrl::GetSelection(void) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetRootItem(void) const { long wxTreeCtrl::GetRootItem() const
{
return (long)gtk_object_get_data(GTK_OBJECT(m_anchor), "id"); return (long)gtk_object_get_data(GTK_OBJECT(m_anchor), "id");
} }
bool wxTreeCtrl::GetItem(wxTreeItem& info) const { bool wxTreeCtrl::GetItem(wxTreeItem& info) const
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(info.m_itemId); p = findGtkTreeItem(info.m_itemId);
if (p == NULL) { if (p == NULL) {
wxLogSysError("TreeCtrl::GetItem failed"); wxLogError("TreeCtrl::GetItem failed.");
return FALSE; return FALSE;
} }
@@ -354,13 +373,14 @@ bool wxTreeCtrl::GetItem(wxTreeItem& info) const {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::SetItem(wxTreeItem& info) { bool wxTreeCtrl::SetItem(wxTreeItem& info)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(info.m_itemId); p = findGtkTreeItem(info.m_itemId);
if (p == NULL) { if (p == NULL) {
wxLogSysError("TreeCtrl::SetItem failed"); wxLogError("TreeCtrl::SetItem failed.");
return FALSE; return FALSE;
} }
@@ -369,7 +389,8 @@ bool wxTreeCtrl::SetItem(wxTreeItem& info) {
return TRUE; return TRUE;
} }
int wxTreeCtrl::GetItemState(long item, long stateMask) const { int wxTreeCtrl::GetItemState(long item, long stateMask) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_STATE ; info.m_mask = wxTREE_MASK_STATE ;
@@ -382,7 +403,8 @@ int wxTreeCtrl::GetItemState(long item, long stateMask) const {
return info.m_state; return info.m_state;
} }
bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) { bool wxTreeCtrl::SetItemState(long item, long state, long stateMask)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_STATE ; info.m_mask = wxTREE_MASK_STATE ;
@@ -393,7 +415,8 @@ bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) {
return SetItem(info); return SetItem(info);
} }
bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) { bool wxTreeCtrl::SetItemImage(long item, int image, int selImage)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_IMAGE ; info.m_mask = wxTREE_MASK_IMAGE ;
@@ -407,7 +430,8 @@ bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) {
return SetItem(info); return SetItem(info);
} }
wxString wxTreeCtrl::GetItemText(long item) const { wxString wxTreeCtrl::GetItemText(long item) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_TEXT ; info.m_mask = wxTREE_MASK_TEXT ;
@@ -418,7 +442,8 @@ wxString wxTreeCtrl::GetItemText(long item) const {
return info.m_text; return info.m_text;
} }
void wxTreeCtrl::SetItemText(long item, const wxString& str) { void wxTreeCtrl::SetItemText(long item, const wxString& str)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_TEXT ; info.m_mask = wxTREE_MASK_TEXT ;
@@ -428,7 +453,8 @@ void wxTreeCtrl::SetItemText(long item, const wxString& str) {
SetItem(info); SetItem(info);
} }
long wxTreeCtrl::GetItemData(long item) const { long wxTreeCtrl::GetItemData(long item) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_DATA ; info.m_mask = wxTREE_MASK_DATA ;
@@ -439,7 +465,8 @@ long wxTreeCtrl::GetItemData(long item) const {
return info.m_data; return info.m_data;
} }
bool wxTreeCtrl::SetItemData(long item, long data) { bool wxTreeCtrl::SetItemData(long item, long data)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_DATA ; info.m_mask = wxTREE_MASK_DATA ;
@@ -449,7 +476,8 @@ bool wxTreeCtrl::SetItemData(long item, long data) {
return SetItem(info); return SetItem(info);
} }
bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const { bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const
{
/* /*
RECT rect2; RECT rect2;
@@ -463,15 +491,19 @@ bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const
rect.height = rect2.bottom - rect2.left; rect.height = rect2.bottom - rect2.left;
return success; return success;
*/ */
wxFAIL_MSG("Not implemented");
return FALSE; return FALSE;
} }
wxTextCtrl* wxTreeCtrl::GetEditControl(void) const { wxTextCtrl* wxTreeCtrl::GetEditControl() const
return m_textCtrl; {
return m_textCtrl;
} }
// Operations // Operations
bool wxTreeCtrl::DeleteItem(long item) { bool wxTreeCtrl::DeleteItem(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -487,7 +519,8 @@ bool wxTreeCtrl::DeleteItem(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::DeleteChildren(long item) { bool wxTreeCtrl::DeleteChildren(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -499,7 +532,8 @@ bool wxTreeCtrl::DeleteChildren(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::ExpandItem(long item, int action) { bool wxTreeCtrl::ExpandItem(long item, int action)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -535,7 +569,8 @@ bool wxTreeCtrl::ExpandItem(long item, int action) {
return TRUE; return TRUE;
} }
long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) { long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter)
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *item = NULL; GtkTreeItem *item = NULL;
@@ -599,7 +634,8 @@ long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image,
return InsertItem(parent, info, insertAfter); return InsertItem(parent, info, insertAfter);
} }
bool wxTreeCtrl::SelectItem(long item) { bool wxTreeCtrl::SelectItem(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -610,16 +646,21 @@ bool wxTreeCtrl::SelectItem(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::ScrollTo(long item) { bool wxTreeCtrl::ScrollTo(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
bool wxTreeCtrl::DeleteAllItems(void) { bool wxTreeCtrl::DeleteAllItems()
{
gtk_tree_item_remove_subtree(m_anchor); gtk_tree_item_remove_subtree(m_anchor);
return TRUE; return TRUE;
} }
wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) { wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
{
wxASSERT( (textControlClass->IsKindOf(CLASSINFO(wxTextCtrl))) ); wxASSERT( (textControlClass->IsKindOf(CLASSINFO(wxTextCtrl))) );
/* /*
@@ -638,11 +679,14 @@ wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) {
m_textCtrl->SubclassWin((WXHWND) hWnd); m_textCtrl->SubclassWin((WXHWND) hWnd);
*/ */
wxFAIL_MSG("Not implemented");
return m_textCtrl; return m_textCtrl;
} }
// End label editing, optionally cancelling the edit // End label editing, optionally cancelling the edit
bool wxTreeCtrl::EndEditLabel(bool cancel) { bool wxTreeCtrl::EndEditLabel(bool cancel)
{
/* /*
bool success = (TreeView_EndEditLabelNow((HWND) GetHWND(), cancel) != 0); bool success = (TreeView_EndEditLabelNow((HWND) GetHWND(), cancel) != 0);
@@ -655,10 +699,13 @@ bool wxTreeCtrl::EndEditLabel(bool cancel) {
} }
return success; return success;
*/ */
wxFAIL_MSG("Not implemented");
return FALSE; return FALSE;
} }
long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) { long wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
{
/* /*
TV_HITTESTINFO hitTestInfo; TV_HITTESTINFO hitTestInfo;
hitTestInfo.pt.x = (int) point.x; hitTestInfo.pt.x = (int) point.x;
@@ -692,6 +739,8 @@ long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) {
return (long) hitTestInfo.hItem ; return (long) hitTestInfo.hItem ;
*/ */
wxFAIL_MSG("Not implemented");
return 0; return 0;
} }
@@ -701,52 +750,65 @@ wxImageList *wxTreeCtrl::CreateDragImage(long item)
} }
*/ */
bool wxTreeCtrl::SortChildren(long item) { bool wxTreeCtrl::SortChildren(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
bool wxTreeCtrl::EnsureVisible(long item) { bool wxTreeCtrl::EnsureVisible(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
void wxTreeCtrl::SendExpanding(long item) { void wxTreeCtrl::SendExpanding(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendExpanded(long item) { void wxTreeCtrl::SendExpanded(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendCollapsing(long item) { void wxTreeCtrl::SendCollapsing(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendCollapsed(long item) { void wxTreeCtrl::SendCollapsed(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendSelChanging(long item) { void wxTreeCtrl::SendSelChanging(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendSelChanged(long item) { void wxTreeCtrl::SendSelChanged(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
// Tree item structure // Tree item structure
wxTreeItem::wxTreeItem(void) { wxTreeItem::wxTreeItem()
{
m_mask = 0; m_mask = 0;
m_itemId = 0; m_itemId = 0;
m_state = 0; m_state = 0;
@@ -759,7 +821,8 @@ wxTreeItem::wxTreeItem(void) {
// If getFullInfo is TRUE, we explicitly query for more info if we haven't got it all. // If getFullInfo is TRUE, we explicitly query for more info if we haven't got it all.
static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem) { static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem)
{
GtkLabel *l; GtkLabel *l;
char *t; char *t;
@@ -776,7 +839,8 @@ static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem) {
info.m_text = t; info.m_text = t;
} }
static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem) { static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem)
{
GtkTreeItem *item = (*gtkItem); GtkTreeItem *item = (*gtkItem);
if (item == NULL) { if (item == NULL) {
@@ -813,7 +877,6 @@ static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeI
gtk_widget_show(GTK_WIDGET(m_box)); gtk_widget_show(GTK_WIDGET(m_box));
gtk_object_set_data(GTK_OBJECT(item), "id", (gpointer)info.m_itemId); gtk_object_set_data(GTK_OBJECT(item), "id", (gpointer)info.m_itemId);
printf("owner = %p\n", owner);
gtk_object_set_data(GTK_OBJECT(item), "owner", owner); gtk_object_set_data(GTK_OBJECT(item), "owner", owner);
(*gtkItem) = item; (*gtkItem) = item;
} }
@@ -822,8 +885,9 @@ printf("owner = %p\n", owner);
// Tree event // Tree event
IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent)
wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): wxTreeEvent::wxTreeEvent(wxEventType commandType, int id)
wxCommandEvent(commandType, id) { : wxCommandEvent(commandType, id)
{
m_code = 0; m_code = 0;
m_oldItem = 0; m_oldItem = 0;
} }

View File

@@ -6,7 +6,7 @@
// Created: 07/05/98 // Created: 07/05/98
// RCS-ID: $Id$ // RCS-ID: $Id$
// Copyright: (c) Denis Pershin // Copyright: (c) Denis Pershin
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__ #ifdef __GNUG__
@@ -40,7 +40,8 @@ static void gtk_treeitem_expand_callback(GtkWidget *WXUNUSED(widget), wxTreeItem
static void gtk_treeitem_collapse_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem); static void gtk_treeitem_collapse_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem);
static void gtk_treeitem_select_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem); static void gtk_treeitem_select_callback( GtkWidget *WXUNUSED(widget), wxTreeItem *treeitem);
static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -50,7 +51,8 @@ static void gtk_treeitem_expand_callback(GtkWidget *widget, wxTreeItem *treeitem
owner->SendExpanded(id); owner->SendExpanded(id);
}; };
static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -60,7 +62,8 @@ static void gtk_treeitem_collapse_callback(GtkWidget *widget, wxTreeItem *treeit
owner->SendCollapsed(id); owner->SendCollapsed(id);
}; };
static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem) { static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem)
{
wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner"); wxTreeCtrl *owner = (wxTreeCtrl *)gtk_object_get_data(GTK_OBJECT(widget), "owner");
if (owner == NULL) if (owner == NULL)
return; return;
@@ -71,12 +74,12 @@ static void gtk_treeitem_select_callback(GtkWidget *widget, wxTreeItem *treeitem
} }
#if !USE_SHARED_LIBRARY #if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxTreeCtrl, wxControl)
IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject) IMPLEMENT_DYNAMIC_CLASS(wxTreeItem, wxObject)
#endif #endif
wxTreeCtrl::wxTreeCtrl(void) { wxTreeCtrl::wxTreeCtrl()
{
m_imageListNormal = NULL; m_imageListNormal = NULL;
m_imageListState = NULL; m_imageListState = NULL;
m_textCtrl = NULL; m_textCtrl = NULL;
@@ -115,12 +118,11 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, con
m_widget = gtk_scrolled_window_new(NULL, NULL); m_widget = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget), gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(m_widget),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
m_tree = GTK_TREE(gtk_tree_new()); m_tree = GTK_TREE(gtk_tree_new());
gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree)); gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree));
gtk_widget_set_parent(GTK_WIDGET(m_tree), m_widget);
gtk_widget_show(GTK_WIDGET(m_tree)); gtk_widget_show(GTK_WIDGET(m_tree));
wxSystemSettings settings; wxSystemSettings settings;
@@ -139,13 +141,14 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, con
return TRUE; return TRUE;
} }
wxTreeCtrl::~wxTreeCtrl(void) { wxTreeCtrl::~wxTreeCtrl()
if (m_textCtrl) {
delete m_textCtrl; wxDELETE(m_textCtrl);
} }
// Attributes // Attributes
static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) { static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data)
{
int count = (*((int *)data)); int count = (*((int *)data));
count++; count++;
@@ -153,7 +156,8 @@ static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data) {
gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data); gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_count_callback, data);
} }
int wxTreeCtrl::GetCount(void) const { int wxTreeCtrl::GetCount() const
{
int count = 0; int count = 0;
if (m_anchor != NULL) if (m_anchor != NULL)
@@ -161,15 +165,18 @@ int wxTreeCtrl::GetCount(void) const {
return count; return count;
} }
int wxTreeCtrl::GetIndent(void) const { int wxTreeCtrl::GetIndent() const
{
return m_tree->indent_value; return m_tree->indent_value;
} }
void wxTreeCtrl::SetIndent(int indent) { void wxTreeCtrl::SetIndent(int indent)
{
m_tree->indent_value = indent; m_tree->indent_value = indent;
} }
wxImageList *wxTreeCtrl::GetImageList(int which) const { wxImageList *wxTreeCtrl::GetImageList(int which) const
{
if (which == wxIMAGE_LIST_NORMAL) { if (which == wxIMAGE_LIST_NORMAL) {
return m_imageListNormal; return m_imageListNormal;
} }
@@ -180,7 +187,8 @@ wxImageList *wxTreeCtrl::GetImageList(int which) const {
return NULL; return NULL;
} }
void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) { void wxTreeCtrl::SetImageList(wxImageList *imageList, int which)
{
if (which == wxIMAGE_LIST_NORMAL) if (which == wxIMAGE_LIST_NORMAL)
m_imageListNormal = imageList; m_imageListNormal = imageList;
else else
@@ -188,7 +196,8 @@ void wxTreeCtrl::SetImageList(wxImageList *imageList, int which) {
m_imageListState = imageList; m_imageListState = imageList;
} }
long wxTreeCtrl::GetNextItem(long item, int code) const { long wxTreeCtrl::GetNextItem(long item, int code) const
{
switch (code) { switch (code) {
case wxTREE_NEXT_CARET: case wxTREE_NEXT_CARET:
// flag = TVGN_CARET; // flag = TVGN_CARET;
@@ -228,7 +237,8 @@ long wxTreeCtrl::GetNextItem(long item, int code) const {
return 0; return 0;
} }
bool wxTreeCtrl::ItemHasChildren(long item) const { bool wxTreeCtrl::ItemHasChildren(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
int count = 0; int count = 0;
@@ -239,7 +249,8 @@ bool wxTreeCtrl::ItemHasChildren(long item) const {
return (count != 0); return (count != 0);
} }
static GtkTreeItem *findItem(GtkTreeItem *p, long id) { static GtkTreeItem *findItem(GtkTreeItem *p, long id)
{
GtkTreeItem *q; GtkTreeItem *q;
if (((long)gtk_object_get_data(GTK_OBJECT(p), "id")) == id) if (((long)gtk_object_get_data(GTK_OBJECT(p), "id")) == id)
@@ -266,11 +277,13 @@ static GtkTreeItem *findItem(GtkTreeItem *p, long id) {
return NULL; return NULL;
} }
GtkTreeItem *wxTreeCtrl::findGtkTreeItem(long id) const { GtkTreeItem *wxTreeCtrl::findGtkTreeItem(long id) const
{
return findItem(m_anchor, id); return findItem(m_anchor, id);
} }
long wxTreeCtrl::GetChild(long item) const { long wxTreeCtrl::GetChild(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
@@ -284,7 +297,8 @@ long wxTreeCtrl::GetChild(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetParent(long item) const { long wxTreeCtrl::GetParent(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -294,7 +308,8 @@ long wxTreeCtrl::GetParent(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetFirstVisibleItem(void) const { long wxTreeCtrl::GetFirstVisibleItem() const
{
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); GList *list = gtk_container_children(GTK_CONTAINER(m_anchor));
@@ -307,7 +322,8 @@ long wxTreeCtrl::GetFirstVisibleItem(void) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetNextVisibleItem(long item) const { long wxTreeCtrl::GetNextVisibleItem(long item) const
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
@@ -322,7 +338,8 @@ long wxTreeCtrl::GetNextVisibleItem(long item) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetSelection(void) const { long wxTreeCtrl::GetSelection() const
{
GtkTreeItem *next = NULL; GtkTreeItem *next = NULL;
GList *list = gtk_container_children(GTK_CONTAINER(m_anchor)); GList *list = gtk_container_children(GTK_CONTAINER(m_anchor));
@@ -335,17 +352,19 @@ long wxTreeCtrl::GetSelection(void) const {
return (-1); return (-1);
} }
long wxTreeCtrl::GetRootItem(void) const { long wxTreeCtrl::GetRootItem() const
{
return (long)gtk_object_get_data(GTK_OBJECT(m_anchor), "id"); return (long)gtk_object_get_data(GTK_OBJECT(m_anchor), "id");
} }
bool wxTreeCtrl::GetItem(wxTreeItem& info) const { bool wxTreeCtrl::GetItem(wxTreeItem& info) const
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(info.m_itemId); p = findGtkTreeItem(info.m_itemId);
if (p == NULL) { if (p == NULL) {
wxLogSysError("TreeCtrl::GetItem failed"); wxLogError("TreeCtrl::GetItem failed.");
return FALSE; return FALSE;
} }
@@ -354,13 +373,14 @@ bool wxTreeCtrl::GetItem(wxTreeItem& info) const {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::SetItem(wxTreeItem& info) { bool wxTreeCtrl::SetItem(wxTreeItem& info)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(info.m_itemId); p = findGtkTreeItem(info.m_itemId);
if (p == NULL) { if (p == NULL) {
wxLogSysError("TreeCtrl::SetItem failed"); wxLogError("TreeCtrl::SetItem failed.");
return FALSE; return FALSE;
} }
@@ -369,7 +389,8 @@ bool wxTreeCtrl::SetItem(wxTreeItem& info) {
return TRUE; return TRUE;
} }
int wxTreeCtrl::GetItemState(long item, long stateMask) const { int wxTreeCtrl::GetItemState(long item, long stateMask) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_STATE ; info.m_mask = wxTREE_MASK_STATE ;
@@ -382,7 +403,8 @@ int wxTreeCtrl::GetItemState(long item, long stateMask) const {
return info.m_state; return info.m_state;
} }
bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) { bool wxTreeCtrl::SetItemState(long item, long state, long stateMask)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_STATE ; info.m_mask = wxTREE_MASK_STATE ;
@@ -393,7 +415,8 @@ bool wxTreeCtrl::SetItemState(long item, long state, long stateMask) {
return SetItem(info); return SetItem(info);
} }
bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) { bool wxTreeCtrl::SetItemImage(long item, int image, int selImage)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_IMAGE ; info.m_mask = wxTREE_MASK_IMAGE ;
@@ -407,7 +430,8 @@ bool wxTreeCtrl::SetItemImage(long item, int image, int selImage) {
return SetItem(info); return SetItem(info);
} }
wxString wxTreeCtrl::GetItemText(long item) const { wxString wxTreeCtrl::GetItemText(long item) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_TEXT ; info.m_mask = wxTREE_MASK_TEXT ;
@@ -418,7 +442,8 @@ wxString wxTreeCtrl::GetItemText(long item) const {
return info.m_text; return info.m_text;
} }
void wxTreeCtrl::SetItemText(long item, const wxString& str) { void wxTreeCtrl::SetItemText(long item, const wxString& str)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_TEXT ; info.m_mask = wxTREE_MASK_TEXT ;
@@ -428,7 +453,8 @@ void wxTreeCtrl::SetItemText(long item, const wxString& str) {
SetItem(info); SetItem(info);
} }
long wxTreeCtrl::GetItemData(long item) const { long wxTreeCtrl::GetItemData(long item) const
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_DATA ; info.m_mask = wxTREE_MASK_DATA ;
@@ -439,7 +465,8 @@ long wxTreeCtrl::GetItemData(long item) const {
return info.m_data; return info.m_data;
} }
bool wxTreeCtrl::SetItemData(long item, long data) { bool wxTreeCtrl::SetItemData(long item, long data)
{
wxTreeItem info; wxTreeItem info;
info.m_mask = wxTREE_MASK_DATA ; info.m_mask = wxTREE_MASK_DATA ;
@@ -449,7 +476,8 @@ bool wxTreeCtrl::SetItemData(long item, long data) {
return SetItem(info); return SetItem(info);
} }
bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const { bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const
{
/* /*
RECT rect2; RECT rect2;
@@ -463,15 +491,19 @@ bool wxTreeCtrl::GetItemRect(long item, wxRectangle& rect, bool textOnly) const
rect.height = rect2.bottom - rect2.left; rect.height = rect2.bottom - rect2.left;
return success; return success;
*/ */
wxFAIL_MSG("Not implemented");
return FALSE; return FALSE;
} }
wxTextCtrl* wxTreeCtrl::GetEditControl(void) const { wxTextCtrl* wxTreeCtrl::GetEditControl() const
return m_textCtrl; {
return m_textCtrl;
} }
// Operations // Operations
bool wxTreeCtrl::DeleteItem(long item) { bool wxTreeCtrl::DeleteItem(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -487,7 +519,8 @@ bool wxTreeCtrl::DeleteItem(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::DeleteChildren(long item) { bool wxTreeCtrl::DeleteChildren(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -499,7 +532,8 @@ bool wxTreeCtrl::DeleteChildren(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::ExpandItem(long item, int action) { bool wxTreeCtrl::ExpandItem(long item, int action)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -535,7 +569,8 @@ bool wxTreeCtrl::ExpandItem(long item, int action) {
return TRUE; return TRUE;
} }
long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter) { long wxTreeCtrl::InsertItem(long parent, wxTreeItem& info, long insertAfter)
{
GtkTreeItem *p; GtkTreeItem *p;
GtkTreeItem *item = NULL; GtkTreeItem *item = NULL;
@@ -599,7 +634,8 @@ long wxTreeCtrl::InsertItem(long parent, const wxString& label, int image,
return InsertItem(parent, info, insertAfter); return InsertItem(parent, info, insertAfter);
} }
bool wxTreeCtrl::SelectItem(long item) { bool wxTreeCtrl::SelectItem(long item)
{
GtkTreeItem *p; GtkTreeItem *p;
p = findGtkTreeItem(item); p = findGtkTreeItem(item);
@@ -610,16 +646,21 @@ bool wxTreeCtrl::SelectItem(long item) {
return TRUE; return TRUE;
} }
bool wxTreeCtrl::ScrollTo(long item) { bool wxTreeCtrl::ScrollTo(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
bool wxTreeCtrl::DeleteAllItems(void) { bool wxTreeCtrl::DeleteAllItems()
{
gtk_tree_item_remove_subtree(m_anchor); gtk_tree_item_remove_subtree(m_anchor);
return TRUE; return TRUE;
} }
wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) { wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass)
{
wxASSERT( (textControlClass->IsKindOf(CLASSINFO(wxTextCtrl))) ); wxASSERT( (textControlClass->IsKindOf(CLASSINFO(wxTextCtrl))) );
/* /*
@@ -638,11 +679,14 @@ wxTextCtrl* wxTreeCtrl::EditLabel(long item, wxClassInfo* textControlClass) {
m_textCtrl->SubclassWin((WXHWND) hWnd); m_textCtrl->SubclassWin((WXHWND) hWnd);
*/ */
wxFAIL_MSG("Not implemented");
return m_textCtrl; return m_textCtrl;
} }
// End label editing, optionally cancelling the edit // End label editing, optionally cancelling the edit
bool wxTreeCtrl::EndEditLabel(bool cancel) { bool wxTreeCtrl::EndEditLabel(bool cancel)
{
/* /*
bool success = (TreeView_EndEditLabelNow((HWND) GetHWND(), cancel) != 0); bool success = (TreeView_EndEditLabelNow((HWND) GetHWND(), cancel) != 0);
@@ -655,10 +699,13 @@ bool wxTreeCtrl::EndEditLabel(bool cancel) {
} }
return success; return success;
*/ */
wxFAIL_MSG("Not implemented");
return FALSE; return FALSE;
} }
long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) { long wxTreeCtrl::HitTest(const wxPoint& point, int& flags)
{
/* /*
TV_HITTESTINFO hitTestInfo; TV_HITTESTINFO hitTestInfo;
hitTestInfo.pt.x = (int) point.x; hitTestInfo.pt.x = (int) point.x;
@@ -692,6 +739,8 @@ long wxTreeCtrl::HitTest(const wxPoint& point, int& flags) {
return (long) hitTestInfo.hItem ; return (long) hitTestInfo.hItem ;
*/ */
wxFAIL_MSG("Not implemented");
return 0; return 0;
} }
@@ -701,52 +750,65 @@ wxImageList *wxTreeCtrl::CreateDragImage(long item)
} }
*/ */
bool wxTreeCtrl::SortChildren(long item) { bool wxTreeCtrl::SortChildren(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
bool wxTreeCtrl::EnsureVisible(long item) { bool wxTreeCtrl::EnsureVisible(long item)
{
wxFAIL_MSG("Not implemented");
return FALSE; // Still unimplemented return FALSE; // Still unimplemented
} }
void wxTreeCtrl::SendExpanding(long item) { void wxTreeCtrl::SendExpanding(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendExpanded(long item) { void wxTreeCtrl::SendExpanded(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_EXPANDED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendCollapsing(long item) { void wxTreeCtrl::SendCollapsing(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendCollapsed(long item) { void wxTreeCtrl::SendCollapsed(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_ITEM_COLLAPSED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendSelChanging(long item) { void wxTreeCtrl::SendSelChanging(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGED, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGED, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
void wxTreeCtrl::SendSelChanged(long item) { void wxTreeCtrl::SendSelChanged(long item)
{
wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, GetId()); wxTreeEvent event(wxEVT_COMMAND_TREE_SEL_CHANGING, GetId());
event.SetEventObject(this); event.SetEventObject(this);
ProcessEvent(event); ProcessEvent(event);
} }
// Tree item structure // Tree item structure
wxTreeItem::wxTreeItem(void) { wxTreeItem::wxTreeItem()
{
m_mask = 0; m_mask = 0;
m_itemId = 0; m_itemId = 0;
m_state = 0; m_state = 0;
@@ -759,7 +821,8 @@ wxTreeItem::wxTreeItem(void) {
// If getFullInfo is TRUE, we explicitly query for more info if we haven't got it all. // If getFullInfo is TRUE, we explicitly query for more info if we haven't got it all.
static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem) { static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem)
{
GtkLabel *l; GtkLabel *l;
char *t; char *t;
@@ -776,7 +839,8 @@ static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem) {
info.m_text = t; info.m_text = t;
} }
static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem) { static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem)
{
GtkTreeItem *item = (*gtkItem); GtkTreeItem *item = (*gtkItem);
if (item == NULL) { if (item == NULL) {
@@ -813,7 +877,6 @@ static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeI
gtk_widget_show(GTK_WIDGET(m_box)); gtk_widget_show(GTK_WIDGET(m_box));
gtk_object_set_data(GTK_OBJECT(item), "id", (gpointer)info.m_itemId); gtk_object_set_data(GTK_OBJECT(item), "id", (gpointer)info.m_itemId);
printf("owner = %p\n", owner);
gtk_object_set_data(GTK_OBJECT(item), "owner", owner); gtk_object_set_data(GTK_OBJECT(item), "owner", owner);
(*gtkItem) = item; (*gtkItem) = item;
} }
@@ -822,8 +885,9 @@ printf("owner = %p\n", owner);
// Tree event // Tree event
IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent) IMPLEMENT_DYNAMIC_CLASS(wxTreeEvent, wxCommandEvent)
wxTreeEvent::wxTreeEvent(wxEventType commandType, int id): wxTreeEvent::wxTreeEvent(wxEventType commandType, int id)
wxCommandEvent(commandType, id) { : wxCommandEvent(commandType, id)
{
m_code = 0; m_code = 0;
m_oldItem = 0; m_oldItem = 0;
} }