summaryrefslogtreecommitdiff
path: root/gtk2_ardour/export_file_notebook.cc
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2016-09-14 20:00:29 +1000
committerTim Mayberry <mojofunk@gmail.com>2016-09-14 20:36:04 +1000
commit1ee63d2610b875d8dd20fbe120044492b8d0b6e1 (patch)
treed67cd08effad01069da474a9a9b74b781601739b /gtk2_ardour/export_file_notebook.cc
parentb66d5e842b954f69c3cdff71c133c78b93b4e698 (diff)
Restore state of analyze and soundcloud upload checkboxes in ExportDialog
This should be a proper fix for bug #7003, now that I've spent a bit more time reading the code. The options are now stored as part of the export format state.
Diffstat (limited to 'gtk2_ardour/export_file_notebook.cc')
-rw-r--r--gtk2_ardour/export_file_notebook.cc59
1 files changed, 25 insertions, 34 deletions
diff --git a/gtk2_ardour/export_file_notebook.cc b/gtk2_ardour/export_file_notebook.cc
index ad590ad18c..94f6f7f08a 100644
--- a/gtk2_ardour/export_file_notebook.cc
+++ b/gtk2_ardour/export_file_notebook.cc
@@ -113,52 +113,26 @@ ExportFileNotebook::update_soundcloud_upload ()
}
void
-ExportFileNotebook::FilePage::on_show ()
-{
- VBox::on_show ();
- restore_state ();
-}
-
-void
ExportFileNotebook::FilePage::on_hide ()
{
VBox::on_hide ();
- store_state ();
+ if (save_format_on_hide) {
+ profile_manager->save_format_to_disk (format_state->format);
+ save_format_on_hide = false;
+ }
}
void
ExportFileNotebook::FilePage::analysis_changed ()
{
format_state->format->set_analyse (analysis_button.get_active ());
+ save_format_on_hide = true;
}
void
-ExportFileNotebook::FilePage::store_state ()
+ExportFileNotebook::FilePage::update_analysis_button ()
{
- XMLNode node (X_("ExportFile"));
- node.add_property ("analyze-audio", analysis_button.get_active () ? "yes" : "no");
- node.add_property ("soundcloud-upload", soundcloud_upload_button.get_active () ? "yes" : "no");
- Config->add_instant_xml (node);
-}
-
-void
-ExportFileNotebook::FilePage::restore_state ()
-{
- XMLNode* node = Config->instant_xml (X_("ExportFile"));
-
- if (!node) {
- return;
- }
-
- XMLProperty const* prop;
-
- if ((prop = node->property ("analyze-audio")) != 0) {
- analysis_button.set_active (string_is_affirmative (prop->value()));
- }
-
- if ((prop = node->property ("soundcloud-upload")) != 0) {
- soundcloud_upload_button.set_active (string_is_affirmative (prop->value()));
- }
+ analysis_button.set_active (format_state->format->analyse());
}
void
@@ -242,7 +216,8 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager,
filename_label (_("Location"), Gtk::ALIGN_LEFT),
soundcloud_upload_button (_("Upload to Soundcloud")),
analysis_button (_("Analyze Exported Audio")),
- tab_number (number)
+ tab_number (number),
+ save_format_on_hide(false)
{
set_border_width (12);
@@ -275,6 +250,7 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager,
format_selector.set_state (format_state, s);
filename_selector.set_state (filename_state, s);
analysis_button.set_active (format_state->format->analyse());
+ soundcloud_upload_button.set_active (format_state->format->soundcloud_upload());
/* Signals */
@@ -292,6 +268,7 @@ ExportFileNotebook::FilePage::FilePage (Session * s, ManagerPtr profile_manager,
sigc::mem_fun (*this, &ExportFileNotebook::FilePage::critical_selection_changed));
soundcloud_upload_button.signal_toggled().connect (sigc::mem_fun (*parent, &ExportFileNotebook::update_soundcloud_upload));
+ soundcloud_upload_button.signal_toggled().connect (sigc::mem_fun (*this, &ExportFileNotebook::FilePage::soundcloud_upload_changed));
analysis_button.signal_toggled().connect (sigc::mem_fun (*this, &ExportFileNotebook::FilePage::analysis_changed));
/* Tab widget */
@@ -336,6 +313,18 @@ ExportFileNotebook::FilePage::get_soundcloud_upload () const
}
void
+ExportFileNotebook::FilePage::soundcloud_upload_changed ()
+{
+ save_format_on_hide = true;
+}
+
+void
+ExportFileNotebook::FilePage::update_soundcloud_upload_button ()
+{
+ soundcloud_upload_button.set_active (format_state->format->soundcloud_upload());
+}
+
+void
ExportFileNotebook::FilePage::save_format_to_manager (FormatPtr format)
{
profile_manager->save_format_to_disk (format);
@@ -377,5 +366,7 @@ ExportFileNotebook::FilePage::critical_selection_changed ()
{
update_tab_label();
update_example_filename();
+ update_analysis_button();
+ update_soundcloud_upload_button();
CriticalSelectionChanged();
}