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
@@ -246,7 +246,8 @@ | @@ -246,7 +246,8 @@ | ||
246 | 246 | ||
247 | } LIB3270_OPTION; | 247 | } LIB3270_OPTION; |
248 | 248 | ||
249 | - #define LIB3270_OPTION_COUNT 2 | 249 | + #define LIB3270_OPTION_DEFAULT 0 |
250 | + #define LIB3270_OPTION_COUNT 2 | ||
250 | 251 | ||
251 | typedef struct _lib3270_option_entry | 252 | typedef struct _lib3270_option_entry |
252 | { | 253 | { |
src/include/pw3270.h
@@ -65,6 +65,7 @@ | @@ -65,6 +65,7 @@ | ||
65 | 65 | ||
66 | LIB3270_EXPORT const gchar * pw3270_get_session_name(GtkWidget *widget); | 66 | LIB3270_EXPORT const gchar * pw3270_get_session_name(GtkWidget *widget); |
67 | LIB3270_EXPORT void pw3270_set_session_name(GtkWidget *widget, const gchar *name); | 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 | LIB3270_EXPORT gint pw3270_get_integer(GtkWidget *widget, const gchar *group, const gchar *key, gint def); | 70 | LIB3270_EXPORT gint pw3270_get_integer(GtkWidget *widget, const gchar *group, const gchar *key, gint def); |
70 | LIB3270_EXPORT void pw3270_set_integer(GtkWidget *widget, const gchar *group, const gchar *key, gint val); | 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,7 +188,7 @@ | ||
188 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); | 188 | LIB3270_EXPORT void v3270_set_session_name(GtkWidget *widget, const gchar *name); |
189 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id, gboolean on); | 189 | LIB3270_EXPORT int v3270_set_script(GtkWidget *widget, const gchar id, gboolean on); |
190 | LIB3270_EXPORT void v3270_set_scaled_fonts(GtkWidget *widget, gboolean on); | 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 | LIB3270_EXPORT void v3270_set_host(GtkWidget *widget, const gchar *uri); | 192 | LIB3270_EXPORT void v3270_set_host(GtkWidget *widget, const gchar *uri); |
193 | 193 | ||
194 | // Keyboard & Mouse special actions | 194 | // Keyboard & Mouse special actions |
src/pw3270/actions.c
@@ -73,7 +73,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | @@ -73,7 +73,7 @@ static void connect_action(GtkAction *action, GtkWidget *widget) | ||
73 | 73 | ||
74 | if(host) | 74 | if(host) |
75 | { | 75 | { |
76 | - lib3270_set_options(v3270_get_session(widget),0); | 76 | + v3270_set_session_options(widget,0); |
77 | v3270_connect(widget,host); | 77 | v3270_connect(widget,host); |
78 | return; | 78 | return; |
79 | } | 79 | } |
src/pw3270/dialog.c
@@ -45,7 +45,7 @@ | @@ -45,7 +45,7 @@ | ||
45 | if(get_boolean_from_config("host",options[f].key,FALSE)) | 45 | if(get_boolean_from_config("host",options[f].key,FALSE)) |
46 | opt |= options[f].value; | 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,7 +432,7 @@ | ||
432 | set_boolean_to_config("host", options[f].key, val); | 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,15 +38,24 @@ | ||
38 | #endif // HAVE_GTKMAC | 38 | #endif // HAVE_GTKMAC |
39 | 39 | ||
40 | #include <pw3270/v3270.h> | 40 | #include <pw3270/v3270.h> |
41 | +#include <pw3270/plugin.h> | ||
41 | #include "v3270/accessible.h" | 42 | #include "v3270/accessible.h" |
42 | #include <stdlib.h> | 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 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ | 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 | #ifdef HAVE_GTKMAC | 57 | #ifdef HAVE_GTKMAC |
49 | - GtkOSXApplication * osxapp = NULL; | 58 | + GtkOSXApplication * osxapp = NULL; |
50 | #endif // HAVE_GTKMAC | 59 | #endif // HAVE_GTKMAC |
51 | 60 | ||
52 | /*--[ Implement ]------------------------------------------------------------------------------------*/ | 61 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
@@ -112,13 +121,32 @@ static void toplevel_setup(GtkWindow *window) | @@ -112,13 +121,32 @@ static void toplevel_setup(GtkWindow *window) | ||
112 | } | 121 | } |
113 | 122 | ||
114 | #if ! defined( WIN32 ) | 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 | g_set_application_name(value); | 126 | g_set_application_name(value); |
118 | return TRUE; | 127 | return TRUE; |
119 | } | 128 | } |
120 | #endif // !win32 | 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 | int main(int argc, char *argv[]) | 150 | int main(int argc, char *argv[]) |
123 | { | 151 | { |
124 | #if defined( WIN32 ) | 152 | #if defined( WIN32 ) |
@@ -190,15 +218,20 @@ int main(int argc, char *argv[]) | @@ -190,15 +218,20 @@ int main(int argc, char *argv[]) | ||
190 | #endif // WIN32 | 218 | #endif // WIN32 |
191 | { "session", 's', 0, G_OPTION_ARG_STRING, &session_name, N_( "Session name" ), PACKAGE_NAME }, | 219 | { "session", 's', 0, G_OPTION_ARG_STRING, &session_name, N_( "Session name" ), PACKAGE_NAME }, |
192 | { "host", 'h', 0, G_OPTION_ARG_STRING, &host, N_( "Host to connect"), NULL }, | 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 | { NULL } | 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 | int f; | 236 | int f; |
204 | GString * str; | 237 | GString * str; |
@@ -225,6 +258,7 @@ int main(int argc, char *argv[]) | @@ -225,6 +258,7 @@ int main(int argc, char *argv[]) | ||
225 | 258 | ||
226 | return -1; | 259 | return -1; |
227 | } | 260 | } |
261 | + | ||
228 | } | 262 | } |
229 | 263 | ||
230 | { | 264 | { |
@@ -274,6 +308,7 @@ int main(int argc, char *argv[]) | @@ -274,6 +308,7 @@ int main(int argc, char *argv[]) | ||
274 | 308 | ||
275 | toplevel = pw3270_new(host); | 309 | toplevel = pw3270_new(host); |
276 | pw3270_set_session_name(toplevel,session_name); | 310 | pw3270_set_session_name(toplevel,session_name); |
311 | + pw3270_set_session_options(toplevel,cmdline_opt.host); | ||
277 | 312 | ||
278 | toplevel_setup(GTK_WINDOW(toplevel)); | 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,6 +1438,12 @@ void v3270_set_session_name(GtkWidget *widget, const gchar *name) | ||
1438 | GTK_V3270(widget)->session_name = g_strdup(name); | 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 | gboolean v3270_is_connected(GtkWidget *widget) | 1447 | gboolean v3270_is_connected(GtkWidget *widget) |
1442 | { | 1448 | { |
1443 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); | 1449 | g_return_val_if_fail(GTK_IS_V3270(widget),FALSE); |
src/pw3270/window.c
@@ -233,6 +233,12 @@ | @@ -233,6 +233,12 @@ | ||
233 | gtk_window_set_title(GTK_WINDOW(widget),name); | 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 | static void chktoplevel(GtkWidget *window, GtkWidget **widget) | 242 | static void chktoplevel(GtkWidget *window, GtkWidget **widget) |
237 | { | 243 | { |
238 | if(*widget) | 244 | if(*widget) |