Fix a double-free, introduced in b06713bd8e57
[ardour.git] / gtk2_ardour / vca_master_strip.h
index 5043c6144e95bab5972ab0b195bddd2e1699e023..0505788aafd6a918c5258c09dd52e99bc0fdfe28 100644 (file)
 #include <boost/shared_ptr.hpp>
 
 #include <gtkmm/box.h>
+#include <gtkmm/colorselection.h>
+#include <gtkmm/menuitem.h>
+#include <gtkmm/messagedialog.h>
+
+#include "widgets/ardour_button.h"
 
-#include "ardour_button.h"
 #include "axis_view.h"
+#include "control_slave_ui.h"
 #include "gain_meter.h"
+#include "stripable_colorpicker.h"
 
 namespace ARDOUR {
        class GainControl;
        class VCA;
 }
 
-class VCAMasterStrip : public AxisView, public Gtk::VBox
+class FloatingTextEntry;
+
+class VCAMasterStrip : public AxisView, public Gtk::EventBox
 {
-      public:
+public:
        VCAMasterStrip (ARDOUR::Session*, boost::shared_ptr<ARDOUR::VCA>);
+       ~VCAMasterStrip ();
+
+       boost::shared_ptr<ARDOUR::Stripable> stripable() const;
+       ARDOUR::PresentationInfo const & presentation_info () const;
 
        std::string name() const;
-       std::string state_id() const { return "VCAMasterStrip"; }
+       Gdk::Color color () const;
+       std::string state_id() const;
        boost::shared_ptr<ARDOUR::VCA> vca() const { return _vca; }
 
-      private:
+       static PBD::Signal1<void,VCAMasterStrip*> CatchDeletion;
+
+       bool marked_for_display () const;
+       bool set_marked_for_display (bool);
+
+private:
        boost::shared_ptr<ARDOUR::VCA> _vca;
-       ArdourButton name_button;
-       ArdourButton active_button;
        GainMeter    gain_meter;
+
+       Gtk::Frame                  global_frame;
+       Gtk::VBox                   global_vpacker;
+       Gtk::HBox                   bottom_padding;
+       Gtk::HBox                   solo_mute_box;
+       ArdourWidgets::ArdourButton width_button;
+       ArdourWidgets::ArdourButton color_button;
+       ArdourWidgets::ArdourButton hide_button;
+       ArdourWidgets::ArdourButton number_label;
+       ArdourWidgets::ArdourButton solo_button;
+       ArdourWidgets::ArdourButton mute_button;
+       Gtk::Menu*                  context_menu;
+       Gtk::MessageDialog*         delete_dialog;
+       ArdourWidgets::ArdourButton vertical_button;
+       ControlSlaveUI              control_slave_ui;
+       PBD::ScopedConnectionList   vca_connections;
+
+       void spill ();
+       void spill_change (boost::shared_ptr<ARDOUR::Stripable>);
+       void hide_clicked();
+       bool width_button_pressed (GdkEventButton *);
+       void set_selected (bool);
+       bool solo_release (GdkEventButton*);
+       bool mute_release (GdkEventButton*);
+       void set_width (bool wide);
+       void set_solo_text ();
+       void solo_changed ();
+       void mute_changed ();
+       void unassign ();
+       void start_name_edit ();
+       void finish_name_edit (std::string, int);
+       bool vertical_button_press (GdkEventButton*);
+       bool number_button_press (GdkEventButton*);
+       void vca_property_changed (PBD::PropertyChange const & what_changed);
+       void update_vca_name ();
+       void build_context_menu ();
+       void hide_confirmation (int);
+       void self_delete ();
+       void remove ();
+       void drop_all_slaves ();
+       void assign_all_selected ();
+       void unassign_all_selected ();
+
+       void parameter_changed (std::string const& p);
+       void set_button_names ();
+       void update_bottom_padding ();
+
+       void start_color_edit ();
+       StripableColorDialog _color_picker;
 };