Commit Graph

150 Commits

Author SHA1 Message Date
Robin Gareus 3355e753bf
Keep track of LV2 externalUI visibility
This allows Ardour to re-open previously shown plugins,
and toggle externalUI.

This worked in the distant past, before Ardour 3.3 introduced
the Ardour Window Manager.
2023-11-26 20:07:00 +01:00
Paul Davis b35518e212 switch from boost::{shared,weak}_ptr to std::{shared,weak}_ptr
This is mostly a simple lexical search+replace but the absence of operator< for
std::weak_ptr<T> leads to some complications, particularly with Evoral::Sequence
and ExportPortChannel.
2023-03-24 14:19:15 -06:00
Robin Gareus 9cbf3ae4ad
Who needs PIs for Plugin GUIs?
Use abstract base class for plugin UIs wherever possible
2022-04-14 16:35:03 +02:00
Paul Davis c7b70c6318 new GUI preference item for showing only 1 plugin GUI at a time. Disabled by default 2021-12-05 11:07:27 -07:00
Robin Gareus 032aceff28
Remove custom generic plugin UIs (a-eq) 1/2
Mostly a failed experiment, that also does not play well with
themes. Superseded by Harrison's ACE-EQ GUI.
2021-06-04 01:43:01 +02:00
Robin Gareus 1759ba96b6
VST3: Plugin GUI support 2020-09-17 00:10:21 +02:00
Robin Gareus f8ce5ecbc6
Consolidate Plugin-GUI toolbar layout, consistent layout & spacing 2020-09-16 00:02:52 +02:00
Robin Gareus c0c1fd8b60
Rename PianoKeyboard class, avoid ambiguities
A C++ class "PianoKeyboard" in the global namespace may cause
issues with some plugins that export and use an identically
named symbol.
2019-10-25 21:24:25 +02:00
Robin Gareus 3f2f517291
Rough-in gtk-pianokeyboard C -> C++ 2019-10-24 19:59:22 +02:00
Robin Gareus 19e4f47b4b
Cont'd work on Virtual-keyboard
* allow gtk_pianokeyboard to respond to y-axis click position
  and include MIDI velocity with note-on signal
* add configuration settings to virual-keyboard
  min/max velocity, keyboard-layout
* add a CC7 controller knob
2019-10-18 22:56:46 +02:00
Robin Gareus 71fa4fa75c
Add a plugin-preset browser window
Previously preset-browser was only used instead of "generic control"
display if a plugin does not have any controls (but presets).

This allows for showing a dedicated window..
2019-10-11 00:03:41 +02:00
Robin Gareus 0fa38c0002
Add API to check for plugin-presets with description 2019-10-10 22:31:19 +02:00
Robin Gareus 4050ca5633
Update GPL boilerplate and (C)
Copyright-holder and year information is extracted from git log.

git history begins in 2005. So (C) from 1998..2005 is lost. Also some
(C) assignment of commits where the committer didn't use --author.
2019-08-03 15:53:15 +02:00
Robin Gareus 45805ece02
Remove unused value parameter printers 2019-03-11 01:48:40 +01:00
Robin Gareus 9594e12c52
Add a plugin-preset list/selector GUI
This is currently only used for "Preset only" plugins, generic UI.
And also depends on plugin-presets having a description.
2018-12-20 16:56:49 +01:00
Robin Gareus 61d26e5678 Draw Plugin DSP load bargraph 2018-08-15 05:32:57 +02:00
Robin Gareus 7e78d1c786 Display profile-data in generic plugin-UI. 2018-05-17 22:15:07 +02:00
Robin Gareus fe964ccfdf Remove unused ClickBox 2017-09-25 15:45:23 +02:00
Robin Gareus 9e256b044d GUI support for Latch 2017-09-18 11:40:52 -04:00
Robin Gareus 746665e89c Add a PianoKeyboard to GenericUI (on a MIDI track) 2017-09-08 23:35:00 +02:00
Robin Gareus aa11cb96b3 Experimental GenericPluginUI MIDI patch select. 2017-09-08 23:35:00 +02:00
Julien "_FrnchFrgg_" RIVAUD 7033b34a65 Ensure a plugin generic UI doesn't exceed screen width
Do that by wrapping the packed controls box in a ScrolledWindow and
making it request the same width than the box but capped to 90% of the
screen width.

Also, when the box width exceeds the maximum value, try again with
one-letter automation buttons in case the reduced width avoids showing a
scroll bar.
2017-08-30 20:11:17 +02:00
Julien "_FrnchFrgg_" RIVAUD 1b561446b8 GenericUI: rationalize Autostate button sizing
When there was a knobtable in the ControlUI, the behavior of the
automation state button changed by displaying one-char state as in track
headers. Factor out that logic to depend on a new boolean property of
the ControlUI, which should be set with set_short_autostate().

