Russian Qt Forum

Программирование => Общий => Тема начата: Igors от Июнь 10, 2011, 01:26



Название: Отсутствие Properties
Отправлено: Igors от Июнь 10, 2011, 01:26
Добрый вечер

Есть приложение которое грузит свои плагины. Задача сделать систему которая позволяла бы авторам плагинов создавать 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 значения
- неск др (в том же плане)

Как бы Вы это решали?

Спасибо


Название: Re: Отсутствие Properties
Отправлено: Авварон от Июнь 10, 2011, 06:35
Если надо чтобы плагин предоставлял УЙ, пусть предоставлят готовый виджет. Другое дело как хост эти виджеты компоновать должен, я под эту целую системку написал.


Название: Re: Отсутствие Properties
Отправлено: Igors от Июнь 10, 2011, 08:18
Если надо чтобы плагин предоставлял УЙ, пусть предоставлят готовый виджет. Другое дело как хост эти виджеты компоновать должен, я под эту целую системку написал.
плагин предоставляет готовый виджет (часть UI) - то есть каждому плагину соответствует заранее подготовленный файл ресурсов. Но плагин не имеет никакого кода занимающегося UI - задача сделать это в хосте.


Название: Re: Отсутствие Properties
Отправлено: Авварон от Июнь 10, 2011, 08:52
Пишите тогда понятнее. Который раз читаю ваши темы и не понимаю "а чо нада-то".
Помимо готового виджета я указывал из плагина в какую область поместить (в какой-то из доков или центр, допустим). Порядок внутри области задается весами. Если плагин у вас сам не может предоставить эту информацию, можно рядом с плагином класть инишник, в к-ом и писать нужные значения.


Название: Re: Отсутствие Properties
Отправлено: Igors от Июнь 10, 2011, 10:32
Пишите тогда понятнее. Который раз читаю ваши темы и не понимаю "а чо нада-то".
Не все вещи должны быть понятны моментально и не все сводятся к тому какую страницу Ассыстента открыть  :)

Помимо готового виджета я указывал из плагина в какую область поместить (в какой-то из доков или центр, допустим). Порядок внутри области задается весами. Если плагин у вас сам не может предоставить эту информацию, можно рядом с плагином класть инишник, в к-ом и писать нужные значения.
Куда помещать - вопрос не стоит. Пользователь управляет плагином из хоста. Dbl-click на объект плагина - открылся его модальный диалог, ввел значения, нажал Ок, плагин зарядился новыми данными и пошел считать. Это вполне устраивает. Проблема вот в этом
Хост может загрузить и крутить нарисованное UI, но ему нужно как-то определить какие айтемы должны подаваться плагину (ну понятно не сами айтемы а введенные пользователем значения). Также нужны атрибуты которых в UI нет


Название: Re: Отсутствие Properties
Отправлено: Авварон от Июнь 10, 2011, 10:48
А, ну я не так понял. На сем умываю руки, надоело читать малопонятные тексты:)