X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fnote_base.cc;h=56ce3bc9d13bb0d35cb1e79e46f54ab18bd5663d;hb=274522b1a4cb67de96edf9f1c2c198362862e99b;hp=b8587e16da460bc8b5a924a5453f1fddf38bdeff;hpb=6ae4f104371ed433a79c8845de97428d964edd8b;p=ardour.git diff --git a/gtk2_ardour/note_base.cc b/gtk2_ardour/note_base.cc index b8587e16da..56ce3bc9d1 100644 --- a/gtk2_ardour/note_base.cc +++ b/gtk2_ardour/note_base.cc @@ -21,13 +21,15 @@ #include "gtkmm2ext/keyboard.h" +#include "evoral/Note.hpp" + #include "canvas/text.h" #include "note_base.h" -#include "midi_region_view.h" #include "public_editor.h" #include "editing_syms.h" #include "keyboard.h" +#include "midi_region_view.h" using namespace std; using namespace Gtkmm2ext; @@ -48,7 +50,6 @@ NoteBase::NoteBase(MidiRegionView& region, bool with_events, const boost::shared : _region(region) , _item (0) , _text(0) -// , _channel_selector_widget() , _state(None) , _note(note) , _with_events (with_events) @@ -64,9 +65,6 @@ NoteBase::~NoteBase() NoteBaseDeleted (this); delete _text; - - /* XXX */ -// delete _channel_selector_widget; } void @@ -98,7 +96,7 @@ NoteBase::show_velocity() if (!_text) { _text = new Text (_item->parent ()); _text->set_ignore_events (true); - _text->set_color (ARDOUR_UI::config()->canvasvar_MidiNoteVelocityText.get()); + _text->set_color (ARDOUR_UI::config()->color_mod ("midi note velocity text", "midi note velocity text")); _text->set_alignment (Pango::ALIGN_CENTER); } @@ -123,8 +121,9 @@ NoteBase::on_channel_selection_change(uint16_t selection) { // make note change its color if its channel is not marked active if ( (selection & (1 << _note->channel())) == 0 ) { - set_fill_color(ARDOUR_UI::config()->canvasvar_MidiNoteInactiveChannel.get()); - set_outline_color(calculate_outline(ARDOUR_UI::config()->canvasvar_MidiNoteInactiveChannel.get())); + set_fill_color(ARDOUR_UI::config()->color ("midi note inactive channel")); + set_outline_color(calculate_outline(ARDOUR_UI::config()->color ("midi note inactive channel"), + _selected)); } else { // set the color according to the notes selection state set_selected(_selected); @@ -138,59 +137,9 @@ void NoteBase::on_channel_change(uint8_t channel) { _region.note_selected(this, true); - hide_channel_selector(); _region.change_channel(channel); } -void -NoteBase::show_channel_selector () -{ -#if 0 - if (_channel_selector_widget == 0) { - - if(_region.channel_selector_scoped_note() != 0){ - _region.channel_selector_scoped_note()->hide_channel_selector(); - _region.set_channel_selector_scoped_note(0); - } - - SingleMidiChannelSelector* _channel_selector = new SingleMidiChannelSelector(_note->channel()); - _channel_selector->show_all(); - _channel_selector->channel_selected.connect( - sigc::mem_fun(this, &NoteBase::on_channel_change)); - - _channel_selector->clicked.connect ( - sigc::mem_fun (this, &NoteBase::hide_channel_selector)); - - _channel_selector_widget = new Widget(*(_item->property_parent()), - x1(), - y2() + 2, - (Gtk::Widget &) *_channel_selector); - - _channel_selector_widget->hide(); - _channel_selector_widget->property_height() = 100; - _channel_selector_widget->property_width() = 100; - _channel_selector_widget->raise_to_top(); - _channel_selector_widget->show(); - - _region.set_channel_selector_scoped_note(this); - } else { - hide_channel_selector(); - } -#endif -} - -void -NoteBase::hide_channel_selector () -{ -#if 0 - if (_channel_selector_widget) { - _channel_selector_widget->hide(); - delete _channel_selector_widget; - _channel_selector_widget = 0; - } -#endif -} - void NoteBase::set_selected(bool selected) { @@ -199,20 +148,9 @@ NoteBase::set_selected(bool selected) } _selected = selected; - set_fill_color (base_color ()); + set_fill_color (base_color()); - if (_selected) { - set_outline_color(calculate_outline(ARDOUR_UI::config()->canvasvar_MidiNoteSelected.get())); - - if(_region.channel_selector_scoped_note() != 0){ - _region.channel_selector_scoped_note()->hide_channel_selector(); - _region.set_channel_selector_scoped_note(0); - } - } else { - set_outline_color(calculate_outline(base_color())); - hide_channel_selector(); - } - + set_outline_color(calculate_outline(base_color(), _selected)); } #define SCALE_USHORT_TO_UINT8_T(x) ((x) / 257) @@ -230,19 +168,15 @@ NoteBase::base_color() switch (mode) { case TrackColor: { - Gdk::Color color = _region.midi_stream_view()->get_region_color(); - return UINT_INTERPOLATE (RGBA_TO_UINT( - SCALE_USHORT_TO_UINT8_T(color.get_red()), - SCALE_USHORT_TO_UINT8_T(color.get_green()), - SCALE_USHORT_TO_UINT8_T(color.get_blue()), - opacity), - ARDOUR_UI::config()->canvasvar_MidiNoteSelected.get(), 0.5); + uint32_t color = _region.midi_stream_view()->get_region_color(); + return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (color, opacity), + ARDOUR_UI::config()->color ("midi note selected"), + 0.5); } case ChannelColors: - return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (NoteBase::midi_channel_colors[_note->channel()], - opacity), - ARDOUR_UI::config()->canvasvar_MidiNoteSelected.get(), 0.5); + return UINT_INTERPOLATE (UINT_RGBA_CHANGE_A (NoteBase::midi_channel_colors[_note->channel()], opacity), + ARDOUR_UI::config()->color ("midi note selected"), 0.5); default: return meter_style_fill_color(_note->velocity(), selected()); @@ -279,7 +213,7 @@ NoteBase::set_mouse_fractions (GdkEvent* ev) return; } - boost::optional bbox = _item->bounding_box (); + boost::optional bbox = _item->bounding_box (); assert (bbox); _item->canvas_to_item (ix, iy); @@ -320,14 +254,15 @@ NoteBase::set_mouse_fractions (GdkEvent* ev) bool NoteBase::event_handler (GdkEvent* ev) { - if (!_region.get_time_axis_view().editor().internal_editing()) { + PublicEditor& editor = _region.get_time_axis_view().editor(); + if (!editor.internal_editing()) { return false; } switch (ev->type) { case GDK_ENTER_NOTIFY: - set_mouse_fractions (ev); _region.note_entered (this); + set_mouse_fractions (ev); break; case GDK_LEAVE_NOTIFY: @@ -341,24 +276,17 @@ NoteBase::event_handler (GdkEvent* ev) case GDK_BUTTON_PRESS: set_mouse_fractions (ev); - if (ev->button.button == 3 && Keyboard::no_modifiers_active (ev->button.state) && _selected) { - show_channel_selector(); - return true; - } break; case GDK_BUTTON_RELEASE: set_mouse_fractions (ev); - if (ev->button.button == 3 && Keyboard::no_modifiers_active (ev->button.state)) { - return true; - } break; default: break; } - return _region.get_time_axis_view().editor().canvas_note_event (ev, _item); + return editor.canvas_note_event (ev, _item); } bool