X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fplugin_ui.h;h=b3420f2924599cc3758aa48d37f2da1a0c1723a5;hb=245d48dbd009de7ab6a9544cb524fff321dacd62;hp=860772c8c4b0c74dcdaa975a4d967b9354d7bedf;hpb=b976bf8986290e8f4812a50e7fdd98b9cbeb4249;p=ardour.git diff --git a/gtk2_ardour/plugin_ui.h b/gtk2_ardour/plugin_ui.h index 860772c8c4..b3420f2924 100644 --- a/gtk2_ardour/plugin_ui.h +++ b/gtk2_ardour/plugin_ui.h @@ -30,29 +30,32 @@ #include -#include +#include #include -#include +#include #include -#include -#include +#include +#include +#include #include #include -#include -#include -#include -#include +#include #include +#include +#include +#include #include "ardour/types.h" #include "ardour/plugin.h" #include "ardour/variant.h" -#include "ardour_button.h" -#include "ardour_dropdown.h" -#include "ardour_spinner.h" +#include "widgets/ardour_button.h" +#include "widgets/ardour_dropdown.h" +#include "widgets/ardour_spinner.h" + #include "ardour_window.h" #include "automation_controller.h" +#include "gtk_pianokeyboard.h" namespace ARDOUR { class PluginInsert; @@ -68,17 +71,14 @@ namespace PBD { class Controllable; } -namespace Gtkmm2ext { - class HSliderController; - class BarController; - class ClickBox; +namespace ArdourWidgets { class FastMeter; - class PixmapButton; } class LatencyGUI; class ArdourWindow; class PluginEqGui; +class PluginLoadStatsGui; class VSTPluginUI; class PlugUIBase : public virtual sigc::trackable, public PBD::ScopedConnectionList @@ -117,44 +117,48 @@ protected: /* UI elements that can subclasses can add to their widgets */ /** a ComboBoxText which lists presets and manages their selection */ - ArdourDropdown _preset_combo; + ArdourWidgets::ArdourDropdown _preset_combo; /** a label which has a * in if the current settings are different from the preset being shown */ Gtk::Label _preset_modified; /** a button to add a preset */ - ArdourButton add_button; + ArdourWidgets::ArdourButton add_button; /** a button to save the current settings as a new user preset */ - ArdourButton save_button; + ArdourWidgets::ArdourButton save_button; /** a button to delete the current preset (if it is a user one) */ - ArdourButton delete_button; + ArdourWidgets::ArdourButton delete_button; /** a button to delete the reset the plugin params */ - ArdourButton reset_button; + ArdourWidgets::ArdourButton reset_button; /** a button to bypass the plugin */ - ArdourButton bypass_button; + ArdourWidgets::ArdourButton bypass_button; /** and self-explaining button :) */ - ArdourButton pin_management_button; + ArdourWidgets::ArdourButton pin_management_button; /** a button to acquire keyboard focus */ Gtk::EventBox focus_button; /** an expander containing the plugin description */ Gtk::Expander description_expander; /** an expander containing the plugin analysis graph */ Gtk::Expander plugin_analysis_expander; + /** an expander containing the plugin cpu profile */ + Gtk::Expander cpuload_expander; /** a button which, when clicked, opens the latency GUI */ - ArdourButton latency_button; + ArdourWidgets::ArdourButton latency_button; /** a button which sets all controls' automation setting to Manual */ - ArdourButton automation_manual_all_button; + ArdourWidgets::ArdourButton automation_manual_all_button; /** a button which sets all controls' automation setting to Play */ - ArdourButton automation_play_all_button; + ArdourWidgets::ArdourButton automation_play_all_button; /** a button which sets all controls' automation setting to Write */ - ArdourButton automation_write_all_button; + ArdourWidgets::ArdourButton automation_write_all_button; /** a button which sets all controls' automation setting to Touch */ - ArdourButton automation_touch_all_button; + ArdourWidgets::ArdourButton automation_touch_all_button; + /** a button which sets all controls' automation setting to Latch */ + ArdourWidgets::ArdourButton automation_latch_all_button; void set_latency_label (); - LatencyGUI* latency_gui; ArdourWindow* latency_dialog; PluginEqGui* eqgui; + PluginLoadStatsGui* stats_gui; Gtk::Image* focus_out_image; Gtk::Image* focus_in_image; @@ -170,6 +174,7 @@ protected: bool bypass_button_release(GdkEventButton*); void toggle_description (); void toggle_plugin_analysis (); + void toggle_cpuload_display (); void processor_active_changed (boost::weak_ptr p); void plugin_going_away (); void automation_state_changed (); @@ -205,7 +210,7 @@ private: bool is_scrollable; struct MeterInfo { - Gtkmm2ext::FastMeter *meter; + ArdourWidgets::FastMeter* meter; bool packed; MeterInfo () { @@ -227,17 +232,17 @@ private: boost::shared_ptr scale_points; boost::shared_ptr controller; - ArdourButton automate_button; + ArdourWidgets::ArdourButton automate_button; Gtk::Label label; - ArdourDropdown* combo; - Gtkmm2ext::ClickBox* clickbox; + ArdourWidgets::ArdourDropdown* combo; Gtk::FileChooserButton* file_button; - ArdourSpinner* spin_box; + ArdourWidgets::ArdourSpinner* spin_box; bool button; bool update_pending; bool ignore_change; + /* output */ Gtk::EventBox* display; @@ -253,8 +258,12 @@ private: /* layout */ Gtk::Table* knobtable; int x0, x1, y0, y1; + + bool short_autostate; // modify with set_short_autostate below }; + void set_short_autostate(ControlUI* cui, bool value); + std::vector input_controls; // workaround for preset load std::vector input_controls_with_automation; std::vector output_controls; @@ -297,6 +306,29 @@ private: Gtk::FileChooserButton* widget); void path_property_changed (uint32_t key, const ARDOUR::Variant& value); + void scroller_size_request (Gtk::Requisition*); + Gtk::ScrolledWindow scroller; + + Gtk::Expander _plugin_pianokeyboard_expander; + PianoKeyboard* _piano; + Gtk::Widget* _pianomm; + Gtk::VBox _pianobox; + Gtk::SpinButton _piano_velocity; + Gtk::SpinButton _piano_channel; + + static void _note_on_event_handler (GtkWidget*, int, gpointer); + static void _note_off_event_handler (GtkWidget*, int, gpointer); + void note_on_event_handler (int); + void note_off_event_handler (int); + + void toggle_pianokeyboard (); + void build_midi_table (); + void midi_refill_patches (); + void midi_bank_patch_change (uint8_t chn); + void midi_bank_patch_select (uint8_t chn, uint32_t bankpgm); + std::vector midi_pgmsel; + PBD::ScopedConnectionList midi_connections; + std::map pgm_names; }; class PluginUIWindow : public ArdourWindow