diff options
author | David Robillard <d@drobilla.net> | 2007-09-11 03:14:32 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-09-11 03:14:32 +0000 |
commit | 4cd6ef8b5c7299db4f042de725285ea2db3d852d (patch) | |
tree | 0829594f982d5e5bba38574511d8579467417e69 | |
parent | a7fb6f897f53e4bec037abfac6ff2d0a9436f7f8 (diff) |
Always show CC region, whether empty or not (ie whether MidiModel contains any events for that CC or not). Can't add events though... yet....
git-svn-id: svn://localhost/ardour2/trunk@2451 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r-- | gtk2_ardour/automation_region_view.cc | 43 | ||||
-rw-r--r-- | gtk2_ardour/automation_region_view.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/automation_streamview.cc | 10 |
3 files changed, 32 insertions, 25 deletions
diff --git a/gtk2_ardour/automation_region_view.cc b/gtk2_ardour/automation_region_view.cc index 539ff233ef..f0dc23e043 100644 --- a/gtk2_ardour/automation_region_view.cc +++ b/gtk2_ardour/automation_region_view.cc @@ -30,13 +30,14 @@ AutomationRegionView::AutomationRegionView(ArdourCanvas::Group* double spu, Gdk::Color& basic_color) : RegionView(parent, time_axis, region, spu, basic_color) - , _line(list->parameter().to_string(), time_axis, *group, list) { - _line.set_colors(); - _line.show(); - _line.show_all_control_points(); - - //group->raise_to_top (); + if (list) { + _line = boost::shared_ptr<AutomationLine>(new AutomationLine( + list->parameter().to_string(), time_axis, *group, list)); + _line->set_colors(); + _line->show(); + _line->show_all_control_points(); + } group->signal_event().connect (mem_fun (this, &AutomationRegionView::canvas_event), false); } @@ -77,6 +78,11 @@ AutomationRegionView::canvas_event(GdkEvent* ev) void AutomationRegionView::add_automation_event (GdkEvent* event, nframes_t when, double y) { + if (!_line) { + cerr << "ERROR: AutomationRegionView::add_automation_event called without line" << endl; + return; + } + double x = 0; AutomationTimeAxisView* const view = automation_view(); @@ -89,16 +95,16 @@ AutomationRegionView::add_automation_event (GdkEvent* event, nframes_t when, dou /* map using line */ - _line.view_to_model_y (y); + _line->view_to_model_y (y); view->session().begin_reversible_command (_("add automation event")); - XMLNode& before = _line.the_list()->get_state(); + XMLNode& before = _line->the_list()->get_state(); - _line.the_list()->add (when, y); + _line->the_list()->add (when, y); - XMLNode& after = _line.the_list()->get_state(); + XMLNode& after = _line->the_list()->get_state(); view->session().commit_reversible_command (new MementoCommand<ARDOUR::AutomationList>( - *_line.the_list(), &before, &after)); + *_line->the_list(), &before, &after)); view->session().set_dirty (); } @@ -109,7 +115,8 @@ AutomationRegionView::set_y_position_and_height (double y, double h) { RegionView::set_y_position_and_height(y, h - 1); - _line.set_y_position_and_height ((uint32_t)y, (uint32_t) rint (h - NAME_HIGHLIGHT_SIZE)); + if (_line) + _line->set_y_position_and_height ((uint32_t)y, (uint32_t) rint (h - NAME_HIGHLIGHT_SIZE)); } bool @@ -127,7 +134,8 @@ AutomationRegionView::reset_width_dependent_items (double pixel_width) { RegionView::reset_width_dependent_items(pixel_width); - _line.reset(); + if (_line) + _line->reset(); } @@ -136,20 +144,23 @@ AutomationRegionView::region_resized (ARDOUR::Change what_changed) { RegionView::region_resized(what_changed); - _line.reset(); + if (_line) + _line->reset(); } void AutomationRegionView::entered() { - _line.track_entered(); + if (_line) + _line->track_entered(); } void AutomationRegionView::exited() { - _line.track_exited(); + if (_line) + _line->track_exited(); } diff --git a/gtk2_ardour/automation_region_view.h b/gtk2_ardour/automation_region_view.h index 79ba84b2ef..dc0cc8f9ee 100644 --- a/gtk2_ardour/automation_region_view.h +++ b/gtk2_ardour/automation_region_view.h @@ -52,7 +52,7 @@ public: inline AutomationTimeAxisView* automation_view() const { return dynamic_cast<AutomationTimeAxisView*>(&trackview); } - AutomationLine& line() { return _line; } + boost::shared_ptr<AutomationLine> line() { return _line; } // We are a ghost. Meta ghosts? Crazy talk. virtual GhostRegion* add_ghost(AutomationTimeAxisView&) { return NULL; } @@ -69,7 +69,7 @@ protected: void exited(); private: - AutomationLine _line; + boost::shared_ptr<AutomationLine> _line; }; #endif /* __gtk_ardour_automation_region_view_h__ */ diff --git a/gtk2_ardour/automation_streamview.cc b/gtk2_ardour/automation_streamview.cc index 4aebcbf34c..2ede053c7b 100644 --- a/gtk2_ardour/automation_streamview.cc +++ b/gtk2_ardour/automation_streamview.cc @@ -86,13 +86,9 @@ AutomationStreamView::add_region_view_internal (boost::shared_ptr<Region> region const boost::shared_ptr<AutomationControl> control = region->control(_controller->controllable()->parameter()); - if ( ! control) { - cerr << "No " << _controller->controllable()->parameter().to_string() - << " for " << region->name() << endl; - return NULL; - } - - const boost::shared_ptr<AutomationList> list = control->list(); + boost::shared_ptr<AutomationList> list; + if (control) + list = control->list(); AutomationRegionView *region_view; std::list<RegionView *>::iterator i; |