Commit 6dced93caaf71b9294527608f74a27872d7b5b9d

Authored by perry.werneck@gmail.com
1 parent e1e0e53d
Exists in master and in 1 other branch develop

Implementando propriedades no widget 3270

Showing 1 changed file with 64 additions and 0 deletions   Show diff stats
widget.c
... ... @@ -68,6 +68,21 @@
68 68  
69 69 /*--[ Widget definition ]----------------------------------------------------------------------------*/
70 70  
  71 + enum
  72 + {
  73 + PROP_0,
  74 +
  75 + /* Construct */
  76 + PROP_TYPE,
  77 +
  78 + /* Normal Props */
  79 + PROP_FULLSCREEN,
  80 +
  81 +
  82 + /* Toggle - always the last one, the real values are PROP_TOGGLE+LIB3270_TOGGLE */
  83 + PROP_TOGGLE
  84 + };
  85 +
71 86 G_DEFINE_TYPE(v3270, v3270, GTK_TYPE_WIDGET);
72 87  
73 88 /*--[ Globals ]--------------------------------------------------------------------------------------*/
... ... @@ -296,6 +311,25 @@ gboolean v3270_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboa
296 311 return FALSE;
297 312 }
298 313  
  314 +static void v3270_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
  315 +{
  316 + v3270 *window = GTK_V3270(object);
  317 +
  318 + switch (prop_id)
  319 + {
  320 + case PROP_FULLSCREEN:
  321 + if(g_value_get_boolean (value))
  322 + gtk_window_fullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(object))));
  323 + else
  324 + gtk_window_unfullscreen(GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(object))));
  325 + break;
  326 +
  327 + default:
  328 + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
  329 + }
  330 +
  331 +}
  332 +
299 333 static void v3270_class_init(v3270Class *klass)
300 334 {
301 335 GObjectClass * gobject_class = G_OBJECT_CLASS(klass);
... ... @@ -561,6 +595,36 @@ static void v3270_class_init(v3270Class *klass)
561 595 v3270_VOID__VOID,
562 596 G_TYPE_NONE, 0);
563 597  
  598 +
  599 + // Properties
  600 + gobject_class->set_property = v3270_set_property;
  601 +
  602 + g_object_class_install_property(
  603 + gobject_class,
  604 + PROP_FULLSCREEN,
  605 + g_param_spec_boolean("fullscreen",
  606 + "Fullscreen","If TRUE, the toplevel window was set to fullscreen",
  607 + FALSE,
  608 + G_PARAM_WRITABLE|G_PARAM_READABLE));
  609 +
  610 +
  611 + // Toggle properties
  612 + int f;
  613 +
  614 + for(f=0;f<LIB3270_TOGGLE_COUNT;f++)
  615 + {
  616 + g_object_class_install_property(
  617 + gobject_class,
  618 + PROP_TOGGLE+f,
  619 + g_param_spec_boolean(
  620 + lib3270_get_toggle_name(f),
  621 + lib3270_get_toggle_name(f),
  622 + lib3270_get_toggle_description(f),
  623 + FALSE,
  624 + G_PARAM_WRITABLE|G_PARAM_READABLE));
  625 + }
  626 +
  627 +
564 628 }
565 629  
566 630 void v3270_update_font_metrics(v3270 *terminal, cairo_t *cr, int width, int height)
... ...