Commit 320424c69b76154522e056d297d32e52ae122699

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

Rewriting file transfer settings widget.

Showing 1 changed file with 70 additions and 28 deletions   Show diff stats
src/v3270ft/settings.c
... ... @@ -49,6 +49,9 @@
49 49 GtkEntry * remote;
50 50 } file;
51 51  
  52 + GtkWidget * recordFormatBox;
  53 + GtkWidget * spaceAllocationBox;
  54 +
52 55 GtkWidget * options[NUM_OPTIONS_WIDGETS];
53 56 GtkWidget * spins[LIB3270_FT_VALUE_COUNT];
54 57 };
... ... @@ -140,37 +143,74 @@
140 143  
141 144 static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_pos, G_GNUC_UNUSED GdkEvent *event, GtkWidget *widget)
142 145 {
143   - gchar *filename = v3270ft_select_file(
144   - gtk_widget_get_toplevel(widget),
145   - _("Select local file"),
146   - _("Select"),
147   - GTK_FILE_CHOOSER_ACTION_OPEN,
148   - gtk_entry_get_text(entry),
149   - N_("All files"), "*.*",
150   - N_("Text files"), "*.txt",
151   - NULL );
  146 + v3270_autofree gchar *filename =
  147 + v3270ft_select_file(
  148 + gtk_widget_get_toplevel(widget),
  149 + _("Select local file"),
  150 + _("Select"),
  151 + GTK_FILE_CHOOSER_ACTION_OPEN,
  152 + gtk_entry_get_text(entry),
  153 + N_("All files"), "*.*",
  154 + N_("Text files"), "*.txt",
  155 + NULL
  156 + );
152 157  
153 158 if(filename) {
154   -
155 159 gtk_entry_set_text(entry,filename);
  160 + }
  161 +
  162 + }
  163 +
  164 + static void set_options(V3270FTSettings *widget, LIB3270_FT_OPTION options)
  165 + {
  166 + size_t ix;
156 167  
157   - /*
158   - const gchar *remote = gtk_entry_get_text(dialog->remote);
  168 + if(options & LIB3270_FT_OPTION_RECEIVE)
  169 + {
  170 + debug("%s option selected","LIB3270_FT_OPTION_RECEIVE");
159 171  
160   - gtk_entry_set_text(dialog->local,filename);
  172 + gtk_widget_set_sensitive(widget->recordFormatBox,FALSE);
  173 + gtk_widget_set_sensitive(widget->spaceAllocationBox,FALSE);
161 174  
162   - if(!*remote) {
163   - gchar * text = g_path_get_basename(filename);
164   - gtk_entry_set_text(dialog->remote,text);
165   - g_free(text);
  175 + for(ix = 0; ix < 4; ix++) {
  176 + gtk_widget_set_sensitive(widget->spins[ix],FALSE);
  177 + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget->spins[ix]),0);
166 178 }
167 179  
168   - g_free(filename);
169   - */
  180 + }
  181 + else
  182 + {
  183 + debug("%s option selected","LIB3270_FT_OPTION_SEND");
  184 +
  185 + gtk_widget_set_sensitive(widget->recordFormatBox,TRUE);
  186 + gtk_widget_set_sensitive(widget->spaceAllocationBox,TRUE);
  187 +
  188 + for(ix = 0; ix < 4; ix++) {
  189 + gtk_widget_set_sensitive(widget->spins[ix],TRUE);
  190 + gtk_spin_button_set_value(GTK_SPIN_BUTTON(widget->spins[ix]),0);
  191 + }
170 192  
171 193 }
172 194  
173   -}
  195 + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget->options[4]),TRUE);
  196 + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget->options[8]),TRUE);
  197 +
  198 + for(ix=0;ix<NUM_OPTIONS_WIDGETS;ix++) {
  199 + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget->options[ix]),(options & ft_option[ix].opt) == ft_option[ix].opt);
  200 + }
  201 +
  202 + }
  203 +
  204 + static void transfer_type_changed(GtkComboBox *widget, V3270FTSettings *dialog)
  205 + {
  206 + gint selected = gtk_combo_box_get_active(widget);
  207 +
  208 + debug("Transfer type=%u", (unsigned int) selected);
  209 +
  210 + if(selected >= 0)
  211 + set_options(dialog,ft_type[selected].opt);
  212 +
  213 + }
