X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_preset_selector.cc;h=018beae39ac04bfb2511d14adde015cab8d23ef8;hb=cf52d6e4b40111eb04b244ec054055a4ec15dbe0;hp=dab10e335d7c5680d16816cd832b572430178726;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/gtk2_ardour/export_preset_selector.cc b/gtk2_ardour/export_preset_selector.cc index dab10e335d..018beae39a 100644 --- a/gtk2_ardour/export_preset_selector.cc +++ b/gtk2_ardour/export_preset_selector.cc @@ -22,7 +22,7 @@ #include "ardour/export_preset.h" -#include "i18n.h" +#include "pbd/i18n.h" ExportPresetSelector::ExportPresetSelector () : label (_("Preset"), Gtk::ALIGN_LEFT), @@ -31,6 +31,7 @@ ExportPresetSelector::ExportPresetSelector () : 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); @@ -40,18 +41,13 @@ ExportPresetSelector::ExportPresetSelector () : pack_start (remove_button, false, false, 6); pack_start (new_button, false, false, 0); - entry.set_name ("PaddedButton"); - save_button.set_name ("PaddedButton"); - remove_button.set_name ("PaddedButton"); - new_button.set_name ("PaddedButton"); - save_button.set_sensitive (false); remove_button.set_sensitive (false); new_button.set_sensitive (false); 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 (); @@ -75,7 +71,7 @@ ExportPresetSelector::sync_with_manager () for (PresetList::const_iterator it = presets.begin(); it != presets.end(); ++it) { tree_it = list->append(); tree_it->set_value (cols.preset, *it); - tree_it->set_value (cols.label, Glib::ustring ((*it)->name())); + tree_it->set_value (cols.label, std::string ((*it)->name())); if (*it == current) { select_connection.block (true); @@ -89,7 +85,7 @@ void ExportPresetSelector::update_selection () { Gtk::ListStore::iterator it = entry.get_active (); - Glib::ustring text = entry.get_entry()->get_text(); + std::string text = entry.get_entry()->get_text(); bool preset_name_exists = false; for (PresetList::const_iterator it = profile_manager->get_presets().begin(); it != profile_manager->get_presets().end(); ++it) { @@ -122,11 +118,21 @@ ExportPresetSelector::update_selection () } } - 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 () { @@ -142,6 +148,18 @@ ExportPresetSelector::remove_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 ();