Commit b3e369a793087a2651204057c85e5fe8bc82ca33
1 parent
c27af356
Exists in
master
and in
5 other branches
Incluindo parâmetro para remapear caracteres.
Showing
7 changed files
with
90 additions
and
11 deletions
Show diff stats
pw3270.cbp
| @@ -93,6 +93,10 @@ | @@ -93,6 +93,10 @@ | ||
| 93 | <Unit filename="src/include/pw3270/ipcpackets.h" /> | 93 | <Unit filename="src/include/pw3270/ipcpackets.h" /> |
| 94 | <Unit filename="src/include/pw3270/plugin.h" /> | 94 | <Unit filename="src/include/pw3270/plugin.h" /> |
| 95 | <Unit filename="src/include/pw3270/trace.h" /> | 95 | <Unit filename="src/include/pw3270/trace.h" /> |
| 96 | + <Unit filename="src/include/pw3270/v3270.h"> | ||
| 97 | + <Option target="Debug" /> | ||
| 98 | + <Option target="Release" /> | ||
| 99 | + </Unit> | ||
| 96 | <Unit filename="src/include/pw3270cpp.h" /> | 100 | <Unit filename="src/include/pw3270cpp.h" /> |
| 97 | <Unit filename="src/include/rules.mak.in" /> | 101 | <Unit filename="src/include/rules.mak.in" /> |
| 98 | <Unit filename="src/java/Makefile.in"> | 102 | <Unit filename="src/java/Makefile.in"> |
| @@ -461,6 +465,11 @@ | @@ -461,6 +465,11 @@ | ||
| 461 | <Option compilerVar="CC" /> | 465 | <Option compilerVar="CC" /> |
| 462 | </Unit> | 466 | </Unit> |
| 463 | <Unit filename="src/pw3270/v3270/accessible.h" /> | 467 | <Unit filename="src/pw3270/v3270/accessible.h" /> |
| 468 | + <Unit filename="src/pw3270/v3270/charset.c"> | ||
| 469 | + <Option compilerVar="CC" /> | ||
| 470 | + <Option target="Debug" /> | ||
| 471 | + <Option target="Release" /> | ||
| 472 | + </Unit> | ||
| 464 | <Unit filename="src/pw3270/v3270/draw.c"> | 473 | <Unit filename="src/pw3270/v3270/draw.c"> |
| 465 | <Option compilerVar="CC" /> | 474 | <Option compilerVar="CC" /> |
| 466 | </Unit> | 475 | </Unit> |
src/include/pw3270.h
| @@ -87,6 +87,7 @@ | @@ -87,6 +87,7 @@ | ||
| 87 | LIB3270_EXPORT gchar * pw3270_file_chooser(GtkFileChooserAction action, const gchar *name, const gchar *title, const gchar *file); | 87 | LIB3270_EXPORT gchar * pw3270_file_chooser(GtkFileChooserAction action, const gchar *name, const gchar *title, const gchar *file); |
| 88 | 88 | ||
| 89 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name); | 89 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name); |
| 90 | + LIB3270_EXPORT void pw3270_remap_from_xml(GtkWidget *widget, const gchar *name); | ||
| 90 | 91 | ||
| 91 | LIB3270_EXPORT void pw3270_set_action_state(GtkAction *action, gboolean on); | 92 | LIB3270_EXPORT void pw3270_set_action_state(GtkAction *action, gboolean on); |
| 92 | 93 |
src/include/pw3270/v3270.h
| @@ -245,6 +245,8 @@ | @@ -245,6 +245,8 @@ | ||
| 245 | LIB3270_EXPORT const char * v3270_get_luname(GtkWidget *widget); | 245 | LIB3270_EXPORT const char * v3270_get_luname(GtkWidget *widget); |
| 246 | LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void); | 246 | LIB3270_EXPORT GtkWidget * v3270_get_default_widget(void); |
| 247 | 247 | ||
| 248 | + LIB3270_EXPORT void v3270_remap_from_xml(GtkWidget *widget, const gchar *path); | ||
| 249 | + | ||
| 248 | // Keyboard & Mouse special actions | 250 | // Keyboard & Mouse special actions |
| 249 | LIB3270_EXPORT gboolean v3270_set_keyboard_action(GtkWidget *widget, const gchar *key_name, GtkAction *action); | 251 | LIB3270_EXPORT gboolean v3270_set_keyboard_action(GtkWidget *widget, const gchar *key_name, GtkAction *action); |
| 250 | LIB3270_EXPORT void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action); | 252 | LIB3270_EXPORT void v3270_set_scroll_action(GtkWidget *widget, GdkScrollDirection direction, GtkAction *action); |
src/pw3270/main.c
| @@ -52,16 +52,17 @@ | @@ -52,16 +52,17 @@ | ||
| 52 | 52 | ||
| 53 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ | 53 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ |
| 54 | 54 | ||
| 55 | - static GtkWidget * toplevel = NULL; | ||
| 56 | - static GtkWidget * trace_window = NULL; | ||
| 57 | - static unsigned int syscolors = 16; | ||
| 58 | - static unsigned int timer = 0; | 55 | + static GtkWidget * toplevel = NULL; |
| 56 | + static GtkWidget * trace_window = NULL; | ||
| 57 | + static unsigned int syscolors = 16; | ||
| 58 | + static unsigned int timer = 0; | ||
| 59 | static const gchar * systype = NULL; | 59 | static const gchar * systype = NULL; |
| 60 | static const gchar * toggleset = NULL; | 60 | static const gchar * toggleset = NULL; |
| 61 | static const gchar * togglereset = NULL; | 61 | static const gchar * togglereset = NULL; |
| 62 | - static const gchar * logfile = NULL; | 62 | + static const gchar * logfile = NULL; |
| 63 | static const gchar * tracefile = NULL; | 63 | static const gchar * tracefile = NULL; |
| 64 | static const gchar * charset = NULL; | 64 | static const gchar * charset = NULL; |
| 65 | + static const gchar * remap = NULL; | ||
| 65 | static const gchar * model = NULL; | 66 | static const gchar * model = NULL; |
| 66 | static const gchar * pluginpath = NULL; | 67 | static const gchar * pluginpath = NULL; |
| 67 | 68 | ||
| @@ -384,6 +385,7 @@ int main(int argc, char *argv[]) | @@ -384,6 +385,7 @@ int main(int argc, char *argv[]) | ||
| 384 | { "toggleset", 'S', 0, G_OPTION_ARG_STRING, &toggleset, N_( "Set toggles ON" ), NULL }, | 385 | { "toggleset", 'S', 0, G_OPTION_ARG_STRING, &toggleset, N_( "Set toggles ON" ), NULL }, |
| 385 | { "togglereset", 'R', 0, G_OPTION_ARG_STRING, &togglereset, N_( "Set toggles OFF" ), NULL }, | 386 | { "togglereset", 'R', 0, G_OPTION_ARG_STRING, &togglereset, N_( "Set toggles OFF" ), NULL }, |
| 386 | { "charset", 'C', 0, G_OPTION_ARG_STRING, &charset, N_( "Set host charset" ), NULL }, | 387 | { "charset", 'C', 0, G_OPTION_ARG_STRING, &charset, N_( "Set host charset" ), NULL }, |
| 388 | + { "remap", 'm', 0, G_OPTION_ARG_FILENAME, &remap, N_( "Remap charset from xml file" ), NULL }, | ||
| 387 | { "model", 'M', 0, G_OPTION_ARG_STRING, &model, N_( "The model of 3270 display to be emulated" ), NULL }, | 389 | { "model", 'M', 0, G_OPTION_ARG_STRING, &model, N_( "The model of 3270 display to be emulated" ), NULL }, |
| 388 | { "autodisconnect", 'D', 0, G_OPTION_ARG_INT, &timer, N_( "Minutes for auto-disconnect" ), 0 }, | 390 | { "autodisconnect", 'D', 0, G_OPTION_ARG_INT, &timer, N_( "Minutes for auto-disconnect" ), 0 }, |
| 389 | { "pluginpath", 'P', 0, G_OPTION_ARG_STRING, &pluginpath, N_( "Path for plugin files" ), NULL }, | 391 | { "pluginpath", 'P', 0, G_OPTION_ARG_STRING, &pluginpath, N_( "Path for plugin files" ), NULL }, |
| @@ -567,10 +569,8 @@ int main(int argc, char *argv[]) | @@ -567,10 +569,8 @@ int main(int argc, char *argv[]) | ||
| 567 | g_strfreev(str); | 569 | g_strfreev(str); |
| 568 | } | 570 | } |
| 569 | 571 | ||
| 570 | - if(charset) | ||
| 571 | - { | ||
| 572 | - pw3270_set_host_charset(toplevel,charset); | ||
| 573 | - } | 572 | + pw3270_set_host_charset(toplevel,charset); |
| 573 | + pw3270_remap_from_xml(toplevel,remap); | ||
| 574 | 574 | ||
| 575 | toplevel_setup(GTK_WINDOW(toplevel)); | 575 | toplevel_setup(GTK_WINDOW(toplevel)); |
| 576 | 576 |
src/pw3270/tools.c
| @@ -280,11 +280,19 @@ LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...) | @@ -280,11 +280,19 @@ LIB3270_EXPORT gchar * pw3270_get_datadir(const gchar *first_element, ...) | ||
| 280 | return path; | 280 | return path; |
| 281 | } | 281 | } |
| 282 | 282 | ||
| 283 | +LIB3270_EXPORT void pw3270_remap_from_xml(GtkWidget *widget, const gchar *name) | ||
| 284 | +{ | ||
| 285 | + if(name) | ||
| 286 | + { | ||
| 287 | + v3270_remap_from_xml(pw3270_get_terminal_widget(widget),name); | ||
| 288 | + } | ||
| 289 | +} | ||
| 290 | + | ||
| 283 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name) | 291 | LIB3270_EXPORT void pw3270_set_host_charset(GtkWidget *widget, const gchar *name) |
| 284 | { | 292 | { |
| 285 | H3270 * hSession = pw3270_get_session(widget); | 293 | H3270 * hSession = pw3270_get_session(widget); |
| 286 | 294 | ||
| 287 | - if(!hSession) | 295 | + if(!(hSession && name)) |
| 288 | return; | 296 | return; |
| 289 | 297 | ||
| 290 | if(!lib3270_set_host_charset(hSession,name)) | 298 | if(!lib3270_set_host_charset(hSession,name)) |
src/pw3270/v3270/Makefile.in
| @@ -27,7 +27,7 @@ | @@ -27,7 +27,7 @@ | ||
| 27 | MODULE_NAME=v3270 | 27 | MODULE_NAME=v3270 |
| 28 | 28 | ||
| 29 | SOURCES=marshal.c widget.c oia.c iocallback.c keyboard.c draw.c mouse.c selection.c \ | 29 | SOURCES=marshal.c widget.c oia.c iocallback.c keyboard.c draw.c mouse.c selection.c \ |
| 30 | - accessible.c security.c macros.c hostselect.c properties.c | 30 | + accessible.c security.c macros.c hostselect.c properties.c charset.c |
| 31 | 31 | ||
| 32 | #---[ Configuration values ]------------------------------------------------------------- | 32 | #---[ Configuration values ]------------------------------------------------------------- |
| 33 | 33 |
| @@ -0,0 +1,59 @@ | @@ -0,0 +1,59 @@ | ||
| 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. | ||
| 5 | + * | ||
| 6 | + * Copyright (C) <2008> <Banco do Brasil S.A.> | ||
| 7 | + * | ||
| 8 | + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob | ||
| 9 | + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela | ||
| 10 | + * Free Software Foundation. | ||
| 11 | + * | ||
| 12 | + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER | ||
| 13 | + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO | ||
| 14 | + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para | ||
| 15 | + * obter mais detalhes. | ||
| 16 | + * | ||
| 17 | + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este | ||
| 18 | + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin | ||
| 19 | + * St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 20 | + * | ||
| 21 | + * Este programa está nomeado como charset.c e possui - linhas de código. | ||
| 22 | + * | ||
| 23 | + * Contatos: | ||
| 24 | + * | ||
| 25 | + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) | ||
| 26 | + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) | ||
| 27 | + * | ||
| 28 | + */ | ||
| 29 | + | ||
| 30 | + #include <v3270.h> | ||
| 31 | + #include "private.h" | ||
| 32 | + #include <lib3270/charset.h> | ||
| 33 | + | ||
| 34 | + | ||
| 35 | + #define ERROR_DOMAIN g_quark_from_static_string(PACKAGE_NAME) | ||
| 36 | + | ||
| 37 | +/*--[ Implement ]------------------------------------------------------------------------------------*/ | ||
| 38 | + | ||
| 39 | + struct parse | ||
| 40 | + { | ||
| 41 | + char * host; | ||
| 42 | + char * display; | ||
| 43 | + unsigned long cgcsgid; | ||
| 44 | + }; | ||
| 45 | + | ||
| 46 | + LIB3270_EXPORT void v3270_remap_from_xml(GtkWidget *widget, const gchar *path) | ||
| 47 | + { | ||
| 48 | + struct parse cfg; | ||
| 49 | + v3270 * terminal = GTK_V3270(widget); | ||
| 50 | + | ||
| 51 | + memset(&cfg,0,sizeof(cfg)); | ||
| 52 | + | ||
| 53 | + | ||
| 54 | + | ||
| 55 | + g_free(cfg.host); | ||
| 56 | + g_free(cfg.display); | ||
| 57 | + | ||
| 58 | + } | ||
| 59 | + |