X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/31fb32e137a12d99dbf989b095782c3c6a6322c2..1a4b6b97b1141a81a129baa34a50d2835d5ec003:/src/gtk/dataview.cpp diff --git a/src/gtk/dataview.cpp b/src/gtk/dataview.cpp index 7d4d4eafb0..37a761a59f 100644 --- a/src/gtk/dataview.cpp +++ b/src/gtk/dataview.cpp @@ -251,6 +251,10 @@ wxgtk_list_store_get_column_type (GtkTreeModel *tree_model, if (wxtype == wxT("string")) gtype = G_TYPE_STRING; + else + { + wxFAIL_MSG( _T("non-string columns not supported yet") ); + } return gtype; } @@ -305,33 +309,17 @@ wxgtk_list_store_get_value (GtkTreeModel *tree_model, { wxVariant variant; g_value_init( value, G_TYPE_STRING ); - model->GetValue( variant, (unsigned int) column, (unsigned int) iter->user_data ); - g_value_set_string( value, wxGTK_CONV(variant.GetString()) ); + model->GetValue( variant, + (unsigned int) column, + (unsigned int) iter->user_data ); + + // FIXME: we should support different encodings here + g_value_set_string( value, wxGTK_CONV_SYS(variant.GetString()) ); } else { + wxFAIL_MSG( _T("non-string columns not supported yet") ); } - -#if 0 - GtkTreeDataList *list; - gint tmp_column = column; - - g_return_if_fail (column < GTK_LIST_STORE (tree_model)->n_columns); - g_return_if_fail (GTK_LIST_STORE (tree_model)->stamp == iter->stamp); - - list = G_SLIST (iter->user_data)->data; - - while (tmp_column-- > 0 && list) - list = list->next; - - if (list == NULL) - g_value_init (value, GTK_LIST_STORE (tree_model)->column_headers[column]); - else - _gtk_tree_data_list_node_to_value (list, - GTK_LIST_STORE (tree_model)->column_headers[column], - value); -#endif - } static gboolean @@ -946,7 +934,7 @@ bool wxDataViewTextRenderer::SetValue( const wxVariant &value ) GValue gvalue = { 0, }; g_value_init( &gvalue, G_TYPE_STRING ); - g_value_set_string( &gvalue, wxGTK_CONV( tmp ) ); + g_value_set_string( &gvalue, wxGTK_CONV_FONT( tmp, GetOwner()->GetOwner()->GetFont() ) ); g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue ); g_value_unset( &gvalue ); @@ -1221,7 +1209,9 @@ wxDataViewProgressRenderer::wxDataViewProgressRenderer( const wxString &label, GValue gvalue = { 0, }; g_value_init( &gvalue, G_TYPE_STRING ); - g_value_set_boolean( &gvalue, wxGTK_CONV(m_label) ); + + // FIXME: font encoding support + g_value_set_string( &gvalue, wxGTK_CONV_SYS(m_label) ); g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue ); g_value_unset( &gvalue ); } @@ -1242,10 +1232,10 @@ bool wxDataViewProgressRenderer::SetValue( const wxVariant &value ) #ifdef __WXGTK26__ if (!gtk_check_version(2,6,0)) { - gint tmp = (int) value; + gint tmp = (long) value; GValue gvalue = { 0, }; g_value_init( &gvalue, G_TYPE_INT ); - g_value_set_boolean( &gvalue, tmp ); + g_value_set_int( &gvalue, tmp ); g_object_set_property( G_OBJECT(m_renderer), "value", &gvalue ); g_value_unset( &gvalue ); } @@ -1463,10 +1453,11 @@ wxDataViewColumn::wxDataViewColumn( const wxString &title, wxDataViewRenderer *c gtk_tree_view_column_set_sort_indicator( column, true ); if (width > 0) - { gtk_tree_view_column_set_fixed_width( column, width ); - gtk_tree_view_column_set_sizing( column, GTK_TREE_VIEW_COLUMN_FIXED ); - } + else + gtk_tree_view_column_set_fixed_width( column, 70 ); // FIXME + + gtk_tree_view_column_set_sizing( column, GTK_TREE_VIEW_COLUMN_FIXED ); gtk_tree_view_column_pack_end( column, renderer, FALSE ); @@ -1496,10 +1487,11 @@ wxDataViewColumn::wxDataViewColumn( const wxBitmap &bitmap, wxDataViewRenderer * gtk_tree_view_column_set_sort_indicator( column, true ); if (width > 0) - { gtk_tree_view_column_set_fixed_width( column, width ); - gtk_tree_view_column_set_sizing( column, GTK_TREE_VIEW_COLUMN_FIXED ); - } + else + gtk_tree_view_column_set_fixed_width( column, 70 ); // FIXME + + gtk_tree_view_column_set_sizing( column, GTK_TREE_VIEW_COLUMN_FIXED ); gtk_tree_view_column_pack_end( column, renderer, FALSE ); @@ -1529,6 +1521,15 @@ void wxDataViewColumn::OnInternalIdle() } } +void wxDataViewColumn::SetOwner( wxDataViewCtrl *owner ) +{ + wxDataViewColumnBase::SetOwner( owner ); + + GtkTreeViewColumn *column = (GtkTreeViewColumn *)m_column; + + gtk_tree_view_column_set_title( column, wxGTK_CONV_FONT(GetTitle(), GetOwner()->GetFont() ) ); +} + void wxDataViewColumn::SetTitle( const wxString &title ) { wxDataViewColumnBase::SetTitle( title ); @@ -1544,7 +1545,10 @@ void wxDataViewColumn::SetTitle( const wxString &title ) m_isConnected = false; } - gtk_tree_view_column_set_title( column, wxGTK_CONV(title) ); + // FIXME: can it really happen that we don't have the owner here?? + wxDataViewCtrl *ctrl = GetOwner(); + gtk_tree_view_column_set_title( column, ctrl ? wxGTK_CONV_FONT(title, ctrl->GetFont()) + : wxGTK_CONV_SYS(title) ); gtk_tree_view_column_set_widget( column, NULL ); } @@ -1646,6 +1650,9 @@ int wxDataViewColumn::GetFixedWidth() static void wxdataview_selection_changed_callback( GtkTreeSelection* selection, wxDataViewCtrl *dv ) { + if (!GTK_WIDGET_REALIZED(dv->m_widget)) + return; + wxDataViewEvent event( wxEVT_COMMAND_DATAVIEW_ROW_SELECTED, dv->GetId() ); event.SetRow( dv->GetSelection() ); event.SetModel( dv->GetModel() ); @@ -1703,6 +1710,11 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id, m_treeview = gtk_tree_view_new(); gtk_container_add (GTK_CONTAINER (m_widget), m_treeview); +#ifdef __WXGTK26__ + if (!gtk_check_version(2,6,0)) + gtk_tree_view_set_fixed_height_mode( GTK_TREE_VIEW(m_treeview), TRUE ); +#endif + if (style & wxDV_MULTIPLE) { GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) ); @@ -1715,14 +1727,14 @@ bool wxDataViewCtrl::Create(wxWindow *parent, wxWindowID id, m_parent->DoAddChild( this ); + PostCreation(size); + GtkTreeSelection *selection = gtk_tree_view_get_selection( GTK_TREE_VIEW(m_treeview) ); g_signal_connect_after (selection, "changed", G_CALLBACK (wxdataview_selection_changed_callback), this); g_signal_connect_after (m_treeview, "row_activated", G_CALLBACK (wxdataview_row_activated_callback), this); - PostCreation(size); - return true; } @@ -1907,6 +1919,13 @@ int wxDataViewCtrl::GetSelections(wxArrayInt& aSelections) const return 0; } +// static +wxVisualAttributes +wxDataViewCtrl::GetClassDefaultAttributes(wxWindowVariant WXUNUSED(variant)) +{ + return GetDefaultAttributesFromGTKWidget(gtk_tree_view_new); +} + #endif // !wxUSE_GENERICDATAVIEWCTRL