mute_button->set_active (false);
solo_button->set_active (false);
- if (is_audio_track())
- controls_ebox.set_name ("AudioTimeAxisViewControlsBaseUnselected");
- else // bus
+ if (is_audio_track()) {
+ controls_ebox.set_name ("AudioTrackControlsBaseUnselected");
+ } else { // bus
controls_ebox.set_name ("AudioBusControlsBaseUnselected");
-
- /* map current state of the route */
-
- processors_changed ();
- reset_processor_automation_curves ();
+ }
ensure_xml_node ();
_route->panner().Changed.connect (bind (mem_fun(*this, &AudioTimeAxisView::update_pans), false));
+ /* map current state of the route */
+
+ processors_changed ();
+ reset_processor_automation_curves ();
+ update_pans (false);
update_control_names ();
if (is_audio_track()) {
TimeAxisView::hide ();
}
+
void
AudioTimeAxisView::append_extra_display_menu_items ()
{
AutomationTimeAxisView::set_height (uint32_t h)
{
bool changed = (height != (uint32_t) h) || first_call_to_set_height;
-
- if (first_call_to_set_height)
- first_call_to_set_height = false;
bool changed_between_small_and_normal = ( (h == hSmall || h == hSmaller) ^ (height == hSmall || height == hSmaller) );
TimeAxisView* state_parent = get_parent_with_state ();
+
assert(state_parent);
XMLNode* xml_node = state_parent->get_automation_child_xml_node (_control->parameter());
xml_node->add_property ("height", buf);
if (changed_between_small_and_normal || first_call_to_set_height) {
+
first_call_to_set_height = false;
if (h >= hNormal) {
AutomationTimeAxisView::update_extra_xml_shown (bool editor_shown)
{
XMLNode* xml_node = get_state_node();
-// if (xml_node) {
+ if (xml_node) {
xml_node->add_property ("shown", editor_shown ? "yes" : "no");
-// }
+ }
}
guint32
~AutomationTimeAxisView();
-
- void set_height (uint32_t);
+ virtual void set_height (uint32_t);
void set_samples_per_unit (double);
std::string name() const { return _name; }
AxisView::AxisView (ARDOUR::Session& sess) : _session(sess)
{
_selected = false;
- _marked_for_display = true;
+ _marked_for_display = false;
}
AxisView::~AxisView()
vpacker.pack_end (status_bar_hpacker, false, false);
vpacker.pack_end (global_hpacker, true, true);
+ edit_controls_vbox.show ();
+ controls_layout.show ();
+ the_notebook.show_all ();
+
/* register actions now so that set_state() can find them and set toggles/checks etc */
register_actions ();
#else
row = *(route_display_model->append ());
#endif
+
+ cerr << route->name() << " marked for display ? " << tv->marked_for_display() << endl;
row[route_display_columns.text] = route->name();
row[route_display_columns.visible] = tv->marked_for_display();
row[route_display_columns.tv] = tv;
row[route_display_columns.route] = route;
-
+
track_views.push_back (tv);
ignore_route_list_reorder = true;
for (i = rows.begin(); i != rows.end(); ++i) {
TimeAxisView *tv = (*i)[route_display_columns.tv];
(*i)[route_display_columns.visible] = tv->marked_for_display ();
+ cerr << "marked " << tv->name() << " for display = " << tv->marked_for_display() << endl;
}
no_route_list_redisplay = false;
uint32_t position;
uint32_t order;
int n;
+
+ cerr << "RRL, nrld = " << no_route_list_redisplay << " with " << rows.size() << endl;
if (no_route_list_redisplay) {
return;
bool visible = (*i)[route_display_columns.visible];
+ cerr << "\tvisible = " << visible << endl;
+
if (visible) {
tv->set_marked_for_display (true);
position += tv->show_at (position, n, &edit_controls_vbox);
+ cerr << "packed tv for " << tv->name() << " @ " << position << endl;
} else {
tv->hide ();
}
input_selector = 0;
output_selector = 0;
group_menu = 0;
- _marked_for_display = false;
+ if (!_route->is_hidden()) {
+ _marked_for_display = true;
+ }
route_ops_menu = 0;
ignore_comment_edit = false;
ignore_toggle = false;
playlist_action_menu = 0;
automation_action_menu = 0;
_view = 0;
+
+ if (!_route->is_hidden()) {
+ _marked_for_display = true;
+ }
+
timestretch_rect = 0;
no_redraw = false;
destructive_track_mode_item = 0;
using namespace Menu_Helpers;
XMLProperty* prop;
+ XMLNode* node;
add_child (track);
bool hideit = (!show);
- XMLNode* node;
-
if ((node = track->get_state_node()) != 0) {
if ((prop = node->property ("shown")) != 0) {
if (prop->value() == "yes") {
}
}
}
+
+ cerr << "with show = " << show << " Adding automation child for " << _route->name() << " hideit = " << hideit << " prop = " << prop << endl;
_automation_tracks.insert(std::make_pair(param, new RouteAutomationNode(param, NULL, track)));
} else {
_show_automation.insert (param);
+
if (!no_redraw) {
_route->gui_changed ("visible_tracks", (void *) 0); /* EMIT_SIGNAL */
}
control_parent = 0;
display_menu = 0;
size_menu = 0;
- _marked_for_display = false;
_hidden = false;
in_destructor = false;
height = 0;
{
time_axis_name = name ;
_color = unique_random_color() ;
- _marked_for_display = true;
name_entry.signal_activate().connect(mem_fun(*this, &VisualTimeAxis::name_entry_changed)) ;
name_entry.signal_button_press_event().connect(mem_fun(*this, &VisualTimeAxis::name_entry_button_press_handler)) ;
if (param == Parameter(GainAutomation)) {
return _("Fader");
} else if (param.type() == PanAutomation) {
- return (string_compose(_("Pan %1"), param.id()));
+ /* ID's are zero-based, present them as 1-based */
+ return (string_compose(_("Pan %1"), param.id() + 1));
} else if (param.type() == MidiCCAutomation) {
return string_compose("CC %1 (%2) [%3]",
param.id(), midi_name(param.id()), int(param.channel()) + 1);