ardour
panner_ui.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2004 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #ifndef __ardour_gtk_panner_ui_h__
21 #define __ardour_gtk_panner_ui_h__
22 
23 #include <vector>
24 
25 #include <gtkmm/box.h>
26 #include <gtkmm/adjustment.h>
27 #include <gtkmm/eventbox.h>
28 #include <gtkmm/arrow.h>
29 #include <gtkmm/togglebutton.h>
30 #include <gtkmm/button.h>
31 
32 #include <gtkmm2ext/click_box.h>
34 
35 #include "ardour/session_handle.h"
36 
37 #include "enums.h"
38 
39 class Panner2d;
40 class Panner2dWindow;
41 class StereoPanner;
42 class MonoPanner;
43 
44 namespace ARDOUR {
45  class Session;
46  class Panner;
47  class PannerShell;
48  class Delivery;
49  class AutomationControl;
50 }
51 
52 namespace Gtkmm2ext {
53  class FastMeter;
54 }
55 
56 namespace Gtk {
57  class Menu;
58  class Menuitem;
59 }
60 
61 class PannerUI : public Gtk::HBox, public ARDOUR::SessionHandlePtr
62 {
63  public:
65  ~PannerUI ();
66 
68 
69  void panshell_changed ();
70 
71  void update_pan_sensitive ();
72  void update_gain_sensitive ();
73 
74  void set_width (Width);
75  void setup_pan ();
76  void set_available_panners(std::map<std::string,std::string>);
77  void set_send_drawing_mode (bool);
78 
79  void effective_pan_display ();
80 
81  void set_meter_strip_name (std::string name);
82 
83  void on_size_allocate (Gtk::Allocation &);
84 
85  static void setup_slider_pix ();
86 
87  private:
88  friend class MixerStrip;
89  friend class SendUI;
90 
95 
100  std::string _current_uri;
102 
105 
106  Gtk::VBox pan_bar_packer;
107  Gtk::VBox pan_vbox;
108  Gtk::VBox poswidth_box;
110 
113 
116  void width_adjusted ();
117  void show_width ();
118  void position_adjusted ();
119  void show_position ();
120 
121  Gtk::Menu* pan_astate_menu;
122  Gtk::Menu* pan_astyle_menu;
123 
125  Gtk::ToggleButton pan_automation_state_button;
126 
127  void pan_value_changed (uint32_t which);
128  void build_astate_menu ();
129  void build_astyle_menu ();
130 
131  void hide_pans ();
132 
133  void panner_moved (int which);
134  void panner_bypass_toggled ();
135 
136  gint start_pan_touch (GdkEventButton*);
137  gint end_pan_touch (GdkEventButton*);
138 
139  bool pan_button_event (GdkEventButton*);
140 
141  Gtk::Menu* pan_menu;
142  Gtk::CheckMenuItem* bypass_menu_item;
143  void build_pan_menu ();
144  void pan_reset ();
145  void pan_bypass_toggle ();
146  void pan_edit ();
147  void pan_set_custom_type (std::string type);
148 
151  gint pan_automation_style_button_event (GdkEventButton *);
152  gint pan_automation_state_button_event (GdkEventButton *);
153  sigc::connection pan_watching;
154 
155  std::string astate_string (ARDOUR::AutoState);
157  std::string _astate_string (ARDOUR::AutoState, bool);
158 
159  std::string astyle_string (ARDOUR::AutoStyle);
161  std::string _astyle_string (ARDOUR::AutoStyle, bool);
162 
165 
166  std::map<std::string,std::string> _panner_list;
168 };
169 
170 #endif /* __ardour_gtk_panner_ui_h__ */
171 
void build_pan_menu()
Definition: panner_ui.cc:393
void pan_bypass_toggle()
Definition: panner_ui.cc:429
int _current_nouts
Definition: panner_ui.h:98
PBD::ScopedConnectionList _pan_control_connections
Definition: panner_ui.h:94
void panshell_changed()
Definition: panner_ui.cc:204
void update_pan_sensitive()
Definition: panner_ui.cc:482
Gtk::VBox pan_bar_packer
Definition: panner_ui.h:106
sigc::connection pan_watching
Definition: panner_ui.h:153
std::string short_astyle_string(ARDOUR::AutoStyle)
Definition: panner_ui.cc:626
virtual void set_panner(boost::shared_ptr< ARDOUR::PannerShell >, boost::shared_ptr< ARDOUR::Panner >)
Definition: panner_ui.cc:92
void pan_automation_style_changed()
Definition: panner_ui.cc:537
PannerUI(ARDOUR::Session *)
Definition: panner_ui.cc:46
void set_available_panners(std::map< std::string, std::string >)
Definition: panner_ui.cc:664
void panner_bypass_toggled()
bool _send_mode
Definition: panner_ui.h:101
std::string astate_string(ARDOUR::AutoState)
Definition: panner_ui.cc:585
MonoPanner * _mono_panner
Definition: panner_ui.h:112
Definition: ardour_ui.h:130
Gtk::Menu * pan_astate_menu
Definition: panner_ui.h:121
Gtk::ToggleButton pan_automation_state_button
Definition: panner_ui.h:125
void start_touch(boost::weak_ptr< ARDOUR::AutomationControl >)
Definition: panner_ui.cc:343
bool _suspend_menu_callbacks
Definition: panner_ui.h:167
gint start_pan_touch(GdkEventButton *)
void set_meter_strip_name(std::string name)
void effective_pan_display()
Definition: panner_ui.cc:470
std::string astyle_string(ARDOUR::AutoStyle)
Definition: panner_ui.cc:620
Width _width
Definition: panner_ui.h:109
Gtk::CheckMenuItem * bypass_menu_item
Definition: panner_ui.h:142
void show_position()
Definition: panner_ui.cc:654
Definition: send_ui.h:34
void pan_set_custom_type(std::string type)
Definition: panner_ui.cc:464
AutoStyle
Definition: types.h:155
Gtk::VBox pan_vbox
Definition: panner_ui.h:107
gint pan_automation_style_button_event(GdkEventButton *)
Definition: panner_ui.cc:517
boost::shared_ptr< ARDOUR::Panner > _panner
Definition: panner_ui.h:92
void setup_pan()
Definition: panner_ui.cc:211
boost::shared_ptr< ARDOUR::PannerShell > _panshell
Definition: panner_ui.h:91
bool _ignore_width_change
Definition: panner_ui.h:114
Definition: amp.h:29
gint pan_automation_state_button_event(GdkEventButton *)
Definition: panner_ui.cc:494
bool _ignore_position_change
Definition: panner_ui.h:115
void set_width(Width)
Definition: panner_ui.cc:187
Gtk::VBox poswidth_box
Definition: panner_ui.h:108
std::string _astyle_string(ARDOUR::AutoStyle, bool)
Definition: panner_ui.cc:632
void hide_pans()
void pan_edit()
Definition: panner_ui.cc:437
void pan_automation_state_changed()
Definition: panner_ui.cc:552
std::map< std::string, std::string > _panner_list
Definition: panner_ui.h:166
int _current_nins
Definition: panner_ui.h:99
bool pan_button_event(GdkEventButton *)
Definition: panner_ui.cc:363
Gtk::Menu * pan_menu
Definition: panner_ui.h:141
gint end_pan_touch(GdkEventButton *)
void build_astate_menu()
Definition: panner_ui.cc:135
std::string _astate_string(ARDOUR::AutoState, bool)
Definition: panner_ui.cc:597
std::string _current_uri
Definition: panner_ui.h:100
void stop_touch(boost::weak_ptr< ARDOUR::AutomationControl >)
Definition: panner_ui.cc:353
PBD::ScopedConnectionList connections
Definition: panner_ui.h:93
void on_size_allocate(Gtk::Allocation &)
Definition: panner_ui.cc:181
const char * name
Panner2dWindow * big_window
Definition: panner_ui.h:104
std::string short_astate_string(ARDOUR::AutoState)
Definition: panner_ui.cc:591
static void setup_slider_pix()
Width
Definition: enums.h:25
Gtk::Menu * pan_astyle_menu
Definition: panner_ui.h:122
StereoPanner * _stereo_panner
Definition: panner_ui.h:111
bool ignore_toggle
Definition: panner_ui.h:96
Panner2d * twod_panner
2D panner, or 0
Definition: panner_ui.h:103
void width_adjusted()
Definition: panner_ui.cc:649
Gtk::Button pan_automation_style_button
Definition: panner_ui.h:124
void show_width()
Definition: panner_ui.cc:644
void position_adjusted()
Definition: panner_ui.cc:659
bool in_pan_update
Definition: panner_ui.h:97
void pan_reset()
Definition: panner_ui.cc:455
void pan_value_changed(uint32_t which)
void build_astyle_menu()
Definition: panner_ui.cc:165
void panner_moved(int which)
void update_gain_sensitive()
void set_send_drawing_mode(bool)
Definition: panner_ui.cc:330
AutoState
Definition: types.h:145