Добрый вечер
Есть приложение которое грузит свои плагины. Задача сделать систему которая позволяла бы авторам плагинов создавать UI интерактивно, т.к. плагины в основном занимаются глухими расчетами. Интерфейс обмена данными хост-плагин очень прост, выглядит так
C++ (Qt)
// (экспортируемая) ф-ция плагина (dll) которая вызывается хостом
int SetPluginData( void * theData, size_t theDataSize )
{
if (theDataSize != sizeof(CPluginData)) return error_InvalidData;
*pluginData = *(CPluginData *) theData; // простейший случай
return noError;
}
// формат данных плагина (пример)
struct CPluginData {
unsigned int mID;
float mParam1;
int mParam2;
... // др. параметры
};
Нет проблем нарисовать UI интерактивно с помощью любого редактора (используются нативные ресурсы). Но вот беда - нарисованные айтемы не могут иметь custom properties, есть только ID айтема (целое уникальное число). Хост может загрузить и крутить нарисованное UI, но ему нужно как-то определить какие айтемы должны подаваться плагину (ну понятно не сами айтемы а введенные пользователем значения). Также нужны атрибуты которых в UI нет, напр
- тип айтема - напр EditLine может быть float, int, string
- флаг "параметр имеет пределы" и min/max значения
- неск др (в том же плане)
Как бы Вы это решали?
Спасибо