Use wxGtkValue RAII wrapper in wxGTK code
wxGtkValue class was added back in 3f84cb17ca
(Add wxActivityIndicator
control., 2015-03-06), but somehow never used. Start using it now
(better late than never...) as it makes the code simpler, shorter and
more robust.
No real changes.
This commit is contained in:
@@ -17,6 +17,11 @@
|
|||||||
class wxGtkValue
|
class wxGtkValue
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
explicit wxGtkValue()
|
||||||
|
: m_val(G_VALUE_INIT)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the value of the specified type.
|
// Initialize the value of the specified type.
|
||||||
explicit wxGtkValue(GType gtype)
|
explicit wxGtkValue(GType gtype)
|
||||||
: m_val(G_VALUE_INIT)
|
: m_val(G_VALUE_INIT)
|
||||||
|
@@ -27,6 +27,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
|
#include "wx/gtk/private/value.h"
|
||||||
|
|
||||||
// ============================================================================
|
// ============================================================================
|
||||||
// implementation
|
// implementation
|
||||||
@@ -197,12 +198,10 @@ void wxBitmapComboBox::SetItemBitmap(unsigned int n, const wxBitmap& bitmap)
|
|||||||
|
|
||||||
if ( gtk_tree_model_iter_nth_child( model, &iter, NULL, n ) )
|
if ( gtk_tree_model_iter_nth_child( model, &iter, NULL, n ) )
|
||||||
{
|
{
|
||||||
GValue value0 = G_VALUE_INIT;
|
wxGtkValue value0( G_TYPE_OBJECT );
|
||||||
g_value_init( &value0, G_TYPE_OBJECT );
|
g_value_set_object( value0, bitmap.GetPixbuf() );
|
||||||
g_value_set_object( &value0, bitmap.GetPixbuf() );
|
|
||||||
gtk_list_store_set_value( GTK_LIST_STORE(model), &iter,
|
gtk_list_store_set_value( GTK_LIST_STORE(model), &iter,
|
||||||
m_bitmapCellIndex, &value0 );
|
m_bitmapCellIndex, value0 );
|
||||||
g_value_unset( &value0 );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,16 +216,15 @@ wxBitmap wxBitmapComboBox::GetItemBitmap(unsigned int n) const
|
|||||||
|
|
||||||
if (gtk_tree_model_iter_nth_child (model, &iter, NULL, n))
|
if (gtk_tree_model_iter_nth_child (model, &iter, NULL, n))
|
||||||
{
|
{
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value;
|
||||||
gtk_tree_model_get_value( model, &iter,
|
gtk_tree_model_get_value( model, &iter,
|
||||||
m_bitmapCellIndex, &value );
|
m_bitmapCellIndex, value );
|
||||||
GdkPixbuf* pixbuf = (GdkPixbuf*) g_value_get_object( &value );
|
GdkPixbuf* pixbuf = (GdkPixbuf*) g_value_get_object( value );
|
||||||
if ( pixbuf )
|
if ( pixbuf )
|
||||||
{
|
{
|
||||||
g_object_ref( pixbuf );
|
g_object_ref( pixbuf );
|
||||||
bitmap = wxBitmap(pixbuf);
|
bitmap = wxBitmap(pixbuf);
|
||||||
}
|
}
|
||||||
g_value_unset( &value );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return bitmap;
|
return bitmap;
|
||||||
@@ -295,11 +293,9 @@ void wxBitmapComboBox::GTKInsertComboBoxTextItem( unsigned int n, const wxString
|
|||||||
|
|
||||||
gtk_list_store_insert( store, &iter, n );
|
gtk_list_store_insert( store, &iter, n );
|
||||||
|
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value( G_TYPE_STRING );
|
||||||
g_value_init( &value, G_TYPE_STRING );
|
g_value_set_string( value, wxGTK_CONV( text ) );
|
||||||
g_value_set_string( &value, wxGTK_CONV( text ) );
|
gtk_list_store_set_value( store, &iter, m_stringCellIndex, value );
|
||||||
gtk_list_store_set_value( store, &iter, m_stringCellIndex, &value );
|
|
||||||
g_value_unset( &value );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/gtk/private/eventsdisabler.h"
|
#include "wx/gtk/private/eventsdisabler.h"
|
||||||
|
#include "wx/gtk/private/value.h"
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// GTK callbacks
|
// GTK callbacks
|
||||||
@@ -233,10 +234,9 @@ int wxChoice::FindString( const wxString &item, bool bCase ) const
|
|||||||
int count = 0;
|
int count = 0;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value;
|
||||||
gtk_tree_model_get_value( model, &iter, m_stringCellIndex, &value );
|
gtk_tree_model_get_value( model, &iter, m_stringCellIndex, value );
|
||||||
wxString str = wxGTK_CONV_BACK( g_value_get_string( &value ) );
|
wxString str = wxGTK_CONV_BACK( g_value_get_string( value ) );
|
||||||
g_value_unset( &value );
|
|
||||||
|
|
||||||
if (item.IsSameAs( str, bCase ) )
|
if (item.IsSameAs( str, bCase ) )
|
||||||
return count;
|
return count;
|
||||||
@@ -264,11 +264,9 @@ void wxChoice::SetString(unsigned int n, const wxString &text)
|
|||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
if (gtk_tree_model_iter_nth_child (model, &iter, NULL, n))
|
if (gtk_tree_model_iter_nth_child (model, &iter, NULL, n))
|
||||||
{
|
{
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value(G_TYPE_STRING);
|
||||||
g_value_init( &value, G_TYPE_STRING );
|
g_value_set_string( value, wxGTK_CONV( text ) );
|
||||||
g_value_set_string( &value, wxGTK_CONV( text ) );
|
gtk_list_store_set_value( GTK_LIST_STORE(model), &iter, m_stringCellIndex, value );
|
||||||
gtk_list_store_set_value( GTK_LIST_STORE(model), &iter, m_stringCellIndex, &value );
|
|
||||||
g_value_unset( &value );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
InvalidateBestSize();
|
InvalidateBestSize();
|
||||||
@@ -287,11 +285,9 @@ wxString wxChoice::GetString(unsigned int n) const
|
|||||||
return wxString();
|
return wxString();
|
||||||
}
|
}
|
||||||
|
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value;
|
||||||
gtk_tree_model_get_value( model, &iter, m_stringCellIndex, &value );
|
gtk_tree_model_get_value( model, &iter, m_stringCellIndex, value );
|
||||||
wxString tmp = wxGTK_CONV_BACK( g_value_get_string( &value ) );
|
return wxGTK_CONV_BACK( g_value_get_string( value ) );
|
||||||
g_value_unset( &value );
|
|
||||||
return tmp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int wxChoice::GetCount() const
|
unsigned int wxChoice::GetCount() const
|
||||||
|
@@ -38,6 +38,7 @@
|
|||||||
#include "wx/gtk/private/image.h"
|
#include "wx/gtk/private/image.h"
|
||||||
#include "wx/gtk/private/list.h"
|
#include "wx/gtk/private/list.h"
|
||||||
#include "wx/gtk/private/treeview.h"
|
#include "wx/gtk/private/treeview.h"
|
||||||
|
#include "wx/gtk/private/value.h"
|
||||||
using namespace wxGTKImpl;
|
using namespace wxGTKImpl;
|
||||||
|
|
||||||
class wxGtkDataViewModelNotifier;
|
class wxGtkDataViewModelNotifier;
|
||||||
@@ -2067,11 +2068,9 @@ void wxDataViewRenderer::SetEnabled(bool enabled)
|
|||||||
// be edited at all
|
// be edited at all
|
||||||
if ( GetMode() != wxDATAVIEW_CELL_INERT )
|
if ( GetMode() != wxDATAVIEW_CELL_INERT )
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, enabled );
|
||||||
g_value_set_boolean( &gvalue, enabled );
|
g_object_set_property( G_OBJECT(m_renderer), "sensitive", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "sensitive", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// b) this actually disables the control/renderer
|
// b) this actually disables the control/renderer
|
||||||
@@ -2100,11 +2099,10 @@ void wxDataViewRenderer::GtkSetMode( wxDataViewCellMode mode )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue;
|
||||||
g_value_init( &gvalue, gtk_cell_renderer_mode_get_type() );
|
g_value_init( gvalue, gtk_cell_renderer_mode_get_type() );
|
||||||
g_value_set_enum( &gvalue, gtkMode );
|
g_value_set_enum( gvalue, gtkMode );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "mode", &gvalue );
|
g_object_set_property( G_OBJECT(m_renderer), "mode", gvalue );
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxDataViewCellMode wxDataViewRenderer::GetMode() const
|
wxDataViewCellMode wxDataViewRenderer::GetMode() const
|
||||||
@@ -2126,11 +2124,9 @@ void wxDataViewRenderer::GtkApplyAlignment(GtkCellRenderer *renderer)
|
|||||||
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
||||||
xalign = 0.5f;
|
xalign = 0.5f;
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_FLOAT );
|
||||||
g_value_init( &gvalue, G_TYPE_FLOAT );
|
g_value_set_float( gvalue, xalign );
|
||||||
g_value_set_float( &gvalue, xalign );
|
g_object_set_property( G_OBJECT(renderer), "xalign", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "xalign", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
// vertical alignment:
|
// vertical alignment:
|
||||||
|
|
||||||
@@ -2140,11 +2136,9 @@ void wxDataViewRenderer::GtkApplyAlignment(GtkCellRenderer *renderer)
|
|||||||
else if (align & wxALIGN_CENTER_VERTICAL)
|
else if (align & wxALIGN_CENTER_VERTICAL)
|
||||||
yalign = 0.5f;
|
yalign = 0.5f;
|
||||||
|
|
||||||
GValue gvalue2 = G_VALUE_INIT;
|
wxGtkValue gvalue2( G_TYPE_FLOAT );
|
||||||
g_value_init( &gvalue2, G_TYPE_FLOAT );
|
g_value_set_float( gvalue2, yalign );
|
||||||
g_value_set_float( &gvalue2, yalign );
|
g_object_set_property( G_OBJECT(renderer), "yalign", gvalue2 );
|
||||||
g_object_set_property( G_OBJECT(renderer), "yalign", &gvalue2 );
|
|
||||||
g_value_unset( &gvalue2 );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDataViewRenderer::SetAlignment( int align )
|
void wxDataViewRenderer::SetAlignment( int align )
|
||||||
@@ -2166,11 +2160,9 @@ void wxDataViewRenderer::EnableEllipsize(wxEllipsizeMode mode)
|
|||||||
|
|
||||||
// we use the same values in wxEllipsizeMode as PangoEllipsizeMode so we
|
// we use the same values in wxEllipsizeMode as PangoEllipsizeMode so we
|
||||||
// can just cast between them
|
// can just cast between them
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( PANGO_TYPE_ELLIPSIZE_MODE );
|
||||||
g_value_init( &gvalue, PANGO_TYPE_ELLIPSIZE_MODE );
|
g_value_set_enum( gvalue, static_cast<PangoEllipsizeMode>(mode) );
|
||||||
g_value_set_enum( &gvalue, static_cast<PangoEllipsizeMode>(mode) );
|
g_object_set_property( G_OBJECT(rend), "ellipsize", gvalue );
|
||||||
g_object_set_property( G_OBJECT(rend), "ellipsize", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wxEllipsizeMode wxDataViewRenderer::GetEllipsizeMode() const
|
wxEllipsizeMode wxDataViewRenderer::GetEllipsizeMode() const
|
||||||
@@ -2179,14 +2171,10 @@ wxEllipsizeMode wxDataViewRenderer::GetEllipsizeMode() const
|
|||||||
if ( !rend )
|
if ( !rend )
|
||||||
return wxELLIPSIZE_NONE;
|
return wxELLIPSIZE_NONE;
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( PANGO_TYPE_ELLIPSIZE_MODE );
|
||||||
g_value_init( &gvalue, PANGO_TYPE_ELLIPSIZE_MODE );
|
g_object_get_property( G_OBJECT(rend), "ellipsize", gvalue );
|
||||||
g_object_get_property( G_OBJECT(rend), "ellipsize", &gvalue );
|
|
||||||
wxEllipsizeMode
|
|
||||||
mode = static_cast<wxEllipsizeMode>(g_value_get_enum( &gvalue ));
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return mode;
|
return static_cast<wxEllipsizeMode>(g_value_get_enum( gvalue ));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDataViewRenderer::IsHighlighted() const
|
bool wxDataViewRenderer::IsHighlighted() const
|
||||||
@@ -2245,104 +2233,84 @@ void GtkApplyAttr(GtkCellRendererText *renderer, const wxDataViewItemAttr& attr)
|
|||||||
if (attr.HasColour())
|
if (attr.HasColour())
|
||||||
{
|
{
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
g_value_init(&gvalue, GDK_TYPE_RGBA);
|
wxGtkValue gvalue( GDK_TYPE_RGBA);
|
||||||
g_value_set_boxed(&gvalue, static_cast<const GdkRGBA*>(attr.GetColour()));
|
g_value_set_boxed(gvalue, static_cast<const GdkRGBA*>(attr.GetColour()));
|
||||||
g_object_set_property(G_OBJECT(renderer), "foreground-rgba", &gvalue);
|
g_object_set_property(G_OBJECT(renderer), "foreground-rgba", gvalue);
|
||||||
#else
|
#else
|
||||||
const GdkColor* const gcol = attr.GetColour().GetColor();
|
const GdkColor* const gcol = attr.GetColour().GetColor();
|
||||||
g_value_init( &gvalue, GDK_TYPE_COLOR );
|
wxGtkValue gvalue( GDK_TYPE_COLOR );
|
||||||
g_value_set_boxed( &gvalue, gcol );
|
g_value_set_boxed( gvalue, gcol );
|
||||||
g_object_set_property( G_OBJECT(renderer), "foreground_gdk", &gvalue );
|
g_object_set_property( G_OBJECT(renderer), "foreground_gdk", gvalue );
|
||||||
#endif
|
#endif
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, FALSE );
|
||||||
g_value_set_boolean( &gvalue, FALSE );
|
g_object_set_property( G_OBJECT(renderer), "foreground-set", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "foreground-set", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attr.GetItalic())
|
if (attr.GetItalic())
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( PANGO_TYPE_STYLE );
|
||||||
g_value_init( &gvalue, PANGO_TYPE_STYLE );
|
g_value_set_enum( gvalue, PANGO_STYLE_ITALIC );
|
||||||
g_value_set_enum( &gvalue, PANGO_STYLE_ITALIC );
|
g_object_set_property( G_OBJECT(renderer), "style", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "style", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, FALSE );
|
||||||
g_value_set_boolean( &gvalue, FALSE );
|
g_object_set_property( G_OBJECT(renderer), "style-set", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "style-set", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (attr.GetBold())
|
if (attr.GetBold())
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( PANGO_TYPE_WEIGHT );
|
||||||
g_value_init( &gvalue, PANGO_TYPE_WEIGHT );
|
g_value_set_enum( gvalue, PANGO_WEIGHT_BOLD );
|
||||||
g_value_set_enum( &gvalue, PANGO_WEIGHT_BOLD );
|
g_object_set_property( G_OBJECT(renderer), "weight", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "weight", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, FALSE );
|
||||||
g_value_set_boolean( &gvalue, FALSE );
|
g_object_set_property( G_OBJECT(renderer), "weight-set", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "weight-set", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attr.GetStrikethrough())
|
if (attr.GetStrikethrough())
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, TRUE );
|
||||||
g_value_set_boolean( &gvalue, TRUE );
|
g_object_set_property( G_OBJECT(renderer), "strikethrough", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "strikethrough", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, FALSE );
|
||||||
g_value_set_boolean( &gvalue, FALSE );
|
g_object_set_property( G_OBJECT(renderer), "strikethrough-set", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "strikethrough-set", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (attr.HasBackgroundColour())
|
if (attr.HasBackgroundColour())
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
|
||||||
wxColour colour = attr.GetBackgroundColour();
|
wxColour colour = attr.GetBackgroundColour();
|
||||||
#ifdef __WXGTK3__
|
#ifdef __WXGTK3__
|
||||||
g_value_init(&gvalue, GDK_TYPE_RGBA);
|
wxGtkValue gvalue( GDK_TYPE_RGBA);
|
||||||
g_value_set_boxed(&gvalue, static_cast<const GdkRGBA*>(colour));
|
g_value_set_boxed(gvalue, static_cast<const GdkRGBA*>(colour));
|
||||||
g_object_set_property(G_OBJECT(renderer), "cell-background-rgba", &gvalue);
|
g_object_set_property(G_OBJECT(renderer), "cell-background-rgba", gvalue);
|
||||||
#else
|
#else
|
||||||
const GdkColor * const gcol = colour.GetColor();
|
const GdkColor * const gcol = colour.GetColor();
|
||||||
|
|
||||||
g_value_init( &gvalue, GDK_TYPE_COLOR );
|
wxGtkValue gvalue( GDK_TYPE_COLOR );
|
||||||
g_value_set_boxed( &gvalue, gcol );
|
g_value_set_boxed( gvalue, gcol );
|
||||||
g_object_set_property( G_OBJECT(renderer), "cell-background_gdk", &gvalue );
|
g_object_set_property( G_OBJECT(renderer), "cell-background_gdk", gvalue );
|
||||||
#endif
|
#endif
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, FALSE );
|
||||||
g_value_set_boolean( &gvalue, FALSE );
|
g_object_set_property( G_OBJECT(renderer), "cell-background-set", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "cell-background-set", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2364,11 +2332,9 @@ wxDataViewTextRenderer::wxDataViewTextRenderer( const wxString &varianttype, wxD
|
|||||||
|
|
||||||
if (mode & wxDATAVIEW_CELL_EDITABLE)
|
if (mode & wxDATAVIEW_CELL_EDITABLE)
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, true );
|
||||||
g_value_set_boolean( &gvalue, true );
|
g_object_set_property( G_OBJECT(m_renderer), "editable", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "editable", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
g_signal_connect_after( m_renderer, "edited", G_CALLBACK(wxGtkTextRendererEditedCallback), this );
|
g_signal_connect_after( m_renderer, "edited", G_CALLBACK(wxGtkTextRendererEditedCallback), this );
|
||||||
|
|
||||||
@@ -2398,22 +2364,18 @@ const char* wxDataViewTextRenderer::GetTextPropertyName() const
|
|||||||
|
|
||||||
bool wxDataViewTextRenderer::SetTextValue(const wxString& str)
|
bool wxDataViewTextRenderer::SetTextValue(const wxString& str)
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_STRING );
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
g_value_set_string( gvalue, wxGTK_CONV_FONT( str, GetOwner()->GetOwner()->GetFont() ) );
|
||||||
g_value_set_string( &gvalue, wxGTK_CONV_FONT( str, GetOwner()->GetOwner()->GetFont() ) );
|
g_object_set_property( G_OBJECT(m_renderer), GetTextPropertyName(), gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), GetTextPropertyName(), &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDataViewTextRenderer::GetTextValue(wxString& str) const
|
bool wxDataViewTextRenderer::GetTextValue(wxString& str) const
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_STRING );
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
g_object_get_property( G_OBJECT(m_renderer), GetTextPropertyName(), gvalue );
|
||||||
g_object_get_property( G_OBJECT(m_renderer), GetTextPropertyName(), &gvalue );
|
str = wxGTK_CONV_BACK_FONT( g_value_get_string( gvalue ), const_cast<wxDataViewTextRenderer*>(this)->GetOwner()->GetOwner()->GetFont() );
|
||||||
str = wxGTK_CONV_BACK_FONT( g_value_get_string( &gvalue ), const_cast<wxDataViewTextRenderer*>(this)->GetOwner()->GetOwner()->GetFont() );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2436,11 +2398,9 @@ void wxDataViewTextRenderer::GtkUpdateAlignment()
|
|||||||
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
||||||
pangoAlign = PANGO_ALIGN_CENTER;
|
pangoAlign = PANGO_ALIGN_CENTER;
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( pango_alignment_get_type() );
|
||||||
g_value_init( &gvalue, pango_alignment_get_type() );
|
g_value_set_enum( gvalue, pangoAlign );
|
||||||
g_value_set_enum( &gvalue, pangoAlign );
|
g_object_set_property( G_OBJECT(m_renderer), "alignment", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "alignment", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxDataViewTextRenderer::SetAttr(const wxDataViewItemAttr& attr)
|
void wxDataViewTextRenderer::SetAttr(const wxDataViewItemAttr& attr)
|
||||||
@@ -2624,12 +2584,10 @@ static void wxGtkToggleRendererToggledCallback( GtkCellRendererToggle *renderer,
|
|||||||
wxDataViewToggleRenderer *cell = (wxDataViewToggleRenderer*) user_data;
|
wxDataViewToggleRenderer *cell = (wxDataViewToggleRenderer*) user_data;
|
||||||
|
|
||||||
// get old value
|
// get old value
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_object_get_property( G_OBJECT(renderer), "active", gvalue );
|
||||||
g_object_get_property( G_OBJECT(renderer), "active", &gvalue );
|
|
||||||
// invert it
|
// invert it
|
||||||
wxVariant value = !g_value_get_boolean( &gvalue );
|
wxVariant value = !g_value_get_boolean( gvalue );
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
if (!cell->Validate( value ))
|
if (!cell->Validate( value ))
|
||||||
return;
|
return;
|
||||||
@@ -2659,11 +2617,9 @@ wxDataViewToggleRenderer::wxDataViewToggleRenderer( const wxString &varianttype,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, false );
|
||||||
g_value_set_boolean( &gvalue, false );
|
g_object_set_property( G_OBJECT(m_renderer), "activatable", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "activatable", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
SetMode(mode);
|
SetMode(mode);
|
||||||
@@ -2679,22 +2635,18 @@ bool wxDataViewToggleRenderer::SetValue( const wxVariant &value )
|
|||||||
{
|
{
|
||||||
bool tmp = value;
|
bool tmp = value;
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, tmp );
|
||||||
g_value_set_boolean( &gvalue, tmp );
|
g_object_set_property( G_OBJECT(m_renderer), "active", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "active", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDataViewToggleRenderer::GetValue( wxVariant &value ) const
|
bool wxDataViewToggleRenderer::GetValue( wxVariant &value ) const
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_object_get_property( G_OBJECT(m_renderer), "active", gvalue );
|
||||||
g_object_get_property( G_OBJECT(m_renderer), "active", &gvalue );
|
value = g_value_get_boolean( gvalue ) != 0;
|
||||||
value = g_value_get_boolean( &gvalue ) != 0;
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -2801,11 +2753,9 @@ void wxDataViewCustomRenderer::RenderText( const wxString &text,
|
|||||||
|
|
||||||
GtkCellRendererText * const textRenderer = GtkGetTextRenderer();
|
GtkCellRendererText * const textRenderer = GtkGetTextRenderer();
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_STRING );
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
g_value_set_string( gvalue, wxGTK_CONV_FONT( text, GetOwner()->GetOwner()->GetFont() ) );
|
||||||
g_value_set_string( &gvalue, wxGTK_CONV_FONT( text, GetOwner()->GetOwner()->GetFont() ) );
|
g_object_set_property( G_OBJECT(textRenderer), "text", gvalue );
|
||||||
g_object_set_property( G_OBJECT(textRenderer), "text", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
GtkApplyAttr(textRenderer, GetAttr());
|
GtkApplyAttr(textRenderer, GetAttr());
|
||||||
|
|
||||||
@@ -2914,8 +2864,7 @@ wxDataViewProgressRenderer::~wxDataViewProgressRenderer()
|
|||||||
|
|
||||||
void wxDataViewProgressRenderer::GTKSetLabel()
|
void wxDataViewProgressRenderer::GTKSetLabel()
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_STRING );
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
|
||||||
|
|
||||||
// Take care to not use GetOwner() here if the label is empty, we can be
|
// Take care to not use GetOwner() here if the label is empty, we can be
|
||||||
// called from ctor when GetOwner() is still NULL in this case.
|
// called from ctor when GetOwner() is still NULL in this case.
|
||||||
@@ -2925,9 +2874,8 @@ void wxDataViewProgressRenderer::GTKSetLabel()
|
|||||||
else
|
else
|
||||||
buf = wxGTK_CONV_FONT(m_label, GetOwner()->GetOwner()->GetFont());
|
buf = wxGTK_CONV_FONT(m_label, GetOwner()->GetOwner()->GetFont());
|
||||||
|
|
||||||
g_value_set_string( &gvalue, buf);
|
g_value_set_string( gvalue, buf);
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue );
|
g_object_set_property( G_OBJECT(m_renderer), "text", gvalue );
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
#if !wxUSE_UNICODE
|
#if !wxUSE_UNICODE
|
||||||
m_needsToSetLabel = false;
|
m_needsToSetLabel = false;
|
||||||
@@ -2942,11 +2890,9 @@ bool wxDataViewProgressRenderer::SetValue( const wxVariant &value )
|
|||||||
#endif // !wxUSE_UNICODE
|
#endif // !wxUSE_UNICODE
|
||||||
|
|
||||||
gint tmp = (long) value;
|
gint tmp = (long) value;
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_INT );
|
||||||
g_value_init( &gvalue, G_TYPE_INT );
|
g_value_set_int( gvalue, tmp );
|
||||||
g_value_set_int( &gvalue, tmp );
|
g_object_set_property( G_OBJECT(m_renderer), "value", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "value", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -3024,26 +2970,21 @@ wxSize wxDataViewChoiceRenderer::GetSize() const
|
|||||||
|
|
||||||
bool wxDataViewChoiceRenderer::SetValue( const wxVariant &value )
|
bool wxDataViewChoiceRenderer::SetValue( const wxVariant &value )
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_STRING );
|
||||||
g_value_init( &gvalue, G_TYPE_STRING );
|
g_value_set_string(gvalue,
|
||||||
g_value_set_string(&gvalue,
|
|
||||||
wxGTK_CONV_FONT(value.GetString(),
|
wxGTK_CONV_FONT(value.GetString(),
|
||||||
GetOwner()->GetOwner()->GetFont()));
|
GetOwner()->GetOwner()->GetFont()));
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "text", &gvalue );
|
g_object_set_property( G_OBJECT(m_renderer), "text", gvalue );
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const
|
bool wxDataViewChoiceRenderer::GetValue( wxVariant &value ) const
|
||||||
{
|
{
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue 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 );
|
value = wxGTK_CONV_BACK_FONT(g_value_get_string(gvalue),
|
||||||
wxString temp = wxGTK_CONV_BACK_FONT(g_value_get_string(&gvalue),
|
|
||||||
GetOwner()->GetOwner()->GetFont());
|
GetOwner()->GetOwner()->GetFont());
|
||||||
g_value_unset( &gvalue );
|
|
||||||
value = temp;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -3066,11 +3007,9 @@ void wxDataViewChoiceRenderer::GtkUpdateAlignment()
|
|||||||
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
else if (align & wxALIGN_CENTER_HORIZONTAL)
|
||||||
pangoAlign = PANGO_ALIGN_CENTER;
|
pangoAlign = PANGO_ALIGN_CENTER;
|
||||||
|
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( pango_alignment_get_type() );
|
||||||
g_value_init( &gvalue, pango_alignment_get_type() );
|
g_value_set_enum( gvalue, pangoAlign );
|
||||||
g_value_set_enum( &gvalue, pangoAlign );
|
g_object_set_property( G_OBJECT(m_renderer), "alignment", gvalue );
|
||||||
g_object_set_property( G_OBJECT(m_renderer), "alignment", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -3243,11 +3182,9 @@ static void wxGtkTreeCellDataFunc( GtkTreeViewColumn *WXUNUSED(column),
|
|||||||
if (!wx_model->IsVirtualListModel())
|
if (!wx_model->IsVirtualListModel())
|
||||||
{
|
{
|
||||||
gboolean visible = wx_model->HasValue(item, column);
|
gboolean visible = wx_model->HasValue(item, column);
|
||||||
GValue gvalue = G_VALUE_INIT;
|
wxGtkValue gvalue( G_TYPE_BOOLEAN );
|
||||||
g_value_init( &gvalue, G_TYPE_BOOLEAN );
|
g_value_set_boolean( gvalue, visible );
|
||||||
g_value_set_boolean( &gvalue, visible );
|
g_object_set_property( G_OBJECT(renderer), "visible", gvalue );
|
||||||
g_object_set_property( G_OBJECT(renderer), "visible", &gvalue );
|
|
||||||
g_value_unset( &gvalue );
|
|
||||||
|
|
||||||
if ( !visible )
|
if ( !visible )
|
||||||
return;
|
return;
|
||||||
|
@@ -41,6 +41,7 @@
|
|||||||
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/gtk/private/stylecontext.h"
|
#include "wx/gtk/private/stylecontext.h"
|
||||||
|
#include "wx/gtk/private/value.h"
|
||||||
|
|
||||||
#if defined(__WXGTK3__) && !GTK_CHECK_VERSION(3,14,0)
|
#if defined(__WXGTK3__) && !GTK_CHECK_VERSION(3,14,0)
|
||||||
#define GTK_STATE_FLAG_CHECKED (1 << 11)
|
#define GTK_STATE_FLAG_CHECKED (1 << 11)
|
||||||
@@ -583,20 +584,17 @@ struct CheckBoxInfo
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value( G_TYPE_INT);
|
||||||
g_value_init(&value, G_TYPE_INT);
|
|
||||||
|
|
||||||
gtk_style_context_get_style_property(sc, "indicator-size", &value);
|
gtk_style_context_get_style_property(sc, "indicator-size", value);
|
||||||
indicator_width =
|
indicator_width =
|
||||||
indicator_height = g_value_get_int(&value);
|
indicator_height = g_value_get_int(value);
|
||||||
|
|
||||||
gtk_style_context_get_style_property(sc, "indicator-spacing", &value);
|
gtk_style_context_get_style_property(sc, "indicator-spacing", value);
|
||||||
margin_left =
|
margin_left =
|
||||||
margin_top =
|
margin_top =
|
||||||
margin_right =
|
margin_right =
|
||||||
margin_bottom = g_value_get_int(&value);
|
margin_bottom = g_value_get_int(value);
|
||||||
|
|
||||||
g_value_unset(&value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else // !__WXGTK3__
|
#else // !__WXGTK3__
|
||||||
@@ -1112,12 +1110,10 @@ void wxRendererGTK::DrawRadioBitmap(wxWindow*, wxDC& dc, const wxRect& rect, int
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value( G_TYPE_INT);
|
||||||
g_value_init(&value, G_TYPE_INT);
|
gtk_style_context_get_style_property(sc, "indicator-size", value);
|
||||||
gtk_style_context_get_style_property(sc, "indicator-size", &value);
|
min_width = g_value_get_int(value);
|
||||||
min_width = g_value_get_int(&value);
|
|
||||||
min_height = min_width;
|
min_height = min_width;
|
||||||
g_value_unset(&value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// need save/restore for GTK+ 3.6 & 3.8
|
// need save/restore for GTK+ 3.6 & 3.8
|
||||||
|
@@ -24,6 +24,7 @@
|
|||||||
#include "wx/gtk/private/gtk3-compat.h"
|
#include "wx/gtk/private/gtk3-compat.h"
|
||||||
#include "wx/gtk/private/win_gtk.h"
|
#include "wx/gtk/private/win_gtk.h"
|
||||||
#include "wx/gtk/private/stylecontext.h"
|
#include "wx/gtk/private/stylecontext.h"
|
||||||
|
#include "wx/gtk/private/value.h"
|
||||||
|
|
||||||
bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom);
|
bool wxGetFrameExtents(GdkWindow* window, int* left, int* right, int* top, int* bottom);
|
||||||
|
|
||||||
@@ -562,15 +563,13 @@ wxColour wxSystemSettingsNative::GetColour(wxSystemColour index)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
wxGCC_WARNING_SUPPRESS(deprecated-declarations)
|
||||||
GValue value = G_VALUE_INIT;
|
wxGtkValue value( GDK_TYPE_COLOR);
|
||||||
g_value_init(&value, GDK_TYPE_COLOR);
|
gtk_style_context_get_style_property(sc, "link-color", value);
|
||||||
gtk_style_context_get_style_property(sc, "link-color", &value);
|
GdkColor* link_color = static_cast<GdkColor*>(g_value_get_boxed(value));
|
||||||
GdkColor* link_color = static_cast<GdkColor*>(g_value_get_boxed(&value));
|
|
||||||
GdkColor gdkColor = { 0, 0, 0, 0xeeee };
|
GdkColor gdkColor = { 0, 0, 0, 0xeeee };
|
||||||
if (link_color)
|
if (link_color)
|
||||||
gdkColor = *link_color;
|
gdkColor = *link_color;
|
||||||
color = wxColour(gdkColor);
|
color = wxColour(gdkColor);
|
||||||
g_value_unset(&value);
|
|
||||||
wxGCC_WARNING_RESTORE()
|
wxGCC_WARNING_RESTORE()
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user