rationalize destruction pathway (some more); tidy-ify some ImageFrame code
[ardour.git] / gtk2_ardour / editor.h
index 684637740c15a7c7b46ba67adbd54b49c5c4764c..ca1082af787791e2ed601ff051c2c58500cb59fd 100644 (file)
@@ -46,6 +46,8 @@
 #include <gtkmm2ext/dndtreeview.h>
 
 #include "pbd/stateful.h"
+#include "pbd/signals.h"
+
 #include "ardour/import_status.h"
 #include "ardour/tempo.h"
 #include "ardour/location.h"
@@ -121,7 +123,6 @@ class TempoLines;
 class TimeAxisView;
 class TimeFXDialog;
 class TimeSelection;
-class TrackSelection;
 class EditorGroupTabs;
 class EditorRoutes;
 class EditorRouteGroups;
@@ -153,17 +154,18 @@ struct EditorCursor {
        void set_length (double units);
        void set_y_axis (double position);
 
-       sigc::signal<void, nframes64_t> PositionChanged;
+        PBD::Signal1<void, nframes64_t> PositionChanged;
 };
 
-class Editor : public PublicEditor
+class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr
 {
   public:
        Editor ();
        ~Editor ();
 
-       void             connect_to_session (ARDOUR::Session *);
-       ARDOUR::Session* current_session() const { return session; }
+       void             set_session (ARDOUR::Session *);
+       ARDOUR::Session* session() const { return _session; }
+
        void             first_idle ();
        virtual bool     have_idled () const { return _have_idled; }
 
@@ -330,7 +332,6 @@ class Editor : public PublicEditor
        void copy_playlists (TimeAxisView* v);
        void clear_playlists (TimeAxisView* v);
 
-       TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0);
        void get_onscreen_tracks (TrackViewList&);
 
        Width editor_mixer_strip_width;
@@ -433,6 +434,8 @@ class Editor : public PublicEditor
 
        void center_screen (nframes64_t);
 
+       TrackViewList axis_views_from_routes (boost::shared_ptr<ARDOUR::RouteList>) const;
+
   protected:
        void map_transport_state ();
        void map_position_change (nframes64_t);
@@ -443,7 +446,6 @@ class Editor : public PublicEditor
 
        void color_handler ();
 
-       ARDOUR::Session     *session; ///< The session that we are editing, or 0
        bool                 constructed;
 
        // to keep track of the playhead position for control_scroll
@@ -560,10 +562,8 @@ class Editor : public PublicEditor
        CrossfadeView*     clicked_crossfadeview;
        ControlPoint*      clicked_control_point;
 
-       void sort_track_selection (TrackSelection* sel = 0);
+       void sort_track_selection (TrackViewList* sel = 0);
 
-       void get_relevant_tracks (std::set<RouteTimeAxisView*>& relevant_tracks) const;
-       void get_equivalent_tracks (RouteTimeAxisView*, std::set<RouteTimeAxisView*> &, ARDOUR::RouteGroup::Property) const;
        void get_equivalent_regions (RegionView* rv, std::vector<RegionView*> &, ARDOUR::RouteGroup::Property) const;
        RegionSelection get_equivalent_regions (RegionSelection &, ARDOUR::RouteGroup::Property) const;
        void mapover_tracks (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, ARDOUR::RouteGroup::Property) const;
@@ -618,8 +618,7 @@ class Editor : public PublicEditor
        void add_selection_context_items (Gtk::Menu_Helpers::MenuList&);
 
        void handle_new_route (ARDOUR::RouteList&);
-       void remove_route (TimeAxisView *);
-       bool route_removal;
+       void timeaxisview_deleted (TimeAxisView *);
 
        Gtk::HBox           global_hpacker;
        Gtk::VBox           global_vpacker;
@@ -872,7 +871,6 @@ class Editor : public PublicEditor
        Gtk::HBox           bottom_hbox;
 
        Gtk::Table          edit_packer;
