Commit d5af298c926decb44a6e928050c90bf6c50ac930

Authored by perry.werneck@gmail.com
1 parent 4baad403

Incluindo suporte a macros no widget do emulador

@@ -5,7 +5,7 @@ msgid "" @@ -5,7 +5,7 @@ msgid ""
5 msgstr "" 5 msgstr ""
6 "Project-Id-Version: pw3270 5.0\n" 6 "Project-Id-Version: pw3270 5.0\n"
7 "Report-Msgid-Bugs-To: \n" 7 "Report-Msgid-Bugs-To: \n"
8 -"POT-Creation-Date: 2013-01-14 09:39-0200\n" 8 +"POT-Creation-Date: 2013-01-30 10:26-0200\n"
9 "PO-Revision-Date: 2013-01-14 09:49-0200\n" 9 "PO-Revision-Date: 2013-01-14 09:49-0200\n"
10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n" 10 "Last-Translator: Perry Werneck <perry.werneck@gmail.com>\n"
11 "Language-Team: Português <>\n" 11 "Language-Team: Português <>\n"
@@ -266,9 +266,6 @@ @@ -266,9 +266,6 @@
266 <Unit filename="src/pw3270/hostdialog.c"> 266 <Unit filename="src/pw3270/hostdialog.c">
267 <Option compilerVar="CC" /> 267 <Option compilerVar="CC" />
268 </Unit> 268 </Unit>
269 - <Unit filename="src/pw3270/macros.c">  
270 - <Option compilerVar="CC" />  
271 - </Unit>  
272 <Unit filename="src/pw3270/main.c"> 269 <Unit filename="src/pw3270/main.c">
273 <Option compilerVar="CC" /> 270 <Option compilerVar="CC" />
274 </Unit> 271 </Unit>
@@ -348,6 +345,9 @@ @@ -348,6 +345,9 @@
348 <Unit filename="src/pw3270/v3270/keyboard.c"> 345 <Unit filename="src/pw3270/v3270/keyboard.c">
349 <Option compilerVar="CC" /> 346 <Option compilerVar="CC" />
350 </Unit> 347 </Unit>
  348 + <Unit filename="src/pw3270/v3270/macros.c">
  349 + <Option compilerVar="CC" />
  350 + </Unit>
