Commit 061296898e15d7ae4ecc1e7b17b9071f72ee154b

Authored by Perry Werneck
1 parent af9b20f5

Implementing gsettings support.

@@ -194,6 +194,7 @@ dnl --------------------------------------------------------------------------- @@ -194,6 +194,7 @@ dnl ---------------------------------------------------------------------------
194 AC_SUBST(INSTALL_PACKAGES) 194 AC_SUBST(INSTALL_PACKAGES)
195 195
196 AC_CONFIG_FILES(Makefile) 196 AC_CONFIG_FILES(Makefile)
  197 +AC_CONFIG_FILES(schemas/application.gschema.xml)
197 198
198 dnl --------------------------------------------------------------------------- 199 dnl ---------------------------------------------------------------------------
199 dnl Output the generated config.status script. 200 dnl Output the generated config.status script.
schemas/application.gschema.xml
@@ -1,19 +0,0 @@ @@ -1,19 +0,0 @@
1 -<?xml version="1.0" encoding="UTF-8"?>  
2 -<!--  
3 -  
4 -  
5 --->  
6 -  
7 -<schemalist>  
8 -  
9 - <schema path="/br/com/bb/pw3270/application/" id="br.com.bb.pw3270">  
10 -  
11 - <key name="ui-style" type="u">  
12 - <default>1</default>  
13 - <summary>UI Style</summary>  
14 - <description>The ID of the current user interface style</description>  
15 - </key>  
16 -  
17 - </schema>  
18 -  
19 -</schemalist>  
schemas/application.gschema.xml.in 0 → 100644
@@ -0,0 +1,19 @@ @@ -0,0 +1,19 @@
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!--
  3 +
  4 +
  5 +-->
  6 +
  7 +<schemalist>
  8 +
  9 + <schema path="/br/com/bb/pw3270/application/" id="br.com.bb.pw3270">
  10 +
  11 + <key name="ui-style" type="u">
  12 + <default>1</default>
  13 + <summary>UI Style</summary>
  14 + <description>The ID of the current user interface style</description>
  15 + </key>
  16 +
  17 + </schema>
  18 +
  19 +</schemalist>
src/include/pw3270/application.h
@@ -52,10 +52,10 @@ @@ -52,10 +52,10 @@
52 #define PW3270_APPLICATION_GET_CLASS(inst) (G_TYPE_INSTANCE_GET_CLASS ((inst), \ 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 - typedef enum _pw3270_ui_type { 55 + typedef enum _pw3270_ui_style {
56 PW3270_UI_STYLE_CLASSICAL, ///< @brief Interface "classica", com menu e toolbar. 56 PW3270_UI_STYLE_CLASSICAL, ///< @brief Interface "classica", com menu e toolbar.
57 PW3270_UI_STYLE_GNOME, ///< @brief Interface padrão gnome. 57 PW3270_UI_STYLE_GNOME, ///< @brief Interface padrão gnome.
58 - } PW3270_UI_TYPE; 58 + } PW3270_UI_STYLE;
59 59
60 60
61 typedef struct _pw3270ApplicationClass pw3270ApplicationClass; 61 typedef struct _pw3270ApplicationClass pw3270ApplicationClass;
@@ -64,8 +64,8 @@ @@ -64,8 +64,8 @@
64 GType pw3270Application_get_type(); 64 GType pw3270Application_get_type();
65 GtkApplication * pw3270_application_new(const gchar *application_id, GApplicationFlags flags); 65 GtkApplication * pw3270_application_new(const gchar *application_id, GApplicationFlags flags);
66 66
67 - void pw3270_application_set_ui_type(GApplication *app, PW3270_UI_TYPE type);  
68 - PW3270_UI_TYPE pw3270_application_get_ui_type(GApplication *app); 67 + void pw3270_application_set_ui_style(GApplication *app, PW3270_UI_STYLE type);
  68 + PW3270_UI_STYLE pw3270_application_get_ui_style(GApplication *app);
