Ardour  8.12
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 #include <boost/function.hpp>
31 
32 #include <gtkmm/box.h>
33 #include <gtkmm/eventbox.h>
34 #include <gtkmm/menu.h>
35 #include <gtkmm/scrolledwindow.h>
36 
37 #include "gtkmm2ext/bindings.h"
38 #include "gtkmm2ext/dndtreeview.h"
39 #include "gtkmm2ext/dndvbox.h"
41 
42 #include "pbd/stateful.h"
43 #include "pbd/signals.h"
44 
45 #include "ardour/types.h"
46 #include "ardour/ardour.h"
47 #include "ardour/plugin_insert.h"
48 #include "ardour/luaproc.h"
49 #include "ardour/port_insert.h"
50 #include "ardour/processor.h"
51 #include "ardour/route.h"
52 #include "ardour/session_handle.h"
53 
54 #include "pbd/fastlog.h"
55 
56 #include "widgets/ardour_button.h"
57 #include "widgets/ardour_fader.h"
59 
60 #ifdef HAVE_BEATBOX
61 #include "beatbox_gui.h"
62 #endif
63 #include "plugin_interest.h"
64 #include "plugin_display.h"
65 #include "io_selector.h"
66 #include "send_ui.h"
67 #include "enums.h"
68 #include "window_manager.h"
69 
70 class MotionController;
71 class PluginSelector;
72 class PluginUIWindow;
73 class ProcessorSelection;
74 class MixerStrip;
75 
76 namespace ARDOUR {
77  class Connection;
78  class IO;
79  class Insert;
80  class Plugin;
81  class PluginInsert;
82  class PortInsert;
83  class Route;
84  class Session;
85 }
86 
87 class ProcessorBox;
88 
90 {
91 public:
92  ProcessorWindowProxy (std::string const &, ProcessorBox *, std::weak_ptr<ARDOUR::Processor>);
94 
95  Gtk::Window* get (bool create = false);
96 
97  std::weak_ptr<ARDOUR::Processor> processor () const {
98  return _processor;
99  }
100 
102  void show_the_right_window (bool show_not_toggle = false);
103  void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; }
104 
105  int set_state (const XMLNode&, int);
106  XMLNode& get_state () const;
107 
108  bool visible() const;
109  bool fully_visible() const;
110 
111 private:
113  std::weak_ptr<ARDOUR::Processor> _processor;
114  bool is_custom;
116 
118  sigc::connection _unmap_connection;
119  sigc::connection _drop_window_connection;
122 };
123 
124 
126 {
127  public:
128  PluginPinWindowProxy (std::string const &, std::weak_ptr<ARDOUR::Processor>);
130 
131  Gtk::Window* get (bool create = false);
133 
134  private:
135  std::weak_ptr<ARDOUR::Processor> _processor;
136 
139 };
140 
141 
142 
143 class ProcessorEntry : public Gtkmm2ext::DnDVBoxChild, public sigc::trackable
144 {
145 public:
146  ProcessorEntry (ProcessorBox *, std::shared_ptr<ARDOUR::Processor>, Width);
148 
151  std::string drag_text () const;
153 
154  bool is_selectable() const {return _selectable;}
155  void set_selectable(bool s) { _selectable = s; }
156 
157  bool drag_data_get (Glib::RefPtr<Gdk::DragContext> const, Gtk::SelectionData &);
159 
163  PostFader
164  };
165 
166  void set_position (ProcessorPosition, uint32_t);
167  bool unknown_processor () const { return _unknown_processor; } ;
168  std::shared_ptr<ARDOUR::Processor> processor () const;
170 
172  virtual void hide_things ();
173 
177  void add_control_state (XMLNode *) const;
178  void set_control_state (XMLNode const *);
179  std::string state_id () const;
183 
184 protected:
188  uint32_t _position_num;
190 
191  virtual void setup_visuals ();
192 
193 private:
201  std::string name (Width) const;
202  void setup_tooltip ();
203 
204  std::shared_ptr<ARDOUR::Processor> _processor;
210 
211  class Control : public sigc::trackable {
212  public:
213  Control (ProcessorEntry&, std::shared_ptr<ARDOUR::AutomationControl>, std::string const &);
215 
216  void set_visible (bool);
217  void add_state (XMLNode *) const;
218  void set_state (XMLNode const *);
219  void hide_things ();
220 
221  bool visible () const {
222  return _visible;
223  }
224 
225  std::string name () const {
226  return _name;
227  }
228 
230 
231  private:
233  void button_clicked ();
237  std::string state_id () const;
238  void set_tooltip ();
239 
240  void start_touch (int);
241  void end_touch (int);
242 
244 
246  std::weak_ptr<ARDOUR::AutomationControl> _control;
247  /* things for a slider */
251  /* things for a button */
255  bool _visible;
256  std::string _name;
257  };
258 
259  std::list<Control*> _controls;
260 
261  friend class Control;
263 
269  void reset_plugin();
270 
272  public:
273  PluginInlineDisplay(ProcessorEntry&, std::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
275  protected:
278  void update_height_alloc (uint32_t inline_height);
279 
280  void display_frame (cairo_t* cr, double w, double h);
281 
283  bool _scroll;
284  const uint32_t _given_max_height;
285  };
286 
288  public:
289  LuaPluginDisplay(ProcessorEntry&, std::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
291  protected:
292  virtual uint32_t render_inline (cairo_t *, uint32_t width);
293  private:
294  std::shared_ptr<ARDOUR::LuaProc> _luaproc;
296  luabridge::LuaRef * _lua_render_inline;
297  };
298 
299  class PortIcon : public Gtk::DrawingArea {
300  public:
301  PortIcon(bool input);
302  void set_ports(ARDOUR::ChanCount const ports) { _ports = ports; }
303  private:
305  bool _input;
307  };
308 
309  class RoutingIcon : public Gtk::DrawingArea {
310  public:
311  RoutingIcon(bool inputrouting = true);
312  void set (
313  const ARDOUR::ChanCount&,
314  const ARDOUR::ChanCount&,
315  const ARDOUR::ChanCount&,
316  const ARDOUR::ChanCount&,
317  const ARDOUR::ChanMapping&,
318  const ARDOUR::ChanMapping&,
319  const ARDOUR::ChanMapping&);
320  void set_fed_by (
321  const ARDOUR::ChanCount&,
322  const ARDOUR::ChanCount&,
323  const ARDOUR::ChanMapping&,
324  const ARDOUR::ChanMapping&);
325 
326  void set_feeding (
327  const ARDOUR::ChanCount&,
328  const ARDOUR::ChanCount&,
329  const ARDOUR::ChanMapping&,
330  const ARDOUR::ChanMapping&);
331 
332  void set_terminal (bool b);
333 
334  void copy_state (const RoutingIcon& other) {
335  _in = other._in;
336  _out = other._out;
337  _sources = other._sources;
338  _sinks = other._sinks;
339  _in_map = other._in_map;
340  _out_map = other._out_map;
341  _thru_map = other._thru_map;
342  _f_out = other._f_out;
343  _f_out_map = other._f_out_map;
344  _f_thru_map = other._f_thru_map;
345  _f_sources = other._f_sources;
346  _i_in = other._i_in;
347  _i_in_map = other._i_in_map;
348  _i_thru_map = other._i_thru_map;
349  _i_sinks = other._i_sinks;
350  _fed_by = other._fed_by;
351  _feeding = other._feeding;
352  }
353 
354  void unset_fed_by () { _fed_by = false ; }
355  void unset_feeding () { _feeding = false ; }
356  bool in_identity () const;
357  bool out_identity () const;
358  bool can_coalesce () const;
359 
360  static double pin_x_pos (uint32_t, double, uint32_t, uint32_t, bool);
361  static void draw_connection (cairo_t*, double, double, double, double, bool, bool dashed = false);
362  static void draw_gnd (cairo_t*, double, double, double, bool);
363  static void draw_sidechain (cairo_t*, double, double, double, bool);
364  static void draw_thru_src (cairo_t*, double, double, double, bool);
365  static void draw_thru_sink (cairo_t*, double, double, double, bool);
366 
367  private:
369  void expose_input_map (cairo_t*, const double, const double);
370  void expose_coalesced_input_map (cairo_t*, const double, const double);
371  void expose_output_map (cairo_t*, const double, const double);
372 
388  bool _fed_by;
389  bool _feeding;
390  bool _input;
391  bool _terminal;
392  };
393 
394 public:
397  RoutingIcon routing_icon; // sits on top of every processor (input routing)
398  RoutingIcon output_routing_icon; // only used by last processor in the chain
399 
400 protected:
402 };
403 
405 {
406 public:
407  PluginInsertProcessorEntry (ProcessorBox *, std::shared_ptr<ARDOUR::PluginInsert>, Width);
408 
409  void hide_things ();
410 
411 private:
412  void iomap_changed ();
413  std::shared_ptr<ARDOUR::PluginInsert> _plugin_insert;
414 
416 };
417 
419 {
420 public:
430  };
431 
432  ProcessorBox (ARDOUR::Session*, boost::function<PluginSelector*()> get_plugin_selector,
433  ProcessorSelection&, MixerStrip* parent, bool owner_is_mixer = false);
435 
436  void set_route (std::shared_ptr<ARDOUR::Route>);
437  void set_width (Width);
438 
440 
446 
449 
450  void hide_things ();
451 
452  bool edit_aux_send (std::shared_ptr<ARDOUR::Processor>);
453 
454  /* Everything except a WindowProxy object should use this to get the window */
455  Gtk::Window* get_processor_ui (std::shared_ptr<ARDOUR::Processor>) const;
456 
457  /* a WindowProxy object can use this */
458  Gtk::Window* get_editor_window (std::shared_ptr<ARDOUR::Processor>, bool);
459  Gtk::Window* get_generic_editor_window (std::shared_ptr<ARDOUR::Processor>);
460 
461  void manage_pins (std::shared_ptr<ARDOUR::Processor>);
462  void edit_processor (std::shared_ptr<ARDOUR::Processor>);
463  void generic_edit_processor (std::shared_ptr<ARDOUR::Processor>);
464 
466 
467  sigc::signal<void,std::shared_ptr<ARDOUR::Processor> > ProcessorSelected;
468  sigc::signal<void,std::shared_ptr<ARDOUR::Processor> > ProcessorUnselected;
469 
470  static Glib::RefPtr<Gtk::ActionGroup> processor_box_actions;
472  static void register_actions();
473 
474  typedef std::vector<std::shared_ptr<ARDOUR::Processor> > ProcSelection;
475 
477  {
478  ProcSelection ps;
481  }
482  return ps;
483  }
484 
485 #ifndef NDEBUG
486  static bool show_all_processors;
487 #endif
488 
489 private:
490  /* prevent copy construction */
492 
493  std::shared_ptr<ARDOUR::Route> _route;
494  MixerStrip* _parent_strip; // null if in RouteParamsUI
499 
501 
502  std::shared_ptr<ARDOUR::Processor> _processor_being_created;
503 
508 
510 
511  static void load_bindings ();
512 
514 
515  bool is_editor_mixer_strip() const;
516 
519 
520  std::shared_ptr<ARDOUR::Processor> find_drop_position (ProcessorEntry* position);
521 
524 
525  void plugin_drop (Gtk::SelectionData const &, ProcessorEntry* position, Glib::RefPtr<Gdk::DragContext> const & context);
526  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:112
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 >)
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()
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
boost::function< PluginSelector *()> _get_plugin_selector
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
ProcessorBox(ARDOUR::Session *, boost::function< PluginSelector *()> get_plugin_selector, ProcessorSelection &, MixerStrip *parent, bool owner_is_mixer=false)
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 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 > > &)
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 update_gui_object_state(ProcessorEntry *)
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:97
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:480
std::vector< ARDOUR::PluginPtr > SelectedPlugins
gint width
Definition: xcursors.h:1
std::vector< XMLNode * > XMLNodeList
Definition: xml++.h:66