X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmixer_ui.h;h=1315f74f5dee05bc4905c980a409468fd1a1c4ba;hb=d53af10c9261172c57dbc66b6b4d1143b37bbcae;hp=be557ec018a35edd93f76d52997708712736e314;hpb=6af51b52ffd66612b06b14bda8d7a51b7a9efe22;p=ardour.git diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index be557ec018..1315f74f5d 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -26,10 +26,12 @@ #include #include #include +#include #include #include #include #include +#include #include #include "pbd/stateful.h" @@ -43,10 +45,12 @@ #include #include "gtkmm2ext/dndtreeview.h" -#include -#include "gtkmm2ext/tabbable.h" #include "gtkmm2ext/treeutils.h" +#include "widgets/pane.h" +#include "widgets/tabbable.h" + +#include "axis_provider.h" #include "enums.h" #include "route_processor_selection.h" @@ -76,9 +80,9 @@ protected: virtual bool row_drop_possible_vfunc (const Gtk::TreeModel::Path&, const Gtk::SelectionData&) const; }; -class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr +class Mixer_UI : public ArdourWidgets::Tabbable, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr, public AxisViewProvider { - public: +public: static Mixer_UI* instance(); ~Mixer_UI(); @@ -95,6 +99,8 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p 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); @@ -108,9 +114,11 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p void deselect_all_strip_processors(); void delete_processors(); - void select_strip (MixerStrip&, bool add=false); void select_none (); + void select_next_strip (); + void select_prev_strip (); + void do_vca_assign (boost::shared_ptr); void do_vca_unassign (boost::shared_ptr); void show_spill (boost::shared_ptr); @@ -124,13 +132,23 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p void register_actions (); - void load_bindings (); - Gtkmm2ext::Bindings* bindings; + 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: +protected: void set_axis_targets_for_operation (); + ARDOUR::AutomationControlSet selected_gaincontrols (); - private: +private: Mixer_UI (); static Mixer_UI* _instance; Gtk::VBox _content; @@ -142,7 +160,6 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p 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; @@ -150,9 +167,11 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p Gtk::Frame track_display_frame; Gtk::Frame group_display_frame; Gtk::Frame favorite_plugins_frame; - Gtkmm2ext::VPane rhs_pane1; - Gtkmm2ext::VPane rhs_pane2; - Gtkmm2ext::HPane inner_pane; + Gtk::VBox favorite_plugins_vbox; + Gtk::ComboBoxText favorite_plugins_tag_combo; + ArdourWidgets::VPane rhs_pane1; + ArdourWidgets::VPane rhs_pane2; + ArdourWidgets::HPane inner_pane; Gtk::HBox strip_packer; Gtk::ScrolledWindow vca_scroller; Gtk::HBox vca_hpacker; @@ -161,7 +180,9 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p Gtk::Label vca_label; Gtk::EventBox vca_scroller_base; Gtk::HBox out_packer; - Gtkmm2ext::HPane list_hpane; + ArdourWidgets::HPane list_hpane; + Gtk::Button add_button; // should really be an ArdourButton + Gtk::Button add_vca_button; MixerGroupTabs* _group_tabs; @@ -188,18 +209,9 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p MixerStrip* strip_by_route (boost::shared_ptr) const; MixerStrip* strip_by_stripable (boost::shared_ptr) const; - AxisView* axis_by_stripable (boost::shared_ptr) const; - - void hide_all_strips (bool with_select); - void unselect_all_strips(); - void select_all_strips (); - void unselect_all_audiotrack_strips (); - void select_all_audiotrack_strips (); - void unselect_all_audiobus_strips (); - void select_all_audiobus_strips (); - void strip_select_op (bool audiotrack, bool select); - void select_strip_op (MixerStrip*, bool select); + AxisView* axis_view_by_stripable (boost::shared_ptr) const; + AxisView* axis_view_by_control (boost::shared_ptr) const; gint start_updating (); gint stop_updating (); @@ -239,7 +251,6 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p ARDOUR::PluginPresetPtr selected_plugin (); void initial_track_display (); - void show_track_list_menu (); void set_all_strips_visibility (bool yn); void set_all_audio_midi_visibility (int, bool); @@ -334,8 +345,10 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p void group_display_selection_changed (); bool strip_button_release_event (GdkEventButton*, MixerStrip*); + 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 &); @@ -353,8 +366,8 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p static const int32_t default_height = 765; /** true if we are rebuilding the route group list, or clearing - it during a session teardown. - */ + * it during a session teardown. + */ bool _in_group_rebuild_or_clear; bool _route_deletion_in_progress; @@ -370,7 +383,14 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p 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); @@ -381,6 +401,8 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p // true if mixer list is visible bool _show_mixer_list; + bool _strip_selection_change_without_scroll; + mutable boost::weak_ptr spilled_strip; void escape ();