experiment with making MIDI region boxes vanish when in note/internal edit mode ...
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Mar 2011 14:51:02 +0000 (14:51 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 3 Mar 2011 14:51:02 +0000 (14:51 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@9054 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor_mouse.cc
gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_streamview.cc
gtk2_ardour/midi_streamview.h
gtk2_ardour/midi_time_axis.cc
gtk2_ardour/midi_time_axis.h
gtk2_ardour/region_view.cc
gtk2_ardour/streamview.h
gtk2_ardour/time_axis_view.h
gtk2_ardour/time_axis_view_item.cc
gtk2_ardour/time_axis_view_item.h

index d92fc162e989d8c7a973402858b0271212cc0549..9e6d3922fe47fe6ef3a7c855639a35b3da33db27 100644 (file)
@@ -2635,12 +2635,20 @@ Editor::set_internal_edit (bool yn)
                ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Draw/Edit MIDI Notes"));
                mouse_mode_toggled (mouse_mode);
 
+                for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
+                        (*i)->enter_internal_edit_mode ();
+                }
+
        } else {
 
                mouse_select_button.set_image (*(manage (new Image (::get_icon("tool_range")))));
                mouse_select_button.get_image ()->show ();
                ARDOUR_UI::instance()->set_tip (mouse_select_button, _("Select/Move Ranges"));
                mouse_mode_toggled (mouse_mode); // sets cursor
+
+                for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
+                        (*i)->leave_internal_edit_mode ();
+                }
        }
 }
 
index 24ad86f7d6f18c7a4571bf3af3828252ca6bd87a..4ef7c014bb82c53e8b6fe2984c8cd61765053f48 100644 (file)
@@ -2856,17 +2856,33 @@ MidiRegionView::note_mouse_position (float x_fraction, float /*y_fraction*/, boo
 void
 MidiRegionView::set_frame_color()
 {
+        uint32_t f;
+
        if (!frame) {
                return;
        }
 
        if (_selected) {
-               frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get();
+               f = ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get();
        } else if (high_enough_for_name) {
-               frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiFrameBase.get();
+               f= ARDOUR_UI::config()->canvasvar_MidiFrameBase.get();
        } else {
-               frame->property_fill_color_rgba() = fill_color;
+               f = fill_color;
        }
+        
+        if (!rect_visible) {
+                f = UINT_RGBA_CHANGE_A (f, 0);
+        }
+
+        frame->property_fill_color_rgba() = f;
+
+        f = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();
+
+        if (!rect_visible) {
+                f = UINT_RGBA_CHANGE_A (f, 0);
+        }
+
+        frame->property_outline_color_rgba() = f;
 }
 
 void
index 723b52220210e0b3e28e972af24e6a5632135a94..807d6253d4f4ffbc646c8192f68dfc312ad3665e 100644 (file)
@@ -206,6 +206,22 @@ MidiStreamView::display_region(MidiRegionView* region_view, bool load_model)
        region_view->display_model(source->model());
 }
 
+void
+MidiStreamView::enter_internal_edit_mode ()
+{
+        for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+                (*i)->hide_rect ();
+        }
+}
+
+void
+MidiStreamView::leave_internal_edit_mode ()
+{
+        for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+                (*i)->show_rect ();
+        }
+}
+
 void
 MidiStreamView::display_track (boost::shared_ptr<Track> tr)
 {
index 0774fd61bd08385f754525eb44a9b1d4a1d83109..8acb62b51ec1e1fa4e7289755a365a51d33de32d 100644 (file)
@@ -56,6 +56,9 @@ class MidiStreamView : public StreamView
        MidiStreamView (MidiTimeAxisView&);
        ~MidiStreamView ();
 
+        void enter_internal_edit_mode ();
+        void leave_internal_edit_mode ();
+
        void set_selected_regionviews (RegionSelection&);
        void get_inverted_selectables (Selection&, std::list<Selectable* >& results);
 
index d08e40b8ef7779760ff9a2fa8b55105b4369dc25..b1068e7e3f5ea2353c40b1c27d462c9907da0502 100644 (file)
@@ -244,6 +244,22 @@ MidiTimeAxisView::~MidiTimeAxisView ()
         delete _step_editor;
 }
 
