Ardour  9.0-pre0-582-g084a23a80d
processor_box.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2007-2014 David Robillard <d@drobilla.net>
3  * Copyright (C) 2007-2018 Paul Davis <paul@linuxaudiosystems.com>
4  * Copyright (C) 2008-2012 Carl Hetherington <carl@carlh.net>
5  * Copyright (C) 2013-2019 Robin Gareus <robin@gareus.org>
6  * Copyright (C) 2014-2018 Ben Loftis <ben@harrisonconsoles.com>
7  * Copyright (C) 2017 Johannes Mueller <github@johannes-mueller.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License along
20  * with this program; if not, write to the Free Software Foundation, Inc.,
21  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22  */
23 
24 #ifndef __ardour_gtk_processor_box__
25 #define __ardour_gtk_processor_box__
26 
27 #include <cmath>
28 #include <vector>
29 
30 
31 #include <gtkmm/box.h>
32 #include <gtkmm/eventbox.h>
33 #include <gtkmm/menu.h>
34 #include <gtkmm/scrolledwindow.h>
35 
36 #include "gtkmm2ext/bindings.h"
37 #include "gtkmm2ext/dndtreeview.h"
38 #include "gtkmm2ext/dndvbox.h"
40 
41 #include "pbd/stateful.h"
42 #include "pbd/signals.h"
43 
44 #include "ardour/types.h"
45 #include "ardour/ardour.h"
46 #include "ardour/plugin_insert.h"
47 #include "ardour/luaproc.h"
48 #include "ardour/port_insert.h"
49 #include "ardour/processor.h"
50 #include "ardour/route.h"
51 #include "ardour/session_handle.h"
52 
53 #include "pbd/fastlog.h"
54 
55 #include "widgets/ardour_button.h"
56 #include "widgets/ardour_fader.h"
58 
59 #ifdef HAVE_BEATBOX
60 #include "beatbox_gui.h"
61 #endif
62 #include "plugin_interest.h"
63 #include "plugin_display.h"
64 #include "io_selector.h"
65 #include "send_ui.h"
66 #include "enums.h"
67 #include "window_manager.h"
68 
69 class MotionController;
70 class PluginSelector;
71 class PluginUIWindow;
72 class ProcessorSelection;
73 class MixerStrip;
74 
75 namespace ARDOUR {
76  class Connection;
77  class IO;
78  class Insert;
79  class Plugin;
80  class PluginInsert;
81  class PortInsert;
82  class Route;
83  class Session;
84 }
85 
86 class ProcessorBox;
87 
89 {
90 public:
91  ProcessorWindowProxy (std::string const &, ProcessorBox *, std::weak_ptr<ARDOUR::Processor>);
93 
94  Gtk::Window* get (bool create = false);
95 
96  std::weak_ptr<ARDOUR::Processor> processor () const {
97  return _processor;
98  }
99 
101  void show_the_right_window (bool show_not_toggle = false);
102  void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; }
103 
104  int set_state (const XMLNode&, int);
105  XMLNode& get_state () const;
106 
107  bool visible() const;
108  bool fully_visible() const;
109 
110 private:
112  std::weak_ptr<ARDOUR::Processor> _processor;
113  bool is_custom;
115 
117  sigc::connection _unmap_connection;
118  sigc::connection _drop_window_connection;
121 };
122 
123 
125 {
126  public:
127  PluginPinWindowProxy (std::string const &, std::weak_ptr<ARDOUR::Processor>);
129 
130  Gtk::Window* get (bool create = false);
132 
133  private:
134  std::weak_ptr<ARDOUR::Processor> _processor;
135 
138 };
139 
140 
141 
142 class ProcessorEntry : public Gtkmm2ext::DnDVBoxChild, public sigc::trackable
143 {
144 public:
145  ProcessorEntry (ProcessorBox *, std::shared_ptr<ARDOUR::Processor>, Width);
147 
150  std::string drag_text () const;
152 
153  bool is_selectable() const {return _selectable;}
154  void set_selectable(bool s) { _selectable = s; }
155 
156  bool drag_data_get (Glib::RefPtr<Gdk::DragContext> const, Gtk::SelectionData &);
158 
162  PostFader
163  };
164 
165  void set_position (ProcessorPosition, uint32_t);
166  bool unknown_processor () const { return _unknown_processor; } ;
167  std::shared_ptr<ARDOUR::Processor> processor () const;
169 
171  virtual void hide_things ();
172 
176  void add_control_state (XMLNode *) const;
177  void set_control_state (XMLNode const *);
178  std::string state_id () const;
182 
183 protected:
187  uint32_t _position_num;
189 
190  virtual void setup_visuals ();
191 
192 private:
200  std::string name (Width) const;
201  void setup_tooltip ();
202 
203  std::shared_ptr<ARDOUR::Processor> _processor;
209 
210  class Control : public sigc::trackable {
211  public:
212  Control (ProcessorEntry&, std::shared_ptr<ARDOUR::AutomationControl>, std::string const &);
214 
215  void set_visible (bool);
216  void add_state (XMLNode *) const;
217  void set_state (XMLNode const *);
218  void hide_things ();
219 
220  bool visible () const {
221  return _visible;
222  }
223 
224  std::string name () const {
225  return _name;
226  }
227 
229 
230  private:
232  void button_clicked ();
236  std::string state_id () const;
237  void set_tooltip ();
238 
239  void start_touch (int);
240  void end_touch (int);
241 
243 
245  std::weak_ptr<ARDOUR::AutomationControl> _control;
246  /* things for a slider */
250  /* things for a button */
254  bool _visible;
255  std::string _name;
256  };
257 
258  std::list<Control*> _controls;
259 
260  friend class Control;
262 
268  void reset_plugin();
269 
271  public:
272  PluginInlineDisplay(ProcessorEntry&, std::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
274  protected:
277  void update_height_alloc (uint32_t inline_height);
278 
279  void display_frame (cairo_t* cr, double w, double h);
280 
282  bool _scroll;
283  const uint32_t _given_max_height;
284  };
285 
287  public:
288  LuaPluginDisplay(ProcessorEntry&, std::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
290  protected:
291  virtual uint32_t render_inline (cairo_t *, uint32_t width);
292  private:
293  std::shared_ptr<ARDOUR::LuaProc> _luaproc;
295  luabridge::LuaRef * _lua_render_inline;
296  };
297 
298  class PortIcon : public Gtk::DrawingArea {
299  public:
300  PortIcon(bool input);
301  void set_ports(ARDOUR::ChanCount const ports) { _ports = ports; }
302  private:
304  bool _input;
306  };
307 
308  class RoutingIcon : public Gtk::DrawingArea {
309  public:
310  RoutingIcon(bool inputrouting = true);
311  void set (
312  const ARDOUR::ChanCount&,
313  const ARDOUR::ChanCount&,
314  const ARDOUR::ChanCount&,
315  const ARDOUR::ChanCount&,
316  const ARDOUR::ChanMapping&,
317  const ARDOUR::ChanMapping&,
318  const ARDOUR::ChanMapping&);
319  void set_fed_by (
320  const ARDOUR::ChanCount&,
321  const ARDOUR::ChanCount&,
322  const ARDOUR::ChanMapping&,
323  const ARDOUR::ChanMapping&);
324 
325  void set_feeding (
326  const ARDOUR::ChanCount&,
327  const ARDOUR::ChanCount&,
328  const ARDOUR::ChanMapping&,
329  const ARDOUR::ChanMapping&);
330 
331  void set_terminal (bool b);
332 
333  void copy_state (const RoutingIcon& other) {
334  _in = other._in;
335  _out = other._out;
336  _sources = other._sources;
337  _sinks = other._sinks;
338  _in_map = other._in_map;
339  _out_map = other._out_map;
340  _thru_map = other._thru_map;
341  _f_out = other._f_out;
342  _f_out_map = other._f_out_map;
343  _f_thru_map = other._f_thru_map;
344  _f_sources = other._f_sources;
345  _i_in = other._i_in;
346  _i_in_map = other._i_in_map;
347  _i_thru_map = other._i_thru_map;
348  _i_sinks = other._i_sinks;
349  _fed_by = other._fed_by;
350  _feeding = other._feeding;
351  }
352 
353  void unset_fed_by () { _fed_by = false ; }
354  void unset_feeding () { _feeding = false ; }
355  bool in_identity () const;
356  bool out_identity () const;
357  bool can_coalesce () const;
358 
359  static double pin_x_pos (uint32_t, double, uint32_t, uint32_t, bool);
360  static void draw_connection (cairo_t*, double, double, double, double, bool, bool dashed = false);
361  static void draw_gnd (cairo_t*, double, double, double, bool);
362  static void draw_sidechain (cairo_t*, double, double, double, bool);
363  static void draw_thru_src (cairo_t*, double, double, double, bool);
364  static void draw_thru_sink (cairo_t*, double, double, double, bool);
365 
366  private:
368  void expose_input_map (cairo_t*, const double, const double);
369  void expose_coalesced_input_map (cairo_t*, const double, const double);
370  void expose_output_map (cairo_t*, const double, const double);
371 
387  bool _fed_by;
388  bool _feeding;
389  bool _input;
390  bool _terminal;
391  };
392 
393 public:
396  RoutingIcon routing_icon; // sits on top of every processor (input routing)
397  RoutingIcon output_routing_icon; // only used by last processor in the chain
398 
399 protected:
401 };
402 
404 {
405 public:
406  PluginInsertProcessorEntry (ProcessorBox *, std::shared_ptr<ARDOUR::PluginInsert>, Width);
407 
408  void hide_things ();
409 
410 private:
411  void iomap_changed ();
412  std::shared_ptr<ARDOUR::PluginInsert> _plugin_insert;
413 
415 };
416 
418 {
419 public:
429  };
430 
431  ProcessorBox (ARDOUR::Session*, std::function<PluginSelector*()> get_plugin_selector,
432  ProcessorSelection&, MixerStrip* parent, bool owner_is_mixer = false);
434 
435  void set_route (std::shared_ptr<ARDOUR::Route>);
436  void set_width (Width);
437 
439 
445 
448 
449  void hide_things ();
450 
451  bool edit_aux_send (std::shared_ptr<ARDOUR::Processor>);
452 
453  /* Everything except a WindowProxy object should use this to get the window */
454  Gtk::Window* get_processor_ui (std::shared_ptr<ARDOUR::Processor>) const;
455 
456  /* a WindowProxy object can use this */
457  Gtk::Window* get_editor_window (std::shared_ptr<ARDOUR::Processor>, bool);
458  Gtk::Window* get_generic_editor_window (std::shared_ptr<ARDOUR::Processor>);
459 
460  void manage_pins (std::shared_ptr<ARDOUR::Processor>);
461  void edit_processor (std::shared_ptr<ARDOUR::Processor>);
462  void generic_edit_processor (std::shared_ptr<ARDOUR::Processor>);
463 
464  void update_gui_object_state (ProcessorEntry *, bool emit = false);
465 
466  sigc::signal<void,std::shared_ptr<ARDOUR::Processor> > ProcessorSelected;
467  sigc::signal<void,std::shared_ptr<ARDOUR::Processor> > ProcessorUnselected;
468 
469  static Glib::RefPtr<Gtk::ActionGroup> processor_box_actions;
471  static void register_actions();
472 
473  typedef std::vector<std::shared_ptr<ARDOUR::Processor> > ProcSelection;
474 
476  {
477  ProcSelection ps;
480  }
481  return ps;
482  }
483 
484 #ifndef NDEBUG
485  static bool show_all_processors;
486 #endif
487 
488 private:
489  /* prevent copy construction */
491 
492  std::shared_ptr<ARDOUR::Route> _route;
493  MixerStrip* _parent_strip; // null if in RouteParamsUI
498 
500 
501  std::shared_ptr<ARDOUR::Processor> _processor_being_created;
502 
507 
509 
510  static void load_bindings ();
511 
513 
514  bool is_editor_mixer_strip() const;
515 
518 
519  std::shared_ptr<ARDOUR::Processor> find_drop_position (ProcessorEntry* position);
520 
523 
524  void plugin_drop (Gtk::SelectionData const &, ProcessorEntry* position, Glib::RefPtr<Gdk::DragContext> const & context);
525  void object_drop (Gtkmm2ext::DnDVBox<ProcessorEntry> *, ProcessorEntry *, Glib::RefPtr<Gdk::DragContext> const &);
527 
530 
538 
539  void choose_aux (std::weak_ptr<ARDOUR::Route>);
540  void remove_aux (std::weak_ptr<ARDOUR::Route>);
541  void choose_send ();
542  void send_io_finished (IOSelector::Result, std::weak_ptr<ARDOUR::Processor>, IOSelectorWindow*);
543  void return_io_finished (IOSelector::Result, std::weak_ptr<ARDOUR::Processor>, IOSelectorWindow*);
544  void choose_insert ();
545  void choose_plugin ();
547 
549 
555  void add_processor_to_display (std::weak_ptr<ARDOUR::Processor>);
556  void reordered ();
560 
563 
564  void ab_plugins ();
565 
570  void paste_processors (std::shared_ptr<ARDOUR::Processor> before);
571 
572  void delete_dragged_processors (const std::list<std::shared_ptr<ARDOUR::Processor> >&);
576 
577  void for_selected_processors (void (ProcessorBox::*pmf)(std::shared_ptr<ARDOUR::Processor>));
579 
582 
583  bool can_cut() const;
585  bool channelstrip_selected() const;
586  bool surrsend_selected() const;
587 
588  static Glib::RefPtr<Gtk::Action> cut_action;
589  static Glib::RefPtr<Gtk::Action> copy_action;
590  static Glib::RefPtr<Gtk::Action> paste_action;
591  static Glib::RefPtr<Gtk::Action> rename_action;
592  static Glib::RefPtr<Gtk::Action> delete_action;
593  static Glib::RefPtr<Gtk::Action> backspace_action;
594  static Glib::RefPtr<Gtk::Action> manage_pins_action;
595  static Glib::RefPtr<Gtk::Action> disk_io_action;
596  static Glib::RefPtr<Gtk::Action> edit_action;
597  static Glib::RefPtr<Gtk::Action> edit_generic_action;
598  void paste_processor_state (const XMLNodeList&, std::shared_ptr<ARDOUR::Processor>);
599 
600  void hide_processor_editor (std::shared_ptr<ARDOUR::Processor>);
601  void rename_processor (std::shared_ptr<ARDOUR::Processor>);
602 
603  gint idle_delete_processor (std::weak_ptr<ARDOUR::Processor>);
604 
606 
608 
610 
611  static void rb_choose_aux (std::weak_ptr<ARDOUR::Route>);
612  static void rb_remove_aux (std::weak_ptr<ARDOUR::Route>);
613  static void rb_choose_plugin ();
614  static void rb_choose_insert ();
615  static void rb_choose_send ();
616  static void rb_clear ();
617  static void rb_clear_pre ();
618  static void rb_clear_post ();
619  static void rb_cut ();
620  static void rb_copy ();
621  static void rb_paste ();
622  static void rb_delete ();
623  static void rb_rename ();
624  static void rb_select_all ();
625  static void rb_deselect_all ();
626  static void rb_activate_all ();
627  static void rb_deactivate_all ();
628  static void rb_ab_plugins ();
629  static void rb_manage_pins ();
632  static void rb_edit ();
633  static void rb_edit_generic ();
634 
636  std::string generate_processor_title (std::shared_ptr<ARDOUR::PluginInsert> pi);
637 
638  //typedef std::list<ProcessorWindowProxy*> ProcessorWindowProxies;
639  //ProcessorWindowProxies _processor_window_info;
640 
641  ProcessorWindowProxy* find_window_proxy (std::shared_ptr<ARDOUR::Processor>) const;
642 
643  void set_processor_ui (std::shared_ptr<ARDOUR::Processor>, Gtk::Window *);
644  void maybe_add_processor_to_ui_list (std::weak_ptr<ARDOUR::Processor>);
645  void maybe_add_processor_pin_mgr (std::weak_ptr<ARDOUR::Processor>);
646 
648  bool processor_can_be_edited (std::shared_ptr<ARDOUR::Processor>);
649 
650  void mixer_strip_delivery_changed (std::weak_ptr<ARDOUR::Delivery>);
651 
654 
655  static bool _ignore_rb_change;
656 
658 };
659 
660 #endif /* __ardour_gtk_processor_box__ */
std::list< std::shared_ptr< Processor > > ProcessorList
Definition: route.h:111
PluginInsertProcessorEntry(ProcessorBox *, std::shared_ptr< ARDOUR::PluginInsert >, Width)
std::shared_ptr< ARDOUR::PluginInsert > _plugin_insert
PBD::ScopedConnectionList _iomap_connection
ARDOUR::SessionHandlePtr * session_handle()
std::weak_ptr< ARDOUR::Processor > _processor
PluginPinWindowProxy(std::string const &, std::weak_ptr< ARDOUR::Processor >)
Gtk::Window * get(bool create=false)
PBD::ScopedConnection going_away_connection
ProcessorSelection & _p_selection
static Glib::RefPtr< Gtk::Action > edit_action
void maybe_add_processor_pin_mgr(std::weak_ptr< ARDOUR::Processor >)
void add_processor_to_display(std::weak_ptr< ARDOUR::Processor >)
static void rb_choose_aux(std::weak_ptr< ARDOUR::Route >)
ProcessorBox(ARDOUR::Session *, std::function< PluginSelector *()> get_plugin_selector, ProcessorSelection &, MixerStrip *parent, bool owner_is_mixer=false)
static Glib::RefPtr< Gtk::Action > cut_action
bool can_cut() const
gint processor_menu_map_handler(GdkEventAny *ev)
void send_io_finished(IOSelector::Result, std::weak_ptr< ARDOUR::Processor >, IOSelectorWindow *)
void redisplay_processors()
void reordered()
static void rb_ab_plugins()
void route_property_changed(const PBD::PropertyChange &)
static Glib::RefPtr< Gtk::ActionGroup > processor_box_actions
static void rb_choose_send()
bool no_processor_redisplay
bool processor_button_release_event(GdkEventButton *, ProcessorEntry *)
sigc::signal< void, std::shared_ptr< ARDOUR::Processor > > ProcessorUnselected
void clear_processors(ARDOUR::Placement)
static void rb_select_all()
static void rb_clear_pre()
void compute_processor_sort_keys()
std::function< PluginSelector *()> _get_plugin_selector
static ProcSelection current_processor_selection()
bool enter_notify(GdkEventCrossing *ev)
void edit_processor(std::shared_ptr< ARDOUR::Processor >)
void manage_pins(std::shared_ptr< ARDOUR::Processor >)
void rename_processors()
bool surrsend_selected() const
PBD::ScopedConnectionList _route_connections
void processors_reordered(const Gtk::TreeModel::Path &, const Gtk::TreeModel::iterator &, int *)
static void rb_delete()
void copy_processors(const ProcSelection &)
void plugin_drop(Gtk::SelectionData const &, ProcessorEntry *position, Glib::RefPtr< Gdk::DragContext > const &context)
static Glib::RefPtr< Gtk::Action > delete_action
void maybe_add_processor_to_ui_list(std::weak_ptr< ARDOUR::Processor >)
void show_processor_menu(int)
XMLNode * entry_gui_object_state(ProcessorEntry *)
Gtk::Menu * processor_menu
static void rb_deactivate_all()
void object_drop(Gtkmm2ext::DnDVBox< ProcessorEntry > *, ProcessorEntry *, Glib::RefPtr< Gdk::DragContext > const &)
void setup_entry_positions()
static void rb_clear_post()
void toggle_custom_loudness_pos()
void select_all_processors()
static void rb_edit_generic()
static Glib::RefPtr< Gtk::Action > copy_action
void selection_added(ProcessorEntry &)
Gtk::Window * get_editor_window(std::shared_ptr< ARDOUR::Processor >, bool)
bool channelstrip_selected() const
bool use_plugins(const SelectedPlugins &)
void choose_insert()
static Glib::RefPtr< Gtk::Action > paste_action
bool processor_can_be_edited(std::shared_ptr< ARDOUR::Processor >)
static void rb_copy()
bool leave_notify(GdkEventCrossing *ev)
void hide_things()
static void rb_manage_pins()
PBD::ScopedConnection amp_config_connection
sigc::signal< void, std::shared_ptr< ARDOUR::Processor > > ProcessorSelected
bool _redisplay_pending
static void rb_rename()
static void rb_edit()
void for_selected_processors(void(ProcessorBox::*pmf)(std::shared_ptr< ARDOUR::Processor >))
Gtk::Menu * build_possible_listener_menu()
Gtk::Menu * build_possible_remove_listener_menu()
void select_all_inserts()
gint idle_delete_processor(std::weak_ptr< ARDOUR::Processor >)
bool _owner_is_mixer
ProcessorBox(ProcessorBox const &)
static void rb_clear()
void rename_processor(std::shared_ptr< ARDOUR::Processor >)
void all_visible_processors_active(bool state)
static void rb_cut()
static ProcessorBox * _current_processor_box
static Glib::RefPtr< Gtk::Action > disk_io_action
void get_selected_processors(ProcSelection &) const
static void rb_choose_insert()
bool is_editor_mixer_strip() const
Gtkmm2ext::DnDVBox< ProcessorEntry > processor_display
std::vector< std::shared_ptr< ARDOUR::Processor > > ProcSelection
void cut_processors(const ProcSelection &)
void setup_routing_feeds()
bool stub_processor_selected() const
void update_gui_object_state(ProcessorEntry *, bool emit=false)
void choose_plugin()
static void rb_choose_plugin()
void _drop_plugin(Gtk::SelectionData const &, ARDOUR::Route::ProcessorList &)
void ab_plugins()
void generic_edit_processor(std::shared_ptr< ARDOUR::Processor >)
Gtk::Menu * build_processor_menu()
void processor_menu_unmapped()
void paste_processor_state(const XMLNodeList &, std::shared_ptr< ARDOUR::Processor >)
static void register_actions()
void paste_processors()
static void load_bindings()
void choose_send()
void deselect_all_processors()
static Gtkmm2ext::Bindings * bindings
bool one_processor_can_be_edited()
static void rb_set_disk_io_position(ARDOUR::DiskIOPoint)
static void rb_toggle_custom_loudness_pos()
void delete_processors(const ProcSelection &)
static Glib::RefPtr< Gtk::Action > backspace_action
void delete_dragged_processors(const std::list< std::shared_ptr< ARDOUR::Processor > > &)
bool drag_refuse(Gtkmm2ext::DnDVBox< ProcessorEntry > *, ProcessorEntry *)
void weird_plugin_dialog(ARDOUR::Plugin &p, ARDOUR::Route::ProcessorStreams streams)
void choose_aux(std::weak_ptr< ARDOUR::Route >)
static Glib::RefPtr< Gtk::Action > manage_pins_action
void route_going_away()
void set_width(Width)
static void rb_remove_aux(std::weak_ptr< ARDOUR::Route >)
void set_processor_ui(std::shared_ptr< ARDOUR::Processor >, Gtk::Window *)
std::shared_ptr< ARDOUR::Processor > _processor_being_created
void _drop_plugin_preset(Gtk::SelectionData const &, ARDOUR::Route::ProcessorList &)
void remove_aux(std::weak_ptr< ARDOUR::Route >)
void mixer_strip_delivery_changed(std::weak_ptr< ARDOUR::Delivery >)
PBD::ScopedConnectionList _mixer_strip_connections
static void rb_deselect_all()
Gtk::Menu * build_possible_aux_menu()
void set_disk_io_position(ARDOUR::DiskIOPoint)
void hide_processor_editor(std::shared_ptr< ARDOUR::Processor >)
void report_failed_reorder()
static Glib::RefPtr< Gtk::Action > edit_generic_action
static void rb_activate_all()
void return_io_finished(IOSelector::Result, std::weak_ptr< ARDOUR::Processor >, IOSelectorWindow *)
std::string generate_processor_title(std::shared_ptr< ARDOUR::PluginInsert > pi)
void clear_processors()
std::shared_ptr< ARDOUR::Processor > find_drop_position(ProcessorEntry *position)
void paste_processors(std::shared_ptr< ARDOUR::Processor > before)
MixerStrip * _parent_strip
Gtk::ScrolledWindow processor_scroller
void set_route(std::shared_ptr< ARDOUR::Route >)
Gtk::Window * get_generic_editor_window(std::shared_ptr< ARDOUR::Processor >)
void select_all_sends()
bool processor_operation(ProcessorOperation)
bool edit_aux_send(std::shared_ptr< ARDOUR::Processor >)
static void rb_paste()
Gtk::Window * get_processor_ui(std::shared_ptr< ARDOUR::Processor >) const
static bool show_all_processors
void select_all_plugins()
static Glib::RefPtr< Gtk::Action > rename_action
static bool _ignore_rb_change
std::shared_ptr< ARDOUR::Route > _route
void route_processors_changed(ARDOUR::RouteProcessorChange)
ProcessorWindowProxy * find_window_proxy(std::shared_ptr< ARDOUR::Processor >) const
bool processor_button_press_event(GdkEventButton *, ProcessorEntry *)
void button_clicked_event(GdkEventButton *)
ArdourWidgets::ArdourButton _button
void set_state(XMLNode const *)
void control_automation_state_changed()
ArdourWidgets::HSliderController _slider
PBD::ScopedConnectionList _connections
Gtkmm2ext::PersistentTooltip _slider_persistant_tooltip
Control(ProcessorEntry &, std::shared_ptr< ARDOUR::AutomationControl >, std::string const &)
void add_state(XMLNode *) const
std::string name() const
bool button_released(GdkEventButton *)
std::weak_ptr< ARDOUR::AutomationControl > _control
Gtk::Adjustment _adjustment
std::string state_id() const
ProcessorEntry & _entry
virtual uint32_t render_inline(cairo_t *, uint32_t width)
LuaPluginDisplay(ProcessorEntry &, std::shared_ptr< ARDOUR::LuaProc >, uint32_t max_height=80)
luabridge::LuaRef * _lua_render_inline
std::shared_ptr< ARDOUR::LuaProc > _luaproc
void update_height_alloc(uint32_t inline_height)
bool on_button_press_event(GdkEventButton *ev)
This is a default handler for the signal signal_button_press_event().
void display_frame(cairo_t *cr, double w, double h)
void on_size_request(Gtk::Requisition *req)
This is a default handler for the signal signal_size_request().
PluginInlineDisplay(ProcessorEntry &, std::shared_ptr< ARDOUR::Plugin >, uint32_t max_height=80)
ARDOUR::ChanCount _ports
bool on_expose_event(GdkEventExpose *)
This is a default handler for the signal signal_expose_event().
void set_ports(ARDOUR::ChanCount const ports)
static void draw_thru_src(cairo_t *, double, double, double, bool)
ARDOUR::ChanMapping _in_map
ARDOUR::ChanCount _f_out
void expose_input_map(cairo_t *, const double, const double)
ARDOUR::ChanMapping _i_in_map
void copy_state(const RoutingIcon &other)
ARDOUR::ChanMapping _f_thru_map
bool on_expose_event(GdkEventExpose *)
This is a default handler for the signal signal_expose_event().
void set(const ARDOUR::ChanCount &, const ARDOUR::ChanCount &, const ARDOUR::ChanCount &, const ARDOUR::ChanCount &, const ARDOUR::ChanMapping &, const ARDOUR::ChanMapping &, const ARDOUR::ChanMapping &)
void expose_coalesced_input_map(cairo_t *, const double, const double)
static void draw_gnd(cairo_t *, double, double, double, bool)
static void draw_connection(cairo_t *, double, double, double, double, bool, bool dashed=false)
static void draw_thru_sink(cairo_t *, double, double, double, bool)
ARDOUR::ChanMapping _f_out_map
ARDOUR::ChanCount _i_sinks
ARDOUR::ChanCount _sinks
static double pin_x_pos(uint32_t, double, uint32_t, uint32_t, bool)
static void draw_sidechain(cairo_t *, double, double, double, bool)
void set_fed_by(const ARDOUR::ChanCount &, const ARDOUR::ChanCount &, const ARDOUR::ChanMapping &, const ARDOUR::ChanMapping &)
void expose_output_map(cairo_t *, const double, const double)
ARDOUR::ChanCount _f_sources
RoutingIcon(bool inputrouting=true)
ARDOUR::ChanMapping _i_thru_map
ARDOUR::ChanCount _sources
void set_feeding(const ARDOUR::ChanCount &, const ARDOUR::ChanCount &, const ARDOUR::ChanMapping &, const ARDOUR::ChanMapping &)
ARDOUR::ChanMapping _thru_map
ARDOUR::ChanMapping _out_map
void setup_tooltip()
Gtk::Menu * build_presets_menu()
void led_clicked(GdkEventButton *)
std::shared_ptr< ARDOUR::Processor > processor() const
void plugin_preset_delete()
void plugin_preset_selected(ARDOUR::Plugin::PresetRecord)
PortIcon output_icon
void show_all_controls()
bool _ignore_preset_select
RoutingIcon routing_icon
void toggle_allow_feedback()
Gtk::Menu * build_controls_menu()
std::list< Control * > _controls
void toggle_inline_display_visibility()
void reset_plugin()
RoutingIcon output_routing_icon
std::string drag_text() const
std::string name(Width) const
PBD::ScopedConnection name_connection
PortIcon input_icon
uint32_t _position_num
void processor_configuration_changed(const ARDOUR::ChanCount in, const ARDOUR::ChanCount out)
PluginDisplay * _plugin_display
PBD::ScopedConnection active_connection
bool unknown_processor() const
bool drag_data_get(Glib::RefPtr< Gdk::DragContext > const, Gtk::SelectionData &)
Gtk::Widget & widget()
Gtk::VBox _vbox
ArdourWidgets::ArdourButton _button
void set_enum_width(Width)
void plugin_preset_add()
ARDOUR::PluginPresetPtr _plugin_preset_pointer
void set_selectable(bool s)
void toggle_control_visibility(Control *)
PBD::ScopedConnection config_connection
void processor_property_changed(const PBD::PropertyChange &)
void add_control_state(XMLNode *) const
void set_position(ProcessorPosition, uint32_t)
void set_control_state(XMLNode const *)
bool can_copy_state(Gtkmm2ext::DnDVBoxChild *) const
void set_visual_state(Gtkmm2ext::VisualState, bool)
ProcessorBox * _parent
bool is_selectable() const
std::shared_ptr< ARDOUR::Processor > _processor
Gtk::Menu * build_send_options_menu()
std::string state_id() const
Gtk::EventBox & action_widget()
void processor_active_changed()
void hide_all_controls()
ProcessorPosition _position
virtual void hide_things()
ProcessorEntry(ProcessorBox *, std::shared_ptr< ARDOUR::Processor >, Width)
virtual void setup_visuals()
void toggle_panner_link()
std::weak_ptr< ARDOUR::Processor > _processor
ProcessorBox * _processor_box
ProcessorWindowProxy(std::string const &, ProcessorBox *, std::weak_ptr< ARDOUR::Processor >)
bool fully_visible() const
sigc::connection _drop_window_connection
int set_state(const XMLNode &, int)
void set_custom_ui_mode(bool use_custom)
XMLNode & get_state() const
Gtk::Window * get(bool create=false)
ARDOUR::SessionHandlePtr * session_handle()
PBD::ScopedConnectionList gui_connections
PBD::ScopedConnection going_away_connection
sigc::connection _unmap_connection
std::weak_ptr< ARDOUR::Processor > processor() const
Definition: processor_box.h:96
void show_the_right_window(bool show_not_toggle=false)
bool visible() const
Definition: xml++.h:114
std::shared_ptr< PluginPreset > PluginPresetPtr
Definition: plugin.h:479
std::vector< ARDOUR::PluginPtr > SelectedPlugins
gint width
Definition: xcursors.h:1
std::vector< XMLNode * > XMLNodeList
Definition: xml++.h:66