X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fexport_format_selector.cc;h=407465605eb6d9664843396eb57d2eb0f3cc38d6;hb=3c99ab0fb9da161bbce2ce6f02fb0607b1a2d2bb;hp=002edaf50c313af8cb00501d18e4769e9f1366f8;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/gtk2_ardour/export_format_selector.cc b/gtk2_ardour/export_format_selector.cc index 002edaf50c..407465605e 100644 --- a/gtk2_ardour/export_format_selector.cc +++ b/gtk2_ardour/export_format_selector.cc @@ -24,7 +24,6 @@ #include "ardour/export_format_specification.h" #include "ardour/export_profile_manager.h" -#include "ardour/session.h" #include "i18n.h" @@ -38,18 +37,14 @@ ExportFormatSelector::ExportFormatSelector () : pack_start (remove_button, false, false, 3); pack_start (new_button, false, false, 3); - format_combo.set_name ("PaddedButton"); - edit_button.set_name ("PaddedButton"); - remove_button.set_name ("PaddedButton"); - new_button.set_name ("PaddedButton"); - edit_button.signal_clicked().connect (sigc::hide_return (sigc::bind (sigc::mem_fun (*this, &ExportFormatSelector::open_edit_dialog), false))); - remove_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportFormatSelector::remove_format)); + remove_button.signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatSelector::remove_format), true)); new_button.signal_clicked().connect (sigc::mem_fun (*this, &ExportFormatSelector::add_new_format)); /* Format combo */ format_list = Gtk::ListStore::create (format_cols); + format_list->set_sort_column (format_cols.label, Gtk::SORT_ASCENDING); format_combo.set_model (format_list); format_combo.pack_start (format_cols.label); format_combo.set_active (0); @@ -65,7 +60,8 @@ ExportFormatSelector::~ExportFormatSelector () void ExportFormatSelector::set_state (ARDOUR::ExportProfileManager::FormatStatePtr const state_, ARDOUR::Session * session_) { - session = session_; + SessionHandlePtr::set_session (session_); + state = state_; update_format_list (); @@ -94,7 +90,7 @@ ExportFormatSelector::update_format_list () tree_it->set_value (format_cols.label, (*it)->description()); } - if (format_combo.get_active_row_number() == -1) { + if (format_combo.get_active_row_number() == -1 && format_combo.get_model()->children().size() > 0) { format_combo.set_active (0); } @@ -121,7 +117,7 @@ ExportFormatSelector::add_new_format () FormatPtr new_format = state->format = NewFormat (state->format); if (open_edit_dialog (true) != Gtk::RESPONSE_APPLY) { - remove_format(); + remove_format(false); if (state->list->empty()) { state->format.reset (); } @@ -129,11 +125,26 @@ ExportFormatSelector::add_new_format () } void -ExportFormatSelector::remove_format () +ExportFormatSelector::remove_format (bool called_from_button) { + if (called_from_button) { + Gtk::MessageDialog dialog (_("Do you really want to remove the format?"), + 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; + } + } + FormatPtr remove; Gtk::TreeModel::iterator it = format_combo.get_active(); remove = it->get_value (format_cols.format); + FormatRemoved (remove); } @@ -141,7 +152,7 @@ int ExportFormatSelector::open_edit_dialog (bool new_dialog) { ExportFormatDialog dialog (state->format, new_dialog); - dialog.set_session (session); + dialog.set_session (_session); Gtk::ResponseType response = (Gtk::ResponseType) dialog.run(); if (response == Gtk::RESPONSE_APPLY) { update_format_description ();