From d5af298c926decb44a6e928050c90bf6c50ac930 Mon Sep 17 00:00:00 2001 From: perry.werneck@gmail.com Date: Fri, 15 Feb 2013 10:59:13 +0000 Subject: [PATCH] Incluindo suporte a macros no widget do emulador --- po/pt_BR.po | 2 +- pw3270.cbp | 6 +++--- src/include/pw3270.h | 2 -- src/pw3270/Makefile.in | 2 +- src/pw3270/actions.c | 37 ------------------------------------- src/pw3270/macros.c | 80 -------------------------------------------------------------------------------- src/pw3270/v3270/macros.c | 120 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/pw3270/v3270/sources.mak | 2 +- src/pw3270/v3270/widget.c | 41 ----------------------------------------- 9 files changed, 126 insertions(+), 166 deletions(-) delete mode 100644 src/pw3270/macros.c create mode 100644 src/pw3270/v3270/macros.c diff --git a/po/pt_BR.po b/po/pt_BR.po index 6969f22..4e81089 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: pw3270 5.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2013-01-14 09:39-0200\n" +"POT-Creation-Date: 2013-01-30 10:26-0200\n" "PO-Revision-Date: 2013-01-14 09:49-0200\n" "Last-Translator: Perry Werneck \n" "Language-Team: Português <>\n" diff --git a/pw3270.cbp b/pw3270.cbp index c093a20..444491b 100644 --- a/pw3270.cbp +++ b/pw3270.cbp @@ -266,9 +266,6 @@ - - @@ -348,6 +345,9 @@ + + diff --git a/src/include/pw3270.h b/src/include/pw3270.h index 873f47e..30fa16e 100644 --- a/src/include/pw3270.h +++ b/src/include/pw3270.h @@ -75,8 +75,6 @@ LIB3270_EXPORT gboolean pw3270_get_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gboolean def); - LIB3270_EXPORT int pw3270_run_macro(GtkWidget *widget, int argc, const char **argv); - typedef enum pw3270_src { PW3270_SRC_ALL, /**< Screen contents */ diff --git a/src/pw3270/Makefile.in b/src/pw3270/Makefile.in index dbefad3..8302ddc 100644 --- a/src/pw3270/Makefile.in +++ b/src/pw3270/Makefile.in @@ -59,7 +59,7 @@ include uiparser/sources.mak APP_SOURCES= main.c @APP_GUI_SRC@ LIB_SOURCES= window.c actions.c fonts.c dialog.c hostdialog.c print.c colors.c \ - filetransfer.c tools.c plugin.c macros.c \ + filetransfer.c tools.c plugin.c \ $(foreach SRC, $(UI_PARSER_SRC), uiparser/$(SRC)) \ $(foreach SRC, $(V3270_SRC), v3270/$(SRC)) \ $(foreach SRC, $(COMMON_SRC), common/$(SRC)) diff --git a/src/pw3270/actions.c b/src/pw3270/actions.c index 1870be7..ad533b5 100644 --- a/src/pw3270/actions.c +++ b/src/pw3270/actions.c @@ -863,43 +863,6 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash static void action_text_script(GtkAction *action, GtkWidget *widget) { v3270_run_script(widget,g_object_get_data(G_OBJECT(action),"script_text")); - -/* - gchar **ln = g_strsplit(g_object_get_data(G_OBJECT(action),"script_text"),"\n",-1); - int f; - H3270 * hSession = v3270_get_session(widget); - - lib3270_trace_event(v3270_get_session(widget),"Action %s activated on widget %p\n",gtk_action_get_name(action),widget); - - for(f=0;ln[f];f++) - { - GError * error = NULL; - gint argc = 0; - gchar **argv = NULL; - - if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error)) - { - if(pw3270_run_macro(widget, argc,(const gchar **) argv) < 0) - { - gchar *rsp = lib3270_run_macro(hSession,(const gchar **) argv); - if(rsp) - g_free(rsp); - } - } - else - { - g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message); - g_error_free(error); - } - - if(argv) - g_strfreev(argv); - - } - - - g_strfreev(ln); -*/ } void ui_connect_text_script(GtkWidget *widget, GtkAction *action, const gchar *script_text, GError **error) diff --git a/src/pw3270/macros.c b/src/pw3270/macros.c deleted file mode 100644 index fcdb07c..0000000 --- a/src/pw3270/macros.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 - * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a - * aplicativos mainframe. Registro no INPI sob o nome G3270. - * - * Copyright (C) <2008> - * - * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob - * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela - * Free Software Foundation. - * - * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER - * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO - * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para - * obter mais detalhes. - * - * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este - * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin - * St, Fifth Floor, Boston, MA 02110-1301 USA - * - * Este programa está nomeado como macros.c e possui - linhas de código. - * - * Contatos: - * - * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) - * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) - * licinio@bb.com.br (Licínio Luis Branco) - * kraucer@bb.com.br (Kraucer Fernandes Mazuco) - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) - * - */ - - #include "globals.h" - #include - - - -/*--[ Implement ]------------------------------------------------------------------------------------*/ - - static int pw3270_macro_copy(GtkWidget *widget, int argc, const char **argv) - { - trace("%s",__FUNCTION__); - v3270_copy(widget, V3270_SELECT_TEXT, FALSE); - return 0; - } - - static int pw3270_macro_append(GtkWidget *widget, int argc, const char **argv) - { - trace("%s",__FUNCTION__); - v3270_copy_append(widget); - return 0; - } - - LIB3270_EXPORT int pw3270_run_macro(GtkWidget *widget, int argc, const char **argv) - { - #define PW3270_MACRO( name ) { #name, pw3270_macro_ ## name } - - static const struct _list - { - const char *name; - int (*exec)(GtkWidget *widget, int argc, const char **argv); - } list[] = - { - PW3270_MACRO( copy ), - PW3270_MACRO( append ), - }; - int f; - - trace("<%s>",argv[0]); - - for(f=0;f",argv[0]); - - return -1; - } diff --git a/src/pw3270/v3270/macros.c b/src/pw3270/v3270/macros.c new file mode 100644 index 0000000..2d11a5c --- /dev/null +++ b/src/pw3270/v3270/macros.c @@ -0,0 +1,120 @@ +/* + * "Software pw3270, desenvolvido com base nos códigos fontes do WC3270 e X3270 + * (Paul Mattes Paul.Mattes@usa.net), de emulação de terminal 3270 para acesso a + * aplicativos mainframe. Registro no INPI sob o nome G3270. + * + * Copyright (C) <2008> + * + * Este programa é software livre. Você pode redistribuí-lo e/ou modificá-lo sob + * os termos da GPL v.2 - Licença Pública Geral GNU, conforme publicado pela + * Free Software Foundation. + * + * Este programa é distribuído na expectativa de ser útil, mas SEM QUALQUER + * GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO + * A QUALQUER PROPÓSITO EM PARTICULAR. Consulte a Licença Pública Geral GNU para + * obter mais detalhes. + * + * Você deve ter recebido uma cópia da Licença Pública Geral GNU junto com este + * programa; se não, escreva para a Free Software Foundation, Inc., 51 Franklin + * St, Fifth Floor, Boston, MA 02110-1301 USA + * + * Este programa está nomeado como macros.c e possui - linhas de código. + * + * Contatos: + * + * perry.werneck@gmail.com (Alexandre Perry de Souza Werneck) + * erico.mendonca@gmail.com (Erico Mascarenhas Mendonça) + * licinio@bb.com.br (Licínio Luis Branco) + * kraucer@bb.com.br (Kraucer Fernandes Mazuco) + * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda) + * + */ + + #include "private.h" + #include + +/*--[ Implement ]------------------------------------------------------------------------------------*/ + + static int v3270_macro_copy(GtkWidget *widget, int argc, const char **argv) + { + v3270_copy(widget, V3270_SELECT_TEXT, FALSE); + return 0; + } + + static int v3270_macro_append(GtkWidget *widget, int argc, const char **argv) + { + v3270_copy_append(widget); + return 0; + } + + static int run_macro(GtkWidget *widget, int argc, const char **argv) + { + #define V3270_MACRO( name ) { #name, v3270_macro_ ## name } + + static const struct _list + { + const char *name; + int (*exec)(GtkWidget *widget, int argc, const char **argv); + } list[] = + { + V3270_MACRO( copy ), + V3270_MACRO( append ), + }; + + int f; + gchar *rsp; + + for(f=0;fhost,argv); + if(rsp) + { + g_free(rsp); + return 0; + } + + return -1; + } + + int v3270_run_script(GtkWidget *widget, const gchar *script) +{ + gchar **ln; + int f; + + if(!script) + return 0; + + g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); + + ln = g_strsplit(script,"\n",-1); + + for(f=0;ln[f];f++) + { + GError * error = NULL; + gint argc = 0; + gchar **argv = NULL; + + if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error)) + { + run_macro(widget, argc, (const char **) argv); + } + else + { + g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message); + g_error_free(error); + } + + if(argv) + g_strfreev(argv); + + } + + g_strfreev(ln); + + return 0; +} + diff --git a/src/pw3270/v3270/sources.mak b/src/pw3270/v3270/sources.mak index 83c5203..eeecbef 100644 --- a/src/pw3270/v3270/sources.mak +++ b/src/pw3270/v3270/sources.mak @@ -27,5 +27,5 @@ # V3270_SRC=marshal.c widget.c oia.c iocallback.c keyboard.c draw.c mouse.c selection.c \ - accessible.c security.c + accessible.c security.c macros.c diff --git a/src/pw3270/v3270/widget.c b/src/pw3270/v3270/widget.c index 424c244..4148a77 100644 --- a/src/pw3270/v3270/widget.c +++ b/src/pw3270/v3270/widget.c @@ -1544,44 +1544,3 @@ gboolean v3270_is_connected(GtkWidget *widget) return lib3270_connected(GTK_V3270(widget)->host) ? TRUE : FALSE; } -int v3270_run_script(GtkWidget *widget, const gchar *script) -{ - gchar **ln; - int f; - H3270 * hSession; - - if(!script) - return 0; - - g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL); - - hSession = v3270_get_session(widget); - ln = g_strsplit(script,"\n",-1); - - for(f=0;ln[f];f++) - { - GError * error = NULL; - gint argc = 0; - gchar **argv = NULL; - - if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error)) - { - gchar *rsp = lib3270_run_macro(hSession,(const gchar **) argv); - if(rsp) - g_free(rsp); - } - else - { - g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message); - g_error_free(error); - } - - if(argv) - g_strfreev(argv); - - } - - g_strfreev(ln); - - return 0; -} -- libgit2 0.21.2