Commit 061296898e15d7ae4ecc1e7b17b9071f72ee154b
1 parent
af9b20f5
Exists in
master
and in
4 other branches
Implementing gsettings support.
Showing
7 changed files
with
89 additions
and
42 deletions
Show diff stats
configure.ac
@@ -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> |
@@ -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); |