X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fardour_ui.h;h=032415aa852b7a3695b26d23de630a779238e8b2;hb=42983959d2cb3570c517e58dd2d23fc2b9b9835a;hp=6a91b6415a69bf2c084f455a4e46ec6d3aabef56;hpb=1bdf6d8a68ce5ff18071b0a5a0d9e1d7f85dce08;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 6a91b6415a..032415aa85 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -88,6 +88,7 @@ #include "global_port_matrix.h" #include "keyeditor.h" #include "location_ui.h" +#include "lua_script_manager.h" #include "rc_option_editor.h" #include "route_params_ui.h" #include "session_option_editor.h" @@ -102,6 +103,7 @@ class EngineControl; class ExportVideoDialog; class KeyEditor; class LocationUIWindow; +class LuaScriptManager; class RCOptionEditor; class RouteParams_UI; class SessionOptionEditor; @@ -121,11 +123,12 @@ class ArdourPrompter; class PublicEditor; class SaveAsDialog; class SessionDialog; -class SessionOptionEditor; +class SessionOptionEditorWindow; class ShuttleControl; class Splash; class TimeInfoBox; class Meterbridge; +class LuaWindow; class MidiTracer; class NSM_Client; class LevelMeterHBox; @@ -141,14 +144,14 @@ namespace ARDOUR { class ProcessThread; } -namespace Gtkmm2ext { - class TearOff; -} - namespace Gtk { class ProgressBar; } +namespace Gtkmm2ext { + class Tabbable; +} + class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr { public: @@ -208,6 +211,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void toggle_monitor_section_visibility (); void toggle_keep_tearoffs(); + void lua_script_manager(); + static PublicEditor* _instance; /** Emitted frequently with the audible frame, false, and the edit point as @@ -256,6 +261,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void start_duplicate_routes (); + void add_lua_script (); + void remove_lua_script (); + void add_video (Gtk::Window* float_window); void remove_video (); void start_video_server_menu (Gtk::Window* float_window); @@ -270,30 +278,40 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ARDOUR::TrackMode mode, ARDOUR::RouteGroup* route_group, uint32_t how_many, - std::string const & name_template + std::string const & name_template, + bool strict_io ) { - - session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template); + session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io); } - void session_add_audio_bus (int input_channels, int32_t output_channels, ARDOUR::RouteGroup* route_group, - uint32_t how_many, std::string const & name_template) { - session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template); + void session_add_audio_bus ( + int input_channels, + int32_t output_channels, + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template, + bool strict_io + ) { + session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io); } - void session_add_midi_track (ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - ARDOUR::PluginInfoPtr instrument) { - session_add_midi_route (true, route_group, how_many, name_template, instrument); + void session_add_midi_track ( + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template, + bool strict_io, + ARDOUR::PluginInfoPtr instrument) { + session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument); } - void session_add_mixed_track (const ARDOUR::ChanCount& input, const ARDOUR::ChanCount& output, ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - ARDOUR::PluginInfoPtr instrument); + void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr); + void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr); + void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool); + void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr); - /*void session_add_midi_bus () { - session_add_midi_route (false); - }*/ + void display_insufficient_ports_message (); - void attach_to_engine (); + void attach_to_engine (); void post_engine (); gint exit_on_main_window_close (GdkEventAny *); @@ -305,8 +323,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool check_audioengine(Gtk::Window&); - void update_tearoff_visibility (); - void setup_profile (); void setup_tooltips (); @@ -327,7 +343,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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, @@ -339,6 +355,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object); bool key_event_handler (GdkEventKey*, Gtk::Window* window); + Gtkmm2ext::ActionMap global_actions; + protected: friend class PublicEditor; @@ -372,18 +390,18 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool _initial_verbose_plugin_scan; bool first_time_engine_run; - Gtkmm2ext::Bindings _global_bindings; - - bool tabs_button_event (GdkEventButton* ev); - void show_tabbable (Gtkmm2ext::Tabbable*); void hide_tabbable (Gtkmm2ext::Tabbable*); void detach_tabbable (Gtkmm2ext::Tabbable*); void attach_tabbable (Gtkmm2ext::Tabbable*); - - void tabbable_state_change (Gtkmm2ext::Tabbable&); + void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*); + void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*); + void toggle_editor_and_mixer (); + void tabbable_state_change (Gtkmm2ext::Tabbable&); + void toggle_meterbridge (); + void toggle_luawindow (); int setup_windows (); void setup_transport (); @@ -404,7 +422,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void session_dirty_changed (); void update_title (); - + void map_transport_state (); int32_t do_engine_start (); @@ -428,15 +446,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr std::list _midi_tracer_windows; - void detach_tearoff (Gtk::Box* parent, Gtk::Widget* contents); - void reattach_tearoff (Gtk::Box* parent, Gtk::Widget* contents, int32_t order); - void reattach_all_tearoffs (); - /* Transport Control */ - Gtkmm2ext::TearOff* transport_tearoff; Gtk::Frame transport_frame; - Gtk::HBox transport_tearoff_hbox; Gtk::HBox transport_hbox; Gtk::Fixed transport_base; Gtk::Fixed transport_button_base; @@ -507,6 +519,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton feedback_alert_button; ArdourButton error_alert_button; + ArdourButton action_script_call_btn[10]; + Gtk::Table action_script_table; + Gtk::VBox alert_box; Gtk::VBox meter_box; LevelMeterHBox * editor_meter; @@ -600,9 +615,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void edit_metadata (); void import_metadata (); - void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &); - void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, ARDOUR::PluginInfoPtr); - void set_transport_sensitivity (bool); //stuff for ProTools-style numpad @@ -652,23 +664,25 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int create_mixer (); int create_editor (); + int create_meterbridge (); + int create_luawindow (); Meterbridge *meterbridge; - int create_meterbridge (); + LuaWindow *luawindow; /* 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 add_route_dialog; WM::Proxy about; WM::Proxy location_ui; WM::Proxy route_params; WM::Proxy audio_midi_setup; WM::Proxy export_video_dialog; + WM::Proxy lua_script_window; /* Windows/Dialogs that require a creator method */ @@ -678,6 +692,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::ProxyWithConstructor big_clock_window; WM::ProxyWithConstructor audio_port_matrix; WM::ProxyWithConstructor midi_port_matrix; + WM::ProxyWithConstructor key_editor; /* creator methods */ @@ -686,6 +701,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr AddVideoDialog* create_add_video_dialog (); BigClockWindow* create_big_clock_window(); GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType); + KeyEditor* create_key_editor (); ARDOUR::SystemExec *video_server_process; @@ -740,6 +756,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void session_dialog (std::string); int pending_state_dialog (); int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t); + void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t); Gtk::MenuItem* jack_disconnect_item; Gtk::MenuItem* jack_reconnect_item; @@ -781,9 +798,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void step_edit_status_change (bool); - void platform_specific (); - void platform_setup (); - /* these are used only in response to a platform-specific "ShouldQuit" signal */ bool idle_finish (); @@ -834,11 +848,23 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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); + void tabs_page_added (Gtk::Widget*, guint); + void tabs_page_removed (Gtk::Widget*, guint); + ArdourButton editor_visibility_button; + ArdourButton mixer_visibility_button; + ArdourButton prefs_visibility_button; + bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*); bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier); - + + bool main_window_delete_event (GdkEventAny*); + bool idle_ask_about_quit (); + + void load_bindings (); + bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name); + + void step_up_through_tabs (); + void step_down_through_tabs (); }; #endif /* __ardour_gui_h__ */