Commit 64d8d7a88bdf688f8ce4d92621dde0043a4fa851
1 parent
b3b7c970
Exists in
master
and in
1 other branch
Working on new FT components.
Showing
6 changed files
with
76 additions
and
37 deletions
Show diff stats
src/include/v3270/filetransfer.h
@@ -112,10 +112,12 @@ | @@ -112,10 +112,12 @@ | ||
112 | LIB3270_EXPORT const gchar * v3270_ft_activity_get_local_filename(GObject *object); | 112 | LIB3270_EXPORT const gchar * v3270_ft_activity_get_local_filename(GObject *object); |
113 | LIB3270_EXPORT const gchar * v3270_ft_activity_get_remote_filename(GObject *object); | 113 | LIB3270_EXPORT const gchar * v3270_ft_activity_get_remote_filename(GObject *object); |
114 | LIB3270_EXPORT LIB3270_FT_OPTION v3270_ft_activity_get_options(GObject *object); | 114 | LIB3270_EXPORT LIB3270_FT_OPTION v3270_ft_activity_get_options(GObject *object); |
115 | + LIB3270_EXPORT guint v3270_ft_activity_get_value(GObject * object, LIB3270_FT_VALUE id); | ||
115 | 116 | ||
116 | LIB3270_EXPORT void v3270_ft_activity_set_local_filename(GObject *object, const gchar *filename); | 117 | LIB3270_EXPORT void v3270_ft_activity_set_local_filename(GObject *object, const gchar *filename); |
117 | LIB3270_EXPORT void v3270_ft_activity_set_remote_filename(GObject *object, const gchar *filename); | 118 | LIB3270_EXPORT void v3270_ft_activity_set_remote_filename(GObject *object, const gchar *filename); |
118 | LIB3270_EXPORT void v3270_ft_activity_set_options(GObject * object, LIB3270_FT_OPTION options); | 119 | LIB3270_EXPORT void v3270_ft_activity_set_options(GObject * object, LIB3270_FT_OPTION options); |
120 | + LIB3270_EXPORT void v3270_ft_activity_set_value(GObject * object, LIB3270_FT_VALUE id, guint value); | ||
119 | 121 | ||
120 | // FT Dialog widget | 122 | // FT Dialog widget |
121 | #define GTK_TYPE_V3270_FT_DIALOG (V3270FTDialog_get_type ()) | 123 | #define GTK_TYPE_V3270_FT_DIALOG (V3270FTDialog_get_type ()) |
src/testprogram/testprogram.c
@@ -189,7 +189,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { | @@ -189,7 +189,7 @@ static void activate(GtkApplication* app, G_GNUC_UNUSED gpointer user_data) { | ||
189 | size_t f; | 189 | size_t f; |
190 | 190 | ||
191 | v3270_set_url(terminal,NULL); | 191 | v3270_set_url(terminal,NULL); |
192 | - v3270_set_toggle(terminal,LIB3270_TOGGLE_RECONNECT,TRUE); | 192 | + // v3270_set_toggle(terminal,LIB3270_TOGGLE_RECONNECT,TRUE); |
193 | 193 | ||
194 | // v3270_set_font_family(terminal,"Droid Sans Mono"); | 194 | // v3270_set_font_family(terminal,"Droid Sans Mono"); |
195 | g_signal_connect(terminal,"field_clicked",G_CALLBACK(field_clicked),window); | 195 | g_signal_connect(terminal,"field_clicked",G_CALLBACK(field_clicked),window); |
src/v3270ft/activity.c
@@ -42,8 +42,13 @@ | @@ -42,8 +42,13 @@ | ||
42 | { | 42 | { |
43 | GObject parent; | 43 | GObject parent; |
44 | 44 | ||
45 | - LIB3270_FT_OPTION options; | 45 | + /// @brief Transfer options. |
46 | + LIB3270_FT_OPTION options; | ||
46 | 47 | ||
48 | + /// @brief Values. | ||
49 | + guint values[LIB3270_FT_VALUE_COUNT]; | ||
50 | + | ||
51 | + /// @brief File names | ||
47 | struct { | 52 | struct { |
48 | gchar * local; | 53 | gchar * local; |
49 | gchar * remote; | 54 | gchar * remote; |
@@ -127,6 +132,11 @@ | @@ -127,6 +132,11 @@ | ||
127 | 132 | ||
128 | static void V3270FTActivity_init(V3270FTActivity *widget) | 133 | static void V3270FTActivity_init(V3270FTActivity *widget) |
129 | { | 134 | { |
135 | + widget->values[LIB3270_FT_VALUE_LRECL] = 0; | ||
136 | + widget->values[LIB3270_FT_VALUE_BLKSIZE] = 0; | ||
137 | + widget->values[LIB3270_FT_VALUE_PRIMSPACE] = 0; | ||
138 | + widget->values[LIB3270_FT_VALUE_SECSPACE] = 0; | ||
139 | + widget->values[LIB3270_FT_VALUE_DFT] = 4096; | ||
130 | } | 140 | } |
131 | 141 | ||
132 | LIB3270_EXPORT GObject * v3270_ft_activity_new() | 142 | LIB3270_EXPORT GObject * v3270_ft_activity_new() |
@@ -222,3 +232,14 @@ | @@ -222,3 +232,14 @@ | ||
222 | gtk_list_store_append((GtkListStore *) model,&iter); | 232 | gtk_list_store_append((GtkListStore *) model,&iter); |
223 | gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); | 233 | gtk_list_store_set((GtkListStore *) model, &iter, 0, activity, -1); |
224 | } | 234 | } |
235 | + | ||
236 | +guint v3270_ft_activity_get_value(GObject * object, LIB3270_FT_VALUE id) | ||
237 | +{ | ||
238 | + return G_V3270_FT_ACTIVITY(object)->values[id]; | ||
239 | +} | ||
240 | + | ||
241 | +void v3270_ft_activity_set_value(GObject * object, LIB3270_FT_VALUE id, guint value) | ||
242 | +{ | ||
243 | + G_V3270_FT_ACTIVITY(object)->values[id] = value; | ||
244 | +} | ||
245 | + |
src/v3270ft/dialog.c
@@ -120,6 +120,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | @@ -120,6 +120,7 @@ static void V3270FTDialog_init(V3270FTDialog *widget) | ||
120 | 120 | ||
121 | v3270_ft_activity_set_local_filename(activity,"local---"); | 121 | v3270_ft_activity_set_local_filename(activity,"local---"); |
122 | v3270_ft_activity_set_remote_filename(activity,"remote---"); | 122 | v3270_ft_activity_set_remote_filename(activity,"remote---"); |
123 | + v3270_ft_activity_set_options(activity,LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_CRLF|LIB3270_FT_OPTION_REMAP|LIB3270_FT_OPTION_APPEND|LIB3270_FT_RECORD_FORMAT_VARIABLE); | ||
123 | 124 | ||
124 | v3270_activity_list_append(files,activity); | 125 | v3270_activity_list_append(files,activity); |
125 | v3270_ft_settings_set_activity(widget->settings,activity); | 126 | v3270_ft_settings_set_activity(widget->settings,activity); |
src/v3270ft/private.h
@@ -85,6 +85,8 @@ | @@ -85,6 +85,8 @@ | ||
85 | const gchar * label; | 85 | const gchar * label; |
86 | }; | 86 | }; |
87 | 87 | ||
88 | + #define LIB3270_FT_TYPE_OPTIONS (LIB3270_FT_OPTION_SEND|LIB3270_FT_OPTION_RECEIVE|LIB3270_FT_OPTION_ASCII|LIB3270_FT_OPTION_CRLF|LIB3270_FT_OPTION_REMAP) | ||
89 | + | ||
88 | struct v3270ft_value { | 90 | struct v3270ft_value { |
89 | 91 | ||
90 | const gchar * name; | 92 | const gchar * name; |
src/v3270ft/settings.c
@@ -49,11 +49,12 @@ | @@ -49,11 +49,12 @@ | ||
49 | GtkEntry * remote; | 49 | GtkEntry * remote; |
50 | } file; | 50 | } file; |
51 | 51 | ||
52 | - GtkWidget * recordFormatBox; | ||
53 | - GtkWidget * spaceAllocationBox; | 52 | + GtkComboBox * type; |
53 | + GtkWidget * recordFormatBox; | ||
54 | + GtkWidget * spaceAllocationBox; | ||
54 | 55 | ||
55 | - GtkWidget * options[NUM_OPTIONS_WIDGETS]; | ||
56 | - GtkWidget * spins[LIB3270_FT_VALUE_COUNT]; | 56 | + GtkWidget * options[NUM_OPTIONS_WIDGETS]; |
57 | + GtkWidget * spins[LIB3270_FT_VALUE_COUNT]; | ||
57 | }; | 58 | }; |
58 | 59 | ||
59 | G_DEFINE_TYPE(V3270FTSettings, V3270FTSettings, GTK_TYPE_GRID); | 60 | G_DEFINE_TYPE(V3270FTSettings, V3270FTSettings, GTK_TYPE_GRID); |
@@ -83,34 +84,25 @@ | @@ -83,34 +84,25 @@ | ||
83 | return entry; | 84 | return entry; |
84 | } | 85 | } |
85 | 86 | ||
86 | - /* | ||
87 | - static GtkWidget * create_frame(GtkWidget *container, const gchar *title, GtkWidget *box, GtkAlign align) | 87 | + static GtkWidget * create_grid(GtkWidget *container, GtkAlign align) |
88 | { | 88 | { |
89 | - gtk_box_pack_start(GTK_BOX(container),v3270_dialog_create_frame(title,box,align),TRUE,TRUE,0); | ||
90 | - | ||
91 | - GtkFrame * frame = GTK_FRAME(gtk_frame_new("")); | ||
92 | - g_autofree gchar * markup = g_strdup_printf("<b>%s</b>",title); | ||
93 | - GtkWidget * label = gtk_label_new(NULL); | ||
94 | - | ||
95 | - gtk_frame_set_shadow_type(GTK_FRAME(frame),GTK_SHADOW_NONE); | ||
96 | - gtk_label_set_markup(GTK_LABEL(label),markup); | ||
97 | - gtk_frame_set_label_widget(GTK_FRAME(frame),label); | ||
98 | - | ||
99 | - gtk_container_add(GTK_CONTAINER(frame),GTK_WIDGET(box)); | ||
100 | - gtk_widget_set_halign(GTK_WIDGET(frame),align); | 89 | + return v3270_box_pack_start(container,v3270_dialog_create_grid(align),TRUE,TRUE,0); |
90 | + } | ||
101 | 91 | ||
102 | - g_object_set(G_OBJECT(frame),"margin-top",6,NULL); | 92 | +static gboolean spin_format(GtkSpinButton *spin, G_GNUC_UNUSED gpointer data) { |
103 | 93 | ||
104 | - gtk_box_pack_start(GTK_BOX(container),GTK_WIDGET(frame),TRUE,TRUE,0); | 94 | + GtkAdjustment * adjustment = gtk_spin_button_get_adjustment (spin); |
95 | + guint value = (guint) gtk_adjustment_get_value(adjustment); | ||
105 | 96 | ||
106 | - return box; | ||
107 | - } | ||
108 | - */ | 97 | + if(value < 1) { |
98 | + gtk_entry_set_text(GTK_ENTRY(spin), ""); | ||
99 | + } else { | ||
100 | + g_autofree gchar * text = g_strdup_printf ("%d", value); | ||
101 | + gtk_entry_set_text(GTK_ENTRY(spin), text); | ||
102 | + } | ||
109 | 103 | ||
110 | - static GtkWidget * create_grid(GtkWidget *container, GtkAlign align) | ||
111 | - { | ||
112 | - return v3270_box_pack_start(container,v3270_dialog_create_grid(align),TRUE,TRUE,0); | ||
113 | - } | 104 | + return TRUE; |
105 | +} | ||
114 | 106 | ||
115 | GtkWidget * create_spin_button(V3270FTSettings *widget, GtkWidget *grid, size_t row, LIB3270_FT_VALUE id) | 107 | GtkWidget * create_spin_button(V3270FTSettings *widget, GtkWidget *grid, size_t row, LIB3270_FT_VALUE id) |
116 | { | 108 | { |
@@ -121,7 +113,7 @@ | @@ -121,7 +113,7 @@ | ||
121 | 113 | ||
122 | GtkWidget * button = gtk_spin_button_new_with_range(ft_value[id].minval,ft_value[id].maxval,1); | 114 | GtkWidget * button = gtk_spin_button_new_with_range(ft_value[id].minval,ft_value[id].maxval,1); |
123 | // g_signal_connect(G_OBJECT(button),"value-changed",G_CALLBACK(spin_changed),dialog); | 115 | // g_signal_connect(G_OBJECT(button),"value-changed",G_CALLBACK(spin_changed),dialog); |
124 | - // g_signal_connect(G_OBJECT(button),"output",G_CALLBACK(spin_format),dialog); | 116 | + g_signal_connect(G_OBJECT(button),"output",G_CALLBACK(spin_format),widget); |
125 | 117 | ||
126 | gtk_widget_set_tooltip_markup(button,gettext(ft_value[id].tooltip)); | 118 | gtk_widget_set_tooltip_markup(button,gettext(ft_value[id].tooltip)); |
127 | gtk_widget_set_tooltip_markup(label,gettext(ft_value[id].tooltip)); | 119 | gtk_widget_set_tooltip_markup(label,gettext(ft_value[id].tooltip)); |
@@ -169,7 +161,7 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | @@ -169,7 +161,7 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | ||
169 | 161 | ||
170 | for(ix = 0; ix < 4; ix++) { | 162 | for(ix = 0; ix < 4; ix++) { |
171 | gtk_widget_set_sensitive(widget->spins[ix],FALSE); | 163 | gtk_widget_set_sensitive(widget->spins[ix],FALSE); |
172 | - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget->spins[ix]),0); | 164 | + gtk_entry_set_text(GTK_ENTRY(widget->spins[ix]), ""); |
173 | } | 165 | } |
174 | 166 | ||
175 | } | 167 | } |
@@ -183,7 +175,6 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | @@ -183,7 +175,6 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | ||
183 | 175 | ||
184 | for(ix = 0; ix < 4; ix++) { | 176 | for(ix = 0; ix < 4; ix++) { |
185 | gtk_widget_set_sensitive(widget->spins[ix],TRUE); | 177 | gtk_widget_set_sensitive(widget->spins[ix],TRUE); |
186 | - gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget->spins[ix]),0); | ||
187 | } | 178 | } |
188 | 179 | ||
189 | } | 180 | } |
@@ -229,13 +220,14 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | @@ -229,13 +220,14 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | ||
229 | // Operation type | 220 | // Operation type |
230 | { | 221 | { |
231 | GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(1,G_TYPE_STRING)); | 222 | GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(1,G_TYPE_STRING)); |
232 | - GtkWidget * entry = create_entry(widget,"_Operation",gtk_combo_box_new_with_model(model),0,0,9); | ||
233 | GtkCellRenderer * renderer = gtk_cell_renderer_text_new(); | 223 | GtkCellRenderer * renderer = gtk_cell_renderer_text_new(); |
234 | 224 | ||
235 | - g_signal_connect(G_OBJECT(entry),"changed",G_CALLBACK(transfer_type_changed),widget); | 225 | + widget->type = GTK_COMBO_BOX(create_entry(widget,"_Operation",gtk_combo_box_new_with_model(model),0,0,9)); |
226 | + | ||
227 | + g_signal_connect(G_OBJECT(widget->type),"changed",G_CALLBACK(transfer_type_changed),widget); | ||
236 | 228 | ||
237 | - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), renderer, TRUE); | ||
238 | - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(entry), renderer, "text", 0, NULL); | 229 | + gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget->type), renderer, TRUE); |
230 | + gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget->type), renderer, "text", 0, NULL); | ||
239 | 231 | ||
240 | for(ix=0;ix < NUM_TYPES;ix++) | 232 | for(ix=0;ix < NUM_TYPES;ix++) |
241 | { | 233 | { |
@@ -389,15 +381,36 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | @@ -389,15 +381,36 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP | ||
389 | 381 | ||
390 | LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity) | 382 | LIB3270_EXPORT void v3270_ft_settings_set_activity(GtkWidget *widget, GObject *activity) |
391 | { | 383 | { |
384 | + int ix; | ||
392 | V3270FTSettings * settings = GTK_V3270_FT_SETTINGS(widget); | 385 | V3270FTSettings * settings = GTK_V3270_FT_SETTINGS(widget); |
393 | 386 | ||
394 | gtk_entry_set_text(settings->file.local,v3270_ft_activity_get_local_filename(activity)); | 387 | gtk_entry_set_text(settings->file.local,v3270_ft_activity_get_local_filename(activity)); |
395 | gtk_entry_set_text(settings->file.remote,v3270_ft_activity_get_remote_filename(activity)); | 388 | gtk_entry_set_text(settings->file.remote,v3270_ft_activity_get_remote_filename(activity)); |
396 | 389 | ||
390 | + v3270_ft_settings_set_options(widget,v3270_ft_activity_get_options(activity)); | ||
391 | + | ||
392 | + for(ix = 0; ix < LIB3270_FT_VALUE_COUNT; ix++) | ||
393 | + { | ||
394 | + gtk_spin_button_set_value(GTK_SPIN_BUTTON(settings->spins[ix]), v3270_ft_activity_get_value(activity,(LIB3270_FT_VALUE) ix)); | ||
395 | + } | ||
396 | + | ||
397 | } | 397 | } |
398 | 398 | ||
399 | LIB3270_EXPORT void v3270_ft_settings_set_options(GtkWidget *widget, LIB3270_FT_OPTION options) | 399 | LIB3270_EXPORT void v3270_ft_settings_set_options(GtkWidget *widget, LIB3270_FT_OPTION options) |
400 | { | 400 | { |
401 | - V3270FTSettings * settings = GTK_V3270_FT_SETTINGS(widget); | 401 | + int ix; |
402 | + | ||
403 | + for(ix=0;ix < NUM_TYPES;ix++) | ||
404 | + { | ||
405 | + if(ft_type[ix].opt == (options & LIB3270_FT_TYPE_OPTIONS)) | ||
406 | + { | ||
407 | + debug("Selecting option %s",ft_type[ix].label); | ||
408 | + gtk_combo_box_set_active(GTK_COMBO_BOX(GTK_V3270_FT_SETTINGS(widget)->type),ix); | ||
409 | + break; | ||
410 | + } | ||
411 | + } | ||
412 | + | ||
413 | + set_options(GTK_V3270_FT_SETTINGS(widget),options); | ||
414 | + | ||
402 | 415 | ||
403 | } | 416 | } |