first part of MIDI cut/copy/paste ; fix for input/output_streams of an IOProcessor...
[ardour.git] / gtk2_ardour / editor.h
index e1c06a6ebdc27cfa63d33024f902612cf6a023e9..758772598c2b2b2463e432c143cecadb0e028ad6 100644 (file)
@@ -38,8 +38,8 @@
 
 #include <cmath>
 
-#include <gtkmm/layout.h>
 #include <gtkmm/comboboxtext.h>
+#include <gtkmm/layout.h>
 
 #include <gtkmm2ext/selector.h>
 #include <gtkmm2ext/click_box.h>
@@ -48,7 +48,6 @@
 #include "pbd/stateful.h"
 #include "ardour/session.h"
 #include "ardour/tempo.h"
-#include "ardour/stretch.h"
 #include "ardour/location.h"
 #include "ardour/audioregion.h"
 #include "ardour/track.h"
@@ -184,10 +183,10 @@ class Editor : public PublicEditor
        void set_mouse_mode (Editing::MouseMode, bool force=true);
        void step_mouse_mode (bool next);
        Editing::MouseMode current_mouse_mode () const { return mouse_mode; }
-       
-       void set_midi_edit_cursor (Editing::MidiEditMode);
-       void set_midi_edit_mode (Editing::MidiEditMode, bool force=true);
-       Editing::MidiEditMode current_midi_edit_mode () const { return midi_edit_mode; }
+       Editing::MidiEditMode current_midi_edit_mode () const;
+
+       bool internal_editing() const { return _internal_editing ; }
+       void set_internal_edit (bool yn);
 
 #ifdef WITH_CMT
        void add_imageframe_time_axis(const std::string & track_name, void*) ;
@@ -467,8 +466,8 @@ class Editor : public PublicEditor
        void post_zoom ();
 
        Editing::MouseMode mouse_mode;
-       Editing::MidiEditMode midi_edit_mode;
-
+       bool _internal_editing;
+       
        int  post_maximal_editor_width;
        int  post_maximal_pane_position;
        int  pre_maximal_pane_position;
@@ -970,8 +969,11 @@ class Editor : public PublicEditor
        /* track views */
        TrackViewList track_views;
        std::pair<TimeAxisView*, ARDOUR::layer_t> trackview_by_y_position (double);
+       TimeAxisView* axis_view_from_route (ARDOUR::Route *) const;
        TrackSelection axis_views_from_routes (std::list<ARDOUR::Route *>) const;
 
+       TrackSelection get_tracks_for_range_action () const;
+
        static Gdk::Cursor* cross_hair_cursor;
        static Gdk::Cursor* trimmer_cursor;
        static Gdk::Cursor* selector_cursor;
@@ -1005,6 +1007,8 @@ class Editor : public PublicEditor
 
        bool typed_event (ArdourCanvas::Item*, GdkEvent*, ItemType);
        bool button_press_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
+       bool button_press_handler_1 (ArdourCanvas::Item *, GdkEvent *, ItemType);
+       bool button_press_handler_2 (ArdourCanvas::Item *, GdkEvent *, ItemType);
        bool button_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
        bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false);
        bool enter_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
@@ -1021,6 +1025,7 @@ class Editor : public PublicEditor
        void cut_copy_points (Editing::CutCopyOp);
        void cut_copy_regions (Editing::CutCopyOp, RegionSelection&);
        void cut_copy_ranges (Editing::CutCopyOp);
+       void cut_copy_midi (Editing::CutCopyOp);
 
        void mouse_paste ();
        void paste_internal (nframes64_t position, float times);
@@ -1510,17 +1515,19 @@ public:
        
        Gtk::HBox                mouse_mode_button_box;
        Gtkmm2ext::TearOff*      mouse_mode_tearoff;
-       Gtk::ToggleButton        mouse_select_button;
-       Gtk::ToggleButton        mouse_move_button;
-       Gtk::ToggleButton        mouse_gain_button;
-       Gtk::ToggleButton        mouse_zoom_button;
-       Gtk::ToggleButton        mouse_timefx_button;
-       Gtk::ToggleButton        mouse_audition_button;
-       Gtk::ToggleButton        mouse_note_button;
-       GroupedButtons          *mouse_mode_button_set;
+       Gtk::ToggleButton         mouse_select_button;
+       Gtk::ToggleButton         mouse_move_button;
+       Gtk::ToggleButton         mouse_gain_button;
+       Gtk::ToggleButton         mouse_zoom_button;
+       Gtk::ToggleButton         mouse_timefx_button;
+       Gtk::ToggleButton         mouse_audition_button;
+
        void                     mouse_mode_toggled (Editing::MouseMode m);
        bool                     ignore_mouse_mode_toggle;
 
+       Gtk::ToggleButton        internal_edit_button;
+       void                     toggle_internal_editing ();
+
        gint                     mouse_select_button_release (GdkEventButton*);
 
        Gtk::VBox                automation_box;
@@ -1575,25 +1582,12 @@ public:
 
        /* midi toolbar */
 
-       Gtk::HBox                midi_tool_button_box;
-       Gtk::ToggleButton        midi_tool_pencil_button;
-       Gtk::ToggleButton        midi_tool_select_button;
-       Gtk::ToggleButton        midi_tool_resize_button;
-       Gtk::ToggleButton        midi_tool_erase_button;
+       Gtk::HBox                panic_box;
        Gtk::Button              midi_panic_button;
        Gtk::ToggleButton        midi_sound_notes;
-       GroupedButtons          *midi_tool_button_set;
-       void                     midi_edit_mode_toggled (Editing::MidiEditMode m);
        void                     midi_panic_button_pressed ();
        bool                     sound_notes () const { return midi_sound_notes.get_active(); }
        
-       bool                     ignore_midi_edit_mode_toggle;
-
-       Gtkmm2ext::TearOff* midi_tools_tearoff;
-       Gtk::HBox           midi_toolbar_hbox;
-       Gtk::EventBox       midi_toolbar_base;
-       Gtk::Frame          midi_toolbar_frame;
-       
        void setup_midi_toolbar ();
 
        /* selection process */