change note colors on the fly, to permit user-definition of colors more easily; remov...
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 24 Jun 2010 19:46:28 +0000 (19:46 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 24 Jun 2010 19:46:28 +0000 (19:46 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@7301 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/canvas-note-event.cc
gtk2_ardour/canvas-note-event.h
gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_region_view.h
gtk2_ardour/midi_streamview.cc
gtk2_ardour/midi_streamview.h
gtk2_ardour/time_axis_view_item.h
libs/ardour/midi_model.cc
libs/ardour/session_state.cc
libs/pbd/undo.cc

index cd3fcffa8b25f5a61b801161e6594c7170c3f2f4..c85cdc39d237095d3ba9644e8a0940b6f4030686 100644 (file)
@@ -117,7 +117,7 @@ CanvasNoteEvent::on_channel_selection_change(uint16_t selection)
                set_outline_color(calculate_outline(ARDOUR_UI::config()->canvasvar_MidiNoteInactiveChannel.get()));
        } else {
                // set the color according to the notes selection state
-               selected(_selected);
+               set_selected(_selected);
        }
        // this forces the item to update..... maybe slow...
        _item->hide();
@@ -168,7 +168,7 @@ CanvasNoteEvent::hide_channel_selector(void)
 }
 
 void
-CanvasNoteEvent::selected(bool selected)
+CanvasNoteEvent::set_selected(bool selected)
 {
        if (!_note) {
                return;
index 72772a2fc0186c35f57d91feb3c75a3345bc725f..05046a388ff366832df1aaefc5d860c8b8fdfb06 100644 (file)
@@ -74,7 +74,7 @@ class CanvasNoteEvent : virtual public sigc::trackable
        void validate ();
 
        bool selected() const { return _selected; }
-       void selected(bool yn);
+       void set_selected(bool yn);
 
        virtual void move_event(double dx, double dy) = 0;
 
index 92fe545c919d91d38e209e76ad6dff2a00bd16ba..35c37664109e59ce7d72d637f4bf1933393b16f8 100644 (file)
@@ -538,8 +538,6 @@ MidiRegionView::scroll (GdkEventScroll* ev)
 bool
 MidiRegionView::key_press (GdkEventKey* ev)
 { 
-        cerr << "MRV key press\n";
-
         /* since GTK bindings are generally activated on press, and since
            detectable auto-repeat is the name of the game and only sends
            repeated presses, carry out key actions at key press, not release.
@@ -619,8 +617,6 @@ MidiRegionView::key_press (GdkEventKey* ev)
                 /* yes, this steals r */
                 if (midi_view()->midi_track()->step_editing()) {
                         midi_view()->step_edit_rest ();
-                        cerr << "Stole that r because " << midi_view()->midi_track()->name()
-                             << " is step editing!\n";
                         return true;
                 }
         }
@@ -1633,7 +1629,7 @@ MidiRegionView::clear_selection_except(ArdourCanvas::CanvasNoteEvent* ev)
 {
        for (Selection::iterator i = _selection.begin(); i != _selection.end(); ++i) {
                if ((*i)->selected() && (*i) != ev) {
-                       (*i)->selected(false);
+                       (*i)->set_selected(false);
                        (*i)->hide_velocity();
                }
        }
@@ -1650,7 +1646,7 @@ MidiRegionView::unique_select(ArdourCanvas::CanvasNoteEvent* ev)
                        Selection::iterator tmp = i;
                        ++tmp;
 
-                       (*i)->selected (false);
+                       (*i)->set_selected (false);
                        _selection.erase (i);
 
                        i = tmp;
@@ -1877,7 +1873,7 @@ MidiRegionView::remove_from_selection (CanvasNoteEvent* ev)
                _selection.erase (i);
        }
 
-       ev->selected (false);
+       ev->set_selected (false);
        ev->hide_velocity ();
 
        if (_selection.empty()) {
@@ -1896,7 +1892,7 @@ MidiRegionView::add_to_selection (CanvasNoteEvent* ev)
        }
 
        if (_selection.insert (ev).second) {
-               ev->selected (true);
+               ev->set_selected (true);
                play_midi_note ((ev)->note());
        }
 
@@ -2923,7 +2919,7 @@ MidiRegionView::maybe_select_by_position (GdkEventButton* ev, double x, double y
 
         for (Events::iterator i = e.begin(); i != e.end(); ++i) {
                 if (_selection.insert (*i).second) {
-                        (*i)->selected (true);
+                        (*i)->set_selected (true);
                 }
        }
 
@@ -2932,3 +2928,15 @@ MidiRegionView::maybe_select_by_position (GdkEventButton* ev, double x, double y
                editor.get_selection().add (this);
        }
 }                
+
+void
+MidiRegionView::color_handler ()
+{
+        RegionView::color_handler ();
+
+       for (Events::iterator i = _events.begin(); i != _events.end(); ++i) {
+                (*i)->set_selected ((*i)->selected()); // will change color
+        }
+
+        /* XXX probably more to do here */
+}
index 23904c9ddc248f45310ec5638da8bebaa631d6ea..115c2c83719285039e376d644c6a5829f1035bba 100644 (file)
@@ -102,6 +102,7 @@ class MidiRegionView : public RegionView
        inline ARDOUR::ColorMode color_mode() const { return midi_view()->color_mode(); }
 
        void set_frame_color();
+        void color_handler ();
 
        void redisplay_model();
 
@@ -278,7 +279,7 @@ class MidiRegionView : public RegionView
        void show_list_editor ();
 
        void selection_as_notelist (Notes& selected, bool allow_all_if_none_selected = false);
-
+        
   protected:
        /** Allows derived types to specify their visibility requirements
         * to the TimeAxisViewItem parent class.
index 97573d40082f24fb82dd5fb320134b6b257dc4b8..44551d73f133a51d9d3c4e8d85b5b7aa1dd01e4e 100644 (file)
@@ -85,7 +85,7 @@ MidiStreamView::MidiStreamView (MidiTimeAxisView& tv)
 
        _note_lines->lower_to_bottom();
 
-       ColorsChanged.connect(sigc::mem_fun(*this, &MidiStreamView::draw_note_lines));
+       ColorsChanged.connect(sigc::mem_fun(*this, &MidiStreamView::color_handler));
 
        note_range_adjustment.set_page_size(_highest_note - _lowest_note);
        note_range_adjustment.set_value(_lowest_note);
@@ -301,6 +301,10 @@ MidiStreamView::update_contents_height ()
 void
 MidiStreamView::draw_note_lines()
 {
+        if (!_note_lines) {
+                return;
+        }
+
        double y;
        double prev_y = contents_height();
        uint32_t color;
@@ -699,6 +703,8 @@ MidiStreamView::rec_data_range_ready (nframes_t start, nframes_t cnt, boost::wea
 void
 MidiStreamView::color_handler ()
 {
+        draw_note_lines ();
+
        if (_trackview.is_midi_track()) {
                canvas_rect->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_MidiTrackBase.get();
        } else {
index 1ab832986a3cd90c24216528915fd4edde88a9a2..b9ce5a0ae828c22bb9d620d6826a76e5c3bfe9aa 100644 (file)
@@ -121,6 +121,7 @@ class MidiStreamView : public StreamView
        void display_track (boost::shared_ptr<ARDOUR::Track> tr);
 
        void update_contents_height ();
+
        void draw_note_lines();
        void apply_note_range(uint8_t lowest, uint8_t highest, bool to_region_views);
        bool update_data_note_range(uint8_t min, uint8_t max);
index 7a34d7e590eb5ee176b1520e41515f6644e4d077..090df5ccca485f99f0ebe5fccba43a5eaa6616a6 100644 (file)
@@ -66,7 +66,7 @@ class TimeAxisViewItem : public Selectable, public PBD::ScopedConnectionList
        virtual void set_height(double h);
        void set_y (double);
        void set_color (Gdk::Color const &);
-       
+
        ArdourCanvas::Item* get_canvas_frame();
        ArdourCanvas::Group* get_canvas_group();
        ArdourCanvas::Item* get_name_highlight();
index a95c0958036ff095ca985db21529367f8e4b3d7e..57cbb70cfdd587831b69773d99e0e05bd9f64d6d 100644 (file)
@@ -366,7 +366,6 @@ MidiModel::DiffCommand::side_effect_remove(const NotePtr note)
                     state once this is done.
                   */
 
-                 cerr << "This undo has " << side_effect_removals.size() << " SER's to be re-added\n";
                  for (set<NotePtr>::iterator i = side_effect_removals.begin(); i != side_effect_removals.end(); ++i) {
                          _model->add_note_unlocked (*i);
                  }
@@ -709,7 +708,6 @@ MidiModel::DiffCommand::side_effect_remove(const NotePtr note)
 
          if (side_effect_notes) {
                  XMLNodeList notes = side_effect_notes->children();
-                 cerr << "Reconstruct DiffCommand with " << notes.size() << " SER's\n";
                  for (XMLNodeList::iterator n = notes.begin(); n != notes.end(); ++n) {
                          side_effect_removals.insert (unmarshal_note (*n));
                  }
index c94fa7b9767436d905f0031cb426674e364a4d75..2842357db8c7c44dd7915b623be56c9586088b6b 100644 (file)
@@ -2329,8 +2329,6 @@ Session::commit_reversible_command(Command *cmd)
        gettimeofday(&now, 0);
        _current_trans.top()->set_timestamp(now);
 
-        cerr << "add cmd @ " << _current_trans.top() << " to history\n";
-
        _history.add(_current_trans.top());
        _current_trans.pop();
 }
index 71a5d1e2637aa71da846fe30b9d21486419f2278..120f62c3512c78d263ae48a3aa6e9990b6eea30b 100644 (file)
@@ -47,7 +47,6 @@ UndoTransaction::UndoTransaction (const UndoTransaction& rhs)
 
 UndoTransaction::~UndoTransaction ()
 {
-        cerr << "UndoTransaction destroyed\n";
        drop_references ();
        clear ();
 }
@@ -55,8 +54,6 @@ UndoTransaction::~UndoTransaction ()
 void 
 command_death (UndoTransaction* ut, Command* c)
 {
-        cerr << "Command drop ref\n";
-
        if (ut->clearing()) {
                return;
        }