LocationEditRow::LocationEditRow(Session * sess, Location * loc, int32_t num)
: SessionHandlePtr (0) /* explicitly set below */
- , location(0)
+ , location(0)
, item_table (1, 6, false)
- , start_clock (X_("locationstart"), true, X_("LocationEditRowClock"), true, false)
- , end_clock (X_("locationend"), true, X_("LocationEditRowClock"), true, false)
- , length_clock (X_("locationlength"), true, X_("LocationEditRowClock"), true, false, true)
+ , start_clock (X_("locationstart"), true, "", true, false)
+ , end_clock (X_("locationend"), true, "", true, false)
+ , length_clock (X_("locationlength"), true, "", true, false, true)
, cd_check_button (_("CD"))
, hide_check_button (_("Hide"))
, lock_check_button (_("Lock"))
ARDOUR_UI::instance()->tooltips().set_tip (*start_to_playhead_button, _("Set value to playhead"));
ARDOUR_UI::instance()->tooltips().set_tip (*end_to_playhead_button, _("Set value to playhead"));
-
+
isrc_label.set_text ("ISRC: ");
isrc_label.set_size_request (30, -1);
performer_label.set_text ("Performer: ");
start_go_button.signal_clicked().connect(sigc::bind (sigc::mem_fun (*this, &LocationEditRow::go_button_pressed), LocStart));
start_to_playhead_button->signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::to_playhead_button_pressed), LocStart));
start_clock.ValueChanged.connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::clock_changed), LocStart));
- start_clock.ChangeAborted.connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::change_aborted), LocStart));
end_hbox.pack_start (end_go_button, false, false);
end_hbox.pack_start (end_clock, false, false);
end_go_button.signal_clicked().connect(sigc::bind (sigc::mem_fun (*this, &LocationEditRow::go_button_pressed), LocEnd));
end_to_playhead_button->signal_clicked().connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::to_playhead_button_pressed), LocEnd));
end_clock.ValueChanged.connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::clock_changed), LocEnd));
- end_clock.ChangeAborted.connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::change_aborted), LocEnd));
length_clock.ValueChanged.connect (sigc::bind ( sigc::mem_fun(*this, &LocationEditRow::clock_changed), LocLength));
- length_clock.ChangeAborted.connect (sigc::bind (sigc::mem_fun (*this, &LocationEditRow::change_aborted), LocLength));
cd_check_button.signal_toggled().connect(sigc::mem_fun(*this, &LocationEditRow::cd_toggled));
hide_check_button.signal_toggled().connect(sigc::mem_fun(*this, &LocationEditRow::hide_toggled));
{
SessionHandlePtr::set_session (sess);
- if (!_session) {
+ if (!_session) {
return;
}
start_clock.set_session (_session);
end_clock.set_session (_session);
length_clock.set_session (_session);
-
}
void
LocationEditRow::name_entry_changed ()
{
ENSURE_GUI_THREAD (*this, &LocationEditRow::name_entry_changed)
-
+
if (i_am_the_modifier || !location) {
return;
}
}
}
-void
-LocationEditRow::change_aborted (LocationPart /*part*/)
-{
- if (i_am_the_modifier || !location) return;
-
- set_location(location);
-}
-
void
LocationEditRow::cd_toggled ()
{
}
void
-LocationEditRow::end_changed (ARDOUR::Location *loc)
+LocationEditRow::end_changed (ARDOUR::Location *)
{
ENSURE_GUI_THREAD (*this, &LocationEditRow::end_changed, loc)
i_am_the_modifier = 0;
_clock_group = new ClockGroup;
- _clock_group->set_clock_mode (AudioClock::Frames);
VBox* vbox = manage (new VBox);
loop_punch_box.pack_start (loop_edit_row, false, false);
loop_punch_box.pack_start (punch_edit_row, false, false);
-
+
table->attach (loop_punch_box, 1, 2, table_row, table_row + 1);
++table_row;
vbox->pack_start (*table, false, false);
-
+
table = manage (new Table (3, 2));
table->set_spacings (4);
table->set_col_spacing (0, 32);
table->attach (*manage (new Label ("")), 0, 2, table_row, table_row + 1, Gtk::SHRINK, Gtk::SHRINK);
++table_row;
-
+
l = manage (new Label (_("<b>Markers (Including CD Index)</b>")));
l->set_alignment (0, 0.5);
l->set_use_markup (true);
table->attach (*manage (new Label ("")), 0, 2, table_row, table_row + 1, Gtk::SHRINK, Gtk::SHRINK);
++table_row;
-
+
l = manage (new Label (_("<b>Ranges (Including CD Track Ranges)</b>")));
l->set_alignment (0, 0.5);
l->set_use_markup (true);
add_location_button.signal_clicked().connect (sigc::mem_fun(*this, &LocationUI::add_new_location));
add_range_button.signal_clicked().connect (sigc::mem_fun(*this, &LocationUI::add_new_range));
-
+
show_all ();
}
delete _clock_group;
}
-gint
+gint
LocationUI::do_location_remove (ARDOUR::Location *loc)
{
/* this is handled internally by Locations, but there's
return FALSE;
}
-void
+void
LocationUI::location_remove_requested (ARDOUR::Location *loc)
{
// must do this to prevent problems when destroying
}
-void
+void
LocationUI::location_redraw_ranges ()
{
range_rows.hide();
}
++i;
-
+
if (j != children.end()) {
++j;
}
_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);
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);
+}
+
/*------------------------*/
LocationUIWindow::LocationUIWindow ()
- : ArdourDialog (_("Locations"))
+ : ArdourWindow (_("Locations"))
{
set_wmclass(X_("ardour_locations"), PROGRAM_NAME);
set_name ("LocationWindow");
- get_vbox()->pack_start (_ui);
+ add (_ui);
}
LocationUIWindow::~LocationUIWindow()
{
}
-void
+void
LocationUIWindow::on_map ()
{
- ArdourDialog::on_map ();
+ ArdourWindow::on_map ();
_ui.refresh_location_list();
}
void
LocationUIWindow::set_session (Session *s)
{
- ArdourDialog::set_session (s);
+ ArdourWindow::set_session (s);
_ui.set_session (s);
}
void
LocationUIWindow::session_going_away ()
{
- ArdourDialog::session_going_away ();
+ ArdourWindow::session_going_away ();
hide_all();
}