make link (rubberband) work
[ardour.git] / gtk2_ardour / public_editor.h
index 3f2c90e05a538da877322bc03941e9277074bb8e..937399e94f4121862d93d18c9819018a80542a53 100644 (file)
@@ -38,7 +38,7 @@
 
 namespace ARDOUR {
        class Session;
-       class AudioExportSpecification;
+       class ExportSpecification;
        class Region;
        class Playlist;
        class RouteGroup;
@@ -90,6 +90,9 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        /** @return Singleton PublicEditor instance */
        static PublicEditor& instance () { return *_instance; }
 
+       virtual bool have_idled() const = 0;
+       virtual void first_idle() = 0;
+
        /** Attach this editor to a Session.
         * @param s Session to connect to.
         */
@@ -114,14 +117,15 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        virtual void set_snap_threshold (double t) = 0;
        
        /** Snap a value according to the current snap setting. */
-       virtual void snap_to (nframes_t& first, int32_t direction = 0, bool for_mark = false) = 0;
+       virtual void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false) = 0;
        
        /** Get the current snap value in beats */
-       virtual double snap_length_beats (nframes_t start) = 0;
+       virtual double snap_length_beats (nframes64_t start) = 0;
 
        /** Undo some transactions.
         * @param n Number of transactions to undo.
         */
+
        virtual void undo (uint32_t n = 1) = 0;
 
        /** Redo some transactions.
@@ -185,8 +189,12 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
 
        virtual void toggle_playback (bool with_abort) = 0;
        virtual void transition_to_rolling (bool fwd) = 0;
-       virtual nframes_t unit_to_frame (double unit) const = 0;
-       virtual double frame_to_unit (nframes_t frame) const = 0;
+       virtual nframes64_t unit_to_frame (double unit) const = 0;
+       // XXX remove me when libardour goes nframes64_t
+       double frame_to_unit (nframes_t frame) const { 
+               return frame_to_unit ((nframes64_t) frame);
+       }
+       virtual double frame_to_unit (nframes64_t frame) const = 0;
        virtual double frame_to_unit (double frame) const = 0;
        virtual nframes64_t pixel_to_frame (double pixel) const = 0;
        virtual gulong frame_to_pixel (nframes64_t frame) const = 0;
@@ -222,7 +230,7 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        virtual void select_all_tracks () = 0;
        virtual void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove = false) = 0;
        virtual void set_selected_mixer_strip (TimeAxisView&) = 0;
-       virtual void hide_track_in_display (TimeAxisView& tv) = 0;
+       virtual void hide_track_in_display (TimeAxisView& tv, bool temporary = false) = 0;
        virtual void show_track_in_display (TimeAxisView& tv) = 0;
 
        /** Set whether the editor should follow the playhead.
@@ -241,20 +249,24 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        virtual void ensure_float (Gtk::Window&) = 0;
        virtual void show_window () = 0;
        virtual TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0) = 0;
-       virtual nframes_t leftmost_position () const = 0;
-       virtual nframes_t current_page_frames () const = 0;
+       virtual nframes64_t leftmost_position() const = 0;
+       virtual nframes64_t current_page_frames() const = 0;
        virtual void temporal_zoom_step (bool coarser) = 0;
        virtual void scroll_tracks_down_line () = 0;
        virtual void scroll_tracks_up_line () = 0;
        virtual bool new_regionviews_display_gain () = 0;
        virtual void prepare_for_cleanup () = 0;
-       virtual void reset_x_origin (nframes_t frame) = 0;
+       virtual void finish_cleanup () = 0;
+       virtual void reset_x_origin (nframes64_t frame) = 0;
        virtual void remove_last_capture () = 0;
        virtual void maximise_editing_space () = 0;
        virtual void restore_editing_space () = 0;
        virtual nframes64_t get_preferred_edit_position (bool ignore_playhead = false) = 0;
        virtual void toggle_meter_updating() = 0;
-       virtual void split_region_at_points (boost::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&) = 0;
+       virtual void split_region_at_points (boost::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret) = 0;
+       virtual void mouse_add_new_marker (nframes64_t where, bool is_cd=false, bool is_xrun=false) = 0;
+       virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0;
+       virtual void add_to_idle_resize (TimeAxisView*,uint32_t) = 0;
 
 #ifdef WITH_CMT
        virtual void add_imageframe_time_axis(const std::string & track_name, void*)  = 0;
@@ -264,13 +276,15 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        virtual TimeAxisView* get_named_time_axis(const std::string & name)  = 0;
 #endif
 
+       virtual RouteTimeAxisView* get_route_view_by_id (PBD::ID& id) = 0;
+
        virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&) const = 0;
 
        sigc::signal<void> ZoomFocusChanged;
        sigc::signal<void> ZoomChanged;
        sigc::signal<void> Resized;
        sigc::signal<void> Realized;
-       sigc::signal<void,nframes_t> UpdateAllTransportClocks;
+       sigc::signal<void,nframes64_t> UpdateAllTransportClocks;
 
        Glib::RefPtr<Gtk::ActionGroup> editor_actions;
 
@@ -313,7 +327,21 @@ class PublicEditor : public Gtk::Window, public PBD::StatefulThingWithGoingAway
        virtual bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
 #endif
 
+       virtual void queue_draw_resize_line (int at) = 0;
+       virtual void start_resize_line_ops () = 0;
+       virtual void end_resize_line_ops () = 0;
+
+       static const int window_border_width;
+       static const int container_border_width;
+       static const int vertical_spacing;
+       static const int horizontal_spacing;
+
+
+       virtual gdouble get_trackview_group_vertical_offset () const = 0;
+       virtual ArdourCanvas::Group* get_trackview_group () const = 0;
+
        /// Singleton instance, set up by Editor::Editor()
+
        static PublicEditor* _instance;
 
        friend class PluginUIWindow;