This regroups sizing logic in a single place and avoids future
discrepancies between the actual caption and the size allocated for it,
when several use-cases for smaller buttons are added.
2017-08-29 12:06:33 +02:00
Robin Gareus eb1e423b75 Remove <gtkmm.h> include from header files. 2017-07-17 21:06:04 +02:00
Robin Gareus f6e182b937 Move Gtkmm2ext widgets into libwidget 2017-07-17 21:06:04 +02:00
Robin Gareus 5c92613698 Separate Ardour UI widgets into dedicated library 2017-07-17 21:06:04 +02:00
Robin Gareus b976bf8986 NO-OP whitespace & foratting of header files 2017-07-01 21:19:56 +02:00
Thomas Brand 63ea7b6516 NO-OP whitespace (updated GH PR #357) 2017-07-01 19:28:26 +02:00
Robin Gareus 555fcb89e5 GUI: prepare for API changes
remove use of
- unbound_min/max
- list->default_value and min/max_y
2017-06-21 18:12:16 +02:00
Robin Gareus 80fa696564 basic Mac VST Cocoa UI support 2016-11-13 16:35:06 +01:00
Julien "_FrnchFrgg_" RIVAUD fcadcac7e7 Make knobs size requests dynamic
At the point of creation, the automate_button size request is wrong
since it has not the correct style yet. Instead of trying ugly hacks to
fix that, connect to the knob's size_request signal and get the button's
requisition only when needed. If the system font changes to one that has
different extents (even if the point size is the same), the UI will thus
correctly update.
2016-08-20 18:12:49 +02:00
Julien "_FrnchFrgg_" RIVAUD 606ffe6a35 Align the currently selected automation state on dropdown
By passing the current text of the automation button we can make the
dropdown menu align with the current mode. This will only work for
full-size automation buttons, not when use-knob is true, but in that
case it feels wrong to popup on top of the button anyway.

Also make the menu show on mouse down like a real dropdown.
2016-08-17 23:56:31 +02:00
Robin Gareus 836f48457d add a "Pin Management" button to the plugin UI-header 2016-08-05 02:35:51 +02:00
Julien "_FrnchFrgg_" RIVAUD 67cbdc6cf2 GenericUI: Update all input controls on preset load
The existing code relies on AutomationControls for getting parameter
changes and update the UI accordingly. One case where this doesn't yet
work is preset loading, where ARDOUR::Plugin is responsible for actually
loading the preset but doesn't notify the changes to AutomationControls.

Since the input_controls vector now contains all ControlUI's that rely on
AutomationControls to get updates, just listen to Plugin::PresetLoaded()
and trigger an update of all elements in input_controls.

This is temporary until a better solution is devised to make
AutomationControls aware of preset loading.
2016-07-29 02:06:55 +02:00
Julien "_FrnchFrgg_" RIVAUD 63bbcf968a GenericUI: only connect one PropertyChanged callback
The code connected the callback to the PropertyChanged signal from the
plugin once per filepath control created. Should the plugin have several
files to open, this would be at best wasteful and at worst racy.

Connect the callback a single time, since the same callback handles all
property updates that we're interested in. Also rename the methods,
members and typedefs so that it's clear what the code is trying to do.
2016-07-28 23:19:08 +02:00
Julien "_FrnchFrgg_" RIVAUD 1d173bc84f GenericUI: replace ComboBoxText by ArdourDropdown 2016-07-28 23:18:47 +02:00
Robin Gareus d0f594ffd0 adjust plugin-UI height when toggling expanders 2016-07-16 02:12:16 +02:00
Robin Gareus b382ad8b22 towards a generic plugin grid layout 2016-07-08 18:19:31 +02:00
Robin Gareus 77e50f56f9 first step to separate generic-gui layout 2016-07-08 18:19:31 +02:00
Robin Gareus ff50b3780a Replace Gtk::ToggleButton with ArdourButton in Generic Plugin GUI 2016-07-04 00:20:11 +02:00
Paul Davis ac008dac02 Clean up generic and LV2 plugin GUI to deal with ParameterChanged(Externally) alteration 2015-10-20 10:23:49 -04:00
Paul Davis 7804a524dc Revert "rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result."
This reverts commit 336b2eb9a4.
2015-10-20 10:23:49 -04:00
Paul Davis 336b2eb9a4 rename ParameterChanged signal in Plugin to ParameterChangedExternally to reflect its intent, and clean up the result.
The signal exists to notify listeners that something outside of the host's control (e.g. a plugin's own GUI for AU or VST)
has modified a plugin parameter. Previous code had strange feedback loops and ambiguous semantics.

Significant modification of LV2 GUI updating was required.

Still to be tested for feedback loop issues: AudioUnits
2015-10-20 09:07:58 -04:00
Robin Gareus 22b07e0233 NOOP, remove trailing tabs/whitespace. 2015-10-05 16:17:49 +02:00
Robin Gareus 9790d2b5dd prepare plugin reset (#6297) 2015-05-04 20:48:41 +02:00
David Robillard 0cb096a978 Use Ardour widgets consistently in plugin UI.
Several reasons:

* This previously looked horribly inconsistent.

* The Gtk selector was broken for plugins with many presets,
  making it impossible to select presets.  For whatever reason,
  the use of a menu fixes this bug.

* Towards a hierarchical menu for banked presets.
2015-03-07 14:04:45 -05:00
Robin Gareus a0eeb80885 fix embedded plugin UI keyboard handling
When the GUI is opened the first time all is fine, focus is on the
embedded widget. However once a user presses one of the preset buttons
(Add, Save,...) there is no possibility to return focus to the
embedded widget. Ardour always 'sees' it as focus=GtkButton and passes
the event to the editor.
2015-02-21 03:16:04 +01:00
David Robillard e3da7aff8c Remove redundant calls to start/end_touch.
The controllers do this automatically.
2014-11-28 18:31:18 -05:00
Jeremy Carter fe6e6e3f35 Plugin Automation All: Fix bug where Switches weren't being changed. 2014-11-18 14:26:50 -05:00
Paul Davis 251735080d fix up some suboptimal and crash-prone aspects of 7c263f3bc4 from Jeremy Carter 2014-11-14 17:14:48 -05:00