351 <Unit filename="src/pw3270/v3270/mouse.c"> 351 <Unit filename="src/pw3270/v3270/mouse.c">
352 <Option compilerVar="CC" /> 352 <Option compilerVar="CC" />
353 </Unit> 353 </Unit>
src/include/pw3270.h
@@ -75,8 +75,6 @@ @@ -75,8 +75,6 @@
75 75
76 LIB3270_EXPORT gboolean pw3270_get_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gboolean def); 76 LIB3270_EXPORT gboolean pw3270_get_boolean(GtkWidget *widget, const gchar *group, const gchar *key, gboolean def);
77 77
78 - LIB3270_EXPORT int pw3270_run_macro(GtkWidget *widget, int argc, const char **argv);  
79 -  
80 typedef enum pw3270_src 78 typedef enum pw3270_src
81 { 79 {
82 PW3270_SRC_ALL, /**< Screen contents */ 80 PW3270_SRC_ALL, /**< Screen contents */
src/pw3270/Makefile.in
@@ -59,7 +59,7 @@ include uiparser/sources.mak @@ -59,7 +59,7 @@ include uiparser/sources.mak
59 APP_SOURCES= main.c @APP_GUI_SRC@ 59 APP_SOURCES= main.c @APP_GUI_SRC@
60 60
61 LIB_SOURCES= window.c actions.c fonts.c dialog.c hostdialog.c print.c colors.c \ 61 LIB_SOURCES= window.c actions.c fonts.c dialog.c hostdialog.c print.c colors.c \
62 - filetransfer.c tools.c plugin.c macros.c \ 62 + filetransfer.c tools.c plugin.c \
63 $(foreach SRC, $(UI_PARSER_SRC), uiparser/$(SRC)) \ 63 $(foreach SRC, $(UI_PARSER_SRC), uiparser/$(SRC)) \
64 $(foreach SRC, $(V3270_SRC), v3270/$(SRC)) \ 64 $(foreach SRC, $(V3270_SRC), v3270/$(SRC)) \
65 $(foreach SRC, $(COMMON_SRC), common/$(SRC)) 65 $(foreach SRC, $(COMMON_SRC), common/$(SRC))
src/pw3270/actions.c
@@ -863,43 +863,6 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash @@ -863,43 +863,6 @@ GtkAction * ui_get_action(GtkWidget *widget, const gchar *name, GHashTable *hash
863 static void action_text_script(GtkAction *action, GtkWidget *widget) 863 static void action_text_script(GtkAction *action, GtkWidget *widget)
864 { 864 {
865 v3270_run_script(widget,g_object_get_data(G_OBJECT(action),"script_text")); 865 v3270_run_script(widget,g_object_get_data(G_OBJECT(action),"script_text"));
866 -  
867 -/*  
868 - gchar **ln = g_strsplit(g_object_get_data(G_OBJECT(action),"script_text"),"\n",-1);  
869 - int f;  
870 - H3270 * hSession = v3270_get_session(widget);  
871 -  
872 - lib3270_trace_event(v3270_get_session(widget),"Action %s activated on widget %p\n",gtk_action_get_name(action),widget);  
873 -  
874 - for(f=0;ln[f];f++)  
875 - {  
876 - GError * error = NULL;  
877 - gint argc = 0;  
878 - gchar **argv = NULL;  
879 -  
880 - if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error))  
881 - {  
882 - if(pw3270_run_macro(widget, argc,(const gchar **) argv) < 0)  
883 - {  
884 - gchar *rsp = lib3270_run_macro(hSession,(const gchar **) argv);  
885 - if(rsp)  
886 - g_free(rsp);  
887 - }  
888 - }  
889 - else  
890 - {  
891 - g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message);  
892 - g_error_free(error);  
893 - }  
894 -  
895 - if(argv)  
896 - g_strfreev(argv);  
897 -  
898 - }  
899 -  
900 -  
901 - g_strfreev(ln);  
902 -*/  
903 } 866 }
904 867
905 void ui_connect_text_script(GtkWidget *widget, GtkAction *action, const gchar *script_text, GError **error) 868 void ui_connect_text_script(GtkWidget *widget, GtkAction *action, const gchar *script_text, GError **error)
src/pw3270/macros.c
@@ -1,80 +0,0 @@ @@ -1,80 +0,0 @@
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 macros.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 - * licinio@bb.com.br (Licínio Luis Branco)  
28 - * kraucer@bb.com.br (Kraucer Fernandes Mazuco)  
29 - * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda)  
30 - *  
31 - */  
32 -  
33 - #include "globals.h"  
34 - #include <pw3270/v3270.h>  
35 -  
36 -  
37 -  
38 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
39 -  
40 - static int pw3270_macro_copy(GtkWidget *widget, int argc, const char **argv)  
41 - {  
42 - trace("%s",__FUNCTION__);  
43 - v3270_copy(widget, V3270_SELECT_TEXT, FALSE);  
44 - return 0;  
45 - }  
46 -  
47 - static int pw3270_macro_append(GtkWidget *widget, int argc, const char **argv)  
48 - {  
49 - trace("%s",__FUNCTION__);  
50 - v3270_copy_append(widget);  
51 - return 0;  
52 - }  
53 -  
54 - LIB3270_EXPORT int pw3270_run_macro(GtkWidget *widget, int argc, const char **argv)  
55 - {  
56 - #define PW3270_MACRO( name ) { #name, pw3270_macro_ ## name }  
57 -  
58 - static const struct _list  
59 - {  
60 - const char *name;  
61 - int (*exec)(GtkWidget *widget, int argc, const char **argv);  
62 - } list[] =  
63 - {  
64 - PW3270_MACRO( copy ),  
65 - PW3270_MACRO( append ),  
66 - };  
67 - int f;  
68 -  
69 - trace("<%s>",argv[0]);  
70 -  
71 - for(f=0;f<G_N_ELEMENTS(list);f++)  
72 - {  
73 - if(!g_strcasecmp(argv[0],list[f].name))  
74 - return list[f].exec(widget,argc,argv);  
75 - }  
76 -  
77 - trace("<%s>",argv[0]);  
78 -  
79 - return -1;  
80 - }  
src/pw3270/v3270/macros.c 0 → 100644
@@ -0,0 +1,120 @@ @@ -0,0 +1,120 @@
  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 macros.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 + * licinio@bb.com.br (Licínio Luis Branco)
  28 + * kraucer@bb.com.br (Kraucer Fernandes Mazuco)
  29 + * macmiranda@bb.com.br (Marco Aurélio Caldas Miranda)
  30 + *
  31 + */
  32 +
  33 + #include "private.h"
  34 + #include <lib3270/macros.h>
  35 +
  36 +/*--[ Implement ]------------------------------------------------------------------------------------*/
  37 +
  38 + static int v3270_macro_copy(GtkWidget *widget, int argc, const char **argv)
  39 + {
  40 + v3270_copy(widget, V3270_SELECT_TEXT, FALSE);
  41 + return 0;
  42 + }
  43 +
  44 + static int v3270_macro_append(GtkWidget *widget, int argc, const char **argv)
  45 + {
  46 + v3270_copy_append(widget);
  47 + return 0;
  48 + }
  49 +
  50 + static int run_macro(GtkWidget *widget, int argc, const char **argv)
  51 + {
  52 + #define V3270_MACRO( name ) { #name, v3270_macro_ ## name }
  53 +
  54 + static const struct _list
  55 + {
  56 + const char *name;
  57 + int (*exec)(GtkWidget *widget, int argc, const char **argv);
  58 + } list[] =
  59 + {
  60 + V3270_MACRO( copy ),
  61 + V3270_MACRO( append ),
  62 + };
  63 +
  64 + int f;
  65 + gchar *rsp;
  66 +
  67 + for(f=0;f<G_N_ELEMENTS(list);f++)
  68 + {
  69 + if(!g_ascii_strcasecmp(argv[0],list[f].name))
  70 + return list[f].exec(widget,argc,argv);
  71 + }
  72 +
  73 + rsp = lib3270_run_macro(GTK_V3270(widget)->host,argv);
  74 + if(rsp)
  75 + {
  76 + g_free(rsp);
  77 + return 0;
  78 + }
  79 +
  80 + return -1;
  81 + }
  82 +
  83 + int v3270_run_script(GtkWidget *widget, const gchar *script)
  84 +{
  85 + gchar **ln;
  86 + int f;
  87 +
  88 + if(!script)
  89 + return 0;
  90 +
  91 + g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL);
  92 +
  93 + ln = g_strsplit(script,"\n",-1);
  94 +
  95 + for(f=0;ln[f];f++)
  96 + {
  97 + GError * error = NULL;
  98 + gint argc = 0;
  99 + gchar **argv = NULL;
  100 +
  101 + if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error))
  102 + {
  103 + run_macro(widget, argc, (const char **) argv);
  104 + }
  105 + else
  106 + {
  107 + g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message);
  108 + g_error_free(error);
  109 + }
  110 +
  111 + if(argv)
  112 + g_strfreev(argv);
  113 +
  114 + }
  115 +
  116 + g_strfreev(ln);
  117 +
  118 + return 0;
  119 +}
  120 +
src/pw3270/v3270/sources.mak
@@ -27,5 +27,5 @@ @@ -27,5 +27,5 @@
27 # 27 #
28 28
29 V3270_SRC=marshal.c widget.c oia.c iocallback.c keyboard.c draw.c mouse.c selection.c \ 29 V3270_SRC=marshal.c widget.c oia.c iocallback.c keyboard.c draw.c mouse.c selection.c \
30 - accessible.c security.c 30 + accessible.c security.c macros.c
31 31
src/pw3270/v3270/widget.c
@@ -1544,44 +1544,3 @@ gboolean v3270_is_connected(GtkWidget *widget) @@ -1544,44 +1544,3 @@ gboolean v3270_is_connected(GtkWidget *widget)
1544 return lib3270_connected(GTK_V3270(widget)->host) ? TRUE : FALSE; 1544 return lib3270_connected(GTK_V3270(widget)->host) ? TRUE : FALSE;
1545 } 1545 }
1546 1546
1547 -int v3270_run_script(GtkWidget *widget, const gchar *script)  
1548 -{  
1549 - gchar **ln;  
1550 - int f;  
1551 - H3270 * hSession;  
1552 -  
1553 - if(!script)  
1554 - return 0;  
1555 -  
1556 - g_return_val_if_fail(GTK_IS_V3270(widget),EINVAL);  
1557 -  
1558 - hSession = v3270_get_session(widget);  
1559 - ln = g_strsplit(script,"\n",-1);  
1560 -  
1561 - for(f=0;ln[f];f++)  
1562 - {  
1563 - GError * error = NULL;  
1564 - gint argc = 0;  
1565 - gchar **argv = NULL;  
1566 -  
1567 - if(g_shell_parse_argv(g_strstrip(ln[f]),&argc,&argv,&error))  
1568 - {  
1569 - gchar *rsp = lib3270_run_macro(hSession,(const gchar **) argv);  
1570 - if(rsp)  
1571 - g_free(rsp);  
1572 - }  
1573 - else  
1574 - {  
1575 - g_warning("Error parsing \"%s\": %s",g_strstrip(ln[f]),error->message);  
1576 - g_error_free(error);  
1577 - }  
1578 -  
1579 - if(argv)  
1580 - g_strfreev(argv);  
1581 -  
1582 - }  
1583 -  
1584 - g_strfreev(ln);  
1585 -  
1586 - return 0;  
1587 -}