the big rework of window management. probably not complete at thsi point, but this...
[ardour.git] / gtk2_ardour / ardour_ui.h
index a695f7b8bd0b5c7efdb3d8ff9fd9fa3b463acaeb..79b5403daff04fb25ce0cbf6e4b6ec32501784d0 100644 (file)
 
 #include "video_timeline.h"
 
-#include "ardour_dialog.h"
 #include "ardour_button.h"
+#include "ardour_dialog.h"
+#include "ardour_window.h"
 #include "editing.h"
 #include "nsm.h"
 #include "ui_config.h"
-#include "window_proxy.h"
 #include "enums.h"
 #include "visibility_group.h"
+#include "window_manager.h"
 
 class About;
 class AddRouteDialog;
@@ -84,6 +85,7 @@ class SystemExec;
 class ArdourStartup;
 class ArdourKeyboard;
 class AudioClock;
+class BigClockWindow;
 class BundleManager;
 class ButtonJoiner;
 class ConnectionEditor;
@@ -101,7 +103,6 @@ class SpeakerDialog;
 class ThemeManager;
 class TimeInfoBox;
 class MidiTracer;
-class WindowProxyBase;
 class GlobalPortMatrixWindow;
 class GUIObjectState;
 
@@ -165,14 +166,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        PublicEditor&     the_editor(){return *editor;}
        Mixer_UI* the_mixer() { return mixer; }
 
-       void toggle_key_editor ();
-       void toggle_location_window ();
-       void toggle_theme_manager ();
-       void toggle_bundle_manager ();
-       void toggle_big_clock_window ();
-       void toggle_speaker_config_window ();
        void new_midi_tracer_window ();
-       void toggle_route_params_window ();
        void toggle_editing_space();
        void toggle_keep_tearoffs();
 
@@ -209,6 +203,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        MainClock* primary_clock;
        MainClock* secondary_clock;
        void focus_on_clock ();
+       AudioClock*   big_clock;
 
        TimeInfoBox* time_info_box;
 
@@ -275,9 +270,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        void set_shuttle_fract (double);
 
-       void add_window_proxy (WindowProxyBase *);
-       void remove_window_proxy (WindowProxyBase *);
-
        void get_process_buffers ();
        void drop_process_buffers ();
 
@@ -358,25 +350,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
 
        void manage_window (Gtk::Window&);
 
-       AudioClock*   big_clock;
-       ActionWindowProxy<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 big_clock_catch_focus ();
-       void big_clock_reset_aspect_ratio ();
-
-       void float_big_clock (Gtk::Window* parent);
        bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor);
 
-       ActionWindowProxy<SpeakerDialog>* speaker_config_window;
-
        void update_transport_clocks (framepos_t pos);
        void record_state_changed ();
 
@@ -596,41 +571,40 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        PublicEditor     *editor;
        int         create_editor ();
 
-       RouteParams_UI *route_params;
-       int             create_route_params ();
-
-       BundleManager *bundle_manager;
-       void create_bundle_manager ();
-
-       ActionWindowProxy<LocationUIWindow>* location_ui;
-       int               create_location_ui ();
-       void              handle_locations_change (ARDOUR::Location*);
+        /* Dialogs that can be created via new<T> */
 
-       ActionWindowProxy<GlobalPortMatrixWindow>* _global_port_matrix[ARDOUR::DataType::num_types];
-       void toggle_global_port_matrix (ARDOUR::DataType);
+        WindowManager::Proxy<SpeakerDialog> speaker_config_window;
+        WindowManager::Proxy<ThemeManager> theme_manager;
+        WindowManager::Proxy<KeyEditor> key_editor;
+        WindowManager::Proxy<RCOptionEditor> rc_option_editor;
+        WindowManager::Proxy<AddRouteDialog> add_route_dialog;
+        WindowManager::Proxy<About> about;
+        WindowManager::Proxy<LocationUIWindow> location_ui;
+        WindowManager::Proxy<RouteParams_UI> route_params;
 
-       static UIConfiguration *ui_config;
-       ThemeManager *theme_manager;
-
-       /* Key bindings editor */
-
-       KeyEditor *key_editor;
-
-       /* RC Options window */
+        /* Windows/Dialogs that require a creator method */
 
-       RCOptionEditor *rc_option_editor;
+        WindowManager::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
+        WindowManager::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
+        WindowManager::ProxyWithConstructor<BundleManager> bundle_manager;
+        WindowManager::ProxyWithConstructor<BigClockWindow> big_clock_window;
+        WindowManager::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
+        WindowManager::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
 
-       SessionOptionEditor *session_option_editor;
+        /* creator methods */
 
-       /* route dialog */
+        SessionOptionEditor*    create_session_option_editor ();
+        BundleManager*          create_bundle_manager ();
+        AddVideoDialog*         create_add_video_dialog ();
+        BigClockWindow*         create_big_clock_window(); 
+        GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
 
-       AddRouteDialog *add_route_dialog;
-
-       /* video dialog */
+       static UIConfiguration *ui_config;
 
-       AddVideoDialog *add_video_dialog;
        SystemExec *video_server_process;
 
+       void handle_locations_change (ARDOUR::Location*);
+
        /* Keyboard Handling */
 
        ArdourKeyboard* keyboard;
@@ -644,7 +618,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        uint32_t rec_enabled_streams;
        void count_recenabled_streams (ARDOUR::Route&);
 
-       About* about;
        Splash* splash;
 
        void pop_back_splash (Gtk::Window&);
@@ -730,8 +703,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        void queue_finish ();
        void fontconfig_dialog ();
 
-       std::list<WindowProxyBase*> _window_proxies;
-
         int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
         int ambiguous_file (std::string file, std::string path, std::vector<std::string> hits);