new_button (Gtk::Stock::NEW)
{
list = Gtk::ListStore::create (cols);
+ list->set_sort_column (cols.label, Gtk::SORT_ASCENDING);
entry.set_model (list);
entry.set_text_column (cols.label);
select_connection = entry.signal_changed().connect (sigc::mem_fun (*this, &ExportPresetSelector::update_selection));
save_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportPresetSelector::save_current));
- new_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportPresetSelector::save_current));
+ new_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportPresetSelector::create_new));
remove_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportPresetSelector::remove_current));
show_all_children ();
}
}
- save_button.set_sensitive (current);
- remove_button.set_sensitive (current);
+ save_button.set_sensitive (current != 0);
+ remove_button.set_sensitive (current != 0);
new_button.set_sensitive (!current && !text.empty() && !preset_name_exists);
}
+void
+ExportPresetSelector::create_new ()
+{
+ if (!profile_manager) { return; }
+
+ previous = current = profile_manager->new_preset (entry.get_entry()->get_text());
+ sync_with_manager ();
+ update_selection (); // Update preset widget states
+}
+
void
ExportPresetSelector::save_current ()
{
{
if (!profile_manager) { return; }
+ Gtk::MessageDialog dialog (_("Do you really want to remove this preset?"),
+ false,
+ Gtk::MESSAGE_QUESTION,
+ Gtk::BUTTONS_YES_NO);
+
+ if (Gtk::RESPONSE_YES != dialog.run ()) {
+ /* User has selected "no" or closed the dialog, better
+ * abort
+ */
+ return;
+ }
+
profile_manager->remove_preset();
entry.get_entry()->set_text ("");
sync_with_manager ();