X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fardour_ui.h;h=7b6c6f9e2146922eea8042bbe13ac8138ebe667c;hb=50e4ebff36108804d968bbe878ff4a470b1295f8;hp=b43b2d62a248ce32fae272750964d5f7c3c25b80;hpb=6cf7ca3a85dab15fa404d05a4a509502bb177679;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index b43b2d62a2..7b6c6f9e21 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -53,10 +53,12 @@ #include #include #include -#include -#include -#include -#include + +#include "gtkmm2ext/gtk_ui.h" +#include "gtkmm2ext/click_box.h" +#include "gtkmm2ext/stateful_button.h" +#include "gtkmm2ext/bindable_button.h" +#include "gtkmm2ext/bindings.h" #include "ardour/ardour.h" #include "ardour/types.h" @@ -112,6 +114,7 @@ class ArdourKeyboard; class AudioClock; class ButtonJoiner; class ConnectionEditor; +class DuplicateRouteDialog; class MainClock; class Mixer_UI; class ArdourPrompter; @@ -201,6 +204,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void new_midi_tracer_window (); void toggle_editing_space(); void toggle_mixer_space(); + void toggle_mixer_list(); + void toggle_monitor_section_visibility (); void toggle_keep_tearoffs(); static PublicEditor* _instance; @@ -248,6 +253,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void add_routes_part_two (); void add_routes_thread (); + void start_duplicate_routes (); + void add_video (Gtk::Window* float_window); void remove_video (); void start_video_server_menu (Gtk::Window* float_window); @@ -315,6 +322,22 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void hide_application (); + Gtk::Notebook& tabs(); + Gtk::Window& main_window () { return _main_window; } + + void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner); + + /* called from a static C function */ + + GtkNotebook* tab_window_root_drop (GtkNotebook* src, + GtkWidget* w, + gint x, + gint y, + gpointer user_data); + + bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object); + bool key_event_handler (GdkEventKey*, Gtk::Window* window); + protected: friend class PublicEditor; @@ -335,14 +358,21 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void toggle_session_options_window (); private: - PublicEditor* editor; - Mixer_UI* mixer; - NSM_Client* nsm; - bool _was_dirty; - bool _mixer_on_top; - bool _initial_verbose_plugin_scan; - bool first_time_engine_run; - + Gtk::Window _main_window; + Gtk::VBox main_vpacker; + Gtk::HBox status_bar_hpacker; + Gtk::Notebook _tabs; + PublicEditor* editor; + Mixer_UI* mixer; + Gtk::Tooltips _tooltips; + NSM_Client* nsm; + bool _was_dirty; + bool _mixer_on_top; + bool _initial_verbose_plugin_scan; + bool first_time_engine_run; + + Gtkmm2ext::Bindings _global_bindings; + void goto_editor_window (); void goto_mixer_window (); void toggle_mixer_window (); @@ -354,6 +384,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void setup_clock (); static ARDOUR_UI *theArdourUI; + SessionDialog *_session_dialog; int starting (); @@ -365,6 +396,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void update_autosave(); sigc::connection _autosave_connection; + void session_dirty_changed (); + void update_title (); + void map_transport_state (); int32_t do_engine_start (); @@ -383,8 +417,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void start_clocking (); void stop_clocking (); - bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor); - void update_transport_clocks (framepos_t pos); void record_state_changed (); @@ -424,7 +456,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr }; TransportControllable (std::string name, ARDOUR_UI&, ToggleType); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); double get_value (void) const; ARDOUR_UI& ui; @@ -603,6 +635,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it); void snapshot_session (bool switch_to_it); + void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file + SaveAsDialog* save_as_dialog; bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar); @@ -615,11 +649,14 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Meterbridge *meterbridge; int create_meterbridge (); + /* Dialogs that can be created via new */ + RCOptionEditor* rc_option_editor; + Gtk::HBox rc_option_editor_placeholder; + WM::Proxy speaker_config_window; WM::Proxy key_editor; - WM::Proxy rc_option_editor; WM::Proxy add_route_dialog; WM::Proxy about; WM::Proxy location_ui; @@ -785,7 +822,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int do_audio_midi_setup (uint32_t); void audioengine_became_silent (); + + DuplicateRouteDialog* duplicate_routes_dialog; + + void grab_focus_after_dialog (); + + void tabs_switch (GtkNotebookPage*, guint page_number); + void tabs_page_added (Gtk::Widget*, guint page_number); + void tabs_page_removed (Gtk::Widget*, guint page_number); + bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*); }; #endif /* __ardour_gui_h__ */ -