wxString m_data;
};
-#endif // generic or Carbon versions
-
// ----------------------------------------------------------------------------
-// wxDataViewChoiceRendererByIndex
+// wxDataViewChoiceByIndexRenderer
// ----------------------------------------------------------------------------
-class WXDLLIMPEXP_ADV wxDataViewChoiceRendererByIndex: public wxDataViewChoiceRenderer
+class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer: public wxDataViewChoiceRenderer
{
public:
- wxDataViewChoiceRendererByIndex( const wxArrayString &choices,
+ wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
- int alignment = wxDVR_DEFAULT_ALIGNMENT ) :
- wxDataViewChoiceRenderer( choices, mode, alignment )
- {
- }
+ int alignment = wxDVR_DEFAULT_ALIGNMENT );
- virtual bool SetValue( const wxVariant &value )
- {
- wxVariant string_value = GetChoice( value.GetLong() );
- return wxDataViewChoiceRenderer::SetValue( string_value );
- }
+ virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value );
+ virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value );
- virtual bool GetValue( wxVariant &value ) const
- {
- wxVariant string_value;
- if (!wxDataViewChoiceRenderer::GetValue( string_value ))
- return false;
-
- value = (long) GetChoices().Index( string_value.GetString() );
- return true;
- }
+ virtual bool SetValue( const wxVariant &value );
+ virtual bool GetValue( wxVariant &value ) const;
};
+#endif // generic or Carbon versions
+
// this class is obsolete, its functionality was merged in
// wxDataViewTextRenderer itself now, don't use it any more
#define wxDataViewTextRendererAttr wxDataViewTextRenderer
//
// it validates the new value and notifies the model about the change by
// calling GtkOnCellChanged() if it was accepted
- void GtkOnTextEdited(const gchar *itempath, const wxString& value);
+ virtual void GtkOnTextEdited(const gchar *itempath, const wxString& value);
GtkCellRenderer* GetGtkHandle() { return m_renderer; }
void GtkInitHandlers();
wxString m_data;
};
+// ----------------------------------------------------------------------------
+// wxDataViewChoiceByIndexRenderer
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer: public wxDataViewChoiceRenderer
+{
+public:
+ wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
+ wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
+ int alignment = wxDVR_DEFAULT_ALIGNMENT );
+
+ virtual bool SetValue( const wxVariant &value );
+ virtual bool GetValue( wxVariant &value ) const;
+
+private:
+ virtual void GtkOnTextEdited(const gchar *itempath, const wxString& str);
+};
+
+
+
#endif // _WX_GTK_DVRENDERERS_H_
return true;
}
+// ----------------------------------------------------------------------------
+// wxDataViewChoiceByIndexRenderer
+// ----------------------------------------------------------------------------
+
+wxDataViewChoiceByIndexRenderer::wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
+ wxDataViewCellMode mode, int alignment ) :
+ wxDataViewChoiceRenderer( choices, mode, alignment )
+{
+}
+
+wxControl* wxDataViewChoiceByIndexRenderer::CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value )
+{
+ wxVariant string_value = GetChoice( value.GetLong() );
+
+ return wxDataViewChoiceRenderer::CreateEditorCtrl( parent, labelRect, string_value );
+}
+
+bool wxDataViewChoiceByIndexRenderer::GetValueFromEditorCtrl( wxControl* editor, wxVariant &value )
+{
+ wxVariant string_value;
+ if (!wxDataViewChoiceRenderer::GetValueFromEditorCtrl( editor, string_value ))
+ return false;
+
+ value = (long) GetChoices().Index( string_value.GetString() );
+ return true;
+}
+
+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;
+}
+
#endif
//-----------------------------------------------------------------------------
{
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 );
}
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<wxDataViewChoiceRenderer*>(this)->GetOwner()->GetOwner()->GetFont() );
+ wxString temp = wxGTK_CONV_BACK( g_value_get_string( &gvalue ) );
g_value_unset( &gvalue );
value = temp;
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
// ---------------------------------------------------------