Monitor new signal to rebuild sendlist
[ardour.git] / gtk2_ardour / send_ui.h
1 /*
2  * Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
3  * Copyright (C) 2006-2009 Paul Davis <paul@linuxaudiosystems.com>
4  * Copyright (C) 2007-2011 David Robillard <d@drobilla.net>
5  * Copyright (C) 2009-2011 Carl Hetherington <carl@carlh.net>
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 __ardour_gtk_send_ui_h__
23 #define __ardour_gtk_send_ui_h__
24
25 #include "gain_meter.h"
26 #include "panner_ui.h"
27 #include "ardour_window.h"
28
29 namespace ARDOUR {
30         class Send;
31         class IOProcessor;
32 }
33
34 class IOSelector;
35
36 class SendUI : public Gtk::HBox
37 {
38   public:
39         SendUI (Gtk::Window *, boost::shared_ptr<ARDOUR::Send>, ARDOUR::Session*);
40         ~SendUI();
41
42         void update ();
43         void fast_update ();
44
45         IOSelector* io;
46
47         boost::shared_ptr<ARDOUR::Send>& send() { return _send; }
48
49   private:
50         boost::shared_ptr<ARDOUR::Send> _send;
51         GainMeter                       _gpm;
52         PannerUI                        _panners;
53         Gtk::VBox                       _vbox;
54         Gtk::VBox                       _hbox;
55
56         sigc::connection screen_update_connection;
57         sigc::connection fast_screen_update_connection;
58
59         void outs_changed (ARDOUR::IOChange, void*);
60         PBD::ScopedConnectionList connections;
61 };
62
63 class SendUIWindow : public ArdourWindow
64 {
65   public:
66         SendUIWindow(boost::shared_ptr<ARDOUR::Send>, ARDOUR::Session*);
67         ~SendUIWindow();
68
69         SendUI* ui;
70
71   private:
72         Gtk::HBox hpacker;
73
74         PBD::ScopedConnection going_away_connection;
75 };
76
77 #endif /* __ardour_gtk_send_ui_h__ */
78
79