69 69
70 G_END_DECLS 70 G_END_DECLS
71 71
src/main/main.c
@@ -45,6 +45,7 @@ int main (int argc, char **argv) { @@ -45,6 +45,7 @@ int main (int argc, char **argv) {
45 GtkApplication *app; 45 GtkApplication *app;
46 int status; 46 int status;
47 47
  48 +/*
48 #ifdef DEBUG 49 #ifdef DEBUG
49 { 50 {
50 GError * error = NULL; 51 GError * error = NULL;
@@ -73,8 +74,11 @@ int main (int argc, char **argv) { @@ -73,8 +74,11 @@ int main (int argc, char **argv) {
73 g_object_unref(settings); 74 g_object_unref(settings);
74 } 75 }
75 #endif // DEBUG 76 #endif // DEBUG
  77 +*/
  78 +
  79 +// app = pw3270_application_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME),G_APPLICATION_HANDLES_OPEN);
  80 + app = pw3270_application_new("br.com.bb.pw3270",G_APPLICATION_HANDLES_OPEN);
76 81
77 - app = pw3270_application_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME),G_APPLICATION_HANDLES_OPEN);  
78 status = g_application_run(G_APPLICATION (app), argc, argv); 82 status = g_application_run(G_APPLICATION (app), argc, argv);
79 g_object_unref (app); 83 g_object_unref (app);
80 84
src/objects/window/application.c
@@ -36,7 +36,7 @@ @@ -36,7 +36,7 @@
36 36
37 enum { 37 enum {
38 PROP_ZERO, 38 PROP_ZERO,
39 - PROP_UI_TYPE, 39 + PROP_UI_STYLE,
40 40
41 NUM_PROPERTIES 41 NUM_PROPERTIES
42 }; 42 };
@@ -50,7 +50,7 @@ @@ -50,7 +50,7 @@
50 struct _pw3270Application { 50 struct _pw3270Application {
51 GtkApplication parent; 51 GtkApplication parent;
52 52
53 - PW3270_UI_TYPE ui_type; 53 + PW3270_UI_STYLE ui_style;
54 54
55 }; 55 };
56 56
@@ -63,8 +63,8 @@ @@ -63,8 +63,8 @@
63 static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { 63 static void get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) {
64 64
65 switch (prop_id) { 65 switch (prop_id) {
66 - case PROP_UI_TYPE:  
67 - g_value_set_uint(value,pw3270_application_get_ui_type(G_APPLICATION(object))); 66 + case PROP_UI_STYLE:
  67 + g_value_set_uint(value,pw3270_application_get_ui_style(G_APPLICATION(object)));
68 break; 68 break;
69 69
70 default: 70 default:
@@ -76,8 +76,8 @@ @@ -76,8 +76,8 @@
76 static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { 76 static void set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) {
77 77
78 switch (prop_id) { 78 switch (prop_id) {
79 - case PROP_UI_TYPE:  
80 - pw3270_application_set_ui_type(G_APPLICATION(object),g_value_get_uint(value)); 79 + case PROP_UI_STYLE:
  80 + pw3270_application_set_ui_style(G_APPLICATION(object),g_value_get_uint(value));
81 break; 81 break;
82 82
83 default: 83 default:
@@ -98,9 +98,9 @@ @@ -98,9 +98,9 @@
98 application_class->activate = activate; 98 application_class->activate = activate;
99 application_class->open = open; 99 application_class->open = open;
100 100
101 - props[PROP_UI_TYPE] = 101 + props[PROP_UI_STYLE] =
102 g_param_spec_uint( 102 g_param_spec_uint(
103 - "ui_type", 103 + "ui-style",
104 _("UI Type"), 104 _("UI Type"),
105 _("The code of the User interface type"), 105 _("The code of the User interface type"),
106 PW3270_UI_STYLE_CLASSICAL, 106 PW3270_UI_STYLE_CLASSICAL,
@@ -121,11 +121,53 @@ @@ -121,11 +121,53 @@
121 static void pw3270Application_init(pw3270Application *app) { 121 static void pw3270Application_init(pw3270Application *app) {
122 122
123 #ifdef _WIN32 123 #ifdef _WIN32
124 - app->ui_type = PW3270_UI_STYLE_CLASSICAL; 124 + app->ui_style = PW3270_UI_STYLE_CLASSICAL;
125 #else 125 #else
126 - app->ui_type = PW3270_UI_STYLE_GNOME; 126 + app->ui_style = PW3270_UI_STYLE_GNOME;
127 #endif // _WIN32 127 #endif // _WIN32
128 128
  129 + // Bind properties
  130 + GSettings * settings = NULL;
  131 +
  132 +#ifdef DEBUG
  133 + {
  134 + GError * error = NULL;
  135 + GSettingsSchemaSource * source =
  136 + g_settings_schema_source_new_from_directory(
  137 + ".",
  138 + NULL,
  139 + TRUE,
  140 + &error
  141 + );
  142 +
  143 + g_assert_no_error(error);
  144 +
  145 + GSettingsSchema * schema =
  146 + g_settings_schema_source_lookup(
  147 + source,
  148 + "br.com.bb.pw3270",
  149 + TRUE);
  150 +
  151 + g_settings_schema_source_unref(source);
  152 +
  153 + settings = g_settings_new_full(schema, NULL, "/br/com/bb/pw3270/application/");
  154 +
  155 + }
  156 +#else
  157 +
  158 + #error TODO!
  159 +
  160 +#endif // DEBUG
  161 +
  162 + if(settings) {
  163 +
  164 + g_settings_bind(settings, "ui-style", app, "ui-style", G_SETTINGS_BIND_DEFAULT);
  165 +
  166 +
  167 + g_object_unref(settings);
  168 +
  169 + }
  170 +
129 } 171 }
130 172
131 GtkApplication * pw3270_application_new(const gchar *application_id, GApplicationFlags flags) { 173 GtkApplication * pw3270_application_new(const gchar *application_id, GApplicationFlags flags) {
@@ -200,7 +242,7 @@ @@ -200,7 +242,7 @@
200 GtkBuilder * builder = gtk_builder_new_from_file("ui/application.xml"); 242 GtkBuilder * builder = gtk_builder_new_from_file("ui/application.xml");
201 gtk_application_set_app_menu(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "app-menu"))); 243 gtk_application_set_app_menu(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "app-menu")));
202 244
203 - if(pw3270_application_get_ui_type(application) == PW3270_UI_STYLE_CLASSICAL) 245 + if(pw3270_application_get_ui_style(application) == PW3270_UI_STYLE_CLASSICAL)
204 gtk_application_set_menubar(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "menubar"))); 246 gtk_application_set_menubar(GTK_APPLICATION (application), G_MENU_MODEL(gtk_builder_get_object (builder, "menubar")));
205 247
206 g_object_unref(builder); 248 g_object_unref(builder);
@@ -244,24 +286,24 @@ @@ -244,24 +286,24 @@
244 286
245 } 287 }
246 288
247 - void pw3270_application_set_ui_type(GApplication *app, PW3270_UI_TYPE type) { 289 + void pw3270_application_set_ui_style(GApplication *app, PW3270_UI_STYLE type) {
248 290
249 g_return_if_fail(PW3270_IS_APPLICATION(app)); 291 g_return_if_fail(PW3270_IS_APPLICATION(app));
250 292
251 pw3270Application * application = PW3270_APPLICATION(app); 293 pw3270Application * application = PW3270_APPLICATION(app);
252 294
253 - if(application->ui_type == type) 295 + if(application->ui_style == type)
254 return; 296 return;
255 297
256 - application->ui_type = type;  
257 - g_object_notify_by_pspec(G_OBJECT(app), props[PROP_UI_TYPE]); 298 + application->ui_style = type;
  299 + g_object_notify_by_pspec(G_OBJECT(app), props[PROP_UI_STYLE]);
258 300
259 } 301 }
260 302
261 - PW3270_UI_TYPE pw3270_application_get_ui_type(GApplication *app) { 303 + PW3270_UI_STYLE pw3270_application_get_ui_style(GApplication *app) {
262 304
263 g_return_val_if_fail(PW3270_IS_APPLICATION(app),PW3270_UI_STYLE_CLASSICAL); 305 g_return_val_if_fail(PW3270_IS_APPLICATION(app),PW3270_UI_STYLE_CLASSICAL);
264 - return PW3270_APPLICATION(app)->ui_type; 306 + return PW3270_APPLICATION(app)->ui_style;
265 307
266 } 308 }
267 309
src/objects/window/window.c
@@ -108,7 +108,7 @@ @@ -108,7 +108,7 @@
108 108
109 GtkBuilder * builder = gtk_builder_new_from_file("ui/window.xml"); 109 GtkBuilder * builder = gtk_builder_new_from_file("ui/window.xml");
110 110
111 - switch(pw3270_application_get_ui_type(G_APPLICATION(application))) { 111 + switch(pw3270_application_get_ui_style(G_APPLICATION(application))) {
112 case PW3270_UI_STYLE_CLASSICAL: 112 case PW3270_UI_STYLE_CLASSICAL:
113 { 113 {
114 gtk_window_set_title(GTK_WINDOW(window), title); 114 gtk_window_set_title(GTK_WINDOW(window), title);