From 10c4fc1b736fa0b31d1e9e9d268f55d5daec3709 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Tue, 17 Dec 2013 20:07:12 +0000 Subject: [PATCH] Incluindo notificacao quando da mudanca de um toggle --- widget.c | 55 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 37 insertions(+), 18 deletions(-) diff --git a/widget.c b/widget.c index 9c40f1f..600a9e2 100644 --- a/widget.c +++ b/widget.c @@ -83,13 +83,17 @@ PROP_TOGGLE }; + #define PROP_LAST (PROP_TOGGLE+LIB3270_TOGGLE_COUNT) + G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET); -/*--[ Globals ]--------------------------------------------------------------------------------------*/ +/*--[ Globals ]----------LIB3270_TOGGLE_COUNT----------------------------------------------------------------------------*/ guint v3270_widget_signal[LAST_SIGNAL] = { 0 }; GdkCursor * v3270_cursor[V3270_CURSOR_COUNT] = { 0 }; + static GParamSpec * v3270_properties[PROP_LAST] = { 0 }; + /*--[ Prototipes ]-----------------------------------------------------------------------------------*/ // http://git.gnome.org/browse/gtk+/tree/gtk/gtkdrawingarea.c?h=gtk-3-0 @@ -325,11 +329,37 @@ static void v3270_set_property(GObject *object, guint prop_id, const GValue *val break; default: + if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) + { + lib3270_set_toggle(window->host,prop_id - PROP_TOGGLE, (int) g_value_get_boolean (value)); + return; + } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); } } +static void v3270_get_property(GObject *object,guint prop_id, GValue *value, GParamSpec *pspec) +{ + v3270 *window = GTK_V3270(object); + + switch (prop_id) + { + case PROP_FULLSCREEN: + #warning Get the correct value + g_value_set_boolean(value,FALSE); + break; + + default: + if(prop_id < (PROP_TOGGLE + LIB3270_TOGGLE_COUNT)) + { + g_value_set_boolean(value,lib3270_get_toggle(window->host,prop_id - PROP_TOGGLE) ? TRUE : FALSE ); + return; + } + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + } +} + static void v3270_class_init(v3270Class *klass) { GObjectClass * gobject_class = G_OBJECT_CLASS(klass); @@ -598,14 +628,10 @@ static void v3270_class_init(v3270Class *klass) // Properties gobject_class->set_property = v3270_set_property; + gobject_class->get_property = v3270_get_property; - g_object_class_install_property( - gobject_class, - PROP_FULLSCREEN, - g_param_spec_boolean("fullscreen", - "Fullscreen","If TRUE, the toplevel window was set to fullscreen", - FALSE, - G_PARAM_WRITABLE|G_PARAM_READABLE)); + v3270_properties[PROP_FULLSCREEN] = g_param_spec_boolean("fullscreen","Fullscreen","If TRUE, the toplevel window was set to fullscreen",FALSE,G_PARAM_WRITABLE|G_PARAM_READABLE); + g_object_class_install_property(gobject_class,PROP_FULLSCREEN,v3270_properties[PROP_FULLSCREEN]); // Toggle properties @@ -613,18 +639,10 @@ static void v3270_class_init(v3270Class *klass) for(f=0;fwidget), v3270_properties[PROP_TOGGLE+ix]); g_signal_emit(GTK_WIDGET(session->widget), v3270_widget_signal[SIGNAL_TOGGLE_CHANGED], 0, (guint) ix, (gboolean) (value != 0), (gchar *) name); } -- libgit2 0.21.2