-       Gtk::VScrollbar     edit_vscrollbar;
 
        Gtk::Adjustment     vertical_adjustment;
        Gtk::Adjustment     horizontal_adjustment;
@@ -882,14 +880,8 @@ class Editor : public PublicEditor
        void controls_layout_size_request (Gtk::Requisition*);
        sigc::connection controls_layout_size_request_connection;
 
-       Gtk::HScrollbar     edit_hscrollbar;
-       bool                _dragging_hscrollbar;
-
-       void reset_hscrollbar_stepping ();
-
-       bool hscrollbar_button_press (GdkEventButton*);
-       bool hscrollbar_button_release (GdkEventButton*);
-       void hscrollbar_allocate (Gtk::Allocation &alloc);
+       void horizontal_scroll_left ();
+       void horizontal_scroll_right ();
 
        double _canvas_width;
        double _canvas_height;
@@ -957,10 +949,9 @@ 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;
+       TimeAxisView* axis_view_from_route (boost::shared_ptr<ARDOUR::Route>) const;
 
-       TrackSelection get_tracks_for_range_action () const;
+       TrackViewList get_tracks_for_range_action () const;
 
        static Gdk::Cursor* cross_hair_cursor;
        static Gdk::Cursor* trimmer_cursor;
@@ -1289,7 +1280,6 @@ class Editor : public PublicEditor
        void set_fade_out_active (bool);
 
        std::set<boost::shared_ptr<ARDOUR::Playlist> > motion_frozen_playlists;
-       RegionSelection pre_drag_region_selection;
 
        bool _dragging_playhead;
        bool _dragging_edit_point;
@@ -1765,9 +1755,6 @@ public:
            ~State ();
        };
 
-       void store_state (State&) const;
-       void restore_state (State *);
-
        void instant_save ();
 
        boost::shared_ptr<ARDOUR::AudioRegion> last_audition_region;
@@ -1815,9 +1802,7 @@ public:
        bool show_editor_mixer_when_tracks_arrive;
        Gtk::VBox current_mixer_strip_vbox;
        void cms_new (boost::shared_ptr<ARDOUR::Route>);
-       void cms_deleted ();
        void current_mixer_strip_hidden ();
-       void current_mixer_strip_removed ();
 
        void detach_tearoff (Gtk::Box* b, Gtk::Window* w);
        void reattach_tearoff (Gtk::Box* b, Gtk::Window* w, int32_t n);
@@ -1904,7 +1889,7 @@ public:
 
        int playlist_deletion_dialog (boost::shared_ptr<ARDOUR::Playlist>);
 
-       std::vector<sigc::connection> session_connections;
+       PBD::ScopedConnectionList session_connections;
 
        /* tracking step changes of track height */
 
@@ -1961,8 +1946,8 @@ public:
 
        bool get_edit_op_range (nframes64_t& start, nframes64_t& end) const;
 
-       void get_regions_at (RegionSelection&, nframes64_t where, const TrackSelection& ts) const;
-       void get_regions_after (RegionSelection&, nframes64_t where, const TrackSelection& ts) const;
+       void get_regions_at (RegionSelection&, nframes64_t where, const TrackViewList& ts) const;
+       void get_regions_after (RegionSelection&, nframes64_t where, const TrackViewList& ts) const;
 
        void get_regions_for_action (RegionSelection&, bool allow_entered = false, bool allow_edit_position = true);
 
@@ -1982,7 +1967,7 @@ public:
        BundleManager* _bundle_manager;
        GlobalPortMatrixWindow* _global_port_matrix[ARDOUR::DataType::num_types];
 
-       void fit_tracks (TrackSelection &);
+       void fit_tracks (TrackViewList &);
        void fit_selected_tracks ();
        void set_track_height (uint32_t h);
 
@@ -2001,6 +1986,7 @@ public:
        void located ();
        bool _pending_locate_request;
 
+       Gtk::HBox _summary_hbox;
        EditorSummary* _summary;
        void region_view_added (RegionView *);