Rudimentary ghost note when adding MIDI notes to a region, as per #3180.
[ardour.git] / gtk2_ardour / ardour_ui.h
index d14aa7ce0c82c2b9011f73ad1a82d5ff2d1d2702..3a7e3d77517a7190acfd2e5815550eb66b860acc 100644 (file)
@@ -115,6 +115,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void show_splash ();
        void hide_splash ();
 
+        void launch_chat ();
        void show_about ();
        void hide_about ();
 
@@ -123,14 +124,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        int load_session (const Glib::ustring& path, const Glib::ustring& snapshot, Glib::ustring mix_template = Glib::ustring());
        bool session_loaded;
-       int build_session (const Glib::ustring& path, const Glib::ustring& snapshot,
-                          uint32_t ctl_chns,
-                          uint32_t master_chns,
-                          ARDOUR::AutoConnectOption input_connect,
-                          ARDOUR::AutoConnectOption output_connect,
-                          uint32_t nphysin,
-                          uint32_t nphysout,
-                          nframes_t initial_length);
+       int build_session (const Glib::ustring& path, const Glib::ustring& snapshot, ARDOUR::BusProfile&);
        bool session_is_new() const { return _session_is_new; }
 
        ARDOUR::Session* the_session() { return _session; }
@@ -153,8 +147,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        int unload_session (bool hide_stuff = false);
        void close_session();
 
-       int  save_state_canfail (std::string state_name = "");
-       void save_state (const std::string & state_name = "");
+       int  save_state_canfail (std::string state_name = "", bool switch_to_it = false);
+       void save_state (const std::string & state_name = "", bool switch_to_it = false);
 
        static double gain_to_slider_position (ARDOUR::gain_t g);
        static ARDOUR::gain_t slider_position_to_gain (double pos);
@@ -183,6 +177,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        XMLNode* editor_settings() const;
        XMLNode* mixer_settings () const;
        XMLNode* keyboard_settings () const;
+        XMLNode* tearoff_settings (const char*) const;
 
        void save_ardour_state ();
        gboolean configure_handler (GdkEventConfigure* conf);
@@ -229,6 +224,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        void setup_profile ();
        void setup_theme ();
+       void setup_tooltips ();
 
        void set_shuttle_fract (double);
 
@@ -286,7 +282,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void map_transport_state ();
        int32_t do_engine_start ();
 
-       void engine_halted ();
+       void engine_halted (const char* reason, bool free_reason);
        void engine_stopped ();
        void engine_running ();
 
@@ -313,6 +309,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        AudioClock   big_clock;
        Gtk::Window* big_clock_window;
+        int original_big_clock_width;
+        int original_big_clock_height;
+        double original_big_clock_font_size;
+
+       void big_clock_size_allocate (Gtk::Allocation&);
+       bool idle_big_clock_text_resizer (int width, int height);
+       void big_clock_realized ();
+       bool big_clock_resize_in_progress;
+       int  big_clock_height;
 
        void float_big_clock (Gtk::Window* parent);
        bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor);
@@ -328,6 +333,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        Gtkmm2ext::TearOff*      transport_tearoff;
        Gtk::Frame               transport_frame;
        Gtk::HBox                transport_tearoff_hbox;
+       Gtk::HBox                play_range_hbox;
+       Gtk::VBox                play_range_vbox;
        Gtk::HBox                transport_hbox;
        Gtk::Fixed               transport_base;
        Gtk::Fixed               transport_button_base;
@@ -385,6 +392,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        BindableButton auto_loop_button;
        BindableButton play_selection_button;
        BindableButton rec_button;
+       Gtk::ToggleButton join_play_range_button;
 
        void toggle_external_sync ();
        void toggle_time_master ();
@@ -441,8 +449,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void auditioning_changed (bool);
        void _auditioning_changed (bool);
 
-       void solo_alert_toggle ();
-       void audition_alert_toggle ();
+       bool solo_alert_press (GdkEventButton* ev);
+       bool audition_alert_press (GdkEventButton* ev);
 
        void big_clock_value_changed ();
        void primary_clock_value_changed ();
@@ -559,7 +567,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        guint32  last_key_press_time;
 
-       void snapshot_session ();
+       void snapshot_session (bool switch_to_it);
 
        Mixer_UI   *mixer;
        int         create_mixer ();
@@ -628,19 +636,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        ARDOUR::microseconds_t last_peak_grab;
        ARDOUR::microseconds_t last_shuttle_request;
 
-       struct DiskBufferStat {
-           time_t when;
-           uint32_t capture;
-           uint32_t playback;
-
-           DiskBufferStat (time_t w, uint32_t c, uint32_t p)
-           : when (w), capture (c), playback (p) {}
-       };
-
-       std::list<DiskBufferStat> disk_buffer_stats;
-       void push_buffer_stats (uint32_t, uint32_t);
-       void write_buffer_stats ();
-
        bool have_disk_speed_dialog_displayed;
        void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
        void disk_overrun_handler ();
@@ -686,6 +681,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
                        Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
                        const char *msg);
        Gtk::Label status_bar_label;
+        bool status_bar_button_press (GdkEventButton*);
        Gtk::ToggleButton error_log_button;
 
        void loading_message (const std::string& msg);
@@ -694,6 +690,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void platform_specific ();
        void platform_setup ();
        void fontconfig_dialog ();
+
+       PBD::ScopedConnectionList forever_connections;
 };
 
 #endif /* __ardour_gui_h__ */