Commit 23fee901448771377dc0cd9afee3a6672ce5c62c

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

Auto selecting format from file extension.

Showing 1 changed file with 47 additions and 0 deletions   Show diff stats
src/dialogs/save/save.c
... ... @@ -137,6 +137,51 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
137 137 }
138 138 #endif // _WIN32
139 139  
  140 +
  141 + static void filename_changed(GtkEntry *entry, GtkComboBox *formats)
  142 + {
  143 + const gchar * text = gtk_entry_get_text(entry);
  144 +
  145 + if(!(text && *text))
  146 + return;
  147 +
  148 + const gchar * extension = strrchr(text,'.');
  149 + if(!extension)
  150 + return;
  151 +
  152 + extension++;
  153 + const gchar * format = gtk_combo_box_get_active_id(formats);
  154 + if(*format == '.')
  155 + format++;
  156 +
  157 + if(g_ascii_strcasecmp(extension,format) == 0)
  158 + return;
  159 +
  160 + gint column = gtk_combo_box_get_id_column(formats);
  161 + GtkTreeModel * model = gtk_combo_box_get_model(formats);
  162 + GtkTreeIter iter;
  163 +
  164 + debug("id_column=%d",column);
  165 +
  166 + if(gtk_tree_model_get_iter_first(model,&iter))
  167 + {
  168 + do
  169 + {
  170 + g_autofree gchar *id = NULL;
  171 + gtk_tree_model_get(model, &iter, column, &id, -1);
  172 +
  173 + if(g_ascii_strcasecmp(extension,id + (*id == '.' ? 1 : 0)) == 0)
  174 + {
  175 + gtk_combo_box_set_active_iter(formats,&iter);
  176 + break;
  177 + }
  178 +
  179 + } while(gtk_tree_model_iter_next(model,&iter));
  180 + }
  181 +
  182 + }
  183 +
  184 +
140 185 static void V3270SaveDialog_init(V3270SaveDialog *dialog)
141 186 {
142 187 // 0--------1---------------------2-------3--------------------4
... ... @@ -243,6 +288,8 @@ static void icon_press(GtkEntry *entry, G_GNUC_UNUSED GtkEntryIconPosition icon_
243 288  
244 289 }
245 290  
  291 + g_signal_connect(dialog->filename,"changed",G_CALLBACK(filename_changed),dialog->format);
  292 +
246 293 }
247 294  
248 295  
... ...