mostly editor.cc & editor_mouse.cc for Gdk::Cursor, Gnome::Canvas::Item
[ardour.git] / gtk2_ardour / editor.h
index a122a4cd99efbe2a4e5f5f9e525853da55b35c25..de945c4ad11444b339642e46f1f823e45c8b128d 100644 (file)
@@ -60,6 +60,7 @@
 #include "editing.h"
 #include "enums.h"
 #include "region_selection.h"
+#include "simplerect.h"
 
 namespace Gtkmm2ext {
        class TearOff;
@@ -263,8 +264,8 @@ class Editor : public PublicEditor
        Width editor_mixer_strip_width;
        void show_editor_mixer (bool yn);
        void set_selected_mixer_strip (TimeAxisView&);
-       void unselect_strip_in_display (TimeAxisView& tv);
-       void select_strip_in_display (TimeAxisView& tv);
+       void unselect_strip_in_display (TimeAxisView* tv);
+       void select_strip_in_display (TimeAxisView* tv);
 
        /* nudge is initiated by transport controls owned by ARDOUR_UI */
 
@@ -476,7 +477,7 @@ class Editor : public PublicEditor
        Gtk::VBox           global_vpacker;
        Gtk::VBox           vpacker;
 
-       GdkCursor          *current_canvas_cursor;
+       Gdk::Cursor*          current_canvas_cursor;
 
        Gnome::Canvas::CanvasAA track_canvas;
        Gnome::Canvas::CanvasAA time_canvas;
@@ -573,11 +574,11 @@ class Editor : public PublicEditor
        guint32 visible_timebars;
        Gtk::Menu          *editor_ruler_menu;
        
-       Gnome::Canvas::Rect* tempo_bar;
-       Gnome::Canvas::Rect* meter_bar;
-       Gnome::Canvas::Rect* marker_bar;
-       Gnome::Canvas::Rect* range_marker_bar;
-       Gnome::Canvas::Rect* transport_marker_bar;
+       Gnome::Canvas::SimpleRect* tempo_bar;
+       Gnome::Canvas::SimpleRect* meter_bar;
+       Gnome::Canvas::SimpleRect* marker_bar;
+       Gnome::Canvas::SimpleRect* range_marker_bar;
+       Gnome::Canvas::SimpleRect* transport_marker_bar;
 
        
        Gnome::Canvas::Line* tempo_line;
@@ -764,6 +765,18 @@ class Editor : public PublicEditor
 
        /* named selections */
 
+       struct NamedSelectionDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
+           NamedSelectionDisplayModelColumns() { 
+                   add (text);
+                   add (selection);
+           }
+           Gtk::TreeModelColumn<Glib::ustring>  text;
+           Gtk::TreeModelColumn<ARDOUR::NamedSelection*>    selection;
+       };
+
+       NamedSelectionDisplayModelColumns named_selection_columns;
+       Glib::RefPtr<Gtk::TreeStore>     named_selection_model;
+
        Gtk::VPaned         region_selection_vpane;
        Gtk::TreeView          named_selection_display;
        Gtk::ScrolledWindow named_selection_scroller;
@@ -778,25 +791,24 @@ class Editor : public PublicEditor
        void redisplay_named_selections ();
 
        gint named_selection_display_button_press (GdkEventButton *ev);
-       void named_selection_display_selected (gint row, gint col, GdkEvent *ev);
-       void named_selection_display_unselected (gint row, gint col, GdkEvent *ev);
+       void named_selection_display_selection_changed ();
 
        /* track views */
        int track_spacing;
        TrackViewList  track_views;
        TimeAxisView     *trackview_by_y_position (double ypos);
 
