summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc3
-rw-r--r--gtk2_ardour/location_ui.cc27
-rw-r--r--gtk2_ardour/location_ui.h3
3 files changed, 31 insertions, 2 deletions
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index 6932e891ca..675661c2dd 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -53,6 +53,7 @@
#include "utils.h"
#include "window_proxy.h"
#include "global_port_matrix.h"
+#include "location_ui.h"
#include <gtkmm2ext/application.h>
@@ -825,9 +826,11 @@ ARDOUR_UI::save_ardour_state ()
if (_session) {
_session->add_instant_xml (enode);
_session->add_instant_xml (mnode);
+ _session->add_instant_xml (location_ui->get()->ui().get_state ());
} else {
Config->add_instant_xml (enode);
Config->add_instant_xml (mnode);
+ Config->add_instant_xml (location_ui->get()->ui().get_state ());
}
Keyboard::save_keybindings ();
diff --git a/gtk2_ardour/location_ui.cc b/gtk2_ardour/location_ui.cc
index 5797cd66ee..fe91100d7a 100644
--- a/gtk2_ardour/location_ui.cc
+++ b/gtk2_ardour/location_ui.cc
@@ -201,7 +201,6 @@ LocationEditRow::set_session (Session *sess)
start_clock.set_session (_session);
end_clock.set_session (_session);
length_clock.set_session (_session);
-
}
void
@@ -717,7 +716,6 @@ LocationUI::LocationUI ()
i_am_the_modifier = 0;
_clock_group = new ClockGroup;
- _clock_group->set_clock_mode (AudioClock::Frames);
VBox* vbox = manage (new VBox);
@@ -1066,6 +1064,7 @@ LocationUI::set_session(ARDOUR::Session* s)
_session->locations()->StateChanged.connect (_session_connections, invalidator (*this), boost::bind (&LocationUI::refresh_location_list, this), gui_context());
_session->locations()->added.connect (_session_connections, invalidator (*this), ui_bind (&LocationUI::location_added, this, _1), gui_context());
_session->locations()->removed.connect (_session_connections, invalidator (*this), ui_bind (&LocationUI::location_removed, this, _1), gui_context());
+ _clock_group->set_clock_mode (clock_mode_from_session_instant_xml ());
}
loop_edit_row.set_session (s);
@@ -1106,6 +1105,30 @@ LocationUI::session_going_away()
SessionHandlePtr::session_going_away ();
}
+XMLNode &
+LocationUI::get_state () const
+{
+ XMLNode* node = new XMLNode (X_("LocationUI"));
+ node->add_property (X_("clock-mode"), enum_2_string (_clock_group->clock_mode ()));
+ return *node;
+}
+
+AudioClock::Mode
+LocationUI::clock_mode_from_session_instant_xml () const
+{
+ XMLNode* node = _session->instant_xml (X_("LocationUI"));
+ if (!node) {
+ return AudioClock::Frames;
+ }
+
+ XMLProperty* p = node->property (X_("clock-mode"));
+ if (!p) {
+ return AudioClock::Frames;
+ }
+
+ return (AudioClock::Mode) string_2_enum (p->value (), AudioClock::Mode);
+}
+
/*------------------------*/
diff --git a/gtk2_ardour/location_ui.h b/gtk2_ardour/location_ui.h
index 485a24499c..9a316bc1ed 100644
--- a/gtk2_ardour/location_ui.h
+++ b/gtk2_ardour/location_ui.h
@@ -156,6 +156,8 @@ class LocationUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
void refresh_location_list ();
+ XMLNode & get_state () const;
+
private:
ARDOUR::LocationStack* locations;
ARDOUR::Location *newest_location;
@@ -197,6 +199,7 @@ class LocationUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
void map_locations (ARDOUR::Locations::LocationList&);
ClockGroup* _clock_group;
+ AudioClock::Mode clock_mode_from_session_instant_xml () const;
};
class LocationUIWindow : public ArdourWindow