Move ARDOUR_UI::ui_scale into UIConfiguration class
[ardour.git] / gtk2_ardour / ardour_ui.h
index e6de9399c87b6d5c909189eeca2bcfe4200d4928..f2ad1bb0d60fc5686a5120deb71d23d92d26a346 100644 (file)
@@ -73,6 +73,7 @@
 #include "ardour_window.h"
 #include "editing.h"
 #include "engine_dialog.h"
+#include "export_video_dialog.h"
 #include "meterbridge.h"
 #include "ui_config.h"
 #include "enums.h"
@@ -101,6 +102,7 @@ class Mixer_UI;
 class PublicEditor;
 class RCOptionEditor;
 class RouteParams_UI;
+class SaveAsDialog;
 class SessionDialog;
 class SessionOptionEditor;
 class ShuttleControl;
@@ -125,6 +127,10 @@ namespace Gtkmm2ext {
        class TearOff;
 }
 
+namespace Gtk {
+       class ProgressBar;
+}
+
 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 {
     private:
@@ -134,7 +140,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        UIConfiguration*     ui_config;
 
     public:
-        ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
+       ARDOUR_UI (int *argcp, char **argvp[], const char* localedir, UIConfiguration*);
        ~ARDOUR_UI();
 
        bool run_startup (bool should_be_new, std::string load_template);
@@ -146,6 +152,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void launch_manual ();
        void launch_reference ();
        void launch_tracker ();
+       void launch_subscribe ();
        void launch_cheat_sheet ();
        void launch_website ();
        void launch_website_dev ();
@@ -154,7 +161,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void show_about ();
        void hide_about ();
 
-       void idle_load (const std::string& path);
+       void load_from_application_api (const std::string& path);
        void finish();
 
        int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
@@ -180,7 +187,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        static ARDOUR_UI *instance () { return theArdourUI; }
        static UIConfiguration *config () { return theArdourUI->ui_config; }
        
-       PublicEditor&     the_editor(){return *editor;}
+       PublicEditor&     the_editor() { return *editor;}
        Mixer_UI* the_mixer() { return mixer; }
 
        void new_midi_tracer_window ();
@@ -190,8 +197,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        Gtk::Tooltips& tooltips() { return _tooltips; }
 
-       Gtk::HBox& editor_transport_box() { return _editor_transport_box; }
-
        static PublicEditor* _instance;
 
        /** Emitted frequently with the audible frame, false, and the edit point as
@@ -243,6 +248,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        bool start_video_server (Gtk::Window* float_window, bool popup_msg);
        void stop_video_server (bool ask_confirm=false);
        void flush_videotimeline_cache (bool localcacheonly=false);
+       void export_video (bool range = false);
 
        void session_add_audio_track (
                int input_channels,
@@ -301,6 +307,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
         int disconnect_from_engine ();
         int reconnect_to_engine ();
+       void hide_application ();
 
   protected:
        friend class PublicEditor;
@@ -328,6 +335,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        NSM_Client*          nsm;
        bool                _was_dirty;
         bool                _mixer_on_top;
+        bool                _initial_verbose_plugin_scan;
         bool first_time_engine_run;
 
        void goto_editor_window ();
@@ -386,7 +394,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        Gtkmm2ext::TearOff*      transport_tearoff;
        Gtk::Frame               transport_frame;
        Gtk::HBox                transport_tearoff_hbox;
-       Gtk::HBox               _editor_transport_box;
        Gtk::HBox                transport_hbox;
        Gtk::Fixed               transport_base;
        Gtk::Fixed               transport_button_base;
@@ -455,6 +462,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        ArdourButton auditioning_alert_button;
        ArdourButton solo_alert_button;
        ArdourButton feedback_alert_button;
+       ArdourButton error_alert_button;
 
        Gtk::VBox alert_box;
        Gtk::VBox meter_box;
@@ -470,6 +478,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void sync_blink (bool);
        void audition_blink (bool);
        void feedback_blink (bool);
+       void error_blink (bool);
        
        void set_flat_buttons();
 
@@ -480,6 +489,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        bool solo_alert_press (GdkEventButton* ev);
        bool audition_alert_press (GdkEventButton* ev);
        bool feedback_alert_press (GdkEventButton *);
+       bool error_alert_press (GdkEventButton *);
 
        void big_clock_value_changed ();
        void primary_clock_value_changed ();
@@ -491,34 +501,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        Gtk::Menu*        session_popup_menu;
 
-       struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord {
-           RecentSessionModelColumns() {
-                   add (visible_name);
-                   add (tip);
-                   add (fullpath);
-           }
-           Gtk::TreeModelColumn<std::string> visible_name;
-           Gtk::TreeModelColumn<std::string> tip;
-           Gtk::TreeModelColumn<std::string> fullpath;
-       };
-
-       RecentSessionModelColumns    recent_session_columns;
-       Gtk::TreeView                recent_session_display;
-       Glib::RefPtr<Gtk::TreeStore> recent_session_model;
-
-       ArdourDialog*     session_selector_window;
-       Gtk::FileChooserDialog* open_session_selector;
-
-       void build_session_selector();
-       void redisplay_recent_sessions();
-       void recent_session_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col);
-
-       struct RecentSessionsSorter {
-               bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b) const {
-                   return ARDOUR::cmp_nocase(a.first, b.first) == -1;
-           }
-       };
-
        /* menu bar and associated stuff */
 
        Gtk::MenuBar* menu_bar;
@@ -540,6 +522,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        Gtk::Label   cpu_load_label;
        void update_cpu_load ();
 
+       Gtk::Label   xrun_label;
+       void update_xrun_count ();
+
+       Gtk::Label   peak_thread_work_label;
+       void update_peak_thread_work ();
+
        Gtk::Label   buffer_load_label;
        void update_buffer_load ();
 
@@ -606,8 +594,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        guint32  last_key_press_time;
 
        void snapshot_session (bool switch_to_it);
+
+       SaveAsDialog* save_as_dialog;
+
+       bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
+       void save_session_as ();
        void rename_session ();
-       void setup_order_hint ();
+       void setup_order_hint (AddRouteDialog::InsertAt);
 
        int         create_mixer ();
        int         create_editor ();
@@ -624,6 +617,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
         WM::Proxy<LocationUIWindow> location_ui;
         WM::Proxy<RouteParams_UI> route_params;
         WM::Proxy<EngineControl> audio_midi_setup;
+        WM::Proxy<ExportVideoDialog> export_video_dialog;
 
         /* Windows/Dialogs that require a creator method */
 
@@ -669,6 +663,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
        void cleanup ();
+       void cleanup_peakfiles ();
        void flush_trash ();
 
        bool have_configure_timeout;
@@ -728,7 +723,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
                        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);
 
@@ -766,12 +760,24 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void successful_graph_sort ();
        bool _feedback_exists;
 
+       enum ArdourLogLevel {
+               LogLevelNone = 0,
+               LogLevelInfo,
+               LogLevelWarning,
+               LogLevelError
+       };
+
+       ArdourLogLevel _log_not_acknowledged;
+
        void resize_text_widgets ();
 
+       bool xrun_button_release (GdkEventButton* ev);
+
         std::string _announce_string;
         void check_announcements ();
 
         int do_audio_midi_setup (uint32_t);
+       void audioengine_became_silent ();
 };
 
 #endif /* __ardour_gui_h__ */