Commit 6dced93caaf71b9294527608f74a27872d7b5b9d
1 parent
e1e0e53d
Exists in
master
and in
1 other branch
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) | ... | ... |