Ardour  9.0-18-g01809b426c
mixer_ui.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2007 Taybin Rutkin <taybin@taybin.com>
3  * Copyright (C) 2005-2018 Paul Davis <paul@linuxaudiosystems.com>
4  * Copyright (C) 2006 Nick Mainsbridge <mainsbridge@gmail.com>
5  * Copyright (C) 2007-2009 David Robillard <d@drobilla.net>
6  * Copyright (C) 2009-2012 Carl Hetherington <carl@carlh.net>
7  * Copyright (C) 2013-2019 Robin Gareus <robin@gareus.org>
8  * Copyright (C) 2014-2018 Ben Loftis <ben@harrisonconsoles.com>
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
23  */
24 
25 #pragma once
26 
27 #include <list>
28 
29 #include <ytkmm/box.h>
30 #include <ytkmm/scrolledwindow.h>
31 #include <ytkmm/eventbox.h>
32 #include <ytkmm/label.h>
33 #include <ytkmm/comboboxtext.h>
34 #include <ytkmm/button.h>
35 #include <ytkmm/frame.h>
36 #include <ytkmm/menu.h>
37 #include <ytkmm/treeview.h>
38 #include <ytkmm/treestore.h>
39 #include <ytkmm/liststore.h>
40 
41 #include "pbd/stateful.h"
42 #include "pbd/signals.h"
43 
44 #include "ardour/ardour.h"
45 #include "ardour/types.h"
46 #include "ardour/session_handle.h"
47 #include "ardour/plugin.h"
48 #include "ardour/plugin_manager.h"
49 
50 #include <gtkmm2ext/bindings.h>
51 #include "gtkmm2ext/dndtreeview.h"
52 #include "gtkmm2ext/treeutils.h"
53 
55 #include "widgets/frame.h"
56 #include "widgets/metabutton.h"
57 #include "widgets/pane.h"
58 #include "widgets/tabbable.h"
59 
60 #include "application_bar.h"
61 #include "axis_provider.h"
62 #include "enums.h"
63 #include "monitor_section.h"
65 
66 namespace ARDOUR {
67  class Route;
68  class RouteGroup;
69  class VCA;
70 };
71 
72 class AxisView;
73 class FoldbackStrip;
74 class MixerStrip;
75 class PluginSelector;
76 class MixerGroupTabs;
77 class MonitorSection;
78 class SurroundStrip;
79 class VCAMasterStrip;
80 
82 {
83 public:
84  static Glib::RefPtr<PluginTreeStore> create(const Gtk::TreeModelColumnRecord& columns) {
85  return Glib::RefPtr<PluginTreeStore> (new PluginTreeStore (columns));
86  }
87 
88 protected:
89  PluginTreeStore (const Gtk::TreeModelColumnRecord& columns) : Gtk::TreeStore (columns) {}
90  virtual bool row_draggable_vfunc (const Gtk::TreeModel::Path&) const { return true; }
92 };
93 
95 {
96 public:
97  static Mixer_UI* instance();
99 
100  Gtk::Window* use_own_window (bool and_fill_it);
101  void show_window ();
102 
104 
106 
107  void set_strip_width (Width, bool save = false);
108  Width get_strip_width () const { return _strip_width; }
109 
110  XMLNode& get_state () const;
111  int set_state (const XMLNode&, int /* version */);
112 
114 
117 
120 
122 
125  void select_none ();
126 
129 
130  void store_mixer_scene (size_t);
131  void recall_mixer_scene (size_t, bool interactive = true, bool for_selection = false);
132  void clear_mixer_scene (size_t, bool interactive = true);
133  void rename_mixer_scene (size_t n);
134 
135  void do_vca_assign (std::shared_ptr<ARDOUR::VCA>);
136  void do_vca_unassign (std::shared_ptr<ARDOUR::VCA>);
137  void show_spill (std::shared_ptr<ARDOUR::Stripable>);
138  bool showing_spill_for (std::shared_ptr<ARDOUR::Stripable>) const;
139  void fan_out (std::weak_ptr<ARDOUR::Route>, bool to_busses, bool group);
140 
141  sigc::signal1<void,std::shared_ptr<ARDOUR::Stripable> > show_spill_change;
142 
144 
145  void show_editor_window () const;
146 
148 
150 
151  void load_bindings ();
153 
157 
159 
162 
165 
166  void toggle_vcas ();
167  void showhide_vcas (bool on);
168 
169 #ifdef MIXBUS
170  void toggle_mixbuses ();
171  void showhide_mixbusses (bool on);
172 #endif
173 
174  bool screenshot (std::string const&);
175 
176  void toggle_monitor_action (ARDOUR::MonitorChoice monitor_choice, bool group_override = false, bool all = false);
177 
179  public:
184  }
191  }
192  };
193 
194 protected:
195  friend class RedisplaySuspender;
196 
199 
200 private:
203 
230 
234 
239 
240  std::vector<ArdourWidgets::ArdourButton*> _mixer_scene_buttons;
241  std::vector<Gtk::Label*> _mixer_scene_labels;
243 
248 
250 
253 
254  std::list<MixerStrip *> strips;
255 
256  void scroller_drag_data_received (const Glib::RefPtr<Gdk::DragContext>&, int, int, const Gtk::SelectionData&, guint, guint);
258  void scroll_left ();
259  void scroll_right ();
262  void toggle_midi_input_active (bool flip_others);
263 
264  void move_vca_into_view (std::shared_ptr<ARDOUR::Stripable>);
265  void move_stripable_into_view (std::shared_ptr<ARDOUR::Stripable>);
266 
268 
270 
271  void add_sidebar_page (std::string const&, std::string const&, Gtk::Widget&);
272 
280 
281  MixerStrip* strip_by_route (std::shared_ptr<ARDOUR::Route>) const;
282  MixerStrip* strip_by_stripable (std::shared_ptr<ARDOUR::Stripable>) const;
283 
284  AxisView* axis_view_by_stripable (std::shared_ptr<ARDOUR::Stripable>) const;
285  AxisView* axis_view_by_control (std::shared_ptr<ARDOUR::AutomationControl>) const;
286 
287  gint start_updating ();
288  gint stop_updating ();
289 
291 
294 
296 
298  void spill_redisplay (std::shared_ptr<ARDOUR::Stripable>);
302 
304  void track_list_reorder (const Gtk::TreeModel::Path& path, const Gtk::TreeModel::iterator& iter, int* new_order);
305 
309  void plugin_drop (const Glib::RefPtr<Gdk::DragContext>&, const Gtk::SelectionData& data);
310  bool plugin_drag_motion (Glib::RefPtr<Gdk::DragContext> const&, int, int, guint);
311 
316  AddBottom
317  };
318 
324 
326 
329  void track_visibility_changed (std::string const & path);
331 
340 
342 
343  void group_selected (gint row, gint col, GdkEvent *ev);
344  void group_unselected (gint row, gint col, GdkEvent *ev);
350  void add_route_group (std::shared_ptr<ARDOUR::RouteGroup>);
352  void route_group_name_edit (const std::string&, const std::string&);
355 
357  void track_column_click (gint);
359 
361 
367 
368  void stripable_property_changed (const PBD::PropertyChange& what_changed, std::weak_ptr<ARDOUR::Stripable> ws);
369  void route_group_property_changed (std::weak_ptr<ARDOUR::RouteGroup>, const PBD::PropertyChange &);
370 
371  /* various treeviews */
372 
375  add (text);
376  add (visible);
377  add (stripable);
378  add (strip);
379  }
384  };
385 
388  add (visible);
389  add (text);
390  add (group);
391  }
395  };
396 
399  add (name);
400  add (plugin);
401  }
404  };
405 
407 
408  std::list<std::string> favorite_ui_order;
409  std::map<std::string, bool> favorite_ui_state;
410 
414 
418 
419  Glib::RefPtr<Gtk::ListStore> track_model;
420  Glib::RefPtr<Gtk::ListStore> group_model;
421  Glib::RefPtr<PluginTreeStore> favorite_plugins_model;
422 
425 
428 
431 
435 
439 
440  void parameter_changed (std::string const &);
441  void set_route_group_activation (std::shared_ptr<ARDOUR::RouteGroup>, bool);
442 
445 
446  static const int32_t default_width = 478;
447  static const int32_t default_height = 765;
448 
454 
455  void update_title ();
457 
458  friend class MixerGroupTabs;
459 
463 
465 
471  };
474  void update_sidebar_pagers (guint);
475 
480 
487 
490 
492 
493  mutable std::weak_ptr<ARDOUR::Stripable> spilled_strip;
494 
495  void escape ();
496 
499 
500  void spill_nothing ();
502 
503  void vca_assign (std::shared_ptr<ARDOUR::VCA>);
504  void vca_unassign (std::shared_ptr<ARDOUR::VCA>);
505 
506  template<class T> void control_action (std::shared_ptr<T> (ARDOUR::Stripable::*get_control)() const);
507  void solo_action ();
508  void mute_action ();
513 
515  void cut_processors ();
519  void ab_plugins ();
520 };
void add(TreeModelColumnBase &column)
void path(Glib::ustring &path, Glib::ustring &path_reversed)
Compute a widget's path of the form "GtkWindow.MyLabel".
static const int32_t default_width
Definition: mixer_ui.h:446
Gtk::ScrolledWindow scroller
Definition: mixer_ui.h:206
void select_prev_strip()
void maximise_mixer_space()
void save_plugin_order_file()
PBD::ControllableSet selected_gaincontrols()
bool ignore_track_reorder
Definition: mixer_ui.h:436
bool scene_label_press(GdkEventButton *ev, int)
void focus_on_clock()
PluginSelector * plugin_selector()
void show_spill(std::shared_ptr< ARDOUR::Stripable >)
void vca_unassign(std::shared_ptr< ARDOUR::VCA >)
StripableDisplayModelColumns stripable_columns
Definition: mixer_ui.h:411
MixerStrip * strip_by_stripable(std::shared_ptr< ARDOUR::Stripable >) const
Gtk::TreeView group_display
Definition: mixer_ui.h:416
void move_stripable_into_view(std::shared_ptr< ARDOUR::Stripable >)
void toggle_midi_input_active(bool flip_others)
ArdourWidgets::MetaButton _sidebar_pager2
Definition: mixer_ui.h:233
sigc::signal1< void, std::shared_ptr< ARDOUR::Stripable > > show_spill_change
Definition: mixer_ui.h:141
void add_favorite_processor(ARDOUR::PluginPresetPtr, ProcessorPosition)
Gtk::ScrolledWindow track_display_scroller
Definition: mixer_ui.h:212
void set_all_audio_midi_visibility(int, bool)
GroupDisplayModelColumns group_columns
Definition: mixer_ui.h:412
Gtk::VBox vca_vpacker
Definition: mixer_ui.h:225
void escape()
void hide_all_audiotracks()
void cut_processors()
Gtk::VBox _mixer_scene_vbox
Definition: mixer_ui.h:238
int set_state(const XMLNode &, int)
void popup_scene_menu(GdkEventButton *ev, int)
double _spill_scroll_position
Definition: mixer_ui.h:430
void show_all_audiotracks()
gint stop_updating()
bool _maximised
true if we are in fullscreen mode
Definition: mixer_ui.h:489
void add_routes(ARDOUR::RouteList &)
void route_group_name_edit(const std::string &, const std::string &)
void track_column_click(gint)
void group_display_selection_changed()
bool on_vca_scroll_event(GdkEventScroll *)
void plugin_search_entry_changed()
AxisViewSelection _axis_targets
Definition: mixer_ui.h:498
Gtk::VBox favorite_plugins_vbox
Definition: mixer_ui.h:216
void set_strip_width(Width, bool save=false)
bool plugin_drag_motion(Glib::RefPtr< Gdk::DragContext > const &, int, int, guint)
void refill_favorite_plugins()
void register_actions()
FoldbackStrip * foldback_strip
Definition: mixer_ui.h:365
gint start_updating()
Width get_strip_width() const
Definition: mixer_ui.h:108
void parameter_changed(std::string const &)
Width _strip_width
Definition: mixer_ui.h:429
void paste_processors()
void control_action(std::shared_ptr< T >(ARDOUR::Stripable::*get_control)() const)
Gtk::HBox out_packer
Definition: mixer_ui.h:229
void session_going_away()
void new_track_or_bus()
void rec_enable_action()
void remove_selected_from_favorites()
Gtk::Entry plugin_search_entry
Definition: mixer_ui.h:218
Glib::RefPtr< PluginTreeStore > favorite_plugins_model
Definition: mixer_ui.h:421
void add_masters(ARDOUR::VCAList &)
bool _strip_selection_change_without_scroll
Definition: mixer_ui.h:491
void popup_note_context_menu(GdkEventButton *)
void load_bindings()
Gtk::VBox strip_group_box
Definition: mixer_ui.h:221
Gtk::Notebook _sidebar_notebook
Definition: mixer_ui.h:231
void monitor_section_detached()
bool group_display_button_press(GdkEventButton *)
void set_axis_targets_for_operation()
void add_sidebar_page(std::string const &, std::string const &, Gtk::Widget &)
void group_unselected(gint row, gint col, GdkEvent *ev)
void store_mixer_scene(size_t)
void route_group_row_change(const Gtk::TreeModel::Path &path, const Gtk::TreeModel::iterator &iter)
void setup_track_display()
bool ignore_plugin_reorder
Definition: mixer_ui.h:438
void remove_surround_master(SurroundStrip *)
void step_gain_down_action()
MonitorSection _monitor_section
Definition: mixer_ui.h:362
bool ignore_plugin_refill
Definition: mixer_ui.h:437
void build_track_menu()
PBD::ScopedConnection _spill_gone_connection
Definition: mixer_ui.h:501
bool _show_foldback_strip
Definition: mixer_ui.h:366
void toggle_foldback_strip()
void do_vca_assign(std::shared_ptr< ARDOUR::VCA >)
void track_list_delete(const Gtk::TreeModel::Path &)
void set_plugin_list_mode(PluginListMode plm)
MonitorSection & monitor_section()
Definition: mixer_ui.h:121
void sync_treeview_favorite_ui_state(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &)
void toggle_mixer_list()
void spill_redisplay(std::shared_ptr< ARDOUR::Stripable >)
void hide_all_miditracks()
bool in_group_row_change
Definition: mixer_ui.h:341
Gtk::VBox list_vpacker
Definition: mixer_ui.h:210
void refiller(ARDOUR::PluginInfoList &result, const ARDOUR::PluginInfoList &plugs)
void showhide_vcas(bool on)
void save_favorite_ui_state(const Gtk::TreeModel::iterator &iter, const Gtk::TreeModel::Path &path)
void rename_mixer_scene(size_t n)
Gtkmm2ext::Bindings * bindings
Definition: mixer_ui.h:152
bool strip_button_release_event(GdkEventButton *, MixerStrip *)
void sync_surround_action()
void do_vca_unassign(std::shared_ptr< ARDOUR::VCA >)
void monitor_section_going_away()
Gtk::TreeView track_display
Definition: mixer_ui.h:415
void remove_strip(MixerStrip *)
ArdourWidgets::ArdourButton plugin_search_clear_button
Definition: mixer_ui.h:219
static Mixer_UI * _instance
Definition: mixer_ui.h:202
void scroll_right()
void remove_master(VCAMasterStrip *)
void route_group_property_changed(std::weak_ptr< ARDOUR::RouteGroup >, const PBD::PropertyChange &)
void sync_treeview_from_presentation_info(PBD::PropertyChange const &)
void track_visibility_changed(std::string const &path)
void clear_mixer_scene(size_t, bool interactive=true)
void toggle_monitor_action(ARDOUR::MonitorChoice monitor_choice, bool group_override=false, bool all=false)
void activate_all_route_groups()
void toggle_mixer_strip()
bool track_display_button_press(GdkEventButton *)
std::vector< Gtk::Label * > _mixer_scene_labels
Definition: mixer_ui.h:241
bool showing_spill_for(std::shared_ptr< ARDOUR::Stripable >) const
MixerGroupTabs * _group_tabs
Definition: mixer_ui.h:249
ArdourWidgets::MetaButton _sidebar_pager1
Definition: mixer_ui.h:232
void show_strip(MixerStrip *)
void show_all_miditracks()
ProcessorPosition
Definition: mixer_ui.h:312
@ AddTop
Definition: mixer_ui.h:313
@ AddPostFader
Definition: mixer_ui.h:315
@ AddPreFader
Definition: mixer_ui.h:314
@ AddBottom
Definition: mixer_ui.h:316
void remove_foldback(FoldbackStrip *)
bool scene_button_release(GdkEventButton *, int)
void deselect_all_strip_processors()
void fan_out(std::weak_ptr< ARDOUR::Route >, bool to_busses, bool group)
Gtk::Window * use_own_window(bool and_fill_it)
void add_route_group(std::shared_ptr< ARDOUR::RouteGroup >)
void hide_all_routes()
void unity_gain_action()
bool plugin_row_button_press(GdkEventButton *)
sigc::connection fast_screen_update_connection
Definition: mixer_ui.h:292
AxisView * axis_view_by_stripable(std::shared_ptr< ARDOUR::Stripable >) const
void route_group_row_deleted(Gtk::TreeModel::Path const &)
Gtkmm2ext::DnDTreeView< ARDOUR::PluginPresetPtr > favorite_plugins_display
Definition: mixer_ui.h:417
void showhide_foldback_strip(bool)
void show_window()
void mute_action()
void vca_assign(std::shared_ptr< ARDOUR::VCA >)
void show_all_audiobus()
void select_none()
void plugin_drop(const Glib::RefPtr< Gdk::DragContext > &, const Gtk::SelectionData &data)
Gtk::VBox mixer_scroller_vpacker
Definition: mixer_ui.h:209
MixerStrip * strip_by_x(int x)
void update_sidebar_pagers(guint)
Glib::RefPtr< Gtk::ListStore > track_model
Definition: mixer_ui.h:419
AxisView * axis_view_by_control(std::shared_ptr< ARDOUR::AutomationControl >) const
void update_track_visibility()
SurroundStrip * _surround_strip
Definition: mixer_ui.h:364
void move_vca_into_view(std::shared_ptr< ARDOUR::Stripable >)
bool on_scroll_event(GdkEventScroll *)
bool _in_group_rebuild_or_clear
Definition: mixer_ui.h:452
ApplicationBar _application_bar
Definition: mixer_ui.h:360
void step_gain_up_action()
void group_display_active_clicked()
void toggle_mixer_props()
void show_all_routes()
bool strip_scroller_button_event(GdkEventButton *)
void store_current_favorite_order()
Gtk::ScrolledWindow group_display_scroller
Definition: mixer_ui.h:213
void track_name_changed(MixerStrip *)
bool scene_button_press(GdkEventButton *, int)
void route_groups_changed()
void favorite_plugins_deleted(const Gtk::TreeModel::Path &)
std::list< std::string > favorite_ui_order
Definition: mixer_ui.h:408
void maybe_refill_favorite_plugins(PluginListMode)
Gtk::EventBox vca_scroller_base
Definition: mixer_ui.h:228
Gtk::HBox strip_packer
Definition: mixer_ui.h:222
bool vca_button_release_event(GdkEventButton *, VCAMasterStrip *)
void set_session(ARDOUR::Session *)
bool screenshot(std::string const &)
void ab_plugins()
void fast_update_strips()
void presentation_info_changed(PBD::PropertyChange const &)
RouteProcessorSelection _selection
Definition: mixer_ui.h:497
void spill_nothing()
Gtk::HBox favorite_plugins_search_hbox
Definition: mixer_ui.h:217
Glib::RefPtr< Gtk::ListStore > group_model
Definition: mixer_ui.h:420
ARDOUR::MixerScene * _mixer_scene_release
Definition: mixer_ui.h:242
void hide_all_audiobus()
void scroll_left()
Gtk::EventBox vca_label_bar
Definition: mixer_ui.h:226
void set_route_group_activation(std::shared_ptr< ARDOUR::RouteGroup >, bool)
void disable_all_route_groups()
void add_selected_processor(ProcessorPosition)
PluginListMode
Definition: mixer_ui.h:466
@ PLM_Favorite
Definition: mixer_ui.h:467
@ PLM_SearchAll
Definition: mixer_ui.h:470
@ PLM_Recent
Definition: mixer_ui.h:468
@ PLM_TopHits
Definition: mixer_ui.h:469
Gtk::HBox vca_hpacker
Definition: mixer_ui.h:224
bool _route_deletion_in_progress
Definition: mixer_ui.h:453
void solo_action()
void delete_selected_preset()
RouteProcessorSelection & selection()
Definition: mixer_ui.h:143
void update_scene_buttons()
std::map< std::string, bool > favorite_ui_state
Definition: mixer_ui.h:409
static Mixer_UI * instance()
ArdourWidgets::Frame _mixer_scene_frame
Definition: mixer_ui.h:236
XMLNode & get_state() const
void toggle_vcas()
void toggle_processors()
Gtk::HBox global_hpacker
Definition: mixer_ui.h:204
PluginSelector * _plugin_selector
Definition: mixer_ui.h:363
void select_all_processors()
void strip_width_changed()
void recall_mixer_scene(size_t, bool interactive=true, bool for_selection=false)
void toggle_surround_master()
void select_next_strip()
std::weak_ptr< ARDOUR::Stripable > spilled_strip
Definition: mixer_ui.h:493
void update_title()
Gtk::Label group_display_button_label
Definition: mixer_ui.h:211
Gtk::VBox group_display_vbox
Definition: mixer_ui.h:215
static const int32_t default_height
Definition: mixer_ui.h:447
void showhide_monitor_section(bool)
void toggle_monitor_section()
Gtk::ScrolledWindow favorite_plugins_scroller
Definition: mixer_ui.h:214
Gtk::Table _mixer_scene_table
Definition: mixer_ui.h:237
void delete_processors()
void show_editor_window() const
void restore_mixer_space()
ArdourWidgets::HPane inner_pane
Definition: mixer_ui.h:220
void group_selected(gint row, gint col, GdkEvent *ev)
enum PluginListMode plugin_list_mode
Definition: mixer_ui.h:472
void vca_scroll_left()
Gtk::ScrolledWindow vca_scroller
Definition: mixer_ui.h:223
PluginsDisplayModelColumns favorite_plugins_columns
Definition: mixer_ui.h:413
void initial_track_display()
void scroller_drag_data_received(const Glib::RefPtr< Gdk::DragContext > &, int, int, const Gtk::SelectionData &, guint, guint)
void new_masters_created()
Gtk::Menu * track_menu
Definition: mixer_ui.h:356
void add_stripables(ARDOUR::StripableList &)
void sync_presentation_info_from_treeview()
void stripable_property_changed(const PBD::PropertyChange &what_changed, std::weak_ptr< ARDOUR::Stripable > ws)
bool no_track_list_redisplay
Definition: mixer_ui.h:299
Gtk::VBox global_vpacker
Definition: mixer_ui.h:205
std::list< MixerStrip * > strips
Definition: mixer_ui.h:254
void new_route_group()
void plugin_search_clear_button_clicked()
void plugin_row_activated(const Gtk::TreeModel::Path &path, Gtk::TreeViewColumn *column)
ARDOUR::PluginPresetPtr selected_plugin()
Gtk::HBox scroller_hpacker
Definition: mixer_ui.h:208
MixerStrip * strip_by_route(std::shared_ptr< ARDOUR::Route >) const
void redisplay_track_list()
void remove_selected_route_group()
ARDOUR::PluginInfoList plugin_list
Definition: mixer_ui.h:406
void vca_scroll_right()
void monitor_section_attached()
std::vector< ArdourWidgets::ArdourButton * > _mixer_scene_buttons
Definition: mixer_ui.h:240
Gtk::EventBox _mixer_scene_spacer
Definition: mixer_ui.h:235
void set_all_strips_visibility(bool yn)
void hide_strip(MixerStrip *)
Gtk::Label vca_label
Definition: mixer_ui.h:227
void sync_treeview_from_favorite_order()
void copy_processors()
Gtk::EventBox scroller_base
Definition: mixer_ui.h:207
void track_list_reorder(const Gtk::TreeModel::Path &path, const Gtk::TreeModel::iterator &iter, int *new_order)
static Glib::RefPtr< PluginTreeStore > create(const Gtk::TreeModelColumnRecord &columns)
Definition: mixer_ui.h:84
virtual bool row_drop_possible_vfunc(const Gtk::TreeModel::Path &, const Gtk::SelectionData &) const
PluginTreeStore(const Gtk::TreeModelColumnRecord &columns)
Definition: mixer_ui.h:89
virtual bool row_draggable_vfunc(const Gtk::TreeModel::Path &) const
Definition: mixer_ui.h:90
Definition: xml++.h:114
std::list< PluginInfoPtr > PluginInfoList
Definition: plugin.h:65
std::shared_ptr< PluginPreset > PluginPresetPtr
Definition: plugin.h:484
std::list< std::shared_ptr< Stripable > > StripableList
std::list< std::shared_ptr< VCA > > VCAList
std::list< std::shared_ptr< Route > > RouteList
void save(const std::string &filename)
Definition: ardour_ui.h:192
DebugBits VCA
std::set< std::shared_ptr< Controllable > > ControllableSet
Definition: controllable.h:40
Gtk::TreeModelColumn< std::shared_ptr< ARDOUR::RouteGroup > > group
Definition: mixer_ui.h:394
Gtk::TreeModelColumn< std::string > text
Definition: mixer_ui.h:393
Gtk::TreeModelColumn< bool > visible
Definition: mixer_ui.h:392
Gtk::TreeModelColumn< std::string > name
Definition: mixer_ui.h:402
Gtk::TreeModelColumn< ARDOUR::PluginPresetPtr > plugin
Definition: mixer_ui.h:403
Gtk::TreeModelColumn< std::shared_ptr< ARDOUR::Stripable > > stripable
Definition: mixer_ui.h:382
Gtk::TreeModelColumn< AxisView * > strip
Definition: mixer_ui.h:383
Gtk::TreeModelColumn< std::string > text
Definition: mixer_ui.h:381
Gtk::TreeModelColumn< bool > visible
Definition: mixer_ui.h:380