Ardour  9.0-pre0-582-g084a23a80d
monitor_section.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2010-2018 Paul Davis <paul@linuxaudiosystems.com>
3  * Copyright (C) 2011 Carl Hetherington <carl@carlh.net>
4  * Copyright (C) 2014-2015 Ben Loftis <ben@harrisonconsoles.com>
5  * Copyright (C) 2014-2019 Robin Gareus <robin@gareus.org>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License along
18  * with this program; if not, write to the Free Software Foundation, Inc.,
19  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20  */
21 
22 #ifndef __gtk2_ardour_monitor_section_h__
23 #define __gtk2_ardour_monitor_section_h__
24 
25 #include <gtkmm/box.h>
26 #include <gtkmm/eventbox.h>
27 #include <gtkmm/sizegroup.h>
28 #include <gtkmm/table.h>
29 #include <gtkmm/viewport.h>
30 
31 #include "gtkmm2ext/bindings.h"
32 
33 #include "widgets/ardour_button.h"
34 #include "widgets/ardour_knob.h"
35 #include "widgets/ardour_display.h"
36 
37 #include "io_button.h"
38 #include "level_meter.h"
39 #include "route_ui.h"
40 
41 #include "processor_box.h"
42 #include "processor_selection.h"
43 
44 namespace ArdourWidgets {
45  class TearOff;
46 }
47 
48 class PluginSelector;
49 
50 class MonitorSection : public RouteUI, public Gtk::EventBox
51 {
52 public:
55 
57 
58  ArdourWidgets::TearOff& tearoff() const { return *_tearoff; }
59 
60  std::string state_id() const;
61 
63 
65 
66 private:
70 
78  Glib::RefPtr<Gtk::SizeGroup> channel_size_group;
79 
85 
87  };
88 
89  typedef std::vector<ChannelButtonSet*> ChannelButtons;
91 
96 
101 
103 
105  void map_state ();
106 
107  std::shared_ptr<ARDOUR::MonitorProcessor> _monitor;
108 
109  Glib::RefPtr<Gtk::ActionGroup> monitor_actions;
110  Glib::RefPtr<Gtk::ActionGroup> solo_actions;
112 
113  void cut_channel (uint32_t);
114  void dim_channel (uint32_t);
115  void solo_channel (uint32_t);
116  void invert_channel (uint32_t);
117  void dim_all ();
118  void cut_all ();
119  void mono ();
121  void set_button_names () {}
126 
131 
133  void solo_use_afl ();
134  void solo_use_pfl ();
135 
145 
146  void do_blink (bool);
147  void solo_blink (bool);
148  void audition_blink (bool);
153  void parameter_changed (std::string);
155 
159 
161 
164 
166 
168 
171  void help_count_processors (std::weak_ptr<ARDOUR::Processor> p, uint32_t* cnt) const;
172  uint32_t count_processors ();
173 
175  Glib::RefPtr<Gtk::ToggleAction> proctoggle;
177 
179 
180  void load_bindings ();
183 
185  void drop_route ();
186 };
187 
188 #endif /* __gtk2_ardour_monitor_section_h__ */
void toggle_exclusive_solo()
bool enter_handler(GdkEventCrossing *)
void update_processor_box()
std::vector< ChannelButtonSet * > ChannelButtons
bool cancel_audition(GdkEventButton *)
void processors_changed(ARDOUR::RouteProcessorChange)
Gtk::HBox master_packer
std::shared_ptr< ARDOUR::MonitorProcessor > _monitor
ProcessorBox * insert_box
IOButton _output_button
void update_solo_model()
void isolated_changed()
Gtk::Table channel_table_header
bool leave_handler(GdkEventCrossing *)
void toggle_mute_overrides_solo()
void register_actions()
bool cancel_isolate(GdkEventButton *)
Gtk::ScrolledWindow channel_table_scroller
uint32_t count_processors()
PBD::ScopedConnection config_connection
ArdourWidgets::ArdourKnob * solo_boost_control
PBD::ScopedConnectionList connections
Gtkmm2ext::Bindings * bindings
PluginSelector * plugin_selector()
void dim_channel(uint32_t)
ArdourWidgets::ArdourButton rude_solo_button
Glib::RefPtr< Gtk::SizeGroup > channel_size_group
Gtk::HBox table_hpacker
Glib::RefPtr< Gtk::ActionGroup > solo_actions
void load_bindings()
void toggle_use_monitor_section()
std::string state_id() const
Gtk::HBox channel_table_packer
ChannelButtons _channel_buttons
void route_property_changed(const PBD::PropertyChange &)
ArdourWidgets::ArdourKnob * gain_control
ArdourWidgets::ArdourDisplay * gain_display
void assign_controllables()
PBD::ScopedConnectionList route_connections
void solo_channel(uint32_t)
Glib::RefPtr< Gtk::ActionGroup > monitor_actions
void solo_use_in_place()
void solo_blink(bool)
ArdourWidgets::ArdourButton dim_all_button
void use_others_actions()
ArdourWidgets::TearOff * _tearoff
void cut_channel(uint32_t)
ArdourWidgets::TearOff & tearoff() const
ArdourWidgets::ArdourDisplay * solo_cut_display
void parameter_changed(std::string)
ArdourWidgets::ArdourKnob * solo_cut_control
void solo_use_afl()
ArdourWidgets::ArdourButton cut_all_button
Gtk::VBox solo_model_box
void do_blink(bool)
ArdourWidgets::ArdourButton solo_mute_override_button
void dim_level_changed()
Gtk::HBox hpacker
void help_count_processors(std::weak_ptr< ARDOUR::Processor > p, uint32_t *cnt) const
ArdourWidgets::ArdourKnob * dim_control
Glib::RefPtr< Gtk::ToggleAction > proctoggle
Gtk::Viewport channel_table_viewport
void gain_value_changed()
bool _inhibit_solo_model_update
Gtk::Table * channel_table
ArdourWidgets::ArdourDisplay * dim_display
void populate_buttons()
Gtk::VBox vpacker
void solo_boost_changed()
void invert_channel(uint32_t)
void unassign_controllables()
ArdourWidgets::ArdourButton rude_iso_button
ProcessorSelection _rr_selection
ArdourWidgets::ArdourButton exclusive_solo_button
ArdourWidgets::ArdourButton afl_button
bool cancel_solo(GdkEventButton *)
void set_session(ARDOUR::Session *)
ArdourWidgets::ArdourButton solo_in_place_button
ArdourWidgets::ArdourButton rude_audition_button
void solo_use_pfl()
ArdourWidgets::ArdourButton mono_button
ArdourWidgets::ArdourButton toggle_processorbox_button
ArdourWidgets::ArdourButton pfl_button
void audition_blink(bool)
ArdourWidgets::ArdourDisplay * solo_boost_display
ArdourWidgets::ArdourButton cut
ArdourWidgets::ArdourButton invert
ArdourWidgets::ArdourButton solo
ArdourWidgets::ArdourButton dim