Remove unnecessary _have_transaction flag in TrimDrag. Fix undo when a trim of one...
[ardour.git] / gtk2_ardour / export_format_dialog.cc
index 05c17598670ece2f469a0e6b1472baaa99856002..ceea2b108220135cca0665a0df5fafe8714d8bb2 100644 (file)
 
 */
 
-#include "export_format_dialog.h"
-
 #include "ardour/session.h"
 #include "ardour/export_format_specification.h"
 
+#include "export_format_dialog.h"
+#include "gui_thread.h"
 #include "i18n.h"
 
 using namespace ARDOUR;
 
 ExportFormatDialog::ExportFormatDialog (FormatPtr format, bool new_dialog) :
-  ArdourDialog (new_dialog ? _("New export format profile") : _("Edit export format profile")),
+  ArdourDialog (new_dialog ? _("New Export Format Profile") : _("Edit Export Format Profile")),
   format (format),
   manager (format),
   original_state (format->get_state()),
@@ -57,7 +57,7 @@ ExportFormatDialog::ExportFormatDialog (FormatPtr format, bool new_dialog) :
   sample_rate_label (_("Sample rate"), Gtk::ALIGN_LEFT),
   src_quality_label (_("Sample rate conversion quality:"), Gtk::ALIGN_RIGHT),
 
-  encoding_options_label (_(""), Gtk::ALIGN_LEFT),
+  encoding_options_label ("", Gtk::ALIGN_LEFT),
 
   /* Changing encoding options from here on */
 
@@ -127,7 +127,7 @@ ExportFormatDialog::ExportFormatDialog (FormatPtr format, bool new_dialog) :
        close_button = add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_APPLY);
        close_button->set_sensitive (false);
        close_button->signal_clicked().connect (sigc::mem_fun (*this, &ExportFormatDialog::end_dialog));
-       manager.CompleteChanged.connect (sigc::mem_fun (*close_button, &Gtk::Button::set_sensitive));
+       manager.CompleteChanged.connect (*this, invalidator (*this), ui_bind (&Gtk::Button::set_sensitive, close_button, _1), gui_context());
 
        /* Load state before hooking up the rest of the signals */
 
@@ -210,7 +210,7 @@ ExportFormatDialog::set_session (ARDOUR::Session* s)
        if (sample_rate_view.get_selection()->count_selected_rows() == 0) {
                Gtk::ListStore::Children::iterator it;
                for (it = sample_rate_list->children().begin(); it != sample_rate_list->children().end(); ++it) {
-                       if ((nframes_t) (*it)->get_value (sample_rate_cols.ptr)->rate == _session->nominal_frame_rate()) {
+                       if ((framecnt_t) (*it)->get_value (sample_rate_cols.ptr)->rate == _session->nominal_frame_rate()) {
                                sample_rate_view.get_selection()->select (it);
                                break;
                        }
@@ -228,11 +228,11 @@ ExportFormatDialog::load_state (FormatPtr spec)
 
        trim_start_checkbox.set_active (spec->trim_beginning());
        silence_start = spec->silence_beginning_time();
-       silence_start_checkbox.set_active (spec->silence_beginning() > 0);
+       silence_start_checkbox.set_active (spec->silence_beginning_time().not_zero());
 
        trim_end_checkbox.set_active (spec->trim_end());
        silence_end = spec->silence_end_time();
-       silence_end_checkbox.set_active (spec->silence_end() > 0);
+       silence_end_checkbox.set_active (spec->silence_end_time().not_zero());
 
        for (Gtk::ListStore::Children::iterator it = src_quality_list->children().begin(); it != src_quality_list->children().end(); ++it) {
                if (it->get_value (src_quality_cols.id) == spec->src_quality()) {
@@ -242,8 +242,12 @@ ExportFormatDialog::load_state (FormatPtr spec)
        }
 
        for (Gtk::ListStore::Children::iterator it = format_list->children().begin(); it != format_list->children().end(); ++it) {
-               if (it->get_value (format_cols.ptr)->get_format_id() == spec->format_id()) {
-                       it->get_value (format_cols.ptr)->set_selected (true);
+               boost::shared_ptr<ARDOUR::ExportFormat> format_in_list = it->get_value (format_cols.ptr);
+               if (format_in_list->get_format_id() == spec->format_id() &&
+                   // BWF has the same format id with wav, so we need to check this.
+                   format_in_list->has_broadcast_info() == spec->has_broadcast_info()) {
+
+                       format_in_list->set_selected (true);
                        break;
                }
        }
@@ -319,7 +323,7 @@ ExportFormatDialog::init_format_table ()
                row[compatibility_cols.label] = (*it)->name();
 
                WeakCompatPtr ptr (*it);
-               (*it)->SelectChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_compatibility_selection), ptr));
+               (*it)->SelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_compatibility_selection, this, _1, ptr), gui_context());
        }
 
        compatibility_view.append_column_editable ("", compatibility_cols.selected);
