summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/export_format_dialog.cc21
-rw-r--r--gtk2_ardour/export_format_dialog.h3
-rw-r--r--libs/ardour/ardour/export_format_manager.h6
-rw-r--r--libs/ardour/ardour/export_format_specification.h2
-rw-r--r--libs/ardour/export_format_manager.cc26
-rw-r--r--libs/ardour/export_format_specification.cc6
6 files changed, 57 insertions, 7 deletions
diff --git a/gtk2_ardour/export_format_dialog.cc b/gtk2_ardour/export_format_dialog.cc
index e0f6d51216..d93eb23a2a 100644
--- a/gtk2_ardour/export_format_dialog.cc
+++ b/gtk2_ardour/export_format_dialog.cc
@@ -36,6 +36,7 @@ ExportFormatDialog::ExportFormatDialog (FormatPtr format, bool new_dialog) :
applying_changes_from_engine (0),
name_label (_("Label: "), Gtk::ALIGN_LEFT),
+ name_generated_part ("", Gtk::ALIGN_LEFT),
normalize_checkbox (_("Normalize to:")),
normalize_adjustment (0.00, -90.00, 0.00, 0.1, 0.2),
@@ -72,16 +73,22 @@ ExportFormatDialog::ExportFormatDialog (FormatPtr format, bool new_dialog) :
/* Pack containers in dialog */
- get_vbox()->pack_start (name_hbox, false, false, 0);
get_vbox()->pack_start (silence_table, false, false, 6);
get_vbox()->pack_start (format_table, false, false, 6);
get_vbox()->pack_start (encoding_options_vbox, false, false, 0);
get_vbox()->pack_start (cue_toc_vbox, false, false, 0);
+ get_vbox()->pack_start (name_hbox, false, false, 6);
/* Name, new and remove */
name_hbox.pack_start (name_label, false, false, 0);
- name_hbox.pack_start (name_entry, true, true, 0);
+ name_hbox.pack_start (name_entry, false, false, 0);
+ name_hbox.pack_start (name_generated_part, true, true, 0);
+ name_entry.set_width_chars(20);
+ update_description();
+ manager.DescriptionChanged.connect(
+ *this, invalidator (*this),
+ boost::bind (&ExportFormatDialog::update_description, this), gui_context());
/* Normalize */
@@ -711,6 +718,16 @@ ExportFormatDialog::update_with_toc ()
}
void
+ExportFormatDialog::update_description()
+{
+ std::string text;
+ if (format->is_complete()) {
+ text = ": " + format->description(false);
+ }
+ name_generated_part.set_text(text);
+}
+
+void
ExportFormatDialog::update_name ()
{
manager.set_name (name_entry.get_text());
diff --git a/gtk2_ardour/export_format_dialog.h b/gtk2_ardour/export_format_dialog.h
index 9e395da01d..8d37ded2cd 100644
--- a/gtk2_ardour/export_format_dialog.h
+++ b/gtk2_ardour/export_format_dialog.h
@@ -110,6 +110,8 @@ class ExportFormatDialog : public ArdourDialog, public PBD::ScopedConnectionList
void change_compatibility (bool compatibility, boost::weak_ptr<T> w_ptr, Glib::RefPtr<Gtk::ListStore> & list, ColsT & cols,
std::string const & c_incompatible = "red", std::string const & c_compatible = "white");
+ void update_description();
+
uint32_t applying_changes_from_engine;
/*** Non-interactive selections ***/
@@ -151,6 +153,7 @@ class ExportFormatDialog : public ArdourDialog, public PBD::ScopedConnectionList
Gtk::Label name_label;
Gtk::Entry name_entry;
+ Gtk::Label name_generated_part;
/* Normalize */
diff --git a/libs/ardour/ardour/export_format_manager.h b/libs/ardour/ardour/export_format_manager.h
index 33a5553203..2b5d0ad804 100644
--- a/libs/ardour/ardour/export_format_manager.h
+++ b/libs/ardour/ardour/export_format_manager.h
@@ -85,6 +85,7 @@ class ExportFormatManager : public PBD::ScopedConnectionList
/* Signals */
PBD::Signal1<void,bool> CompleteChanged;
+ PBD::Signal0<void> DescriptionChanged;
/* Access to lists */
@@ -142,6 +143,7 @@ class ExportFormatManager : public PBD::ScopedConnectionList
bool pending_selection_change;
void selection_changed ();
+ void check_for_description_change ();
/* Formats and compatibilities */
@@ -154,13 +156,15 @@ class ExportFormatManager : public PBD::ScopedConnectionList
ExportFormatBasePtr get_compatibility_intersection ();
ExportFormatBasePtr universal_set;
- ExportFormatSpecPtr current_selection;
+ ExportFormatSpecPtr current_selection;
CompatList compatibilities;
QualityList qualities;
FormatList formats;
SampleRateList sample_rates;
+ std::string prev_description;
+
};
} // namespace ARDOUR
diff --git a/libs/ardour/ardour/export_format_specification.h b/libs/ardour/ardour/export_format_specification.h
index 4bf3ed4013..286aa58353 100644
--- a/libs/ardour/ardour/export_format_specification.h
+++ b/libs/ardour/ardour/export_format_specification.h
@@ -103,7 +103,7 @@ class ExportFormatSpecification : public ExportFormatBase {
PBD::UUID const & id () { return _id; }
std::string const & name () const { return _name; }
- std::string description ();
+ std::string description (bool include_name = true);
bool has_broadcast_info () const { return _has_broadcast_info; }
uint32_t channel_limit () const { return _channel_limit; }
diff --git a/libs/ardour/export_format_manager.cc b/libs/ardour/export_format_manager.cc
index ff115d4447..5bb04696b9 100644
--- a/libs/ardour/export_format_manager.cc
+++ b/libs/ardour/export_format_manager.cc
@@ -40,6 +40,8 @@ ExportFormatManager::ExportFormatManager (ExportFormatSpecPtr specification) :
init_qualities ();
init_formats ();
init_sample_rates ();
+
+ prev_description = current_selection->description();
}
ExportFormatManager::~ExportFormatManager ()
@@ -255,66 +257,77 @@ void
ExportFormatManager::set_name (string name)
{
current_selection->set_name (name);
+ check_for_description_change ();
}
void
ExportFormatManager::select_src_quality (ExportFormatBase::SRCQuality value)
{
current_selection->set_src_quality (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_with_cue (bool value)
{
current_selection->set_with_cue (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_with_toc (bool value)
{
current_selection->set_with_toc (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_trim_beginning (bool value)
{
current_selection->set_trim_beginning (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_silence_beginning (AnyTime const & time)
{
current_selection->set_silence_beginning (time);
+ check_for_description_change ();
}
void
ExportFormatManager::select_trim_end (bool value)
{
current_selection->set_trim_end (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_silence_end (AnyTime const & time)
{
current_selection->set_silence_end (time);
+ check_for_description_change ();
}
void
ExportFormatManager::select_normalize (bool value)
{
current_selection->set_normalize (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_normalize_target (float value)
{
current_selection->set_normalize_target (value);
+ check_for_description_change ();
}
void
ExportFormatManager::select_tagging (bool tag)
{
current_selection->set_tag (tag);
+ check_for_description_change ();
}
void
@@ -694,15 +707,26 @@ ExportFormatManager::selection_changed ()
}
- /* Signal completeness */
+ /* Signal completeness and possible description change */
CompleteChanged (current_selection->is_complete());
+ check_for_description_change ();
/* Reset pending state */
pending_selection_change = false;
}
+void
+ExportFormatManager::check_for_description_change ()
+{
+ std::string new_description = current_selection->description();
+ if (new_description == prev_description) { return; }
+
+ prev_description = new_description;
+ DescriptionChanged();
+}
+
ExportFormatManager::QualityPtr
ExportFormatManager::get_selected_quality ()
{
diff --git a/libs/ardour/export_format_specification.cc b/libs/ardour/export_format_specification.cc
index 763f507de4..9e57b7c406 100644
--- a/libs/ardour/export_format_specification.cc
+++ b/libs/ardour/export_format_specification.cc
@@ -524,11 +524,13 @@ ExportFormatSpecification::set_format (boost::shared_ptr<ExportFormat> format)
}
string
-ExportFormatSpecification::description ()
+ExportFormatSpecification::description (bool include_name)
{
string desc;
- desc = _name + ": ";
+ if (include_name) {
+ desc = _name + ": ";
+ }
if (_normalize) {
desc += _("normalize, ");