Update color stripable color-picker(s)
[ardour.git] / gtk2_ardour / vca_master_strip.h
1 /*
2     Copyright (C) 2016 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 #ifndef __ardour_vca_master_strip__
20 #define __ardour_vca_master_strip__
21
22 #include <boost/shared_ptr.hpp>
23
24 #include <gtkmm/box.h>
25 #include <gtkmm/menuitem.h>
26 #include <gtkmm/colorselection.h>
27
28 #include "ardour_button.h"
29 #include "axis_view.h"
30 #include "control_slave_ui.h"
31 #include "gain_meter.h"
32 #include "stripable_colorpicker.h"
33
34 namespace ARDOUR {
35         class GainControl;
36         class VCA;
37 }
38
39 class FloatingTextEntry;
40
41 class VCAMasterStrip : public AxisView, public Gtk::EventBox
42 {
43       public:
44         VCAMasterStrip (ARDOUR::Session*, boost::shared_ptr<ARDOUR::VCA>);
45         ~VCAMasterStrip ();
46
47         boost::shared_ptr<ARDOUR::Stripable> stripable() const;
48         ARDOUR::PresentationInfo const & presentation_info () const;
49
50         std::string name() const;
51         Gdk::Color color () const;
52         std::string state_id() const;
53         boost::shared_ptr<ARDOUR::VCA> vca() const { return _vca; }
54
55         static PBD::Signal1<void,VCAMasterStrip*> CatchDeletion;
56
57         bool marked_for_display () const;
58         bool set_marked_for_display (bool);
59
60      private:
61         boost::shared_ptr<ARDOUR::VCA> _vca;
62         GainMeter    gain_meter;
63
64         Gtk::Frame   global_frame;
65         Gtk::VBox    global_vpacker;
66         Gtk::HBox    top_padding;
67         Gtk::HBox    bottom_padding;
68         Gtk::HBox    solo_mute_box;
69         ArdourButton width_button;
70         ArdourButton color_button;
71         ArdourButton hide_button;
72         ArdourButton number_label;
73         ArdourButton solo_button;
74         ArdourButton mute_button;
75         Gtk::Menu*   context_menu;
76         Gtk::MessageDialog* delete_dialog;
77         ArdourButton vertical_button;
78         ControlSlaveUI control_slave_ui;
79         PBD::ScopedConnectionList vca_connections;
80
81         void spill ();
82         void spill_change (boost::shared_ptr<ARDOUR::Stripable>);
83         void hide_clicked();
84         bool width_button_pressed (GdkEventButton *);
85         void set_selected (bool);
86         bool solo_release (GdkEventButton*);
87         bool mute_release (GdkEventButton*);
88         void set_width (bool wide);
89         void set_solo_text ();
90         void solo_changed ();
91         void mute_changed ();
92         void unassign ();
93         void start_name_edit ();
94         void finish_name_edit (std::string, int);
95         bool vertical_button_press (GdkEventButton*);
96         bool number_button_press (GdkEventButton*);
97         void vca_property_changed (PBD::PropertyChange const & what_changed);
98         void update_vca_name ();
99         void build_context_menu ();
100         void hide_confirmation (int);
101         void self_delete ();
102         void remove ();
103         void drop_all_slaves ();
104         void assign_all_selected ();
105         void unassign_all_selected ();
106
107         void parameter_changed (std::string const& p);
108         void set_button_names ();
109         void update_bottom_padding ();
110
111         void start_color_edit ();
112         StripableColorDialog _color_picker;
113 };
114
115
116 #endif /* __ardour_vca_master_strip__ */