/*
- Copyright (C) 2000 Paul Davis
+ Copyright (C) 2000-2006 Paul Davis
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include <ardour/types.h>
namespace ARDOUR {
- class AudioEngine;
class PluginInsert;
class Plugin;
class VSTPlugin;
class Redirect;
+ class AUPlugin;
}
-namespace MIDI {
+namespace PBD {
class Controllable;
}
class PixmapButton;
}
-class PlugUIBase : public sigc::trackable
+class PlugUIBase : public virtual sigc::trackable
{
public:
- PlugUIBase (ARDOUR::PluginInsert&);
+ PlugUIBase (boost::shared_ptr<ARDOUR::PluginInsert>);
virtual ~PlugUIBase() {}
virtual gint get_preferred_height () = 0;
- virtual void start_updating() = 0;
- virtual void stop_updating() = 0;
+ virtual bool start_updating(GdkEventAny*) = 0;
+ virtual bool stop_updating(GdkEventAny*) = 0;
protected:
- ARDOUR::PluginInsert& insert;
- ARDOUR::Plugin& plugin;
+ boost::shared_ptr<ARDOUR::PluginInsert> insert;
+ boost::shared_ptr<ARDOUR::Plugin> plugin;
Gtk::ComboBoxText combo;
Gtk::Button save_button;
Gtk::ToggleButton bypass_button;
- gint setting_selected(GdkEventAny* ignored);
+ void setting_selected();
void save_plugin_setting (void);
void bypass_toggled();
};
-class PluginUI : public PlugUIBase, public Gtk::VBox
+class LadspaPluginUI : public PlugUIBase, public Gtk::VBox
{
public:
- PluginUI (ARDOUR::AudioEngine &, ARDOUR::PluginInsert& plug, bool scrollable=false);
- ~PluginUI ();
+ LadspaPluginUI (boost::shared_ptr<ARDOUR::PluginInsert> plug, bool scrollable=false);
+ ~LadspaPluginUI ();
gint get_preferred_height () { return prefheight; }
- void start_updating();
- void stop_updating();
+ bool start_updating(GdkEventAny*);
+ bool stop_updating(GdkEventAny*);
private:
- ARDOUR::AudioEngine &engine;
Gtk::HBox settings_box;
Gtk::HBox hpacker;
- Gtk::VBox info_vbox;
- Gtk::EventBox name_ebox;
Gtk::Table button_table;
Gtk::Table output_table;
Gtk::Adjustment hAdjustment;
Gtk::Adjustment vAdjustment;
Gtk::Viewport scroller_view;
- Gtk::Label nameinfo_label;
- Gtk::Label paraminfo_label;
- Gtk::Label makerinfo_label;
Gtk::Menu* automation_menu;
- bool setting_name_status;
-
gint prefheight;
bool is_scrollable;
static const int32_t initial_button_rows = 6;
static const int32_t initial_button_cols = 1;
- static const int32_t initial_output_rows = 8;
- static const int32_t initial_output_cols = 1;
+ static const int32_t initial_output_rows = 1;
+ static const int32_t initial_output_cols = 4;
struct ControlUI : public Gtk::HBox {
Gtk::EventBox *display;
Gtk::Label* display_label;
- Gtk::VBox * vbox;
+ Gtk::HBox * hbox;
+ Gtk::VBox * vbox;
MeterInfo * meterinfo;
ControlUI ();
sigc::connection screen_update_connection;
void output_update();
- void build (ARDOUR::AudioEngine &);
- ControlUI* build_control_ui (ARDOUR::AudioEngine &, guint32 port_index, MIDI::Controllable *);
+ void build ();
+ ControlUI* build_control_ui (guint32 port_index, PBD::Controllable *);
std::vector<string> setup_scale_values(guint32 port_index, ControlUI* cui);
void control_adjustment_changed (ControlUI* cui);
void parameter_changed (uint32_t, float, ControlUI* cui);
void update_control_display (ControlUI* cui);
void control_port_toggled (ControlUI* cui);
- bool control_combo_changed (GdkEventAny* ignored, ControlUI* cui);
- gint entry_focus_event (GdkEventFocus* ev);
+ void control_combo_changed (ControlUI* cui);
void redirect_active_changed (ARDOUR::Redirect*, void*);
class PluginUIWindow : public ArdourDialog
{
public:
- PluginUIWindow (ARDOUR::AudioEngine &, ARDOUR::PluginInsert& insert, bool scrollable=false);
+ PluginUIWindow (boost::shared_ptr<ARDOUR::PluginInsert> insert, bool scrollable=false);
~PluginUIWindow ();
PlugUIBase& pluginui() { return *_pluginui; }
void resize_preferred();
+
+ virtual bool on_key_press_event (GdkEventKey*);
+ virtual bool on_key_release_event (GdkEventKey*);
private:
PlugUIBase* _pluginui;
- void plugin_going_away (ARDOUR::Redirect*);
+ void plugin_going_away ();
};
-
#ifdef VST_SUPPORT
class VSTPluginUI : public PlugUIBase, public Gtk::VBox
{
public:
- VSTPluginUI (ARDOUR::PluginInsert&, ARDOUR::VSTPlugin&);
+ VSTPluginUI (boost::shared_ptr<ARDOUR::PluginInsert>, boost::shared_ptr<ARDOUR::VSTPlugin>);
~VSTPluginUI ();
gint get_preferred_height ();
- void start_updating() {}
- void stop_updating() {}
+ bool start_updating(GdkEventAny*) {return false;}
+ bool stop_updating(GdkEventAny*) {return false;}
int package (Gtk::Window&);
private:
- ARDOUR::VSTPlugin& vst;
+ boost::shared_ptr<ARDOUR::VSTPlugin> vst;
Gtk::Socket socket;
Gtk::HBox preset_box;
Gtk::VBox vpacker;
- gboolean configure_handler (GdkEventConfigure*, GtkSocket*);
+ bool configure_handler (GdkEventConfigure*, Gtk::Socket*);
void save_plugin_setting ();
};
-#endif
+#endif // VST_SUPPORT
#endif /* __ardour_plugin_ui_h__ */