Save location UI clock mode in Session instant.xml (#4507).

git-svn-id: svn://localhost/ardour2/branches/3.0@10813 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Carl Hetherington 2011-11-23 21:22:02 +00:00
parent 8b07828f0b
commit d9c9d0e8a8
3 changed files with 31 additions and 2 deletions

View 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 ();

View 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);
}
/*------------------------*/

View 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