name_label.set_size_request (80, -1);
if (!name_label.get_parent()) {
- item_table.attach (name_label, 1, 2, 0, 1, FILL, Gtk::FILL, 4, 0);
+ item_table.attach (name_label, 1, 2, 0, 1, FILL, FILL, 4, 0);
}
name_label.show();
name_entry.show();
if (!cd_check_button.get_parent()) {
- item_table.attach (cd_check_button, 5, 6, 0, 1, FILL, Gtk::FILL, 4, 0);
+ item_table.attach (cd_check_button, 5, 6, 0, 1, FILL, FILL, 4, 0);
}
if (!remove_button.get_parent()) {
- item_table.attach (remove_button, 7, 8, 0, 1, FILL, Gtk::FILL, 4, 0);
+ item_table.attach (remove_button, 7, 8, 0, 1, FILL, FILL, 4, 0);
}
/* XXX i can't find a way to hide the button without messing up
cd_check_button.set_active (location->is_cd_marker());
cd_check_button.show();
+
+ if (location->start() == session->current_start_frame()) {
+ cd_check_button.set_sensitive (false);
+ } else {
+ cd_check_button.set_sensitive (true);
+ }
+
hide_check_button.show();
}
start_clock.set (location->start(), true);
-
+
if (!location->is_mark()) {
if (!end_hbox.get_parent()) {
end_go_button.show();
end_clock.show();
length_clock.show();
- }
- else {
+
+ } else {
+
end_set_button.hide();
end_go_button.hide();
end_clock.hide();
length_clock.hide();
+
}
+ start_clock.set_sensitive (!location->locked());
+ end_clock.set_sensitive (!location->locked());
+ length_clock.set_sensitive (!location->locked());
+
start_changed_connection = location->start_changed.connect (mem_fun(*this, &LocationEditRow::start_changed));
end_changed_connection = location->end_changed.connect (mem_fun(*this, &LocationEditRow::end_changed));
name_changed_connection = location->name_changed.connect (mem_fun(*this, &LocationEditRow::name_changed));
changed_connection = location->changed.connect (mem_fun(*this, &LocationEditRow::location_changed));
flags_changed_connection = location->FlagsChanged.connect (mem_fun(*this, &LocationEditRow::flags_changed));
-
}
void
void
LocationEditRow::cd_toggled ()
{
+ if (i_am_the_modifier || !location) {
+ return;
+ }
+
+ //if (cd_check_button.get_active() == location->is_cd_marker()) {
+ // return;
+ //}
+
+ if (cd_check_button.get_active()) {
+ if (location->start() <= session->current_start_frame()) {
+ error << _("You cannot put a CD marker at the start of the session") << endmsg;
+ cd_check_button.set_active (false);
+ return;
+ }
+ }
- if (i_am_the_modifier || !location) return;
location->set_cd (cd_check_button.get_active(), this);
if (location->is_cd_marker() && !(location->is_mark())) {
- if (location->cd_info.find("isrc") != location->cd_info.end()) {
- isrc_entry.set_text(location->cd_info["isrc"]);
- }
- if (location->cd_info.find("performer") != location->cd_info.end()) {
- performer_entry.set_text(location->cd_info["performer"]);
- }
- if (location->cd_info.find("composer") != location->cd_info.end()) {
- composer_entry.set_text(location->cd_info["composer"]);
- }
- if (location->cd_info.find("scms") != location->cd_info.end()) {
- scms_check_button.set_active(true);
- }
- if (location->cd_info.find("preemph") != location->cd_info.end()) {
- preemph_check_button.set_active(true);
- }
-
- if(!cd_track_details_hbox.get_parent()) {
- item_table.attach (cd_track_details_hbox, 1, 8, 1, 2, FILL | EXPAND, FILL, 4, 0);
- }
- // item_table.resize(2, 7);
- cd_track_details_hbox.show_all();
-
+ if (location->cd_info.find("isrc") != location->cd_info.end()) {
+ isrc_entry.set_text(location->cd_info["isrc"]);
+ }
+ if (location->cd_info.find("performer") != location->cd_info.end()) {
+ performer_entry.set_text(location->cd_info["performer"]);
+ }
+ if (location->cd_info.find("composer") != location->cd_info.end()) {
+ composer_entry.set_text(location->cd_info["composer"]);
+ }
+ if (location->cd_info.find("scms") != location->cd_info.end()) {
+ scms_check_button.set_active(true);
+ }
+ if (location->cd_info.find("preemph") != location->cd_info.end()) {
+ preemph_check_button.set_active(true);
+ }
+
+ if (!cd_track_details_hbox.get_parent()) {
+ item_table.attach (cd_track_details_hbox, 1, 8, 1, 2, FILL | EXPAND, FILL, 4, 0);
+ }
+ // item_table.resize(2, 7);
+ cd_track_details_hbox.show_all();
+
} else if (cd_track_details_hbox.get_parent()){
-
- item_table.remove (cd_track_details_hbox);
- // item_table.resize(1, 7);
- redraw_ranges(); /* EMIT_SIGNAL */
+
+ item_table.remove (cd_track_details_hbox);
+ // item_table.resize(1, 7);
+ redraw_ranges(); /* EMIT_SIGNAL */
}
-
}
-
void
LocationEditRow::hide_toggled ()
{
LocationEditRow::start_changed (ARDOUR::Location *loc)
{
ENSURE_GUI_THREAD(bind (mem_fun(*this, &LocationEditRow::start_changed), loc));
-
+
if (!location) return;
// update end and length
i_am_the_modifier++;
start_clock.set (location->start());
+
+ if (location->start() == session->current_start_frame()) {
+ cd_check_button.set_sensitive (false);
+ } else {
+ cd_check_button.set_sensitive (true);
+ }
i_am_the_modifier--;
}
end_clock.set (location->end());
length_clock.set (location->length());
+ start_clock.set_sensitive (!location->locked());
+ end_clock.set_sensitive (!location->locked());
+ length_clock.set_sensitive (!location->locked());
+
i_am_the_modifier--;
}
{
}
+void LocationUI::on_show()
+{
+ ArdourDialog::on_show();
+ refresh_location_list();
+}
gint LocationUI::do_location_remove (ARDOUR::Location *loc)
else if (location->is_auto_punch()) {
punch_edit_row.set_session (session);
punch_edit_row.set_location (location);
+ punch_edit_row.show_all();
}
else if (location->is_auto_loop()) {
loop_edit_row.set_session (session);
loop_edit_row.set_location (location);
+ loop_edit_row.show_all();
}
else {
erow = manage (new LocationEditRow(session, location));
ENSURE_GUI_THREAD(mem_fun(*this, &LocationUI::refresh_location_list));
using namespace Box_Helpers;
+ // this is just too expensive to do when window is not shown
+ if (!is_visible()) return;
+
BoxList & loc_children = location_rows.children();
BoxList & range_children = range_rows.children();