Commit 3d7c20ac495bb2044d9a806df4526e595f0dfa18

Authored by Perry Werneck
1 parent b349e0c4
Exists in master and in 1 other branch develop

Working on the new FT Dialog.

src/include/internals.h
... ... @@ -82,6 +82,7 @@
82 82  
83 83 G_GNUC_INTERNAL GtkWidget * v3270_activity_list_new();
84 84 G_GNUC_INTERNAL void v3270_activity_list_append(GtkWidget *widget, GObject *activity);
  85 + G_GNUC_INTERNAL void v3270_activity_list_remove(GtkWidget *widget, GObject *activity);
85 86 G_GNUC_INTERNAL void v3270_activity_list_load(GtkWidget *widget);
86 87 G_GNUC_INTERNAL void v3270_activity_list_save(GtkWidget *widget);
87 88 G_GNUC_INTERNAL void v3270_activity_list_save_as(GtkWidget *widget);
... ...
src/include/v3270/filetransfer.h
... ... @@ -95,6 +95,8 @@
95 95 LIB3270_EXPORT GtkWidget * v3270_ft_settings_new();
96 96  
97 97 LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity);
  98 + LIB3270_EXPORT GObject * v3270_ft_settings_get_activity(GtkWidget *widget);
  99 +
98 100 LIB3270_EXPORT GObject * v3270_ft_settings_create_activity(GtkWidget *widget);
99 101  
100 102 LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget);
... ...
src/v3270ft/activity.c
... ... @@ -28,6 +28,8 @@
28 28 */
29 29  
30 30 #include <internals.h>
  31 + #include <stdlib.h>
  32 + #include "private.h"
31 33 #include <v3270/filetransfer.h>
32 34  
33 35 /*--[ Widget definition ]----------------------------------------------------------------------------*/
... ... @@ -192,8 +194,11 @@
192 194 G_V3270_FT_ACTIVITY(object)->values[id] = value;
193 195 }
194 196  
195   - static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, V3270FTActivity *activity, GError **error)
  197 + static void element_start(GMarkupParseContext G_GNUC_UNUSED(*context), const gchar *element_name, const gchar **names,const gchar **values, V3270FTActivity *activity, GError **error)
196 198 {
  199 + size_t ix;
  200 +
  201 + debug("%s(%s)",__FUNCTION__, element_name);
197 202 if(!g_ascii_strcasecmp(element_name,"file"))
198 203 {
199 204 const gchar *type;
... ... @@ -232,6 +237,17 @@
232 237  
233 238 }
234 239  
  240 + debug("%s.%s(%s,%s)",__FUNCTION__, element_name, name, value);
  241 +
  242 + for(ix = 0; v3270_activity_list_options[ix].name; ix++)
  243 + {
  244 + if(! (g_ascii_strcasecmp(name,v3270_activity_list_options[ix].name) || g_ascii_strcasecmp(value,v3270_activity_list_options[ix].value)) )
  245 + {
  246 + activity->options |= v3270_activity_list_options[ix].option;
  247 + debug("Setting option %s.%s(%08lx) =%08lx", v3270_activity_list_options[ix].name, v3270_activity_list_options[ix].value, (unsigned int) v3270_activity_list_options[ix].option,(unsigned int) activity->options)
  248 + break;
  249 + }
  250 + }
235 251  
236 252 }
237 253 else if(!g_ascii_strcasecmp(element_name,"parameter"))
... ... @@ -250,6 +266,17 @@
250 266  
251 267 }
252 268  
  269 + debug("%s.%s(%s)",__FUNCTION__, element_name, name, value);
  270 +
  271 + for(ix=0;ix<LIB3270_FT_VALUE_COUNT;ix++)
  272 + {
  273 + if(!g_ascii_strcasecmp(ft_value[ix].name,name))
  274 + {
  275 + activity->values[ix] = atoi(value);
  276 + break;
  277 + }
  278 + }
  279 +
253 280 }
254 281  
255 282 }
... ... @@ -264,6 +291,8 @@
264 291 (void (*)(GMarkupParseContext *, GError *, gpointer)) NULL
265 292 };
266 293  
  294 + G_V3270_FT_ACTIVITY(activity)->options = 0;
  295 +
