Fix editor sizing issue introduced in 4dc65e66
[ardour.git] / gtk2_ardour / mixer_ui.h
index 3ab097f8b00aadf835be6c04dab3c92e325b7cd0..5908622c581bdf82092abaa1fa79781bef711e14 100644 (file)
@@ -26,6 +26,7 @@
 #include <gtkmm/scrolledwindow.h>
 #include <gtkmm/eventbox.h>
 #include <gtkmm/label.h>
+#include <gtkmm/comboboxtext.h>
 #include <gtkmm/button.h>
 #include <gtkmm/frame.h>
 #include <gtkmm/menu.h>
@@ -79,7 +80,7 @@ protected:
        virtual bool row_drop_possible_vfunc (const Gtk::TreeModel::Path&, const Gtk::SelectionData&) const;
 };
 
-class Mixer_UI : public ArdourWidgets::Tabbable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public AxisViewProvider
+class Mixer_UI : public ArdourWidgets::Tabbable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public AxisViewProvider, public Gtkmm2ext::ActionMapOwner
 {
 public:
        static Mixer_UI* instance();
@@ -98,6 +99,8 @@ public:
        XMLNode& get_state ();
        int set_state (const XMLNode&, int /* version */);
 
+       void save_plugin_order_file ();
+
        void show_mixer_list (bool yn);
        void show_monitor_section (bool);
 
@@ -112,7 +115,9 @@ public:
        void deselect_all_strip_processors();
        void delete_processors();
        void select_none ();
-       void select_all_tracks ();
+
+       void select_next_strip ();
+       void select_prev_strip ();
 
        void do_vca_assign (boost::shared_ptr<ARDOUR::VCA>);
        void do_vca_unassign (boost::shared_ptr<ARDOUR::VCA>);
@@ -130,6 +135,15 @@ public:
        void load_bindings ();
        Gtkmm2ext::Bindings*  bindings;
 
+       void showhide_vcas (bool on) {
+               if (on) { vca_vpacker.show(); } else { vca_vpacker.hide(); }
+       }
+#ifdef MIXBUS
+       void showhide_mixbusses (bool on) {
+               if (on) { mb_vpacker.show(); } else { mb_vpacker.hide(); }
+       }
+#endif
+
 protected:
        void set_axis_targets_for_operation ();
        ARDOUR::AutomationControlSet selected_gaincontrols ();
@@ -146,14 +160,15 @@ private:
        Gtk::VBox             mixer_scroller_vpacker;
        Gtk::VBox             list_vpacker;
        Gtk::Label            group_display_button_label;
-       Gtk::Button           group_display_button;
        Gtk::ScrolledWindow   track_display_scroller;
        Gtk::ScrolledWindow   group_display_scroller;
        Gtk::ScrolledWindow   favorite_plugins_scroller;
        Gtk::VBox             group_display_vbox;
-       Gtk::Frame            track_display_sample;
-       Gtk::Frame            group_display_sample;
-       Gtk::Frame            favorite_plugins_sample;
+       Gtk::Frame            track_display_frame;
+       Gtk::Frame            group_display_frame;
+       Gtk::Frame            favorite_plugins_frame;
+       Gtk::VBox             favorite_plugins_vbox;
+       Gtk::ComboBoxText     favorite_plugins_tag_combo;
        ArdourWidgets::VPane  rhs_pane1;
        ArdourWidgets::VPane  rhs_pane2;
        ArdourWidgets::HPane  inner_pane;
@@ -166,6 +181,8 @@ private:
        Gtk::EventBox         vca_scroller_base;
        Gtk::HBox             out_packer;
        ArdourWidgets::HPane  list_hpane;
+       Gtk::Button           add_button; // should really be an ArdourButton
+       Gtk::Button           add_vca_button;
 
        MixerGroupTabs* _group_tabs;
 
@@ -331,6 +348,7 @@ private:
        bool vca_button_release_event (GdkEventButton*, VCAMasterStrip*);
 
        Width _strip_width;
+       double _spill_scroll_position;
 
        void presentation_info_changed (PBD::PropertyChange const &);
        void sync_treeview_from_presentation_info (PBD::PropertyChange const &);
@@ -365,7 +383,14 @@ private:
 
        void store_current_favorite_order();
        void refiller (ARDOUR::PluginInfoList& result, const ARDOUR::PluginInfoList& plugs);
+
+       void plugin_list_changed ();
+
        void refill_favorite_plugins ();
+       void refill_tag_combo ();
+
+       void tag_combo_changed ();
+
        void sync_treeview_from_favorite_order ();
        void sync_treeview_favorite_ui_state (const Gtk::TreeModel::Path&, const Gtk::TreeModel::iterator&);
        void save_favorite_ui_state (const Gtk::TreeModel::iterator& iter, const Gtk::TreeModel::Path& path);
@@ -376,11 +401,12 @@ private:
        // true if mixer list is visible
        bool _show_mixer_list;
 
+       bool _strip_selection_change_without_scroll;
+
        mutable boost::weak_ptr<ARDOUR::Stripable> spilled_strip;
 
        void escape ();
 
-       Gtkmm2ext::ActionMap myactions;
        RouteProcessorSelection _selection;
        AxisViewSelection _axis_targets;