+void
+MidiTimeAxisView::enter_internal_edit_mode ()
+{
+        if (midi_view()) {
+                midi_view()->enter_internal_edit_mode ();
+        }
+}
+
+void
+MidiTimeAxisView::leave_internal_edit_mode ()
+{
+        if (midi_view()) {
+                midi_view()->leave_internal_edit_mode ();
+        }
+}
+
 void
 MidiTimeAxisView::check_step_edit ()
 {
index a72ccc5914b6ad564849de69c444c728e31b6ece..1adba26d24d4ccc49240ff8cac03c2aaa883a462 100644 (file)
@@ -69,6 +69,9 @@ class MidiTimeAxisView : public RouteTimeAxisView
        void set_height (uint32_t);
        void hide ();
 
+        void enter_internal_edit_mode ();
+        void leave_internal_edit_mode ();
+        
        boost::shared_ptr<ARDOUR::MidiRegion> add_region (ARDOUR::framepos_t, ARDOUR::framecnt_t, bool);
 
        void show_all_automation ();
index e4d6650b8b26c6ef223371f9c2f52c7ef7168311..1debfd6a07679fbbde5df444f6c9e26aefec41e1 100644 (file)
@@ -941,3 +941,4 @@ RegionView::trim_contents (framepos_t frame_delta, bool left_direction, bool swa
        _region->trim_start ((framepos_t) (new_bound * speed), this);
        region_changed (PropertyChange (ARDOUR::Properties::start));
 }
+
index 2b542b4a200625364469047903540206b291af67..3268519534194eb9530455bdc4f129b72880f562 100644 (file)
@@ -74,6 +74,9 @@ public:
        gdouble     get_samples_per_unit () { return _samples_per_unit; }
        virtual void horizontal_position_changed () {}
 
+        virtual void enter_internal_edit_mode () {}
+        virtual void leave_internal_edit_mode () {}
+
        void set_layer_display (LayerDisplay);
        LayerDisplay layer_display () const { return _layer_display; }
 
index 9630b3f19c0b0ccdd66943720933a36b2598b3fb..6fd6865485481750d1022ccaf6fdba34d7cb496a 100644 (file)
@@ -98,6 +98,9 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
        /** @return maximum allowable value of order */
        static int max_order () { return _max_order; }
 
+        virtual void enter_internal_edit_mode () {}
+        virtual void leave_internal_edit_mode () {}
+
        ArdourCanvas::Group* canvas_display () { return _canvas_display; }
        ArdourCanvas::Group* canvas_background () { return _canvas_background; }
        ArdourCanvas::Group* ghost_group () { return _ghost_group; }
index fc0b4b24a1c406a7eb18788b516d89d705f565e1..43634f43f537f015a5fdc8944e8943641091414f 100644 (file)
@@ -156,6 +156,7 @@ TimeAxisViewItem::init (
        last_item_width = 0;
        wide_enough_for_name = wide;
        high_enough_for_name = high;
+        rect_visible = true;
 
        if (duration == 0) {
                warning << "Time Axis Item Duration == 0" << endl;
@@ -234,6 +235,28 @@ TimeAxisViewItem::~TimeAxisViewItem()
        delete group;
 }
 
+void
+TimeAxisViewItem::hide_rect ()
+{
+        rect_visible = false;
+        set_frame_color ();
+
+        if (name_highlight) {
+                name_highlight->property_outline_what() = 0x0;
+        }
+}
+
+void
+TimeAxisViewItem::show_rect ()
+{
+        rect_visible = true;
+        set_frame_color ();
+
+        if (name_highlight) {
+                name_highlight->property_outline_what() = 0x4;
+        }
+}
+
 
 /**
  * Set the position of this item on the timeline.
@@ -682,21 +705,30 @@ TimeAxisViewItem::set_colors()
 void
 TimeAxisViewItem::set_frame_color()
 {
+        uint32_t f = 0;
+
        if (!frame) {
                return;
        }
        
        if (_selected) {
+
+                f = ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get();
+
                if (fill_opacity) {
-                       frame->property_fill_color_rgba() = UINT_RGBA_CHANGE_A (ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get(), fill_opacity);
-               } else {
-                       frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_SelectedFrameBase.get();
-               }
+                        f = UINT_RGBA_CHANGE_A (f, fill_opacity);
+               } 
+
+                if (!rect_visible) {
+                        f = UINT_RGBA_CHANGE_A (f, 0);
+                }
+
        } else {
+
                if (_recregion) {
-                       frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_RecordingRect.get();
+                       f = ARDOUR_UI::config()->canvasvar_RecordingRect.get();
                } else {
-                       uint32_t f = 0;
+                        
                        if (high_enough_for_name && !Config->get_color_regions_using_track_color()) {
                                f = ARDOUR_UI::config()->canvasvar_FrameBase.get();
                        } else {
@@ -707,9 +739,13 @@ TimeAxisViewItem::set_frame_color()
                                f = UINT_RGBA_CHANGE_A (f, fill_opacity);
                        }
 
-                       frame->property_fill_color_rgba() = f;
-               }
+                        if (!rect_visible) {
+                                f = UINT_RGBA_CHANGE_A (f, 0);
+                        }
+                }
        }
+
+        frame->property_fill_color_rgba() = f;
 }
 
 /**
index dc5c8b7f8d58741a25fe3d1edeb7790ef1aefdf2..dedc4a048563f5ea89f3b05c788bd31f19bfc07b 100644 (file)
@@ -82,7 +82,10 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
        virtual void raise_to_top () { return; }
        virtual void lower () { return; }
        virtual void lower_to_bottom () { return; }
-       
+
+        virtual void hide_rect ();
+        virtual void show_rect ();
+        
        /** @return true if the name area should respond to events */
        bool name_active() const { return name_connected; }
 
@@ -220,7 +223,8 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
        int name_pixbuf_width;
        bool wide_enough_for_name;
        bool high_enough_for_name;
-       
+        bool rect_visible;
+
        ArdourCanvas::Group*      group;
        ArdourCanvas::SimpleRect* vestigial_frame;
        ArdourCanvas::SimpleRect* frame;