ardour
route_params_ui.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2000 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_route_params_ui_h__
21 #define __ardour_route_params_ui_h__
22 
23 #include <list>
24 
25 #include <gtkmm/box.h>
26 #include <gtkmm/button.h>
27 #include <gtkmm/eventbox.h>
28 #include <gtkmm/frame.h>
29 #include <gtkmm/label.h>
30 #include <gtkmm/paned.h>
31 #include <gtkmm/scrolledwindow.h>
32 #include <gtkmm/togglebutton.h>
33 #include <gtkmm/treeview.h>
34 
35 #include "pbd/stateful.h"
36 #include "pbd/signals.h"
37 
38 #include "ardour/ardour.h"
39 
40 #include "ardour_window.h"
41 #include "processor_box.h"
43 #include "latency_gui.h"
44 
45 namespace ARDOUR {
46  class Route;
47  class Send;
48  class Processor;
49  class Session;
50  class PortInsert;
51  class Connection;
52  class Plugin;
53 }
54 
55 class PluginSelector;
56 class IOSelector;
57 
59 {
60  public:
61  RouteParams_UI ();
63 
65  void session_going_away ();
67 
68  private:
69  Gtk::HBox global_hpacker;
70  Gtk::VBox global_vpacker;
71  Gtk::ScrolledWindow scroller;
72  Gtk::EventBox scroller_base;
73  Gtk::HBox scroller_hpacker;
75 
76  Gtk::VBox list_vpacker;
78  Gtk::Button route_list_button;
79  Gtk::ScrolledWindow route_select_scroller;
80 
81  Gtk::Notebook notebook;
82  Gtk::Frame input_frame;
83  Gtk::Frame output_frame;
84  Gtk::HPaned redir_hpane;
85 
86  Gtk::Frame route_select_frame;
87 
88  Gtk::HBox route_hpacker;
89  Gtk::VBox route_vpacker;
90 
92 
93  Gtk::HPaned list_hpane;
94 
95  Gtk::HPaned right_hpane;
96 
97  Gtk::Frame route_choice_frame;
98 
99  Gtk::Frame route_param_frame;
100 
101  Gtk::VBox choice_vpacker;
102 
103  Gtk::Frame latency_frame;
104  Gtk::VBox latency_packer;
105  Gtk::HButtonBox latency_button_box;
106  Gtk::Button latency_apply_button;
108  Gtk::Label delay_label;
109 
111  sigc::connection latency_click_connection;
112 
113  void refresh_latency ();
114 
115  Gtk::ToggleButton input_button;
116  Gtk::ToggleButton output_button;
117  Gtk::Label track_input_label;
118 
119  Gtk::Label title_label;
120 
121  Gtk::Container * _active_view;
124 
127 
131 
134 
135 
136  enum ConfigView {
143  };
144 
146 
147 
148  /* treeview */
149  struct RouteDisplayModelColumns : public Gtk::TreeModel::ColumnRecord {
151  add(text);
152  add(route);
153  }
154  Gtk::TreeModelColumn<std::string> text;
155  Gtk::TreeModelColumn<boost::shared_ptr<ARDOUR::Route> > route;
156  };
157 
159  Gtk::TreeView route_display;
160  Glib::RefPtr<Gtk::ListStore> route_display_model;
161 
162 
164 
167  void map_frozen ();
168 
169 
170  void route_selected();
171  //void route_unselected (gint row, gint col, GdkEvent *ev);
172 
173  void setup_io_frames();
174  void cleanup_io_frames();
175  void cleanup_view(bool stopupdate = true);
176  void cleanup_latency_frame ();
177  void setup_latency_frame ();
178 
180 
181  void setup_processor_boxes();
183 
185 
188 
189  gint edit_input_configuration (GdkEventButton *ev);
190  gint edit_output_configuration (GdkEventButton *ev);
191 
192  void update_routeinfo (ARDOUR::Route * route);
193 
194  Gtk::Menu *track_menu;
195  void show_track_menu();
196 
197  void update_title ();
198  //void unselect_all_redirects ();
199 
200  sigc::connection update_connection;
201  void update_views ();
202 
203  void start_updating ();
204  void stop_updating ();
205 };
206 
207 
208 #endif /* __ardour_route_params_ui_h__ */
Gtk::VBox latency_packer
Gtk::VBox route_vpacker
PBD::ScopedConnectionList latency_connections
void cleanup_processor_boxes()
void cleanup_view(bool stopupdate=true)
void route_property_changed(const PBD::PropertyChange &, boost::weak_ptr< ARDOUR::Route > route)
PBD::ScopedConnectionList route_connections
LatencyGUI * latency_widget
Gtk::HPaned redir_hpane
Gtk::ScrolledWindow route_select_scroller
Gtk::VBox mixer_scroller_vpacker
PluginSelector * _plugin_selector
Gtk::TreeView route_display
void setup_latency_frame()
Gtk::ToggleButton input_button
Gtk::Frame latency_frame
RouteDisplayModelColumns route_display_columns
Gtk::HBox global_hpacker
Gtk::HBox scroller_hpacker
Gtk::EventBox scroller_base
void redirect_selected(boost::shared_ptr< ARDOUR::Processor >)
Gtk::ToggleButton output_button
boost::shared_ptr< ARDOUR::Route > _route
PBD::ScopedConnection _processor_going_away_connection
Gtk::HPaned list_hpane
Gtk::VBox choice_vpacker
void route_removed(boost::weak_ptr< ARDOUR::Route > route)
Glib::RefPtr< Gtk::ListStore > route_display_model
PluginSelector * plugin_selector()
Gtk::Button latency_apply_button
Gtk::Notebook notebook
Gtk::Frame input_frame
Gtk::Label title_label
RouteProcessorSelection _rr_selection
Gtk::Frame route_param_frame
void set_session(ARDOUR::Session *)
void cleanup_latency_frame()
sigc::connection update_connection
Definition: amp.h:29
IOSelector * _input_iosel
Gtk::VBox global_vpacker
Gtk::Button route_list_button
Gtk::Container * _active_view
class LIBPBD_API Connection
Definition: signals.h:53
Gtk::TreeModelColumn< boost::shared_ptr< ARDOUR::Route > > route
Gtk::Frame route_choice_frame
Gtk::Menu * track_menu
void update_routeinfo(ARDOUR::Route *route)
Gtk::Label track_input_label
void plugin_going_away(ARDOUR::Placement)
Gtk::Label route_list_button_label
ProcessorBox * insert_box
void processor_going_away(boost::weak_ptr< ARDOUR::Processor >)
Gtk::Label delay_label
Gtk::HBox route_hpacker
IOSelector * _output_iosel
ConfigView _current_view
gint edit_output_configuration(GdkEventButton *ev)
Gtk::ScrolledWindow scroller
void processors_changed(ARDOUR::RouteProcessorChange)
void setup_processor_boxes()
boost::shared_ptr< ARDOUR::Processor > _processor
PBD::ScopedConnection _route_processors_connection
Gtk::TreeModelColumn< std::string > text
void add_routes(ARDOUR::RouteList &)
Gtk::HButtonBox latency_button_box
std::list< boost::shared_ptr< Route > > RouteList
Definition: types.h:532
Placement
Definition: types.h:375
Gtk::Frame route_select_frame
Gtk::HPaned right_hpane
sigc::connection latency_click_connection
Gtk::VBox list_vpacker
Gtk::Frame output_frame
gint edit_input_configuration(GdkEventButton *ev)