-       static GdkCursor* cross_hair_cursor;
-       static GdkCursor* trimmer_cursor;
-       static GdkCursor* selector_cursor;
-       static GdkCursor* grabber_cursor;
-       static GdkCursor* zoom_cursor;
-       static GdkCursor* time_fx_cursor;
-       static GdkCursor* fader_cursor;
-       static GdkCursor* speaker_cursor;
-       static GdkCursor* null_cursor;
-       static GdkCursor* wait_cursor;
-       static GdkCursor* timebar_cursor;
+       static Gdk::Cursor* cross_hair_cursor;
+       static Gdk::Cursor* trimmer_cursor;
+       static Gdk::Cursor* selector_cursor;
+       static Gdk::Cursor* grabber_cursor;
+       static Gdk::Cursor* zoom_cursor;
+       static Gdk::Cursor* time_fx_cursor;
+       static Gdk::Cursor* fader_cursor;
+       static Gdk::Cursor* speaker_cursor;
+       static Gdk::Cursor* null_cursor;
+       static Gdk::Cursor* wait_cursor;
+       static Gdk::Cursor* timebar_cursor;
 
        static void build_cursors ();
 
@@ -1038,12 +1050,11 @@ class Editor : public PublicEditor
 
        void    hide_all_tracks (bool with_select);
 
-       void route_list_selected (gint row, gint col, GdkEvent* ev);
-       void route_list_unselected (gint row, gint col, GdkEvent* ev);
+       void route_display_selection_changed ();
        void redisplay_route_list();
        gint route_list_reordered ();
        bool ignore_route_list_reorder;
-       void queue_route_list_reordered (gint row, gint col);
+       void queue_route_list_reordered ();
 
        struct DragInfo {
            GnomeCanvasItem* item;
@@ -1078,7 +1089,7 @@ class Editor : public PublicEditor
 
        LineDragInfo current_line_drag_info;
 
-       void start_grab (GdkEvent*, GdkCursor* cursor = 0);
+       void start_grab (GdkEvent*, Gdk::Cursor* cursor = 0);
        bool end_grab (GnomeCanvasItem*, GdkEvent*);
 
        Gtk::Menu fade_context_menu;
@@ -1255,7 +1266,7 @@ class Editor : public PublicEditor
        TimeLineList free_measure_lines;
        TimeLineList used_measure_lines;
 
-       GnomeCanvasItem* time_line_group;
+       Gnome::Canvas::Group* time_line_group;
        GnomeCanvasItem* get_time_line ();
        void hide_measures ();
        void draw_measures ();
@@ -1443,21 +1454,21 @@ class Editor : public PublicEditor
        void end_range_markerbar_op (GnomeCanvasItem* item, GdkEvent* event);
 
        
-       GnomeCanvasItem      *range_bar_drag_rect;
-       GnomeCanvasItem      *transport_bar_drag_rect;
-       GnomeCanvasItem      *marker_drag_line;
-       GnomeCanvasPoints    *marker_drag_line_points;
-       GnomeCanvasItem      *range_marker_drag_rect;
+       Gnome::Canvas::Item      *range_bar_drag_rect;
+       Gnome::Canvas::Item      *transport_bar_drag_rect;
+       Gnome::Canvas::Item      *marker_drag_line;
+       Gnome::Canvas::Points    *marker_drag_line_points;
+       Gnome::Canvas::Item      *range_marker_drag_rect;
 
        void update_marker_drag_item (ARDOUR::Location *);
        
        GnomeCanvasItem      *transport_bar_range_rect;
        GnomeCanvasItem      *transport_bar_preroll_rect;
        GnomeCanvasItem      *transport_bar_postroll_rect;
-       GnomeCanvasItem      *transport_loop_range_rect;
-       GnomeCanvasItem      *transport_punch_range_rect;
-       GnomeCanvasItem      *transport_punchin_line;
-       GnomeCanvasItem      *transport_punchout_line;
+       Gnome::Canvas::Item      *transport_loop_range_rect;
+       Gnome::Canvas::Item      *transport_punch_range_rect;
+       Gnome::Canvas::Item      *transport_punchin_line;
+       Gnome::Canvas::Item      *transport_punchout_line;
        GnomeCanvasItem      *transport_preroll_rect;
        GnomeCanvasItem      *transport_postroll_rect;
 
@@ -1474,7 +1485,7 @@ class Editor : public PublicEditor
 
        bool select_all_within (jack_nframes_t start, jack_nframes_t end, gdouble topy, gdouble boty, bool add);
        
-       GnomeCanvasItem   *rubberband_rect;
+       Gnome::Canvas::Item   *rubberband_rect;
        
        /* mouse zoom process */
 
@@ -1482,16 +1493,30 @@ class Editor : public PublicEditor
        void drag_mouse_zoom (GnomeCanvasItem* item, GdkEvent* event);
        void end_mouse_zoom (GnomeCanvasItem* item, GdkEvent* event);
 
-       GnomeCanvasItem   *zoom_rect;
+       Gnome::Canvas::Item   *zoom_rect;
        void reposition_zoom_rect (jack_nframes_t start, jack_nframes_t end);
        
        /* diskstream/route display management */
 
-       Gtk::TreeView          route_list;
+       struct RouteDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
+           RouteDisplayModelColumns() { 
+                   add (text);
+                   add (tv);
+           }
+           Gtk::TreeModelColumn<Glib::ustring>  text;
+           Gtk::TreeModelColumn<TimeAxisView*>    tv;
+       };
+
+       RouteDisplayModelColumns    route_display_columns;
+       Glib::RefPtr<Gtk::ListStore> route_display_model;
+       Glib::RefPtr<Gtk::TreeSelection> route_display_selection;
+
+       gint route_list_compare_func (Gtk::TreeModel::iterator, Gtk::TreeModel::iterator);
+       Gtk::TreeView          route_list; //GTK2FIX rename to route_display
        Gtk::ScrolledWindow route_list_scroller;
        Gtk::Menu          *route_list_menu;
 
