X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/559c42a5b23f07b4303333631018b8b4df661d00..7bad1010c228665dfbebf4fb28839dd255b5072d:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index e2db524fd8..49202a8553 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -111,7 +111,7 @@ public: wxDataViewCtrl* GetOwner() { return m_owner; } GtkWxTreeModel* GetGtkModel() { return m_gtk_model; } - // item can be deleted already in the model + // item can be deleted already in the model int GetIndexOf( const wxDataViewItem &parent, const wxDataViewItem &item ); protected: @@ -1419,7 +1419,7 @@ bool wxGtkDataViewModelNotifier::ItemDeleted( const wxDataViewItem &parent, cons int index = m_owner->GtkGetInternal()->GetIndexOf( parent, item ); gtk_tree_path_append_index( path, index ); #endif - + gtk_tree_model_row_deleted( GTK_TREE_MODEL(m_wxgtk_model), path ); gtk_tree_path_free (path); @@ -2407,7 +2407,7 @@ bool wxDataViewChoiceRenderer::SetValue( const wxVariant &value ) { GValue gvalue = { 0, }; g_value_init( &gvalue, G_TYPE_STRING ); - g_value_set_string( &gvalue, wxGTK_CONV_FONT( value.GetString(), GetOwner()->GetOwner()->GetFont() ) ); + g_value_set_string( &gvalue, wxGTK_CONV( value.GetString() ) ); g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue ); g_value_unset( &gvalue ); } @@ -2426,8 +2426,7 @@ bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const GValue gvalue = { 0, }; g_value_init( &gvalue, G_TYPE_STRING ); g_object_get_property( G_OBJECT(m_renderer), "text", &gvalue ); - wxString temp = wxGTK_CONV_BACK_FONT( g_value_get_string( &gvalue ), - const_cast(this)->GetOwner()->GetOwner()->GetFont() ); + wxString temp = wxGTK_CONV_BACK( g_value_get_string( &gvalue ) ); g_value_unset( &gvalue ); value = temp; @@ -2462,6 +2461,48 @@ void wxDataViewChoiceRenderer::SetAlignment( int align ) g_value_unset( &gvalue ); } +// ---------------------------------------------------------------------------- +// wxDataViewChoiceByIndexRenderer +// ---------------------------------------------------------------------------- + +wxDataViewChoiceByIndexRenderer::wxDataViewChoiceByIndexRenderer( const wxArrayString &choices, + wxDataViewCellMode mode, int alignment ) : + wxDataViewChoiceRenderer( choices, mode, alignment ) +{ +} + +void wxDataViewChoiceByIndexRenderer::GtkOnTextEdited(const gchar *itempath, const wxString& str) +{ + wxVariant value( (long) GetChoices().Index( str ) ); + + if (!Validate( value )) + return; + + GtkTreePath *path = gtk_tree_path_new_from_string( itempath ); + GtkTreeIter iter; + GetOwner()->GetOwner()->GtkGetInternal()->get_iter( &iter, path ); + wxDataViewItem item( (void*) iter.user_data );; + gtk_tree_path_free( path ); + + GtkOnCellChanged(value, item, GetOwner()->GetModelColumn()); +} + +bool wxDataViewChoiceByIndexRenderer::SetValue( const wxVariant &value ) +{ + wxVariant string_value = GetChoice( value.GetLong() ); + return wxDataViewChoiceRenderer::SetValue( string_value ); +} + +bool wxDataViewChoiceByIndexRenderer::GetValue( wxVariant &value ) const +{ + wxVariant string_value; + if (!wxDataViewChoiceRenderer::GetValue( string_value )) + return false; + + value = (long) GetChoices().Index( string_value.GetString() ); + return true; +} + // --------------------------------------------------------- // wxDataViewDateRenderer // --------------------------------------------------------- @@ -3532,7 +3573,7 @@ GtkTreePath *wxDataViewCtrlInternal::get_path( GtkTreeIter *iter ) // iter is root, add nothing if (!iter->user_data) return retval; - + // user_data is just the index +1 int i = ( (wxUIntPtr) iter->user_data ) -1; gtk_tree_path_append_index (retval, i); @@ -3626,7 +3667,7 @@ gboolean wxDataViewCtrlInternal::iter_children( GtkTreeIter *iter, GtkTreeIter * return TRUE; } - + wxDataViewItem item; if (parent) item = wxDataViewItem( (void*) parent->user_data ); @@ -3777,13 +3818,12 @@ gboolean wxDataViewCtrlInternal::iter_parent( GtkTreeIter *iter, GtkTreeIter *ch } } -// item can be deleted already in the model +// item can be deleted already in the model int wxDataViewCtrlInternal::GetIndexOf( const wxDataViewItem &parent, const wxDataViewItem &item ) { if (m_wx_model->IsVirtualListModel()) { - int index = ((int)(item.GetID())) - 1; - return index; + return wxPtrToUInt(item.GetID()) - 1; } else {