From 806a22fefe8bc79c0307a6c3f6bfbde1185e7574 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Thu, 24 Jun 2010 19:46:28 +0000 Subject: [PATCH] change note colors on the fly, to permit user-definition of colors more easily; remove some debug output git-svn-id: svn://localhost/ardour2/branches/3.0@7301 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/canvas-note-event.cc | 4 ++-- gtk2_ardour/canvas-note-event.h | 2 +- gtk2_ardour/midi_region_view.cc | 26 +++++++++++++++++--------- gtk2_ardour/midi_region_view.h | 3 ++- gtk2_ardour/midi_streamview.cc | 8 +++++++- gtk2_ardour/midi_streamview.h | 1 + gtk2_ardour/time_axis_view_item.h | 2 +- libs/ardour/midi_model.cc | 2 -- libs/ardour/session_state.cc | 2 -- libs/pbd/undo.cc | 3 --- 10 files changed, 31 insertions(+), 22 deletions(-) diff --git a/gtk2_ardour/canvas-note-event.cc b/gtk2_ardour/canvas-note-event.cc index cd3fcffa8b..c85cdc39d2 100644 --- a/gtk2_ardour/canvas-note-event.cc +++ b/gtk2_ardour/canvas-note-event.cc @@ -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; diff --git a/gtk2_ardour/canvas-note-event.h b/gtk2_ardour/canvas-note-event.h index 72772a2fc0..05046a388f 100644 --- a/gtk2_ardour/canvas-note-event.h +++ b/gtk2_ardour/canvas-note-event.h @@ -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; diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc index 92fe545c91..35c3766410 100644 --- a/gtk2_ardour/midi_region_view.cc +++ b/gtk2_ardour/midi_region_view.cc @@ -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 */ +} diff --git a/gtk2_ardour/midi_region_view.h b/gtk2_ardour/midi_region_view.h index 23904c9ddc..115c2c8371 100644 --- a/gtk2_ardour/midi_region_view.h +++ b/gtk2_ardour/midi_region_view.h @@ -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. diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc index 97573d4008..44551d73f1 100644 --- a/gtk2_ardour/midi_streamview.cc +++ b/gtk2_ardour/midi_streamview.cc @@ -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 { diff --git a/gtk2_ardour/midi_streamview.h b/gtk2_ardour/midi_streamview.h index 1ab832986a..b9ce5a0ae8 100644 --- a/gtk2_ardour/midi_streamview.h +++ b/gtk2_ardour/midi_streamview.h @@ -121,6 +121,7 @@ class MidiStreamView : public StreamView void display_track (boost::shared_ptr 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); diff --git a/gtk2_ardour/time_axis_view_item.h b/gtk2_ardour/time_axis_view_item.h index 7a34d7e590..090df5ccca 100644 --- a/gtk2_ardour/time_axis_view_item.h +++ b/gtk2_ardour/time_axis_view_item.h @@ -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(); diff --git a/libs/ardour/midi_model.cc b/libs/ardour/midi_model.cc index a95c095803..57cbb70cfd 100644 --- a/libs/ardour/midi_model.cc +++ b/libs/ardour/midi_model.cc @@ -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::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)); } diff --git a/libs/ardour/session_state.cc b/libs/ardour/session_state.cc index c94fa7b976..2842357db8 100644 --- a/libs/ardour/session_state.cc +++ b/libs/ardour/session_state.cc @@ -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(); } diff --git a/libs/pbd/undo.cc b/libs/pbd/undo.cc index 71a5d1e263..120f62c351 100644 --- a/libs/pbd/undo.cc +++ b/libs/pbd/undo.cc @@ -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; } -- 2.30.2