-       void route_list_column_click (gint);
+       void route_list_column_click ();
        void build_route_list_menu ();
        void select_all_routes ();
        void unselect_all_routes ();
@@ -1502,6 +1527,21 @@ class Editor : public PublicEditor
 
        /* edit group management */
 
+        struct GroupListModelColumns : public Gtk::TreeModel::ColumnRecord {
+                GroupListModelColumns () {
+                      add (is_active);
+                       add (text);
+                      add (routegroup);
+                }
+               Gtk::TreeModelColumn<bool> is_active;
+               Gtk::TreeModelColumn<std::string> text;
+               Gtk::TreeModelColumn<ARDOUR::RouteGroup*>   routegroup;
+       };
+
+       GroupListModelColumns group_columns;
+       Glib::RefPtr<Gtk::ListStore> group_model;
+       Glib::RefPtr<Gtk::TreeSelection> group_selection;
+
        Gtk::Button         edit_group_list_button;
        Gtk::Label          edit_group_list_button_label;
        Gtk::TreeView       edit_group_list;
@@ -1509,7 +1549,6 @@ class Editor : public PublicEditor
        Gtk::Menu          *edit_group_list_menu;
        Gtk::VBox           edit_group_vbox;
 
-
        void edit_group_list_column_click (gint);
        void build_edit_group_list_menu ();
        void select_all_edit_groups ();
@@ -1517,8 +1556,7 @@ class Editor : public PublicEditor
        void new_edit_group ();
        void edit_group_list_button_clicked ();
        gint edit_group_list_button_press_event (GdkEventButton* ev);
-       void edit_group_selected (gint row, gint col, GdkEvent* ev);
-       void edit_group_unselected (gint row, gint col, GdkEvent* ev);
+       void edit_group_selection_changed ();
        void fake_add_edit_group (ARDOUR::RouteGroup* group);
        void add_edit_group (ARDOUR::RouteGroup* group);
        void group_flags_changed (void*, ARDOUR::RouteGroup*);