Commit 847739b824af9a9ab6f34fde533ab210aabe311c
1 parent
4ba3da61
Exists in
master
and in
4 other branches
Working on the UI.
Showing
17 changed files
with
399 additions
and
95 deletions
Show diff stats
.gitignore
pw3270.cbp
... | ... | @@ -51,6 +51,9 @@ |
51 | 51 | <Option compilerVar="CC" /> |
52 | 52 | </Unit> |
53 | 53 | <Unit filename="src/main/private.h" /> |
54 | + <Unit filename="src/main/tools.c"> | |
55 | + <Option compilerVar="CC" /> | |
56 | + </Unit> | |
54 | 57 | <Unit filename="src/objects/actions/abstract.c"> |
55 | 58 | <Option compilerVar="CC" /> |
56 | 59 | </Unit> | ... | ... |
schemas/application.gschema.xml.in
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | 2 | <!-- |
3 | 3 | |
4 | + Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
5 | + (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
6 | + aplicativos mainframe. Registro no INPI sob o nome G3270. | |
7 | + | |
8 | + Copyright (C) <2008> <Banco do Brasil S.A.> | |
9 | + | |
10 | + Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
11 | + os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
12 | + Free Software Foundation. | |
13 | + | |
14 | + Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
15 | + GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
16 | + A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
17 | + obter mais detalhes. | |
18 | + | |
19 | + Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
20 | + programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
21 | + St, Fifth Floor, Boston, MA 02110-1301 USA | |
22 | + | |
23 | + | |
24 | + Contatos: | |
25 | + | |
26 | + perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
4 | 28 | |
5 | 29 | --> |
6 | 30 | |
7 | 31 | <schemalist> |
8 | 32 | |
9 | - <schema path="/br/com/bb/@PRODUCT_NAME@/application/" id="br.com.bb.@PRODUCT_NAME@"> | |
33 | + <schema id="br.com.bb.@PACKAGE_NAME@"> | |
10 | 34 | |
11 | 35 | <key name="ui-style" type="u"> |
12 | 36 | <default>1</default> |
... | ... | @@ -14,6 +38,12 @@ |
14 | 38 | <description>The ID of the current user interface style</description> |
15 | 39 | </key> |
16 | 40 | |
41 | + <key name="has-subtitle" type="b"> | |
42 | + <default>true</default> | |
43 | + <summary>Enable top window subtitle</summary> | |
44 | + <description>If TRUE, reserve space for a subtitle, even if none is currently set.</description> | |
45 | + </key> | |
46 | + | |
17 | 47 | </schema> |
18 | 48 | |
19 | 49 | </schemalist> | ... | ... |
src/include/pw3270.h
src/main/main.c
... | ... | @@ -45,39 +45,8 @@ int main (int argc, char **argv) { |
45 | 45 | GtkApplication *app; |
46 | 46 | int status; |
47 | 47 | |
48 | -/* | |
49 | -#ifdef DEBUG | |
50 | - { | |
51 | - GError * error = NULL; | |
52 | - GSettingsSchemaSource * source = | |
53 | - g_settings_schema_source_new_from_directory( | |
54 | - ".", | |
55 | - NULL, | |
56 | - TRUE, | |
57 | - &error | |
58 | - ); | |
59 | - | |
60 | - g_assert_no_error(error); | |
61 | - | |
62 | - GSettingsSchema * schema = | |
63 | - g_settings_schema_source_lookup( | |
64 | - source, | |
65 | - "br.com.bb.pw3270", | |
66 | - TRUE); | |
67 | - | |
68 | - g_settings_schema_source_unref(source); | |
69 | - | |
70 | - GSettings * settings = g_settings_new_full(schema, NULL, "/br/com/bb/pw3270/application/"); | |
71 | - | |
72 | - debug("ui-style=%u",g_settings_get_uint(settings,"ui-style")); | |
73 | - | |
74 | - g_object_unref(settings); | |
75 | - } | |
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); | |
48 | + g_set_application_name(G_STRINGIFY(PRODUCT_NAME)); | |
49 | + app = pw3270_application_new("br.com.bb." G_STRINGIFY(PRODUCT_NAME),G_APPLICATION_HANDLES_OPEN); | |
81 | 50 | |
82 | 51 | status = g_application_run(G_APPLICATION (app), argc, argv); |
83 | 52 | g_object_unref (app); | ... | ... |
src/main/private.h
... | ... | @@ -0,0 +1,73 @@ |
1 | +/* | |
2 | + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
3 | + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
4 | + * aplicativos mainframe. Registro no INPI sob o nome G3270. Registro no INPI sob | |
5 | + * o nome G3270. | |
6 | + * | |
7 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | |
8 | + * | |
9 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
10 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
11 | + * Free Software Foundation. | |
12 | + * | |
13 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
14 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
15 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
16 | + * obter mais detalhes. | |
17 | + * | |
18 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
19 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
20 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | |
21 | + * | |
22 | + * Este programa está nomeado como main.c e possui - linhas de código. | |
23 | + * | |
24 | + * Contatos: | |
25 | + * | |
26 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
28 | + * | |
29 | + */ | |
30 | + | |
31 | + /** | |
32 | + * @brief Misc tools for pw3270 application. | |
33 | + * | |
34 | + */ | |
35 | + | |
36 | + #include "private.h" | |
37 | + | |
38 | +/*---[ Implement ]----------------------------------------------------------------------------------*/ | |
39 | + | |
40 | + GSettings * pw3270_get_settings() { | |
41 | + | |
42 | +#ifdef DEBUG | |
43 | + GError * error = NULL; | |
44 | + GSettingsSchemaSource * source = | |
45 | + g_settings_schema_source_new_from_directory( | |
46 | + ".", | |
47 | + NULL, | |
48 | + TRUE, | |
49 | + &error | |
50 | + ); | |
51 | + | |
52 | + g_assert_no_error(error); | |
53 | + | |
54 | + GSettingsSchema * schema = | |
55 | + g_settings_schema_source_lookup( | |
56 | + source, | |
57 | + "br.com.bb." PACKAGE_NAME, | |
58 | + TRUE); | |
59 | + | |
60 | + g_settings_schema_source_unref(source); | |
61 | + | |
62 | + g_autofree gchar * path = g_strconcat("/apps/" PACKAGE_NAME "/", g_get_application_name(),"/",NULL); | |
63 | + | |
64 | + debug("path=%s",path); | |
65 | + return g_settings_new_full(schema, NULL, path); | |
66 | + | |
67 | +#else | |
68 | + | |
69 | + #error TODO! | |
70 | + | |
71 | +#endif // DEBUG | |
72 | + | |
73 | + } | ... | ... |
src/objects/actions/abstract.c
... | ... | @@ -89,6 +89,8 @@ |
89 | 89 | |
90 | 90 | GObjectClass *object_class = G_OBJECT_CLASS(klass); |
91 | 91 | |
92 | + debug("%s",__FUNCTION__); | |
93 | + | |
92 | 94 | klass->change_widget = change_widget; |
93 | 95 | klass->get_enabled = get_enabled; |
94 | 96 | klass->activate = activate; |
... | ... | @@ -154,8 +156,8 @@ |
154 | 156 | // Install signals |
155 | 157 | action_signals[SIGNAL_CHANGE_STATE] = |
156 | 158 | g_signal_new( |
157 | - I_("change-state"), | |
158 | - G_TYPE_SIMPLE_ACTION, | |
159 | + I_("change_state"), | |
160 | + G_TYPE_ACTION, | |
159 | 161 | G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT, |
160 | 162 | 0, NULL, NULL, |
161 | 163 | NULL, |
... | ... | @@ -202,8 +204,7 @@ |
202 | 204 | |
203 | 205 | } |
204 | 206 | |
205 | - | |
206 | - void pw3270_action_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { | |
207 | + void pw3270_action_get_property(GObject *object, guint prop_id, GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { | |
207 | 208 | |
208 | 209 | GAction *action = G_ACTION(object); |
209 | 210 | |
... | ... | @@ -236,7 +237,7 @@ |
236 | 237 | |
237 | 238 | } |
238 | 239 | |
239 | - void pw3270_action_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { | |
240 | + void pw3270_action_set_property(GObject *object, guint prop_id, const GValue *value, GParamSpec G_GNUC_UNUSED(*pspec)) { | |
240 | 241 | |
241 | 242 | // debug("%s(%d)",__FUNCTION__,prop_id); |
242 | 243 | |
... | ... | @@ -306,8 +307,7 @@ |
306 | 307 | |
307 | 308 | } |
308 | 309 | |
309 | - GVariant * pw3270_action_get_state_hint(GAction *action) { | |
310 | - debug("%s",__FUNCTION__); | |
310 | + GVariant * pw3270_action_get_state_hint(GAction G_GNUC_UNUSED(*action)) { | |
311 | 311 | return NULL; |
312 | 312 | } |
313 | 313 | |
... | ... | @@ -351,7 +351,7 @@ |
351 | 351 | |
352 | 352 | } |
353 | 353 | |
354 | - void pw3270_action_set_enabled(GAction *object, gboolean state) { | |
354 | + void pw3270_action_set_enabled(GAction *object, gboolean G_GNUC_UNUSED(state)) { | |
355 | 355 | g_object_notify_by_pspec(G_OBJECT(object), PW3270_ACTION_GET_CLASS(object)->properties.enabled); |
356 | 356 | } |
357 | 357 | |
... | ... | @@ -401,8 +401,8 @@ |
401 | 401 | |
402 | 402 | } |
403 | 403 | |
404 | - gboolean get_enabled(GAction *object, GtkWidget *terminal) { | |
405 | - debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(object)); | |
404 | + gboolean get_enabled(GAction G_GNUC_UNUSED(*object), GtkWidget G_GNUC_UNUSED(*terminal)) { | |
405 | +// debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(object)); | |
406 | 406 | return TRUE; |
407 | 407 | } |
408 | 408 | ... | ... |
src/objects/actions/lib3270/pakey.c
... | ... | @@ -55,9 +55,9 @@ |
55 | 55 | |
56 | 56 | G_DEFINE_TYPE(Lib3270PaAction, Lib3270PaAction, PW3270_TYPE_ACTION); |
57 | 57 | |
58 | - static gboolean get_enabled(GAction *action, GtkWidget *terminal) { | |
58 | + static gboolean get_enabled(GAction G_GNUC_UNUSED(*action), GtkWidget *terminal) { | |
59 | 59 | |
60 | - debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(action)); | |
60 | +// debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(action)); | |
61 | 61 | |
62 | 62 | if(terminal) |
63 | 63 | return lib3270_is_connected(v3270_get_session(terminal)) > 0 ? TRUE: FALSE; |
... | ... | @@ -94,7 +94,7 @@ |
94 | 94 | |
95 | 95 | } |
96 | 96 | |
97 | - static const GVariantType * get_parameter_type(GAction *action) | |
97 | + static const GVariantType * get_parameter_type(GAction G_GNUC_UNUSED(*action)) | |
98 | 98 | { |
99 | 99 | return G_VARIANT_TYPE_UINT16; |
100 | 100 | } |
... | ... | @@ -110,7 +110,7 @@ |
110 | 110 | |
111 | 111 | } |
112 | 112 | |
113 | - void Lib3270PaAction_init(Lib3270PaAction *action) { | |
113 | + void Lib3270PaAction_init(Lib3270PaAction G_GNUC_UNUSED(*action)) { | |
114 | 114 | } |
115 | 115 | |
116 | 116 | GAction * pw3270_action_new_pakey(void) { | ... | ... |
src/objects/actions/lib3270/pfkey.c
... | ... | @@ -55,9 +55,9 @@ |
55 | 55 | |
56 | 56 | G_DEFINE_TYPE(Lib3270PfAction, Lib3270PfAction, PW3270_TYPE_ACTION); |
57 | 57 | |
58 | - static gboolean get_enabled(GAction *action, GtkWidget *terminal) { | |
58 | + static gboolean get_enabled(GAction G_GNUC_UNUSED(*action), GtkWidget *terminal) { | |
59 | 59 | |
60 | - debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(action)); | |
60 | +// debug("%s(%s)",__FUNCTION__,pw3270_action_get_name(action)); | |
61 | 61 | |
62 | 62 | if(terminal) |
63 | 63 | return lib3270_is_connected(v3270_get_session(terminal)) > 0 ? TRUE: FALSE; |
... | ... | @@ -94,8 +94,7 @@ |
94 | 94 | |
95 | 95 | } |
96 | 96 | |
97 | - static const GVariantType * get_parameter_type(GAction *action) | |
98 | - { | |
97 | + static const GVariantType * get_parameter_type(GAction G_GNUC_UNUSED(*action)) { | |
99 | 98 | return G_VARIANT_TYPE_UINT16; |
100 | 99 | } |
101 | 100 | |
... | ... | @@ -110,7 +109,7 @@ |
110 | 109 | |
111 | 110 | } |
112 | 111 | |
113 | - void Lib3270PfAction_init(Lib3270PfAction *action) { | |
112 | + void Lib3270PfAction_init(Lib3270PfAction G_GNUC_UNUSED(*action)) { | |
114 | 113 | } |
115 | 114 | |
116 | 115 | GAction * pw3270_action_new_pfkey(void) { | ... | ... |
... | ... | @@ -0,0 +1,162 @@ |
1 | +{ | |
2 | + libcrypto_BIO_read | |
3 | + Memcheck:Cond | |
4 | + ... | |
5 | + fun:BIO_read | |
6 | +} | |
7 | + | |
8 | +{ | |
9 | + libcrypt_FIPS_selftest | |
10 | + Memcheck:Cond | |
11 | + ... | |
12 | + fun:FIPS_selftest | |
13 | +} | |
14 | + | |
15 | +{ | |
16 | + libcrypt_FIPS_mode_set | |
17 | + Memcheck:Cond | |
18 | + ... | |
19 | + fun:FIPS_mode_set | |
20 | +} | |
21 | + | |
22 | +{ | |
23 | + libcrypt_BIO_new_mem_buf | |
24 | + Memcheck:Cond | |
25 | + ... | |
26 | + fun:BIO_new_mem_buf | |
27 | +} | |
28 | + | |
29 | + | |
30 | +{ | |
31 | + g_type_register_fundamental | |
32 | + Memcheck:Leak | |
33 | + ... | |
34 | + fun:g_type_register_fundamental | |
35 | +} | |
36 | + | |
37 | +{ | |
38 | + glib_dl_init | |
39 | + Memcheck:Leak | |
40 | + ... | |
41 | + fun:_dl_init | |
42 | +} | |
43 | + | |
44 | +{ | |
45 | + pango_itemize_with_base_dir | |
46 | + Memcheck:Leak | |
47 | + ... | |
48 | + fun:pango_itemize_with_base_dir | |
49 | +} | |
50 | + | |
51 | +{ | |
52 | + fontconfig_FcDefaultSubstitute | |
53 | + Memcheck:Leak | |
54 | + ... | |
55 | + fun:FcDefaultSubstitute | |
56 | +} | |
57 | + | |
58 | +{ | |
59 | + fontconfig_FcConfigParseAndLoad | |
60 | + Memcheck:Leak | |
61 | + ... | |
62 | + fun:FcConfigParseAndLoad | |
63 | +} | |
64 | + | |
65 | +{ | |
66 | + fontconfig_FcFontMatch | |
67 | + Memcheck:Leak | |
68 | + ... | |
69 | + fun:FcFontMatch | |
70 | +} | |
71 | + | |
72 | +{ | |
73 | + g_type_register_static | |
74 | + Memcheck:Leak | |
75 | + ... | |
76 | + fun:g_type_register_static | |
77 | +} | |
78 | + | |
79 | +{ | |
80 | + g_thread_pool_push | |
81 | + Memcheck:Leak | |
82 | + ... | |
83 | + fun:g_task_run_in_thread | |
84 | +} | |
85 | + | |
86 | +{ | |
87 | + g_bus_get_sync | |
88 | + Memcheck:Leak | |
89 | + ... | |
90 | + fun:g_bus_get_sync | |
91 | +} | |
92 | + | |
93 | +{ | |
94 | + g_type_add_interface_static | |
95 | + Memcheck:Leak | |
96 | + ... | |
97 | + fun:g_type_add_interface_static | |
98 | +} | |
99 | + | |
100 | +{ | |
101 | + g_type_create_instance | |
102 | + Memcheck:Leak | |
103 | + ... | |
104 | + fun:g_type_create_instance | |
105 | +} | |
106 | + | |
107 | +{ | |
108 | + fontconfig_FcPatternDuplicate | |
109 | + Memcheck:Leak | |
110 | + ... | |
111 | + fun:FcPatternDuplicate | |
112 | +} | |
113 | + | |
114 | +{ | |
115 | + gtk_style_context_set_state | |
116 | + Memcheck:Leak | |
117 | + ... | |
118 | + fun:gtk_style_context_set_state | |
119 | +} | |
120 | + | |
121 | +{ | |
122 | + g_param_spec_flags | |
123 | + Memcheck:Leak | |
124 | + ... | |
125 | + fun:g_param_spec_flags | |
126 | +} | |
127 | + | |
128 | +{ | |
129 | + gtk_style_new | |
130 | + Memcheck:Leak | |
131 | + ... | |
132 | + fun:gtk_style_new | |
133 | +} | |
134 | + | |
135 | +{ | |
136 | + libcrypto_BIO_read | |
137 | + Memcheck:Cond | |
138 | + fun:BIO_read | |
139 | +} | |
140 | + | |
141 | +{ | |
142 | + cairo_mask | |
143 | + Memcheck:Cond | |
144 | + ... | |
145 | + fun:cairo_mask | |
146 | +} | |
147 | + | |
148 | +{ | |
149 | + gtk_css_dimension_value_new | |
150 | + Memcheck:Leak | |
151 | + ... | |
152 | + fun:gtk_css_dimension_value_new | |
153 | +} | |
154 | + | |
155 | +{ | |
156 | + gtk_style_constructed | |
157 | + Memcheck:Leak | |
158 | + ... | |
159 | + fun:gtk_style_constructed | |
160 | +} | |
161 | + | |
162 | + | ... | ... |
src/objects/window/application.c
... | ... | @@ -127,45 +127,10 @@ |
127 | 127 | #endif // _WIN32 |
128 | 128 | |
129 | 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." G_STRINGIFY(PRODUCT_NAME), | |
149 | - TRUE); | |
150 | - | |
151 | - g_settings_schema_source_unref(source); | |
152 | - | |
153 | - settings = g_settings_new_full(schema, NULL, "/br/com/bb/" G_STRINGIFY(PRODUCT_NAME) "/application/"); | |
154 | - | |
155 | - } | |
156 | -#else | |
157 | - | |
158 | - #error TODO! | |
159 | - | |
160 | -#endif // DEBUG | |
130 | + g_autoptr(GSettings) settings = pw3270_get_settings(); | |
161 | 131 | |
162 | 132 | if(settings) { |
163 | - | |
164 | 133 | g_settings_bind(settings, "ui-style", app, "ui-style", G_SETTINGS_BIND_DEFAULT); |
165 | - | |
166 | - | |
167 | - g_object_unref(settings); | |
168 | - | |
169 | 134 | } |
170 | 135 | |
171 | 136 | } | ... | ... |
src/objects/window/terminal.c
... | ... | @@ -50,7 +50,11 @@ |
50 | 50 | |
51 | 51 | } |
52 | 52 | |
53 | - static gboolean on_terminal_focus(GtkWidget *terminal, GdkEvent *event, GtkWindow * window) { | |
53 | + static gboolean on_terminal_focus(GtkWidget *terminal, GdkEvent G_GNUC_UNUSED(*event), GtkWindow * window) { | |
54 | + | |
55 | + if(gtk_window_get_default_widget(window) == terminal) { | |
56 | + return FALSE; | |
57 | + } | |
54 | 58 | |
55 | 59 | // Store the active terminal widget. |
56 | 60 | gtk_widget_grab_default(terminal); |
... | ... | @@ -62,6 +66,22 @@ |
62 | 66 | |
63 | 67 | pw3270_window_set_subtitle(GTK_WIDGET(window), v3270_is_connected(terminal) ? _("Connected to host") : _("Disconnected from host")); |
64 | 68 | |
69 | + // Update actions | |
70 | + size_t ix; | |
71 | + gchar ** actions = g_action_group_list_actions(G_ACTION_GROUP(window)); | |
72 | + | |
73 | + for(ix = 0; actions[ix]; ix++) { | |
74 | + | |
75 | + GAction * action = g_action_map_lookup_action(G_ACTION_MAP(window), actions[ix]); | |
76 | + | |
77 | + if(action && PW3270_IS_ACTION(action)) { | |
78 | + pw3270_action_set_terminal_widget(action,terminal); | |
79 | + } | |
80 | + | |
81 | + } | |
82 | + | |
83 | + g_strfreev(actions); | |
84 | + | |
65 | 85 | return FALSE; |
66 | 86 | } |
67 | 87 | |
... | ... | @@ -92,7 +112,7 @@ |
92 | 112 | |
93 | 113 | } |
94 | 114 | |
95 | - static void on_close_tab(GtkButton *button, GtkWidget *terminal) { | |
115 | + static void on_close_tab(GtkButton G_GNUC_UNUSED(*button), GtkWidget *terminal) { | |
96 | 116 | |
97 | 117 | GtkNotebook * notebook = GTK_NOTEBOOK(gtk_widget_get_parent(terminal)); |
98 | 118 | gtk_notebook_remove_page(notebook,gtk_notebook_page_num(notebook, terminal)); | ... | ... |
src/objects/window/window.c
... | ... | @@ -28,16 +28,18 @@ |
28 | 28 | */ |
29 | 29 | |
30 | 30 | #include "private.h" |
31 | + #include <pw3270.h> | |
31 | 32 | #include <pw3270/toolbar.h> |
32 | 33 | #include <pw3270/application.h> |
34 | + #include <pw3270/actions.h> | |
33 | 35 | |
34 | 36 | G_DEFINE_TYPE(pw3270ApplicationWindow, pw3270ApplicationWindow, GTK_TYPE_APPLICATION_WINDOW); |
35 | 37 | |
36 | - static void pw3270ApplicationWindow_class_init(pw3270ApplicationWindowClass *klass) { | |
38 | + static void pw3270ApplicationWindow_class_init(pw3270ApplicationWindowClass G_GNUC_UNUSED(*klass)) { | |
37 | 39 | |
38 | 40 | } |
39 | 41 | |
40 | - void on_page_changed(GtkNotebook *notebook, GtkWidget *child, guint page_num, gpointer user_data) { | |
42 | + void on_page_changed(GtkNotebook *notebook, GtkWidget G_GNUC_UNUSED(*child), guint G_GNUC_UNUSED(page_num), gpointer G_GNUC_UNUSED(user_data)) { | |
41 | 43 | gtk_notebook_set_show_tabs(notebook,gtk_notebook_get_n_pages(notebook) > 1); |
42 | 44 | } |
43 | 45 | |
... | ... | @@ -63,6 +65,11 @@ |
63 | 65 | gtk_container_add(GTK_CONTAINER(widget),GTK_WIDGET(vBox)); |
64 | 66 | |
65 | 67 | // |
68 | + // Setup tn3270 actions. | |
69 | + // | |
70 | + pw3270_window_add_actions(GTK_WIDGET(widget)); | |
71 | + | |
72 | + // | |
66 | 73 | // Setup Window actions. |
67 | 74 | // |
68 | 75 | static GActionEntry actions[] = { |
... | ... | @@ -97,6 +104,8 @@ |
97 | 104 | |
98 | 105 | const gchar * title = _( "IBM 3270 Terminal emulator" ); |
99 | 106 | |
107 | + g_autoptr(GSettings) settings = pw3270_get_settings(); | |
108 | + | |
100 | 109 | g_return_val_if_fail(GTK_IS_APPLICATION(application), NULL); |
101 | 110 | pw3270ApplicationWindow * window = |
102 | 111 | g_object_new( |
... | ... | @@ -124,8 +133,10 @@ |
124 | 133 | gtk_header_bar_set_show_close_button(header,TRUE); |
125 | 134 | |
126 | 135 | gtk_header_bar_set_title(header,title); |
127 | - // gtk_header_bar_set_subtitle(header,_("Disconnected from host")); | |
128 | - gtk_header_bar_set_has_subtitle(header,TRUE); | |
136 | + if(settings) | |
137 | + g_settings_bind(settings, "has-subtitle", header, "has-subtitle", G_SETTINGS_BIND_DEFAULT); | |
138 | + else | |
139 | + gtk_header_bar_set_has_subtitle(header,TRUE); | |
129 | 140 | |
130 | 141 | // Create gear button |
131 | 142 | // https://wiki.gnome.org/Initiatives/GnomeGoals/GearIcons | ... | ... |
ui/application.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | +<!-- | |
3 | + | |
4 | + Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
5 | + (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
6 | + aplicativos mainframe. Registro no INPI sob o nome G3270. | |
7 | + | |
8 | + Copyright (C) <2008> <Banco do Brasil S.A.> | |
9 | + | |
10 | + Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
11 | + os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
12 | + Free Software Foundation. | |
13 | + | |
14 | + Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
15 | + GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
16 | + A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
17 | + obter mais detalhes. | |
18 | + | |
19 | + Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
20 | + programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
21 | + St, Fifth Floor, Boston, MA 02110-1301 USA | |
22 | + | |
23 | + | |
24 | + Contatos: | |
25 | + | |
26 | + perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
28 | + | |
29 | +--> | |
2 | 30 | <interface> |
3 | 31 | <requires lib="gtk+" version="3.0"/> |
4 | 32 | <menu id="app-menu"> | ... | ... |
ui/window.xml
1 | 1 | <?xml version="1.0" encoding="UTF-8"?> |
2 | +<!-- | |
3 | + | |
4 | + Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 | |
5 | + (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a | |
6 | + aplicativos mainframe. Registro no INPI sob o nome G3270. | |
7 | + | |
8 | + Copyright (C) <2008> <Banco do Brasil S.A.> | |
9 | + | |
10 | + Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | |
11 | + os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | |
12 | + Free Software Foundation. | |
13 | + | |
14 | + Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | |
15 | + GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | |
16 | + A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | |
17 | + obter mais detalhes. | |
18 | + | |
19 | + Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | |
20 | + programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | |
21 | + St, Fifth Floor, Boston, MA 02110-1301 USA | |
22 | + | |
23 | + | |
24 | + Contatos: | |
25 | + | |
26 | + perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | |
27 | + erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | |
28 | + | |
29 | +--> | |
2 | 30 | <interface> |
3 | 31 | <requires lib="gtk+" version="3.0"/> |
4 | 32 | <menu id="gear-menu"> | ... | ... |