X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmonitor_section.h;h=e5c63fbdd919d5378b8cc5a033686ee4ce9d5e52;hb=6b1b72a247bf04c81292fc41af4f69c9b7f90379;hp=c8aed68dcb5d8ee84edba4a874dcdac3fb4d210b;hpb=f09c1016d47cdb69488997a49b88d8334df3539c;p=ardour.git diff --git a/gtk2_ardour/monitor_section.h b/gtk2_ardour/monitor_section.h index c8aed68dcb..e5c63fbdd9 100644 --- a/gtk2_ardour/monitor_section.h +++ b/gtk2_ardour/monitor_section.h @@ -17,63 +17,68 @@ */ +#ifndef __gtk2_ardour_monitor_section_h__ +#define __gtk2_ardour_monitor_section_h__ + #include +#include +#include #include +#include + +#include "gtkmm2ext/bindings.h" -#include "gtkmm2ext/bindable_button.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" #include "plugin_selector.h" -#include "route_processor_selection.h" #include "processor_box.h" +#include "processor_selection.h" -namespace Gtkmm2ext { +namespace ArdourWidgets { class TearOff; - class MotionFeedback; } -class VolumeController; - -class MonitorSection : public RouteUI +class MonitorSection : public RouteUI, public Gtk::EventBox { - public: - MonitorSection (ARDOUR::Session*); +public: + MonitorSection (); ~MonitorSection (); void set_session (ARDOUR::Session*); - Gtkmm2ext::TearOff& tearoff() const { return *_tearoff; } + ArdourWidgets::TearOff& tearoff() const { return *_tearoff; } std::string state_id() const; PluginSelector* plugin_selector() { return _plugin_selector; } - private: + void use_others_actions (); + +private: Gtk::HBox hpacker; Gtk::VBox vpacker; - Gtkmm2ext::TearOff* _tearoff; + ArdourWidgets::TearOff* _tearoff; Gtk::HBox channel_table_packer; Gtk::HBox table_hpacker; Gtk::HBox master_packer; - Gtk::Table channel_table; 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 (); }; @@ -81,20 +86,20 @@ 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); @@ -106,9 +111,9 @@ class MonitorSection : public RouteUI void map_state (); boost::shared_ptr _monitor; - boost::shared_ptr _route; - static Glib::RefPtr monitor_actions; + Glib::RefPtr monitor_actions; + Glib::RefPtr solo_actions; void register_actions (); void cut_channel (uint32_t); @@ -127,24 +132,24 @@ class MonitorSection : public RouteUI gint output_press (GdkEventButton *); gint output_release (GdkEventButton *); - ArdourButton solo_in_place_button; - ArdourButton afl_button; - ArdourButton pfl_button; + 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; - ArdourButton toggle_processorbox_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); @@ -158,7 +163,7 @@ 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; @@ -168,13 +173,26 @@ class MonitorSection : public RouteUI void update_processor_box (); + void route_property_changed (const PBD::PropertyChange&) {} + ProcessorBox* insert_box; PluginSelector* _plugin_selector; - RouteProcessorSelection _rr_selection; + 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; + + Gtkmm2ext::Bindings* bindings; + + void load_bindings (); + bool enter_handler (GdkEventCrossing*); + bool leave_handler (GdkEventCrossing*); + + void toggle_use_monitor_section (); + void drop_route (); }; + +#endif /* __gtk2_ardour_monitor_section_h__ */