Commit 3e708c90d36f2b064363af0155fb4205b3ca356b

Authored by Perry Werneck
1 parent 726bfb70

Setting UI type as an application property.

src/include/pw3270/application.h
... ... @@ -50,7 +50,7 @@
50 50 #define PW3270_IS_APPLICATION_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), \
51 51 PW3270_TYPE_APPLICATION))
52 52 #define PW3270_APPLICATION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \
53   - GTK_TYPE_APPLICATION, pw3270ApplicationClass))
  53 + GTK_TYPE_APPLICATION, pw3270ApplicationClass))
54 54  
55 55 typedef enum _pw3270_ui_type {
56 56 PW3270_UI_STYLE_CLASSICAL, ///< @brief Interface "classica", com menu e toolbar.
... ... @@ -63,6 +63,8 @@
63 63  
64 64 GType pw3270Application_get_type();
65 65 GtkApplication * pw3270_application_new(const gchar *application_id, GApplicationFlags flags);
  66 +
  67 + void pw3270_application_set_ui_type(GApplication *app, PW3270_UI_TYPE type);
66 68 PW3270_UI_TYPE pw3270_application_get_ui_type(GApplication *app);
67 69  
68 70 G_END_DECLS
... ...
src/objects/window/application.c
... ... @@ -34,12 +34,24 @@
34 34 #include "private.h"
35 35 #include <pw3270/application.h>
36 36  
  37 + enum {
  38 + PROP_ZERO,
  39 + PROP_UI_TYPE,
  40 +
  41 + NUM_PROPERTIES
  42 + };
  43 +
  44 + static GParamSpec * props[NUM_PROPERTIES];
  45 +
37 46 struct _pw3270ApplicationClass {
38 47 GtkApplicationClass parent_class;
39 48 };
40 49  
41 50 struct _pw3270Application {
42 51 GtkApplication parent;
  52 +
  53 + PW3270_UI_TYPE ui_type;
  54 +
43 55 };
44 56  
45 57 static void startup(GApplication * application);
... ... @@ -48,18 +60,71 @@
48 60  
49 61 G_DEFINE_TYPE(pw3270Application, pw3270Application, GTK_TYPE_APPLICATION);
50 62  
  63 + static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) {
  64 +
  65 + switch (prop_id) {
  66 + case PROP_UI_TYPE:
  67 + g_value_set_uint(value,pw3270_application_get_ui_type(G_APPLICATION(object)));
  68 + break;
  69 +
  70 + default:
  71 + g_assert_not_reached ();
  72 + }
  73 +
  74 + }
  75 +
  76 + static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) {
  77 +
  78 + switch (prop_id) {
  79 + case PROP_UI_TYPE:
  80 + pw3270_application_set_ui_type(G_APPLICATION(object),g_value_get_uint(value));
  81 + break;
  82 +
  83 + default:
  84 + g_assert_not_reached ();
  85 + }
  86 +
  87 + }
  88 +
51 89 static void pw3270Application_class_init(pw3270ApplicationClass *klass) {
52 90  
53 91 GApplicationClass *application_class = G_APPLICATION_CLASS(klass);
  92 + GObjectClass *object_class = G_OBJECT_CLASS(klass);
  93 +
  94 + object_class->get_property = get_property;
  95 + object_class->set_property = set_property;
54 96  
55 97 application_class->startup = startup;
56 98 application_class->activate = activate;
57 99 application_class->open = open;
58 100  
  101 + props[PROP_UI_TYPE] =
  102 + g_param_spec_uint(
  103 + "ui_type",
  104 + _("UI Type"),
  105 + _("The code of the User interface type"),
  106 + PW3270_UI_STYLE_CLASSICAL,
  107 + PW3270_UI_STYLE_GNOME,
  108 +#ifdef _WIN32
  109 + PW3270_UI_STYLE_CLASSICAL,
  110 +#else
  111 + PW3270_UI_STYLE_GNOME,
  112 +#endif // _WIN32
  113 + G_PARAM_READABLE|G_PARAM_WRITABLE
  114 + );
  115 +
  116 +
  117 + g_object_class_install_properties(object_class, NUM_PROPERTIES, props);
  118 +
59 119 }
60 120  
61 121 static void pw3270Application_init(pw3270Application *app) {
62 122  
  123 +#ifdef _WIN32
  124 + app->ui_type = PW3270_UI_STYLE_CLASSICAL;
  125 +#else
  126 + app->ui_type = PW3270_UI_STYLE_GNOME;
  127 +#endif // _WIN32
63 128  
64 129 }
65 130  
... ... @@ -179,3 +244,24 @@
179 244  
180 245 }
181 246  
  247 + void pw3270_application_set_ui_type(GApplication *app, PW3270_UI_TYPE type) {
  248 +
  249 + g_return_if_fail(PW3270_IS_APPLICATION(app));
  250 +
  251 + pw3270Application * application = PW3270_APPLICATION(app);
  252 +
  253 + if(application->ui_type == type)
  254 + return;
  255 +
  256 + application->ui_type = type;
  257 + g_object_notify_by_pspec(G_OBJECT(app), props[PROP_UI_TYPE]);
  258 +
  259 + }
  260 +
  261 + PW3270_UI_TYPE pw3270_application_get_ui_type(GApplication *app) {
  262 +
  263 + g_return_val_if_fail(PW3270_IS_APPLICATION(app),PW3270_UI_STYLE_CLASSICAL);
  264 + return PW3270_APPLICATION(app)->ui_type;
  265 +
  266 + }
  267 +
... ...
src/objects/window/testprogram/testprogram.c
... ... @@ -88,8 +88,5 @@ int main (int argc, char **argv) {
88 88  
89 89 }
90 90  
91   -PW3270_UI_TYPE pw3270_application_get_ui_type(GApplication *app) {
92   - return PW3270_UI_STYLE_GNOME;
93   -}
94 91  
95 92  
... ...
src/objects/window/window.c
... ... @@ -35,20 +35,6 @@
35 35  
36 36 static void pw3270ApplicationWindow_class_init(pw3270ApplicationWindowClass *klass) {
37 37  
38   - /*
39   - window_props[PROP_UI_STYLE] =
40   - g_param_spec_uint (
41   - "ui_style", // P_()
42   - "ui_style", // P_()
43   - _( "The application interface style" ),
44   - PW3270_UI_STYLE_CLASSICAL,
45   - PW3270_UI_STYLE_GNOME,
46   - PW3270_UI_STYLE_GNOME,
47   - G_PARAM_READABLE
48   - );
49   - */
50   -
51   -
52 38 }
53 39  
54 40 static void pw3270ApplicationWindow_init(pw3270ApplicationWindow *widget) {
... ... @@ -141,7 +127,7 @@
141 127  
142 128 // Create "new tab" bar
143 129 GtkWidget * new_tab_button = pw3270_setup_image_button(gtk_button_new(),"tab-new-symbolic");
144   - gtk_actionable_set_action_name(GTK_ACTIONABLE(new_tab_button),"app.new_tab");
  130 + gtk_actionable_set_action_name(GTK_ACTIONABLE(new_tab_button),"app.new.tab");
145 131 gtk_header_bar_pack_start(header, new_tab_button);
146 132  
147 133 // Show the new header
... ...