Commit 3d7c20ac495bb2044d9a806df4526e595f0dfa18
1 parent
b349e0c4
Exists in
master
and in
1 other branch
Working on the new FT Dialog.
Showing
7 changed files
with
85 additions
and
11 deletions
Show diff stats
src/include/internals.h
@@ -82,6 +82,7 @@ | @@ -82,6 +82,7 @@ | ||
82 | 82 | ||
83 | G_GNUC_INTERNAL GtkWidget * v3270_activity_list_new(); | 83 | G_GNUC_INTERNAL GtkWidget * v3270_activity_list_new(); |
84 | G_GNUC_INTERNAL void v3270_activity_list_append(GtkWidget *widget, GObject *activity); | 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 | G_GNUC_INTERNAL void v3270_activity_list_load(GtkWidget *widget); | 86 | G_GNUC_INTERNAL void v3270_activity_list_load(GtkWidget *widget); |
86 | G_GNUC_INTERNAL void v3270_activity_list_save(GtkWidget *widget); | 87 | G_GNUC_INTERNAL void v3270_activity_list_save(GtkWidget *widget); |
87 | G_GNUC_INTERNAL void v3270_activity_list_save_as(GtkWidget *widget); | 88 | G_GNUC_INTERNAL void v3270_activity_list_save_as(GtkWidget *widget); |
src/include/v3270/filetransfer.h
@@ -95,6 +95,8 @@ | @@ -95,6 +95,8 @@ | ||
95 | LIB3270_EXPORT GtkWidget * v3270_ft_settings_new(); | 95 | LIB3270_EXPORT GtkWidget * v3270_ft_settings_new(); |
96 | 96 | ||
97 | LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity); | 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 | LIB3270_EXPORT GObject * v3270_ft_settings_create_activity(GtkWidget *widget); | 100 | LIB3270_EXPORT GObject * v3270_ft_settings_create_activity(GtkWidget *widget); |
99 | 101 | ||
100 | LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget); | 102 | LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget); |
src/v3270ft/activity.c
@@ -28,6 +28,8 @@ | @@ -28,6 +28,8 @@ | ||
28 | */ | 28 | */ |
29 | 29 | ||
30 | #include <internals.h> | 30 | #include <internals.h> |
31 | + #include <stdlib.h> | ||
32 | + #include "private.h" | ||
31 | #include <v3270/filetransfer.h> | 33 | #include <v3270/filetransfer.h> |
32 | 34 | ||
33 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ | 35 | /*--[ Widget definition ]----------------------------------------------------------------------------*/ |
@@ -192,8 +194,11 @@ | @@ -192,8 +194,11 @@ | ||
192 | G_V3270_FT_ACTIVITY(object)->values[id] = value; | 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 | if(!g_ascii_strcasecmp(element_name,"file")) | 202 | if(!g_ascii_strcasecmp(element_name,"file")) |
198 | { | 203 | { |
199 | const gchar *type; | 204 | const gchar *type; |
@@ -232,6 +237,17 @@ | @@ -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 | else if(!g_ascii_strcasecmp(element_name,"parameter")) | 253 | else if(!g_ascii_strcasecmp(element_name,"parameter")) |
@@ -250,6 +266,17 @@ | @@ -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,6 +291,8 @@ | ||
264 | (void (*)(GMarkupParseContext *, GError *, gpointer)) NULL | 291 | (void (*)(GMarkupParseContext *, GError *, gpointer)) NULL |
265 | }; | 292 | }; |
266 | 293 | ||
294 | + G_V3270_FT_ACTIVITY(activity)->options = 0; | ||
295 | + | ||
267 | g_markup_parse_context_push(context,&parser,activity); | 296 | g_markup_parse_context_push(context,&parser,activity); |
268 | 297 | ||
269 | } | 298 | } |
src/v3270ft/activitylist.c
@@ -157,8 +157,38 @@ | @@ -157,8 +157,38 @@ | ||
157 | gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); | 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 | static void element_start(GMarkupParseContext *context, const gchar *element_name, const gchar **names,const gchar **values, V3270FTActivityList *widget, GError **error) | 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 | if(!g_ascii_strcasecmp(element_name,"entry")) | 192 | if(!g_ascii_strcasecmp(element_name,"entry")) |
163 | { | 193 | { |
164 | // Create new activity | 194 | // Create new activity |
@@ -171,6 +201,7 @@ | @@ -171,6 +201,7 @@ | ||
171 | 201 | ||
172 | static void element_end(GMarkupParseContext *context, const gchar *element_name, G_GNUC_UNUSED void *info,G_GNUC_UNUSED GError **error) | 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 | if(!g_ascii_strcasecmp(element_name,"entry")) | 205 | if(!g_ascii_strcasecmp(element_name,"entry")) |
175 | { | 206 | { |
176 | g_markup_parse_context_pop(context); | 207 | g_markup_parse_context_pop(context); |
@@ -200,11 +231,8 @@ | @@ -200,11 +231,8 @@ | ||
200 | NULL | 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 | g_markup_parse_context_parse(context,text,strlen(text),&error); | 234 | g_markup_parse_context_parse(context,text,strlen(text),&error); |
206 | g_markup_parse_context_free(context); | 235 | g_markup_parse_context_free(context); |
207 | - */ | ||
208 | 236 | ||
209 | } | 237 | } |
210 | 238 | ||
@@ -262,13 +290,14 @@ | @@ -262,13 +290,14 @@ | ||
262 | g_string_append_printf(str,"\t\t<file type=\'remote\' path=\'%s\' />\n",v3270_ft_activity_get_remote_filename(activity)); | 290 | g_string_append_printf(str,"\t\t<file type=\'remote\' path=\'%s\' />\n",v3270_ft_activity_get_remote_filename(activity)); |
263 | 291 | ||
264 | LIB3270_FT_OPTION options = v3270_ft_activity_get_options(activity); | 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 | 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); | 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 | 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)); | 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,6 +43,7 @@ | ||
43 | GtkWidget * valid; | 43 | GtkWidget * valid; |
44 | GtkWidget * insert; | 44 | GtkWidget * insert; |
45 | GtkWidget * update; | 45 | GtkWidget * update; |
46 | + GtkWidget * remove; | ||
46 | GtkWidget * reset; | 47 | GtkWidget * reset; |
47 | } button; | 48 | } button; |
48 | 49 | ||
@@ -80,6 +81,7 @@ void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G | @@ -80,6 +81,7 @@ void activity_selected(GtkTreeView *view, GtkTreePath *path, GtkTreeViewColumn G | ||
80 | v3270_ft_settings_set_activity(widget->settings,activity); | 81 | v3270_ft_settings_set_activity(widget->settings,activity); |
81 | 82 | ||
82 | gtk_widget_set_sensitive(widget->button.update,TRUE); | 83 | gtk_widget_set_sensitive(widget->button.update,TRUE); |
84 | + gtk_widget_set_sensitive(widget->button.remove,TRUE); | ||
83 | gtk_widget_set_sensitive(widget->button.reset,TRUE); | 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,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 | static void enable_queue_save(GtkWidget G_GNUC_UNUSED(*save), gboolean enabled, GtkWidget *button) | 176 | static void enable_queue_save(GtkWidget G_GNUC_UNUSED(*save), gboolean enabled, GtkWidget *button) |
169 | { | 177 | { |
170 | gtk_widget_set_sensitive(button,enabled); | 178 | gtk_widget_set_sensitive(button,enabled); |
@@ -208,10 +216,14 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | @@ -208,10 +216,14 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | ||
208 | widget->button.update = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Update"),FALSE,FALSE,0); | 216 | widget->button.update = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Update"),FALSE,FALSE,0); |
209 | g_signal_connect(widget->button.update,"clicked",G_CALLBACK(update_clicked),widget); | 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 | widget->button.insert = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Insert"),FALSE,FALSE,0); | 222 | widget->button.insert = v3270_box_pack_end(widget->button.valid,gtk_button_new_with_mnemonic("_Insert"),FALSE,FALSE,0); |
212 | g_signal_connect(widget->button.insert,"clicked",G_CALLBACK(insert_clicked),widget); | 223 | g_signal_connect(widget->button.insert,"clicked",G_CALLBACK(insert_clicked),widget); |
213 | 224 | ||
214 | gtk_widget_set_sensitive(widget->button.update,FALSE); | 225 | gtk_widget_set_sensitive(widget->button.update,FALSE); |
226 | + gtk_widget_set_sensitive(widget->button.remove,FALSE); | ||
215 | gtk_widget_set_sensitive(widget->button.reset,FALSE); | 227 | gtk_widget_set_sensitive(widget->button.reset,FALSE); |
216 | 228 | ||
217 | gtk_box_pack_start(GTK_BOX(container),widget->button.valid,FALSE,FALSE,0); | 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,6 +528,11 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | ||
528 | v3270_ft_settings_reset(widget); | 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 | LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget) | 536 | LIB3270_EXPORT void v3270_ft_settings_reset(GtkWidget *widget) |
532 | { | 537 | { |
533 | int ix; | 538 | int ix; |
src/v3270ft/tables.c
@@ -199,19 +199,15 @@ const struct v3270ft_value ft_value[] = { | @@ -199,19 +199,15 @@ const struct v3270ft_value ft_value[] = { | ||
199 | 199 | ||
200 | const struct v3270_activity_list_option v3270_activity_list_options[] = | 200 | const struct v3270_activity_list_option v3270_activity_list_options[] = |
201 | { | 201 | { |
202 | - | ||
203 | - { LIB3270_FT_OPTION_SEND, "type", "send" }, | ||
204 | { LIB3270_FT_OPTION_RECEIVE, "type", "receive" }, | 202 | { LIB3270_FT_OPTION_RECEIVE, "type", "receive" }, |
205 | { LIB3270_FT_OPTION_ASCII, "format", "ascii" }, | 203 | { LIB3270_FT_OPTION_ASCII, "format", "ascii" }, |
206 | { LIB3270_FT_OPTION_CRLF, "format", "crlf" }, | 204 | { LIB3270_FT_OPTION_CRLF, "format", "crlf" }, |
207 | { LIB3270_FT_OPTION_APPEND, "format", "append" }, | 205 | { LIB3270_FT_OPTION_APPEND, "format", "append" }, |
208 | { LIB3270_FT_OPTION_REMAP, "format", "remap" }, | 206 | { LIB3270_FT_OPTION_REMAP, "format", "remap" }, |
209 | { LIB3270_FT_OPTION_UNIX, "file-format", "unix" }, | 207 | { LIB3270_FT_OPTION_UNIX, "file-format", "unix" }, |
210 | - { LIB3270_FT_RECORD_FORMAT_DEFAULT, "record-format", "default" }, | ||
211 | { LIB3270_FT_RECORD_FORMAT_FIXED, "record-format", "fixed" }, | 208 | { LIB3270_FT_RECORD_FORMAT_FIXED, "record-format", "fixed" }, |
212 | { LIB3270_FT_RECORD_FORMAT_VARIABLE, "record-format", "variable" }, | 209 | { LIB3270_FT_RECORD_FORMAT_VARIABLE, "record-format", "variable" }, |
213 | { LIB3270_FT_RECORD_FORMAT_UNDEFINED, "record-format", "undefined" }, | 210 | { LIB3270_FT_RECORD_FORMAT_UNDEFINED, "record-format", "undefined" }, |
214 | - { LIB3270_FT_ALLOCATION_UNITS_DEFAULT, "units", "default" }, | ||
215 | { LIB3270_FT_ALLOCATION_UNITS_TRACKS, "units", "tracks" }, | 211 | { LIB3270_FT_ALLOCATION_UNITS_TRACKS, "units", "tracks" }, |
216 | { LIB3270_FT_ALLOCATION_UNITS_CYLINDERS, "units", "cylinders" }, | 212 | { LIB3270_FT_ALLOCATION_UNITS_CYLINDERS, "units", "cylinders" }, |
217 | { LIB3270_FT_ALLOCATION_UNITS_AVBLOCK, "units", "avblock" }, | 213 | { LIB3270_FT_ALLOCATION_UNITS_AVBLOCK, "units", "avblock" }, |