On Tue, Jun 15, 2010 at 4:48 PM, Gabriel M. Beddingfield <gabrbedd@gmai... > wrote:
> On Tue, 15 Jun 2010, Jeremy wrote:
> Otherwise, every host has to have a Qt-external-window setup, an
>>> FLTK-external-window setup, a GTK-external-window
>>> setup, etc. Kind of defeats the purpose of having the external UI,
>>> wait, isn't the
>> LV2UI_Descriptor->port_event() and LV2UI_Write_Function() interface
>> agnostic? Wouldn't it be possible to have toolkit agnostic
> Yes, these are. And these allow plugins to communicate with other plugins.
> However, these functions are executed in the host application's memory
> space. So, I don't see how it would help in having FLTK widgets hosted by a
> Qt application.
I'm not suggesting hosting individual widgets within a foriegn API's frame.
I'm simply saying that it might be possible to abstract the plugin gui
architecture into three parts.
1. The host, which can directly embed a widget if it is of the right type.
2. The translation layer, which can launch a new window to embed the widget
if its toolkit does not work with the host. The host will still have
generic "main event loop" callbacks to the translation layer, which is
provided by the plugin.
3. The widget, which doesn't have to be aware of how it is hosted, but
simply is given a parent widget to add itself to.
Now, this would mean that you could have "external" type windows in the case
where internal windows aren't going to work, and still retain the "internal"
type process unification, and communication unification. It would also
allow plugin writers to write a *single* GUI implementation which could
function as both an embedded and external widget, with a *single* method for
communication. The "translation layer" would only have to be written once
for each toolkit, and then bundled with the plugins that use it.
Obviously, if as Paul says there are issues handling events, then this might
not work out at all.