do not reset session for MonitorSection just because monitor out was removed
[ardour.git] / gtk2_ardour / piano_roll_header.h
index f005538d4a5e478507aaec5e54fd31e6a30ad3f0..2dac6f42174d9caa16ebdc9a1aafc9a8602259b4 100644 (file)
@@ -1,5 +1,6 @@
 /*
-    Copyright (C) 2008 Paul Davis 
+    Copyright (C) 2008 Paul Davis
+    Author: Audan Holland ??
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -29,6 +30,7 @@ namespace ARDOUR {
 
 class MidiTimeAxisView;
 class MidiStreamView;
+class PublicEditor;
 
 class PianoRollHeader : public Gtk::DrawingArea {
 public:
@@ -46,17 +48,23 @@ public:
        void on_size_allocate(Gtk::Allocation& a);
 
        void note_range_changed();
+       void set_note_highlight (uint8_t note);
 
        struct Color {
                Color();
                Color(double _r, double _g, double _b);
                inline void set(const Color& c);
-               
+
                double r;
                double g;
                double b;
        };
 
+       sigc::signal<void,uint8_t> SetNoteSelection;
+       sigc::signal<void,uint8_t> AddNoteSelection;
+       sigc::signal<void,uint8_t> ToggleNoteSelection;
+       sigc::signal<void,uint8_t> ExtendNoteSelection;
+
 private:
        static Color white;
        static Color white_highlight;
@@ -87,6 +95,8 @@ private:
        void send_note_on(uint8_t note);
        void send_note_off(uint8_t note);
 
+       void reset_clicked_note(uint8_t, bool invalidate = true);
+
        MidiStreamView& _view;
 
        uint8_t _event[3];
@@ -97,9 +107,11 @@ private:
        uint8_t _clicked_note;
        double _grab_y;
        bool _dragging;
-       
+
        double _note_height;
        double _black_note_width;
+
+       PublicEditor& editor() const;
 };
 
 #endif /* __ardour_piano_roll_header_h__ */