vdemidov писал(а):vmax писал(а):Сколько раз придется поднимать диалог выбора директории для экспорта всего кэша всех источников?Это же банально неудобно будет конечным пользователям.
Но согласитесь, что это проблема Хост программы, а не плагина? Мне просто гораздо проще представить плагин, который умеет экспортировать ровно из одного источника, чем плагин умеющий экспортировать из многих. Поэтому я именно этот сценарий и планирую в первую очередь, а то что пользователь захочет запустить сразу кучу экспортов, так это уж совсем другая история.
Вот пытаюсь осмыслить наши с вами обсуждения...
"Я один умный мысль скажу.. Только ты не обижайся.." (c)
Экспорт это экспорт и куда и как складывать полученные тайлы это функционал плагина и знать самой планете
о том куда и как это будет складываться вроде бы и не зачем.
Отсюда напрашивается
единый интерфейс экспорта на все случае жизни.
Разница лишь в получении некого адреса (директории, файла, строки коннекта к базе) и только
Причем самой хост программе этот адрес даже и не нужен. Вы его потом все равно скармливаете
плагину.
Зоопарк интерфейсов растет из того что вы пытаетесь интрефейсную часть специфических
для плагина параметров вытащить на уровень хост программы.
Так может имеет смысл рассмотреть вариант единого интерфейса экспорта работающего по
такому сценарию
1. юзер выбрал тип экспорта, набор источников и зумов
2. Хост программа вызывает метод StartExport
3. Выполняя этот метод имплементация интерфейса сама поднимает
собственный диалог какой нужен и запрашивает параметры
специфические для данного типа экспорта (как то диалог выбора имени файла к примеру )
4. Получив параметры и проверив их правильность управление возвращается хост программе
в случае успеха с объектом которому надо скормить файлы либо NULL если юзер вдруг передумал.
5. Дальше если получен инстанс объекта то хост программа скармливает плагину подряд все данные
( ох-хо ну конечно же с указанием ид источника... а как без него )
На мой взгляд такой вариант единого интерфейса экспорта гораздо более органично встроится в
систему чем кучка разных интерфейсов. Да и вам не придется придумывать и устаканивать интерфейсы
на каждый новый тип экспорта..
Ну возможны еще дополнительные методы... типа
Что-бы спросить у интерфейса способен ли он переварить данные из нескольких разных
источников и соответственно показать выбор источников ввиде мультиселекта или селекта по одному.
bool CanHandleMultipleSources();
Возможно захочется еще аналогичный метод для зумов
bool CanHandleMultipleZooms();
Ну вобщем вот такие мысли...