267 296 g_markup_parse_context_push(context,&parser,activity);
268 297  
269 298 }
... ...
src/v3270ft/activitylist.c
... ... @@ -157,8 +157,38 @@
157 157 gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1);
158 158 }
159 159  
  160 + void v3270_activity_list_remove(GtkWidget *widget, GObject *activity)
  161 + {
  162 + if(!activity)
  163 + return;
  164 +
  165 + GtkTreeModel * model = gtk_tree_view_get_model(GTK_TREE_VIEW(widget));
  166 + GtkTreeIter iter;
  167 +
  168 + if(gtk_tree_model_get_iter_first(model,&iter))
  169 + {
  170 + do
  171 + {
  172 + GObject * stored = NULL;
  173 + gtk_tree_model_get(model, &iter, 0, &stored, -1);
  174 +
  175 + if(stored == activity)
  176 + {
  177 + gtk_list_store_remove(GTK_LIST_STORE(model),&iter);
  178 + return;
  179 + }
  180 +
  181 +
  182 + }
  183 + while(gtk_tree_model_iter_next(model,&iter));
  184 + }
  185 +
  186 + }
  187 +
  188 +
160 189 static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, V3270FTActivityList *widget, GError **error)
161 190 {
  191 + debug("%s(%s)",__FUNCTION__, element_name);
162 192 if(!g_ascii_strcasecmp(element_name,"entry"))
163 193 {
164 194 // Create new activity
... ... @@ -171,6 +201,7 @@
171 201  
172 202 static void element_end(GMarkupParseContext *context, const gchar *element_name, G_GNUC_UNUSED void *info,G_GNUC_UNUSED GError **error)
173 203 {
  204 + debug("%s(%s)",__FUNCTION__, element_name);
174 205 if(!g_ascii_strcasecmp(element_name,"entry"))
175 206 {
176 207 g_markup_parse_context_pop(context);
... ... @@ -200,11 +231,8 @@
200 231 NULL
201 232 );
202 233  
203   - /*
204   - GMarkupParseContext * context = g_markup_parse_context_new(&parser,G_MARKUP_TREAT_CDATA_AS_TEXT|G_MARKUP_PREFIX_ERROR_POSITION,GTK_V3270FT(widget),NULL);
205 234 g_markup_parse_context_parse(context,text,strlen(text),&error);
206 235 g_markup_parse_context_free(context);
207   - */
208 236  
209 237 }
210 238  
... ... @@ -262,13 +290,14 @@
262 290 g_string_append_printf(str,"\t\t<file type=\'remote\' path=\'%s\' />\n",v3270_ft_activity_get_remote_filename(activity));
263 291  
264 292 LIB3270_FT_OPTION options = v3270_ft_activity_get_options(activity);
265   - for(ix = 0; ix < v3270_activity_list_options[ix].name;ix++)
  293 + for(ix = 0; v3270_activity_list_options[ix].name; ix++)
266 294 {
267   - if(options & v3270_activity_list_options[ix].option)
  295 + if((options & v3270_activity_list_options[ix].option) == v3270_activity_list_options[ix].option)
268 296 g_string_append_printf(str,"\t\t<option name=\'%s\' value=\'%s\' />\n",v3270_activity_list_options[ix].name,v3270_activity_list_options[ix].value);
269 297 }
270 298  
271   - for(ix=0;ix<LIB3270_FT_VALUE_COUNT;ix++) {
  299 + for(ix=0;ix<LIB3270_FT_VALUE_COUNT;ix++)
  300 + {
272 301 g_string_append_printf(str,"\t\t<parameter name=\"%s\" value=\"%u\"/>\n",ft_value[ix].name,v3270_ft_activity_get_value(activity,(LIB3270_FT_VALUE) ix));
273 302 }
274 303  
... ...
src/v3270ft/dialog.c
... ... @@ -43,6 +43,7 @@
43 43 GtkWidget * valid;
44 44 GtkWidget * insert;
45 45 GtkWidget * update;
  46 + GtkWidget * remove;
46 47 GtkWidget * reset;
47 48 } button;
48 49  
... ... @@ -80,6 +81,7 @@ void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G
80 81 v3270_ft_settings_set_activity(widget->settings,activity);
81 82  
82 83 gtk_widget_set_sensitive(widget->button.update,TRUE);
  84 + gtk_widget_set_sensitive(widget->button.remove,TRUE);
83 85 gtk_widget_set_sensitive(widget->button.reset,TRUE);
84 86  
85 87 }
... ... @@ -165,6 +167,12 @@ static void insert_clicked(GtkWidget *button, V3270FTDialog *widget)
165 167  
166 168 }
167 169  
  170 +static void remove_clicked(GtkWidget G_GNUC_UNUSED(*button), V3270FTDialog *widget)
  171 +{
  172 + v3270_activity_list_remove(widget->queue.view,v3270_ft_settings_get_activity(widget->settings));
  173 + v3270_ft_settings_set_activity(widget->settings,NULL);
  174 +}
  175 +
