Second try to get wxDataViewChoiceByIndex and its name right, hopefully fixes #11970: wxDataViewChoiceRenderer set/get methods should use the current selection
index not a string git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -341,40 +341,27 @@ private:
|
|||||||
wxString m_data;
|
wxString m_data;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // generic or Carbon versions
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// wxDataViewChoiceRendererByIndex
|
// wxDataViewChoiceByIndexRenderer
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
class WXDLLIMPEXP_ADV wxDataViewChoiceRendererByIndex: public wxDataViewChoiceRenderer
|
class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer: public wxDataViewChoiceRenderer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxDataViewChoiceRendererByIndex( const wxArrayString &choices,
|
wxDataViewChoiceByIndexRenderer( const wxArrayString &choices,
|
||||||
wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
|
||||||
int alignment = wxDVR_DEFAULT_ALIGNMENT ) :
|
int alignment = wxDVR_DEFAULT_ALIGNMENT );
|
||||||
wxDataViewChoiceRenderer( choices, mode, alignment )
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual bool SetValue( const wxVariant &value )
|
virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value );
|
||||||
{
|
virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value );
|
||||||
wxVariant string_value = GetChoice( value.GetLong() );
|
|
||||||
return wxDataViewChoiceRenderer::SetValue( string_value );
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual bool GetValue( wxVariant &value ) const
|
virtual bool SetValue( const 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;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // generic or Carbon versions
|
||||||
|
|
||||||
// this class is obsolete, its functionality was merged in
|
// this class is obsolete, its functionality was merged in
|
||||||
// wxDataViewTextRenderer itself now, don't use it any more
|
// wxDataViewTextRenderer itself now, don't use it any more
|
||||||
#define wxDataViewTextRendererAttr wxDataViewTextRenderer
|
#define wxDataViewTextRendererAttr wxDataViewTextRenderer
|
||||||
|
@@ -48,7 +48,7 @@ public:
|
|||||||
//
|
//
|
||||||
// it validates the new value and notifies the model about the change by
|
// it validates the new value and notifies the model about the change by
|
||||||
// calling GtkOnCellChanged() if it was accepted
|
// 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; }
|
GtkCellRenderer* GetGtkHandle() { return m_renderer; }
|
||||||
void GtkInitHandlers();
|
void GtkInitHandlers();
|
||||||
|
@@ -276,5 +276,25 @@ private:
|
|||||||
wxString m_data;
|
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_
|
#endif // _WX_GTK_DVRENDERERS_H_
|
||||||
|
|
||||||
|
@@ -1433,6 +1433,49 @@ bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const
|
|||||||
return true;
|
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
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@@ -2407,7 +2407,7 @@ bool wxDataViewChoiceRenderer::SetValue( const wxVariant &value )
|
|||||||
{
|
{
|
||||||
GValue gvalue = { 0, };
|
GValue gvalue = { 0, };
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
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_object_set_property( G_OBJECT(m_renderer), "text", &gvalue );
|
||||||
g_value_unset( &gvalue );
|
g_value_unset( &gvalue );
|
||||||
}
|
}
|
||||||
@@ -2426,8 +2426,7 @@ bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const
|
|||||||
GValue gvalue = { 0, };
|
GValue gvalue = { 0, };
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
g_value_init( &gvalue, G_TYPE_STRING );
|
||||||
g_object_get_property( G_OBJECT(m_renderer), "text", &gvalue );
|
g_object_get_property( G_OBJECT(m_renderer), "text", &gvalue );
|
||||||
wxString temp = wxGTK_CONV_BACK_FONT( g_value_get_string( &gvalue ),
|
wxString temp = wxGTK_CONV_BACK( g_value_get_string( &gvalue ) );
|
||||||
const_cast<wxDataViewChoiceRenderer*>(this)->GetOwner()->GetOwner()->GetFont() );
|
|
||||||
g_value_unset( &gvalue );
|
g_value_unset( &gvalue );
|
||||||
value = temp;
|
value = temp;
|
||||||
|
|
||||||
@@ -2462,6 +2461,48 @@ void wxDataViewChoiceRenderer::SetAlignment( int align )
|
|||||||
g_value_unset( &gvalue );
|
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
|
// wxDataViewDateRenderer
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user