X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmonitor_section.h;h=f00c438667a70b39a8d573129032a77ff78a0e0a;hb=7d553eea8028977021f1526b8ab538737a21767c;hp=31d73748106400d6b8c81a6df0cb570893f7ff4a;hpb=91fac4c96dc6210dcc056da70dc608700d7eb570;p=ardour.git diff --git a/gtk2_ardour/monitor_section.h b/gtk2_ardour/monitor_section.h index 31d7374810..f00c438667 100644 --- a/gtk2_ardour/monitor_section.h +++ b/gtk2_ardour/monitor_section.h @@ -18,57 +18,62 @@ */ #include +#include +#include #include +#include -#include "gtkmm2ext/bindable_button.h" +#include "gtkmm2ext/bindings.h" + +#include "widgets/ardour_button.h" +#include "widgets/ardour_knob.h" +#include "widgets/ardour_display.h" -#include "ardour_button.h" -#include "ardour_knob.h" -#include "ardour_display.h" -#include "axis_view.h" #include "level_meter.h" #include "route_ui.h" #include "monitor_selector.h" -namespace Gtkmm2ext { +#include "plugin_selector.h" +#include "processor_box.h" +#include "processor_selection.h" + +namespace ArdourWidgets { class TearOff; - class MotionFeedback; } -class VolumeController; - -class MonitorSection : public RouteUI +class MonitorSection : public RouteUI, public Gtk::EventBox { - public: +public: MonitorSection (ARDOUR::Session*); ~MonitorSection (); void set_session (ARDOUR::Session*); - Gtkmm2ext::TearOff& tearoff() const { return *_tearoff; } + ArdourWidgets::TearOff& tearoff() const { return *_tearoff; } std::string state_id() const; - private: - Gtk::VBox vpacker; + PluginSelector* plugin_selector() { return _plugin_selector; } + +private: Gtk::HBox hpacker; - Gtk::VBox upper_packer; - Gtk::VBox lower_packer; - Gtkmm2ext::TearOff* _tearoff; + Gtk::VBox vpacker; + ArdourWidgets::TearOff* _tearoff; Gtk::HBox channel_table_packer; Gtk::HBox table_hpacker; - Gtk::Table channel_table; + Gtk::HBox master_packer; Gtk::Table channel_table_header; + Gtk::Table *channel_table; Gtk::ScrolledWindow channel_table_scroller; Gtk::Viewport channel_table_viewport; Glib::RefPtr channel_size_group; struct ChannelButtonSet { - ArdourButton cut; - ArdourButton dim; - ArdourButton solo; - ArdourButton invert; + ArdourWidgets::ArdourButton cut; + ArdourWidgets::ArdourButton dim; + ArdourWidgets::ArdourButton solo; + ArdourWidgets::ArdourButton invert; ChannelButtonSet (); }; @@ -76,24 +81,23 @@ class MonitorSection : public RouteUI typedef std::vector ChannelButtons; ChannelButtons _channel_buttons; - ArdourKnob* gain_control; - ArdourKnob* dim_control; - ArdourKnob* solo_boost_control; - ArdourKnob* solo_cut_control; + ArdourWidgets::ArdourKnob* gain_control; + ArdourWidgets::ArdourKnob* dim_control; + ArdourWidgets::ArdourKnob* solo_boost_control; + ArdourWidgets::ArdourKnob* solo_cut_control; - ArdourDisplay* gain_display; - ArdourDisplay* dim_display; - ArdourDisplay* solo_boost_display; - ArdourDisplay* solo_cut_display; + ArdourWidgets::ArdourDisplay* gain_display; + ArdourWidgets::ArdourDisplay* dim_display; + ArdourWidgets::ArdourDisplay* solo_boost_display; + ArdourWidgets::ArdourDisplay* solo_cut_display; std::list > output_menu_bundles; Gtk::Menu output_menu; MonitorSelectorWindow *_output_selector; - ArdourButton* output_button; + ArdourWidgets::ArdourButton* output_button; void maybe_add_bundle_to_output_menu (boost::shared_ptr, ARDOUR::BundleList const &); void bundle_output_chosen (boost::shared_ptr); - void output_button_resized (Gtk::Allocation&); void update_output_display (); void disconnect_output (); void edit_output_configuration (); @@ -104,8 +108,30 @@ class MonitorSection : public RouteUI boost::shared_ptr _monitor; boost::shared_ptr _route; + enum MonitorActions { + MonitorMono, + MonitorCutAll, + MonitorDimAll, + ToggleExclusiveSolo, + ToggleMuteOverridesSolo, + SoloUseInPlace, + SoloUseAFL, + SoloUsePFL, + ToggleMonitorProcessorBox + }; + + enum ChannelActions { + CutChannel, + DimChannel, + SoloChannel, + InvertChannel + }; + static Glib::RefPtr monitor_actions; - void register_actions (); + static void register_actions (); + + static void action_proxy0 (enum MonitorActions); + static void action_proxy1 (enum ChannelActions, uint32_t); void cut_channel (uint32_t); void dim_channel (uint32_t); @@ -123,23 +149,24 @@ class MonitorSection : public RouteUI gint output_press (GdkEventButton *); gint output_release (GdkEventButton *); - ArdourButton solo_in_place_button; - ArdourButton afl_button; - ArdourButton pfl_button; - Gtk::HBox solo_model_box; + ArdourWidgets::ArdourButton solo_in_place_button; + ArdourWidgets::ArdourButton afl_button; + ArdourWidgets::ArdourButton pfl_button; + Gtk::VBox solo_model_box; void solo_use_in_place (); void solo_use_afl (); void solo_use_pfl (); - ArdourButton cut_all_button; - ArdourButton dim_all_button; - ArdourButton mono_button; - ArdourButton rude_solo_button; - ArdourButton rude_iso_button; - ArdourButton rude_audition_button; - ArdourButton exclusive_solo_button; - ArdourButton solo_mute_override_button; + ArdourWidgets::ArdourButton cut_all_button; + ArdourWidgets::ArdourButton dim_all_button; + ArdourWidgets::ArdourButton mono_button; + ArdourWidgets::ArdourButton rude_solo_button; + ArdourWidgets::ArdourButton rude_iso_button; + ArdourWidgets::ArdourButton rude_audition_button; + ArdourWidgets::ArdourButton exclusive_solo_button; + ArdourWidgets::ArdourButton solo_mute_override_button; + ArdourWidgets::ArdourButton toggle_processorbox_button; void do_blink (bool); void solo_blink (bool); @@ -153,10 +180,32 @@ class MonitorSection : public RouteUI PBD::ScopedConnection config_connection; PBD::ScopedConnectionList control_connections; - PBD::ScopedConnection _output_changed_connection; + PBD::ScopedConnectionList output_changed_connections; bool _inhibit_solo_model_update; void assign_controllables (); + void port_connected_or_disconnected (boost::weak_ptr, boost::weak_ptr); + + void update_processor_box (); + + void route_property_changed (const PBD::PropertyChange&) {} + + ProcessorBox* insert_box; + PluginSelector* _plugin_selector; + ProcessorSelection _rr_selection; + void help_count_processors (boost::weak_ptr p, uint32_t* cnt) const; + uint32_t count_processors (); + + void processors_changed (ARDOUR::RouteProcessorChange); + Glib::RefPtr proctoggle; + bool _ui_initialized; + + static Gtkmm2ext::ActionMap myactions; + static Gtkmm2ext::Bindings* bindings; + + static void load_bindings (); + bool enter_handler (GdkEventCrossing*); + bool leave_handler (GdkEventCrossing*); };