#include <gtkmm/menu.h>
#include <gtkmm/scrolledwindow.h>
-#include "gtkmm2ext/auto_spin.h"
#include "gtkmm2ext/bindings.h"
-#include "gtkmm2ext/click_box.h"
#include "gtkmm2ext/dndtreeview.h"
#include "gtkmm2ext/dndvbox.h"
-#include "gtkmm2ext/pixfader.h"
#include "gtkmm2ext/persistent_tooltip.h"
#include "pbd/stateful.h"
#include "pbd/fastlog.h"
+#include "widgets/ardour_button.h"
+#include "widgets/ardour_fader.h"
+#include "widgets/slider_controller.h"
+
#include "plugin_interest.h"
+#include "plugin_display.h"
#include "io_selector.h"
#include "send_ui.h"
#include "enums.h"
-#include "ardour_button.h"
#include "window_manager.h"
class MotionController;
class PluginSelector;
class PluginUIWindow;
-class RouteProcessorSelection;
+class ProcessorSelection;
class MixerStrip;
namespace ARDOUR {
class ProcessorWindowProxy : public WM::ProxyBase
{
- public:
+public:
ProcessorWindowProxy (std::string const &, ProcessorBox *, boost::weak_ptr<ARDOUR::Processor>);
~ProcessorWindowProxy();
}
ARDOUR::SessionHandlePtr* session_handle();
- void show_the_right_window ();
+ void show_the_right_window (bool show_not_toggle = false);
void set_custom_ui_mode(bool use_custom) { want_custom = use_custom; }
int set_state (const XMLNode&, int);
XMLNode& get_state ();
- private:
+private:
ProcessorBox* _processor_box;
boost::weak_ptr<ARDOUR::Processor> _processor;
bool is_custom;
void processor_going_away ();
PBD::ScopedConnection going_away_connection;
+ PBD::ScopedConnectionList gui_connections;
};
ARDOUR::SessionHandlePtr* session_handle();
private:
- ProcessorBox* _processor_box;
boost::weak_ptr<ARDOUR::Processor> _processor;
void processor_going_away ();
/** Hide any widgets that should be hidden */
virtual void hide_things ();
+ void toggle_inline_display_visibility ();
void show_all_controls ();
void hide_all_controls ();
void add_control_state (XMLNode *) const;
Gtk::Menu* build_send_options_menu ();
protected:
- ArdourButton _button;
+ ArdourWidgets::ArdourButton _button;
Gtk::VBox _vbox;
Position _position;
uint32_t _position_num;
void button_clicked ();
void button_clicked_event (GdkEventButton *);
void control_changed ();
+ void control_automation_state_changed ();
std::string state_id () const;
void set_tooltip ();
+ void start_touch ();
+ void end_touch ();
+
boost::weak_ptr<ARDOUR::AutomationControl> _control;
/* things for a slider */
Gtk::Adjustment _adjustment;
- Gtkmm2ext::HSliderController _slider;
+ ArdourWidgets::HSliderController _slider;
Gtkmm2ext::PersistentTooltip _slider_persistant_tooltip;
/* things for a button */
- ArdourButton _button;
+ ArdourWidgets::ArdourButton _button;
bool _ignore_ui_adjustment;
- PBD::ScopedConnection _connection;
+ PBD::ScopedConnectionList _connections;
bool _visible;
std::string _name;
- sigc::connection timer_connection;
};
std::list<Control*> _controls;
- void toggle_inline_display_visibility ();
void toggle_control_visibility (Control *);
void toggle_panner_link ();
+ void toggle_allow_feedback ();
- class PluginDisplay : public Gtk::DrawingArea {
+ class PluginInlineDisplay : public PluginDisplay {
public:
- PluginDisplay(boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
- virtual ~PluginDisplay();
+ PluginInlineDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::Plugin>, uint32_t max_height = 80);
+ ~PluginInlineDisplay() {}
protected:
- bool on_expose_event (GdkEventExpose *);
void on_size_request (Gtk::Requisition* req);
-
+ bool on_button_press_event (GdkEventButton *ev);
void update_height_alloc (uint32_t inline_height);
- virtual uint32_t render_inline (cairo_t *, uint32_t width);
- boost::shared_ptr<ARDOUR::Plugin> _plug;
- PBD::ScopedConnection _qdraw_connection;
- cairo_surface_t* _surf;
- uint32_t _max_height;
- uint32_t _cur_height;
+ void display_sample (cairo_t* cr, double w, double h);
+
+ ProcessorEntry& _entry;
bool _scroll;
+ const uint32_t _given_max_height;
};
- class LuaPluginDisplay : public PluginDisplay {
+ class LuaPluginDisplay : public PluginInlineDisplay {
public:
- LuaPluginDisplay(boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
+ LuaPluginDisplay(ProcessorEntry&, boost::shared_ptr<ARDOUR::LuaProc>, uint32_t max_height = 80);
~LuaPluginDisplay();
protected:
virtual uint32_t render_inline (cairo_t *, uint32_t width);
class ProcessorBox : public Gtk::HBox, public PluginInterestedObject, public ARDOUR::SessionHandlePtr
{
- public:
+public:
enum ProcessorOperation {
ProcessorsCut,
ProcessorsCopy,
};
ProcessorBox (ARDOUR::Session*, boost::function<PluginSelector*()> get_plugin_selector,
- RouteProcessorSelection&, MixerStrip* parent, bool owner_is_mixer = false);
+ ProcessorSelection&, MixerStrip* parent, bool owner_is_mixer = false);
~ProcessorBox ();
void set_route (boost::shared_ptr<ARDOUR::Route>);
bool edit_aux_send(boost::shared_ptr<ARDOUR::Processor>);
- /* Everything except a WindowProxy object should use this to get the window */
+ /* Everything except a WindowProxy object should use this to get the window */
Gtk::Window* get_processor_ui (boost::shared_ptr<ARDOUR::Processor>) const;
- /* a WindowProxy object can use this */
- Gtk::Window* get_editor_window (boost::shared_ptr<ARDOUR::Processor>, bool);
- Gtk::Window* get_generic_editor_window (boost::shared_ptr<ARDOUR::Processor>);
+ /* a WindowProxy object can use this */
+ Gtk::Window* get_editor_window (boost::shared_ptr<ARDOUR::Processor>, bool);
+ Gtk::Window* get_generic_editor_window (boost::shared_ptr<ARDOUR::Processor>);
- void manage_pins (boost::shared_ptr<ARDOUR::Processor>);
- void edit_processor (boost::shared_ptr<ARDOUR::Processor>);
- void generic_edit_processor (boost::shared_ptr<ARDOUR::Processor>);
+ void manage_pins (boost::shared_ptr<ARDOUR::Processor>);
+ void edit_processor (boost::shared_ptr<ARDOUR::Processor>);
+ void generic_edit_processor (boost::shared_ptr<ARDOUR::Processor>);
void update_gui_object_state (ProcessorEntry *);
static Gtkmm2ext::Bindings* bindings;
static void register_actions();
+ typedef std::vector<boost::shared_ptr<ARDOUR::Processor> > ProcSelection;
+
+ static ProcSelection current_processor_selection ()
+ {
+ ProcSelection ps;
+ if (_current_processor_box) {
+ _current_processor_box->get_selected_processors (ps);
+ }
+ return ps;
+ }
+
#ifndef NDEBUG
static bool show_all_processors;
#endif
- private:
+private:
/* prevent copy construction */
ProcessorBox (ProcessorBox const &);
* put at the end of the plugin list.
*/
int _placement;
- uint32_t _visible_prefader_processors;
- RouteProcessorSelection& _rr_selection;
+ ProcessorSelection& _p_selection;
static Gtkmm2ext::ActionMap myactions;
static void load_bindings ();
void route_going_away ();
- bool is_editor_mixer_strip() const;
+ bool is_editor_mixer_strip() const;
Gtkmm2ext::DnDVBox<ProcessorEntry> processor_display;
Gtk::ScrolledWindow processor_scroller;
void object_drop (Gtkmm2ext::DnDVBox<ProcessorEntry> *, ProcessorEntry *, Glib::RefPtr<Gdk::DragContext> const &);
Width _width;
- bool _redisplay_pending;
+ bool _redisplay_pending;
Gtk::Menu *processor_menu;
gint processor_menu_map_handler (GdkEventAny *ev);
bool processor_button_release_event (GdkEventButton *, ProcessorEntry *);
void redisplay_processors ();
void add_processor_to_display (boost::weak_ptr<ARDOUR::Processor>);
- void help_count_visible_prefader_processors (boost::weak_ptr<ARDOUR::Processor>, uint32_t*, bool*);
void reordered ();
void report_failed_reorder ();
void route_processors_changed (ARDOUR::RouteProcessorChange);
void ab_plugins ();
- typedef std::vector<boost::shared_ptr<ARDOUR::Processor> > ProcSelection;
-
void cut_processors (const ProcSelection&);
void copy_processors (const ProcSelection&);
void delete_processors (const ProcSelection&);
void for_selected_processors (void (ProcessorBox::*pmf)(boost::shared_ptr<ARDOUR::Processor>));
void get_selected_processors (ProcSelection&) const;
+ void set_disk_io_position (ARDOUR::DiskIOPoint);
+
bool can_cut() const;
bool stub_processor_selected() const;
static Glib::RefPtr<Gtk::Action> paste_action;
static Glib::RefPtr<Gtk::Action> rename_action;
static Glib::RefPtr<Gtk::Action> delete_action;
+ static Glib::RefPtr<Gtk::Action> backspace_action;
static Glib::RefPtr<Gtk::Action> manage_pins_action;
+ static Glib::RefPtr<Gtk::Action> disk_io_action;
static Glib::RefPtr<Gtk::Action> edit_action;
static Glib::RefPtr<Gtk::Action> edit_generic_action;
void paste_processor_state (const XMLNodeList&, boost::shared_ptr<ARDOUR::Processor>);
static void rb_deactivate_all ();
static void rb_ab_plugins ();
static void rb_manage_pins ();
+ static void rb_set_disk_io_position (ARDOUR::DiskIOPoint);
static void rb_edit ();
static void rb_edit_generic ();
void route_property_changed (const PBD::PropertyChange&);
std::string generate_processor_title (boost::shared_ptr<ARDOUR::PluginInsert> pi);
- //typedef std::list<ProcessorWindowProxy*> ProcessorWindowProxies;
- //ProcessorWindowProxies _processor_window_info;
+ //typedef std::list<ProcessorWindowProxy*> ProcessorWindowProxies;
+ //ProcessorWindowProxies _processor_window_info;
- ProcessorWindowProxy* find_window_proxy (boost::shared_ptr<ARDOUR::Processor>) const;
+ ProcessorWindowProxy* find_window_proxy (boost::shared_ptr<ARDOUR::Processor>) const;
void set_processor_ui (boost::shared_ptr<ARDOUR::Processor>, Gtk::Window *);
void maybe_add_processor_to_ui_list (boost::weak_ptr<ARDOUR::Processor>);