174 214  
175 215 static void V3270FTSettings_init(V3270FTSettings *widget)
176 216 {
... ... @@ -182,10 +222,12 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
182 222  
183 223 // Operation type
184 224 {
185   - GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_ULONG));
  225 + GtkTreeModel * model = GTK_TREE_MODEL(gtk_list_store_new(1,G_TYPE_STRING));
186 226 GtkWidget * entry = create_entry(widget,"_Operation",gtk_combo_box_new_with_model(model),0,0,9);
187 227 GtkCellRenderer * renderer = gtk_cell_renderer_text_new();
188 228  
  229 + g_signal_connect(G_OBJECT(entry),"changed",G_CALLBACK(transfer_type_changed),widget);
  230 +
189 231 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(entry), renderer, TRUE);
190 232 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(entry), renderer, "text", 0, NULL);
191 233  
... ... @@ -193,7 +235,7 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
193 235 {
194 236 GtkTreeIter iter;
195 237 gtk_list_store_append((GtkListStore *) model,&iter);
196   - gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(ft_type[ix].label),-1);
  238 + gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(ft_type[ix].label), -1);
197 239 }
198 240  
199 241  
... ... @@ -239,8 +281,8 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
239 281  
240 282 // Record format
241 283 {
242   - GtkWidget * box = create_frame(options, _("Record format"), gtk_box_new(GTK_ORIENTATION_VERTICAL,6),GTK_ALIGN_CENTER);
243   - GSList * group = NULL;
  284 + GSList * group = NULL;
  285 + widget->recordFormatBox = create_frame(options, _("Record format"), gtk_box_new(GTK_ORIENTATION_VERTICAL,6),GTK_ALIGN_CENTER);
244 286  
245 287 for(ix=4;ix<8;ix++)
246 288 {
... ... @@ -248,15 +290,15 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
248 290 gtk_widget_set_tooltip_markup(widget->options[ix],gettext(ft_option[ix].tooltip));
249 291 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(widget->options[ix]));
250 292 // g_signal_connect(G_OBJECT(widget->options[ix]),"toggled",G_CALLBACK(option_toggled),widget);
251   - gtk_box_pack_start(GTK_BOX(box),widget->options[ix],FALSE,TRUE,0);
  293 + gtk_box_pack_start(GTK_BOX(widget->recordFormatBox),widget->options[ix],FALSE,TRUE,0);
252 294  
253 295 }
254 296 }
255 297  
256 298 // Space allocation units
257 299 {
258   - GtkWidget * box = create_frame(options, _("Space allocation units"), gtk_box_new(GTK_ORIENTATION_VERTICAL,6),GTK_ALIGN_END);
259   - GSList * group = NULL;
  300 + GSList * group = NULL;
  301 + widget->spaceAllocationBox = create_frame(options, _("Space allocation units"), gtk_box_new(GTK_ORIENTATION_VERTICAL,6),GTK_ALIGN_END);
260 302  
261 303 for(ix=8;ix<12;ix++)
262 304 {
... ... @@ -264,7 +306,7 @@ static void open_select_file_dialog(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconP
264 306 gtk_widget_set_tooltip_markup(widget->options[ix],gettext(ft_option[ix].tooltip));
265 307 group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(widget->options[ix]));
266 308 // g_signal_connect(G_OBJECT(widget->options[ix]),"toggled",G_CALLBACK(option_toggled),widget);
267   - gtk_box_pack_start(GTK_BOX(box),widget->options[ix],FALSE,TRUE,0);
  309 + gtk_box_pack_start(GTK_BOX(widget->spaceAllocationBox),widget->options[ix],FALSE,TRUE,0);
268 310  
269 311 }
270 312 }
... ...