Commit 12521a322ff18eb3403e64ac5894dadbda8612bc
1 parent
eedb58c8
Exists in
master
and in
5 other branches
Implementando opcao para ativar opcao de 8 cores via linha de comando
Showing
8 changed files
with
61 additions
and
12 deletions
Show diff stats
src/include/lib3270.h
src/include/pw3270.h
... | ... | @@ -65,6 +65,7 @@ |
65 | 65 | |
66 | 66 | LIB3270_EXPORT const gchar * pw3270_get_session_name(GtkWidget *widget); |
67 | 67 | LIB3270_EXPORT void pw3270_set_session_name(GtkWidget *widget, const gchar *name); |
68 | + LIB3270_EXPORT void pw3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options); | |
68 | 69 | |
69 | 70 | LIB3270_EXPORT gint pw3270_get_integer(GtkWidget *widget, const gchar *group, const gchar *key, gint def); |
70 | 71 | LIB3270_EXPORT void pw3270_set_integer(GtkWidget *widget, const gchar *group, const gchar *key, gint val); | ... | ... |
src/include/pw3270/v3270.h
... | ... | @@ -188,7 +188,7 @@ |
188 | 188 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); |
189 | 189 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id, gboolean on); |
190 | 190 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); |
191 | - | |
191 | + LIB3270_EXPORT void v3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options); | |
192 | 192 | LIB3270_EXPORT void v3270_set_host(GtkWidget *widget, const gchar *uri); |
193 | 193 | |
194 | 194 | // Keyboard & Mouse special actions | ... | ... |
src/pw3270/actions.c
src/pw3270/dialog.c
... | ... | @@ -45,7 +45,7 @@ |
45 | 45 | if(get_boolean_from_config("host",options[f].key,FALSE)) |
46 | 46 | opt |= options[f].value; |
47 | 47 | } |
48 | - lib3270_set_options(v3270_get_session(widget),opt); | |
48 | + v3270_set_session_options(widget,opt); | |
49 | 49 | } |
50 | 50 | |
51 | 51 | |
... | ... | @@ -432,7 +432,7 @@ |
432 | 432 | set_boolean_to_config("host", options[f].key, val); |
433 | 433 | } |
434 | 434 | |
435 | - lib3270_set_options(v3270_get_session(widget),opt); | |
435 | + v3270_set_session_options(widget,opt); | |
436 | 436 | |
437 | 437 | } |
438 | 438 | ... | ... |
src/pw3270/main.c
... | ... | @@ -38,15 +38,24 @@ |
38 | 38 | #endif // HAVE_GTKMAC |
39 | 39 | |
40 | 40 | #include <pw3270/v3270.h> |
41 | +#include <pw3270/plugin.h> | |
41 | 42 | #include "v3270/accessible.h" |
42 | 43 | #include <stdlib.h> |
43 | 44 | |
45 | + struct option | |
46 | + { | |
47 | + LIB3270_OPTION host; | |
48 | + }; | |
49 | + | |
50 | + #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) | |
51 | + | |
44 | 52 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ |
45 | 53 | |
46 | - static GtkWidget *toplevel = NULL; | |
54 | + static struct option cmdline_opt = { LIB3270_OPTION_DEFAULT }; | |
55 | + static GtkWidget * toplevel = NULL; | |
47 | 56 | |
48 | 57 | #ifdef HAVE_GTKMAC |
49 | - GtkOSXApplication * osxapp = NULL; | |
58 | + GtkOSXApplication * osxapp = NULL; | |
50 | 59 | #endif // HAVE_GTKMAC |
51 | 60 | |
52 | 61 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
... | ... | @@ -112,13 +121,32 @@ static void toplevel_setup(GtkWindow *window) |
112 | 121 | } |
113 | 122 | |
114 | 123 | #if ! defined( WIN32 ) |
115 | -static gboolean appname(const gchar *option_name, const gchar *value, gpointer data,GError **error) | |
124 | +static gboolean appname(const gchar *option_name, const gchar *value, gpointer data, GError **error) | |
116 | 125 | { |
117 | 126 | g_set_application_name(value); |
118 | 127 | return TRUE; |
119 | 128 | } |
120 | 129 | #endif // !win32 |
121 | 130 | |
131 | +static gboolean optcolors(const gchar *option_name, const gchar *value, gpointer data, GError **error) | |
132 | +{ | |
133 | + switch(atoi(value)) | |
134 | + { | |
135 | + case 8: | |
136 | + ((struct option *) data)->host |= LIB3270_OPTION_COLOR8; | |
137 | + break; | |
138 | + | |
139 | + case 16: | |
140 | + break; | |
141 | + | |
142 | + default: | |
143 | + *error = g_error_new(ERROR_DOMAIN,EINVAL, _("Unexpected or invalid color value \"%s\""), value ); | |
144 | + return FALSE; | |
145 | + } | |
146 | + | |
147 | + return TRUE; | |
148 | +} | |
149 | + | |
122 | 150 | int main(int argc, char *argv[]) |
123 | 151 | { |
124 | 152 | #if defined( WIN32 ) |
... | ... | @@ -190,15 +218,20 @@ int main(int argc, char *argv[]) |
190 | 218 | #endif // WIN32 |
191 | 219 | { "session", 's', 0, G_OPTION_ARG_STRING, &session_name, N_( "Session name" ), PACKAGE_NAME }, |
192 | 220 | { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL }, |
221 | + { "colors", 'c', 0, G_OPTION_ARG_CALLBACK, optcolors, N_( "Set reported colors (8/16)" ), "16" }, | |
222 | + | |
193 | 223 | { NULL } |
194 | 224 | }; |
195 | 225 | |
196 | - GOptionContext * options = g_option_context_new (_("- 3270 Emulator for Gtk")); | |
197 | - GError * error = NULL; | |
226 | + GOptionContext * context = g_option_context_new (_("- 3270 Emulator for Gtk")); | |
227 | + GError * error = NULL; | |
228 | + GOptionGroup * group = g_option_group_new( PACKAGE_NAME, NULL, NULL, &cmdline_opt, NULL); | |
229 | + | |
230 | + g_option_context_set_main_group(context, group); | |
198 | 231 | |
199 | - g_option_context_add_main_entries(options, app_options, NULL); | |
232 | + g_option_context_add_main_entries(context, app_options, NULL); | |
200 | 233 | |
201 | - if(!g_option_context_parse( options, &argc, &argv, &error )) | |
234 | + if(!g_option_context_parse( context, &argc, &argv, &error )) | |
202 | 235 | { |
203 | 236 | int f; |
204 | 237 | GString * str; |
... | ... | @@ -225,6 +258,7 @@ int main(int argc, char *argv[]) |
225 | 258 | |
226 | 259 | return -1; |
227 | 260 | } |
261 | + | |
228 | 262 | } |
229 | 263 | |
230 | 264 | { |
... | ... | @@ -274,6 +308,7 @@ int main(int argc, char *argv[]) |
274 | 308 | |
275 | 309 | toplevel = pw3270_new(host); |
276 | 310 | pw3270_set_session_name(toplevel,session_name); |
311 | + pw3270_set_session_options(toplevel,cmdline_opt.host); | |
277 | 312 | |
278 | 313 | toplevel_setup(GTK_WINDOW(toplevel)); |
279 | 314 | ... | ... |
src/pw3270/v3270/widget.c
... | ... | @@ -1438,6 +1438,12 @@ void v3270_set_session_name(GtkWidget *widget, const gchar *name) |
1438 | 1438 | GTK_V3270(widget)->session_name = g_strdup(name); |
1439 | 1439 | } |
1440 | 1440 | |
1441 | +void v3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options) | |
1442 | +{ | |
1443 | + g_return_if_fail(GTK_IS_V3270(widget)); | |
1444 | + lib3270_set_options(GTK_V3270(widget)->host,options); | |
1445 | +} | |
1446 | + | |
1441 | 1447 | gboolean v3270_is_connected(GtkWidget *widget) |
1442 | 1448 | { |
1443 | 1449 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); | ... | ... |
src/pw3270/window.c
... | ... | @@ -233,6 +233,12 @@ |
233 | 233 | gtk_window_set_title(GTK_WINDOW(widget),name); |
234 | 234 | } |
235 | 235 | |
236 | + LIB3270_EXPORT void pw3270_set_session_options(GtkWidget *widget, LIB3270_OPTION options) | |
237 | + { | |
238 | + g_return_if_fail(GTK_IS_PW3270(widget)); | |
239 | + v3270_set_session_options(GTK_PW3270(widget)->terminal,options); | |
240 | + } | |
241 | + | |
236 | 242 | static void chktoplevel(GtkWidget *window, GtkWidget **widget) |
237 | 243 | { |
238 | 244 | if(*widget) | ... | ... |