@@ -347,8 +351,8 @@ ExportFormatDialog::init_format_table ()
                row[quality_cols.label] = (*it)->name();
 
                WeakQualityPtr ptr (*it);
-               (*it)->SelectChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_quality_selection), ptr));
-               (*it)->CompatibleChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_quality_compatibility), ptr));
+               (*it)->SelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_quality_selection, this, _1, ptr), gui_context());
+               (*it)->CompatibleChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_quality_compatibility, this, _1, ptr), gui_context());
        }
 
        quality_view.append_column ("", quality_cols.label);
@@ -369,19 +373,19 @@ ExportFormatDialog::init_format_table ()
                row[format_cols.label] = (*it)->name();
 
                WeakFormatPtr ptr (*it);
-               (*it)->SelectChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_format_selection), ptr));
-               (*it)->CompatibleChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_format_compatibility), ptr));
+               (*it)->SelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_format_selection, this, _1, ptr), gui_context());
+               (*it)->CompatibleChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_format_compatibility, this, _1, ptr), gui_context());
 
                /* Encoding options */
 
                boost::shared_ptr<HasSampleFormat> hsf;
 
                if (hsf = boost::dynamic_pointer_cast<HasSampleFormat> (*it)) {
-                       hsf->SampleFormatSelectChanged.connect (sigc::mem_fun (*this, &ExportFormatDialog::change_sample_format_selection));
-                       hsf->SampleFormatCompatibleChanged.connect (sigc::mem_fun (*this, &ExportFormatDialog::change_sample_format_compatibility));
+                       hsf->SampleFormatSelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_sample_format_selection, this, _1, _2), gui_context());
+                       hsf->SampleFormatCompatibleChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_sample_format_compatibility, this, _1, _2), gui_context());
 
-                       hsf->DitherTypeSelectChanged.connect (sigc::mem_fun (*this, &ExportFormatDialog::change_dither_type_selection));
-                       hsf->DitherTypeCompatibleChanged.connect (sigc::mem_fun (*this, &ExportFormatDialog::change_dither_type_compatibility));
+                       hsf->DitherTypeSelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_dither_type_selection, this, _1, _2), gui_context());
+                       hsf->DitherTypeCompatibleChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_dither_type_compatibility, this, _1, _2), gui_context());
                }
        }
 
@@ -401,10 +405,10 @@ ExportFormatDialog::init_format_table ()
                row[sample_rate_cols.ptr] = *it;
                row[sample_rate_cols.color] = "white";
                row[sample_rate_cols.label] = (*it)->name();
-
+               
                WeakSampleRatePtr ptr (*it);
-               (*it)->SelectChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_sample_rate_selection), ptr));
-               (*it)->CompatibleChanged.connect (sigc::bind (sigc::mem_fun (*this, &ExportFormatDialog::change_sample_rate_compatibility), ptr));
+               (*it)->SelectChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_sample_rate_selection, this, _1, ptr), gui_context());
+               (*it)->CompatibleChanged.connect (*this, invalidator (*this), ui_bind (&ExportFormatDialog::change_sample_rate_compatibility, this, _1, ptr), gui_context());
        }
 
        sample_rate_view.append_column ("", sample_rate_cols.label);
@@ -485,7 +489,7 @@ ExportFormatDialog::init_encoding_option_widgets ()
 }
 
 void
-ExportFormatDialog::update_compatibility_selection (Glib::ustring const & path)
+ExportFormatDialog::update_compatibility_selection (std::string const & path)
 {
 
        Gtk::TreeModel::iterator iter = compatibility_view.get_model ()->get_iter (path);
@@ -668,7 +672,7 @@ ExportFormatDialog::change_dither_type_compatibility (bool compatibility, WeakDi
 template<typename T, typename ColsT>
 void
 ExportFormatDialog::change_compatibility (bool compatibility, boost::weak_ptr<T> w_ptr, Glib::RefPtr<Gtk::ListStore> & list, ColsT & cols,
-                                          Glib::ustring const & c_incompatible, Glib::ustring const & c_compatible)
+                                          std::string const & c_incompatible, std::string const & c_compatible)
 {
        boost::shared_ptr<T> ptr = w_ptr.lock();
 
@@ -757,7 +761,7 @@ ExportFormatDialog::update_time (AnyTime & time, AudioClock const & clock)
                return;
        }
 
-       nframes_t frames = clock.current_duration();
+       framecnt_t frames = clock.current_duration();
 
        switch (clock.mode()) {
          case AudioClock::Timecode: