Commit bd299580117735f7870de2d2b75d6d42d28655ed
1 parent
b5457bf4
Exists in
master
and in
5 other branches
Corrigindo exportação/importação da lista de arquivos a transferir.
Showing
6 changed files
with
99 additions
and
55 deletions
Show diff stats
src/pw3270/v3270ft/ftdialog.cbp
... | ... | @@ -33,7 +33,8 @@ |
33 | 33 | <Compiler> |
34 | 34 | <Add option="-Wall" /> |
35 | 35 | <Add option="`pkg-config --cflags gtk+-3.0 lib3270`" /> |
36 | - <Add directory="../include" /> | |
36 | + <Add directory="../../include" /> | |
37 | + <Add directory="../../include/pw3270" /> | |
37 | 38 | </Compiler> |
38 | 39 | <Linker> |
39 | 40 | <Add option="`pkg-config --libs gtk+-3.0 lib3270`" /> |
... | ... | @@ -45,27 +46,26 @@ |
45 | 46 | <Unit filename="../include/v3270.h" /> |
46 | 47 | <Unit filename="../include/v3270ft.h" /> |
47 | 48 | <Unit filename="../include/v3270ftprogress.h" /> |
48 | - <Unit filename="../v3270/actions.c"> | |
49 | - <Option compilerVar="CC" /> | |
50 | - </Unit> | |
51 | - <Unit filename="../v3270/colors.c"> | |
52 | - <Option compilerVar="CC" /> | |
53 | - </Unit> | |
54 | - <Unit filename="../v3270/cursor.c"> | |
49 | + <Unit filename="../v3270/accessible.c"> | |
55 | 50 | <Option compilerVar="CC" /> |
56 | 51 | </Unit> |
52 | + <Unit filename="../v3270/accessible.h" /> | |
57 | 53 | <Unit filename="../v3270/draw.c"> |
58 | 54 | <Option compilerVar="CC" /> |
59 | 55 | </Unit> |
60 | - <Unit filename="../v3270/font.c"> | |
56 | + <Unit filename="../v3270/hostselect.c"> | |
61 | 57 | <Option compilerVar="CC" /> |
62 | 58 | </Unit> |
59 | + <Unit filename="../v3270/hostselect.h" /> | |
63 | 60 | <Unit filename="../v3270/iocallback.c"> |
64 | 61 | <Option compilerVar="CC" /> |
65 | 62 | </Unit> |
66 | 63 | <Unit filename="../v3270/keyboard.c"> |
67 | 64 | <Option compilerVar="CC" /> |
68 | 65 | </Unit> |
66 | + <Unit filename="../v3270/macros.c"> | |
67 | + <Option compilerVar="CC" /> | |
68 | + </Unit> | |
69 | 69 | <Unit filename="../v3270/marshal.c"> |
70 | 70 | <Option compilerVar="CC" /> |
71 | 71 | </Unit> |
... | ... | @@ -80,13 +80,13 @@ |
80 | 80 | <Unit filename="../v3270/properties.c"> |
81 | 81 | <Option compilerVar="CC" /> |
82 | 82 | </Unit> |
83 | - <Unit filename="../v3270/signals.c"> | |
83 | + <Unit filename="../v3270/security.c"> | |
84 | 84 | <Option compilerVar="CC" /> |
85 | 85 | </Unit> |
86 | - <Unit filename="../v3270/text.c"> | |
86 | + <Unit filename="../v3270/selection.c"> | |
87 | 87 | <Option compilerVar="CC" /> |
88 | 88 | </Unit> |
89 | - <Unit filename="../v3270/v3270.c"> | |
89 | + <Unit filename="../v3270/widget.c"> | |
90 | 90 | <Option compilerVar="CC" /> |
91 | 91 | </Unit> |
92 | 92 | <Unit filename="filelist.c"> | ... | ... |
src/pw3270/v3270ft/load.c
... | ... | @@ -38,6 +38,29 @@ |
38 | 38 | |
39 | 39 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
40 | 40 | |
41 | +static LIB3270_FT_OPTION getFlagByName(const gchar *option, const char *optval) { | |
42 | + | |
43 | + LIB3270_FT_OPTION rc = 0; | |
44 | + int f; | |
45 | + gchar * key = g_strconcat(option,".",optval,NULL); | |
46 | + | |
47 | + for(f=0;f<NUM_OPTIONS_WIDGETS;f++) { | |
48 | + | |
49 | +// debug("%u %s",f,ft_option[f].name); | |
50 | + | |
51 | + if(!g_ascii_strcasecmp(key,ft_option[f].name)) { | |
52 | + rc = ft_option[f].opt; | |
53 | + debug("%s=%08lx",key,(unsigned int) rc); | |
54 | + break; | |
55 | + } | |
56 | + | |
57 | + } | |
58 | + | |
59 | + g_free(key); | |
60 | + | |
61 | + return rc; | |
62 | +} | |
63 | + | |
41 | 64 | static void entry_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, struct v3270ft_entry *info, GError **error) { |
42 | 65 | |
43 | 66 | int f; |
... | ... | @@ -72,8 +95,8 @@ static void entry_start(GMarkupParseContext *context, const gchar *element_name, |
72 | 95 | |
73 | 96 | } if(!g_ascii_strcasecmp(element_name,"option")) { |
74 | 97 | |
75 | - const gchar *option; | |
76 | - const gchar *optval; | |
98 | + const gchar *option = NULL; | |
99 | + const gchar *optval = NULL; | |
77 | 100 | |
78 | 101 | if(!g_markup_collect_attributes( |
79 | 102 | element_name,names,values,error, |
... | ... | @@ -86,43 +109,39 @@ static void entry_start(GMarkupParseContext *context, const gchar *element_name, |
86 | 109 | |
87 | 110 | } |
88 | 111 | |
89 | - // Check for options | |
90 | - for(f=0;f<NUM_OPTIONS_WIDGETS;f++) { | |
112 | + debug("%s=%s",option,optval); | |
91 | 113 | |
92 | - char *name = g_strdup(ft_option[f].name); | |
93 | - char *value = strchr(name,'.'); | |
114 | + if(!g_ascii_strcasecmp(option,"recfm")) { | |
94 | 115 | |
95 | - if(value) { | |
96 | - *(value++) = 0; | |
97 | - } | |
116 | + // Recfm, limpo todas as flags correspondentes e remonto | |
117 | + info->options &= ~(LIB3270_FT_RECORD_FORMAT_DEFAULT|LIB3270_FT_RECORD_FORMAT_FIXED|LIB3270_FT_RECORD_FORMAT_VARIABLE|LIB3270_FT_RECORD_FORMAT_UNDEFINED); // Reseta flags | |
118 | + info->options |= getFlagByName(option,optval); | |
119 | + | |
120 | + } else if(!g_ascii_strcasecmp(option,"units")) { | |
98 | 121 | |
99 | - if( !g_ascii_strcasecmp(option,name)) { | |
122 | + // Units, limpo todas as flags correspondentes e remonto | |
123 | + info->options &= ~(LIB3270_FT_ALLOCATION_UNITS_DEFAULT|LIB3270_FT_ALLOCATION_UNITS_TRACKS|LIB3270_FT_ALLOCATION_UNITS_CYLINDERS|LIB3270_FT_ALLOCATION_UNITS_AVBLOCK); | |
124 | + info->options |= getFlagByName(option,optval); | |
100 | 125 | |
101 | - if(!value) { | |
126 | + } else { | |
102 | 127 | |
103 | - // Opção é boolean | |
128 | + for(f=0;f<NUM_OPTIONS_WIDGETS;f++) { | |
104 | 129 | |
105 | -// debug("%s=%s",option,optval); | |
130 | + if(!g_ascii_strcasecmp(option,ft_option[f].name)) { | |
106 | 131 | |
107 | - if( toupper(*optval) == 'Y' || toupper(*optval) == 'S' || *optval == '1') { | |
132 | + if(!g_ascii_strcasecmp(optval,"yes")) { | |
108 | 133 | info->options |= ft_option[f].opt; |
134 | + } else if(!g_ascii_strcasecmp(optval,"no")) { | |
135 | + info->options &= ~ft_option[f].opt; | |
136 | + } else { | |
137 | + g_warning("Unexpected value for %s: %s",option,optval); | |
109 | 138 | } |
110 | - | |
111 | - } else if(!g_ascii_strcasecmp(value,optval)) { | |
112 | - | |
113 | - // Opção tem valor | |
114 | -// debug("%s=%s",option,optval); | |
115 | - | |
116 | - info->options |= ft_option[f].opt; | |
117 | - | |
139 | + break; | |
118 | 140 | } |
119 | 141 | |
120 | - | |
121 | - g_free(name); | |
122 | - return; | |
123 | 142 | } |
124 | 143 | |
125 | - g_free(name); | |
144 | + | |
126 | 145 | } |
127 | 146 | |
128 | 147 | // Check for FT values |
... | ... | @@ -137,7 +156,6 @@ static void entry_start(GMarkupParseContext *context, const gchar *element_name, |
137 | 156 | } |
138 | 157 | } |
139 | 158 | |
140 | - | |
141 | 159 | } |
142 | 160 | |
143 | 161 | ... | ... |
src/pw3270/v3270ft/private.h
src/pw3270/v3270ft/save.c
... | ... | @@ -30,12 +30,30 @@ |
30 | 30 | |
31 | 31 | #include "private.h" |
32 | 32 | |
33 | - | |
34 | 33 | /*--[ Statics ]--------------------------------------------------------------------------------------*/ |
35 | 34 | |
36 | 35 | |
37 | 36 | /*--[ Implement ]------------------------------------------------------------------------------------*/ |
38 | 37 | |
38 | +static const gchar * getNameByFlag(LIB3270_FT_OPTION opt, LIB3270_FT_OPTION mask) { | |
39 | + | |
40 | + const gchar * rc = "Default"; | |
41 | + const gchar * ptr; | |
42 | + int f; | |
43 | + | |
44 | + opt &= mask; | |
45 | + | |
46 | + for(f=0;f<NUM_OPTIONS_WIDGETS;f++) { | |
47 | + | |
48 | + if(opt == ft_option[f].opt) { | |
49 | + ptr = strchr(ft_option[f].name,'.'); | |
50 | + rc = ptr ? ptr+1 : ft_option[f].name; | |
51 | + } | |
52 | + } | |
53 | + | |
54 | + return rc; | |
55 | +} | |
56 | + | |
39 | 57 | void get_item(struct v3270ft_entry *entry, GString *str) { |
40 | 58 | |
41 | 59 | int f; |
... | ... | @@ -44,22 +62,31 @@ |
44 | 62 | g_string_append_printf(str,"\t\t<file type=\"%s\" path=\"%s\"/>\n","local",entry->local); |
45 | 63 | g_string_append_printf(str,"\t\t<file type=\"%s\" path=\"%s\"/>\n","remote",entry->remote); |
46 | 64 | |
47 | - for(f=0;f<NUM_OPTIONS_WIDGETS;f++) { | |
65 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
66 | + "ascii", entry->options & LIB3270_FT_OPTION_ASCII ? "yes" : "no"); | |
48 | 67 | |
49 | - if( (entry->options & ft_option[f].opt) == ft_option[f].opt) { | |
50 | - char *name = g_strdup(ft_option[f].name); | |
51 | - char *value = strchr(name,'.'); | |
68 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
69 | + "crlf", entry->options & LIB3270_FT_OPTION_CRLF ? "yes" : "no"); | |
52 | 70 | |
53 | - if(value) | |
54 | - *(value++) = 0; | |
55 | - else | |
56 | - value = "yes"; | |
71 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
72 | + "append", entry->options & LIB3270_FT_OPTION_APPEND ? "yes" : "no"); | |
57 | 73 | |
58 | - g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n",name,value); | |
74 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
75 | + "remap", entry->options & LIB3270_FT_OPTION_REMAP ? "yes" : "no"); | |
59 | 76 | |
60 | - g_free(name); | |
61 | - } | |
62 | - } | |
77 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
78 | + "recfm", getNameByFlag(entry->options, | |
79 | + LIB3270_FT_RECORD_FORMAT_DEFAULT | |
80 | + |LIB3270_FT_RECORD_FORMAT_FIXED | |
81 | + |LIB3270_FT_RECORD_FORMAT_VARIABLE | |
82 | + |LIB3270_FT_RECORD_FORMAT_UNDEFINED)); | |
83 | + | |
84 | + g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%s\"/>\n", | |
85 | + "units", getNameByFlag(entry->options, | |
86 | + LIB3270_FT_ALLOCATION_UNITS_DEFAULT | |
87 | + |LIB3270_FT_ALLOCATION_UNITS_TRACKS | |
88 | + |LIB3270_FT_ALLOCATION_UNITS_CYLINDERS | |
89 | + |LIB3270_FT_ALLOCATION_UNITS_AVBLOCK)); | |
63 | 90 | |
64 | 91 | for(f=0;f<LIB3270_FT_VALUE_COUNT;f++) { |
65 | 92 | g_string_append_printf(str,"\t\t<option name=\"%s\" value=\"%u\"/>\n",ft_value[f].name,entry->value[f]); | ... | ... |
src/pw3270/v3270ft/tables.c
... | ... | @@ -34,7 +34,7 @@ |
34 | 34 | |
35 | 35 | /*--[ Globals ]--------------------------------------------------------------------------------------*/ |
36 | 36 | |
37 | -const struct v3270ft_option ft_option[] = { | |
37 | +const struct v3270ft_option ft_option[NUM_OPTIONS_WIDGETS] = { | |
38 | 38 | |
39 | 39 | // Transfer options |
40 | 40 | { | ... | ... |
src/pw3270/v3270ft/testprogram.c
... | ... | @@ -97,7 +97,7 @@ static void activate(GtkApplication* app, gpointer user_data) { |
97 | 97 | g_key_file_load_from_dirs(conf,"pw3270.conf",(const gchar **) search, &filename,G_KEY_FILE_NONE,NULL); |
98 | 98 | g_message("Configuration from %s",filename); |
99 | 99 | |
100 | - v3270_set_from_keyfile(terminal,conf); | |
100 | + // v3270_set_from_keyfile(terminal,conf); | |
101 | 101 | |
102 | 102 | g_key_file_unref(conf); |
103 | 103 | ... | ... |