X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c9d9f242e45a5d8399d52f5709b560a63dd804fc..2a29700ecf3d6862db16c5f5c9086a698a7ff247:/src/gtk1/treectrl.cpp diff --git a/src/gtk1/treectrl.cpp b/src/gtk1/treectrl.cpp index 8d22ff32a7..b1df8d5abc 100644 --- a/src/gtk1/treectrl.cpp +++ b/src/gtk1/treectrl.cpp @@ -6,7 +6,7 @@ // Created: 07/05/98 // RCS-ID: $Id$ // Copyright: (c) Denis Pershin -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifdef __GNUG__ @@ -32,8 +32,11 @@ //static void wxConvertToGtkTreeItem(wxTreeCtrl *owner, wxTreeItem& info, GtkTreeItem **gtkItem); //static void wxConvertFromGtkTreeItem(wxTreeItem& info, GtkTreeItem *gtkItem); + static void gtk_treectrl_count_callback (GtkWidget *widget, gpointer data); static void gtk_treectrl_first_selected_callback(GtkWidget *widget, gpointer data); +static void gtk_treectrl_first_visible_callback(GtkWidget *widget, gpointer data); + // static void gtk_treectrl_next_callback (GtkWidget *widget, gpointer data); // static void gtk_treectrl_next_visible_callback (GtkWidget *widget, gpointer data); // static void gtk_treectrl_next_selected_callback (GtkWidget *widget, gpointer data); @@ -107,7 +110,7 @@ bool wxTreeCtrl::Create(wxWindow *parent, wxWindowID id, const wxPoint& pos, y = 0; m_needParent = TRUE; - + printf("precreate\n"); PreCreation( parent, id, pos, size, style, name ); @@ -124,20 +127,22 @@ printf("3\n"); printf("4\n"); gtk_container_add(GTK_CONTAINER(m_widget), GTK_WIDGET(m_tree)); printf("5\n"); -// gtk_widget_set_parent(GTK_WIDGET(m_tree), m_widget); -printf("6\n"); gtk_widget_show(GTK_WIDGET(m_tree)); SetName(name); SetValidator(validator); +printf("Robert's new insertion code :-)\n"); + m_parent->AddChild( this ); + (m_parent->m_insertCallback)( m_parent, this ); + printf("postcreate\n"); PostCreation(); gtk_widget_realize(GTK_WIDGET(m_tree)); Show(TRUE); - + return TRUE; } @@ -343,6 +348,16 @@ wxTreeItemId wxTreeCtrl::GetNextChild(const wxTreeItemId& item, long& cookie) co return GTK_TREE_ITEM(g_list_nth(GTK_TREE(parent)->children, cookie)->data); } +wxTreeItemId wxTreeCtrl::GetLastChild(const wxTreeItemId& item) const +{ + GtkTreeItem *p = (GtkTreeItem *)item; + GtkWidget *parent = GTK_WIDGET(p)->parent; + + wxCHECK_MSG( GTK_IS_TREE(parent), NULL, "invalid tree item" ); + + return GTK_TREE_ITEM(g_list_last(GTK_TREE(parent)->children)->data); +} + wxTreeItemId wxTreeCtrl::GetNextSibling(const wxTreeItemId& item) const { GtkTreeItem *p = (GtkTreeItem *)item; GtkWidget *parent = GTK_WIDGET(p)->parent; @@ -464,13 +479,13 @@ wxTreeItemId wxTreeCtrl::InsertItem(const wxTreeItemId& parent, wxTreeItemId wxTreeCtrl::AppendItem(const wxTreeItemId& parent, const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { + wxTreeItemData *data) { return p_InsertItem(parent, text, image, selectedImage, data); } wxTreeItemId wxTreeCtrl::p_InsertItem(GtkTreeItem *p, const wxString& text, int image, int selectedImage, - wxTreeItemData *data) { + wxTreeItemData *data) { GtkTreeItem *item; printf("begin insert\n"); @@ -590,8 +605,28 @@ void wxTreeCtrl::Toggle(const wxTreeItemId& item) { gtk_tree_item_expand(GTK_TREE_ITEM((GtkTreeItem *)item)); } +static void gtk_treectrl_unselect_callback(GtkWidget *widget, gpointer data) { + GtkTreeItem *p; + + GtkTree *tree = GTK_TREE(GTK_TREE_ITEM(widget)->subtree); + + if (tree->selection != NULL) { + guint len = g_list_length(tree->selection); + for (guint i=0; iselection, i)->data); + gtk_tree_unselect_child(tree, GTK_WIDGET(p)); + } + } + + if (GTK_IS_CONTAINER(widget)) + gtk_container_foreach(GTK_CONTAINER(widget), gtk_treectrl_unselect_callback, data); +} + void wxTreeCtrl::Unselect() { -#warning "Need to implement Unselect" + if (m_anchor == NULL) + return; + + gtk_treectrl_unselect_callback(GTK_WIDGET(m_anchor), NULL); } void wxTreeCtrl::SelectItem(const wxTreeItemId& item) { @@ -613,7 +648,23 @@ wxTextCtrl* wxTreeCtrl::EditLabel(const wxTreeItemId& item, wxClassInfo* textControlClass) { wxASSERT( textControlClass->IsKindOf(CLASSINFO(wxTextCtrl)) ); #warning "Need to implement EditLabel" - return m_textCtrl; +/* + char *s; + m_editItem = item; + + GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)item), "w_label"); + gtk_label_get(m_label, &s); + + m_textCtrl = new wxTextCtrl(this, -1, s); +// m_textCtrl->SetValue(s); + + gtk_object_set_data(GTK_OBJECT((GtkTreeItem *)item), "w_edit", m_textCtrl->m_widget); + + gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)item), GTK_WIDGET(m_label)); + gtk_container_add(GTK_CONTAINER((GtkTreeItem *)item), m_textCtrl->m_widget); + +*/ + return m_textCtrl; } wxTextCtrl* wxTreeCtrl::GetEditControl() const { @@ -622,6 +673,18 @@ wxTextCtrl* wxTreeCtrl::GetEditControl() const { void wxTreeCtrl::EndEditLabel(const wxTreeItemId& item, bool discardChanges) { #warning "Need to implement EndEditLabel" +/* + GtkLabel *m_label = (GtkLabel *)gtk_object_get_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_label"); + gtk_label_set(m_label, m_textCtrl->GetValue()); + + gtk_object_remove_data(GTK_OBJECT((GtkTreeItem *)m_editItem), "w_edit"); + + gtk_container_remove(GTK_CONTAINER((GtkTreeItem *)m_editItem), m_textCtrl->m_widget); + gtk_container_add(GTK_CONTAINER((GtkTreeItem *)m_editItem), GTK_WIDGET(m_label)); + + delete m_textCtrl; + m_textCtrl = NULL; +*/ } void wxTreeCtrl::ExpandItem(const wxTreeItemId& item, int action) { @@ -666,7 +729,7 @@ long wxTreeCtrl::GetChild(long item) const { if (next != NULL) return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - + return (-1); } @@ -679,7 +742,7 @@ long wxTreeCtrl::GetFirstVisibleItem(void) const { if (next != NULL) return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - + return (-1); } @@ -694,7 +757,7 @@ long wxTreeCtrl::GetNextVisibleItem(long item) const { if (next != NULL) return (long)gtk_object_get_data(GTK_OBJECT(next), "id"); - + return (-1); }