168 176 static void enable_queue_save(GtkWidget G_GNUC_UNUSED(*save), gboolean enabled, GtkWidget *button)
169 177 {
170 178 gtk_widget_set_sensitive(button,enabled);
... ... @@ -208,10 +216,14 @@ static void V3270FTDialog_init(V3270FTDialog *widget)
208 216 widget->button.update = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Update"),FALSE,FALSE,0);
209 217 g_signal_connect(widget->button.update,"clicked",G_CALLBACK(update_clicked),widget);
210 218  
  219 + widget->button.insert = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Delete"),FALSE,FALSE,0);
  220 + g_signal_connect(widget->button.insert,"clicked",G_CALLBACK(remove_clicked),widget);
  221 +
211 222 widget->button.insert = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Insert"),FALSE,FALSE,0);
212 223 g_signal_connect(widget->button.insert,"clicked",G_CALLBACK(insert_clicked),widget);
213 224  
214 225 gtk_widget_set_sensitive(widget->button.update,FALSE);
  226 + gtk_widget_set_sensitive(widget->button.remove,FALSE);
215 227 gtk_widget_set_sensitive(widget->button.reset,FALSE);
216 228  
217 229 gtk_box_pack_start(GTK_BOX(container),widget->button.valid,FALSE,FALSE,0);
... ...
src/v3270ft/settings.c
... ... @@ -528,6 +528,11 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
528 528 v3270_ft_settings_reset(widget);
529 529 }
530 530  
  531 + LIB3270_EXPORT GObject * v3270_ft_settings_get_activity(GtkWidget *widget)
  532 + {
  533 + return GTK_V3270_FT_SETTINGS(widget)->activity;
  534 + }
  535 +
531 536 LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget)
532 537 {
533 538 int ix;
... ...
src/v3270ft/tables.c
... ... @@ -199,19 +199,15 @@ const struct v3270ft_value ft_value[] = {
199 199  
200 200 const struct v3270_activity_list_option v3270_activity_list_options[] =
201 201 {
202   -
203   - { LIB3270_FT_OPTION_SEND, "type", "send" },
204 202 { LIB3270_FT_OPTION_RECEIVE, "type", "receive" },
205 203 { LIB3270_FT_OPTION_ASCII, "format", "ascii" },
206 204 { LIB3270_FT_OPTION_CRLF, "format", "crlf" },
207 205 { LIB3270_FT_OPTION_APPEND, "format", "append" },
208 206 { LIB3270_FT_OPTION_REMAP, "format", "remap" },
209 207 { LIB3270_FT_OPTION_UNIX, "file-format", "unix" },
210   - { LIB3270_FT_RECORD_FORMAT_DEFAULT, "record-format", "default" },
211 208 { LIB3270_FT_RECORD_FORMAT_FIXED, "record-format", "fixed" },
212 209 { LIB3270_FT_RECORD_FORMAT_VARIABLE, "record-format", "variable" },
213 210 { LIB3270_FT_RECORD_FORMAT_UNDEFINED, "record-format", "undefined" },
214   - { LIB3270_FT_ALLOCATION_UNITS_DEFAULT, "units", "default" },
215 211 { LIB3270_FT_ALLOCATION_UNITS_TRACKS, "units", "tracks" },
216 212 { LIB3270_FT_ALLOCATION_UNITS_CYLINDERS, "units", "cylinders" },
217 213 { LIB3270_FT_ALLOCATION_UNITS_AVBLOCK, "units", "avblock" },
... ...