Save location UI clock mode in Session instant.xml (#4507).
authorCarl Hetherington <carl@carlh.net>
Wed, 23 Nov 2011 21:22:02 +0000 (21:22 +0000)
committerCarl Hetherington <carl@carlh.net>
Wed, 23 Nov 2011 21:22:02 +0000 (21:22 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@10813 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/location_ui.cc
gtk2_ardour/location_ui.h

index 6932e891ca1451af76034adc440ca6ec7b458052..675661c2dd13ca019a488bdb4de5ac63ff4cafb0 100644 (file)
@@ -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 ();
index 5797cd66ee2351a5140d2798667bb4bb6a5f5ca8..fe91100d7a4377be7a6762a987cc212112ca984b 100644 (file)
@@ -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);
+}
+
 
 /*------------------------*/
 
index 485a24499c5d92b5c8b418e3424a77840f1192a9..9a316bc1edfe24255aed2956c885fc52e045566f 100644 (file)
@@ -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