Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Май 10, 2011, 13:32



Название: Open File (особый тип файла)
Отправлено: Igors от Май 10, 2011, 13:32
Добрый день

Приложение открывает (импортирует) файлы различных типов. Используется нативный OpenFileDialog на Mac и Вындоуз. Сейчас добавился еще один тип который требует дополнительной ф-циональности:

- создатель этих файлов пишет в строго определенный фолдер, так что желательно при выборе файла данного типа туда переходить

- создатель требует установки дополнительных файлов и плагинов (если они еще не установлены) - надо как-то выскочить с модальным диалогом, предложением установить файлы и.т.п.

Я попробовал добавлять custom контролы в нативный диалог. Получается но смотрится отвратно и неоднообразно (на Mac так, на Вындоуз сяк). Да и забот более чем хватает. Др. вариант - сделать отдельный инсталлятор (и там сообщить пользователю фолдер) - получаю заботы для поддержки этой утилиты га 2 платформах. Всунуть эту настройку где-то в др меню - тоже как-то коряво.

Что бы Вы предложили?

Спасибо


Название: Re: Open File (особый тип файла)
Отправлено: Пантер от Май 10, 2011, 13:36
Используй свой диалог.


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 10, 2011, 13:51
Используй свой диалог.
"свой" - это какой?  :)


Название: Re: Open File (особый тип файла)
Отправлено: Пантер от Май 10, 2011, 13:54
Который напишешь сам.


Название: Re: Open File (особый тип файла)
Отправлено: merke от Май 10, 2011, 13:57
Так без паники=)
Указать директории ты можешь и в нативном? если да то this is Хорошо
Ну при выборе плагина, когда юзер будет жать на открыть, проверяй есть ли необходимые плагины, если есть кул, если нет, то выскакивай из под стола меж ног юзера и кричи модально, что нет каких плагинов ;)


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 10, 2011, 15:19
Так без паники=)
Указать директории ты можешь и в нативном? если да то this is Хорошо
Ну при выборе плагина, когда юзер будет жать на открыть, проверяй есть ли необходимые плагины, если есть кул, если нет, то выскакивай из под стола меж ног юзера и кричи модально, что нет каких плагинов ;)
Могу перейти на заданный фолдер. Юзверь не может создать файлов пока плагины не стоят (или если приложения создателя вообще нет на данной машине). Однако он может взять/скопировать файлы со стороны. Так что активироваться (кричать) - сколько раз, как и когда? (а то получится диалог который достанет своими квешнзами)


Название: Re: Open File (особый тип файла)
Отправлено: shirushizo от Май 10, 2011, 21:46
Сойдет и стандартный
Код:
StandardButton QMessageBox::question ( QWidget * parent, const QString & title, const QString & text, 
 StandardButtons buttons = Ok, StandardButton defaultButton = NoButton )   [static]

Кричать один раз:
"На вашем компьютере нет(!) необходимых плагинов:\nплагин_раз;\nплагтн_два;...\nУстановить?" 
и окошко с красной и синей таблетками - QMessageBox::Yes и QMessageBox::No.

Стильно и дерзко ;)


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 11, 2011, 00:09
Кричать один раз:
"На вашем компьютере нет(!) необходимых плагинов:\nплагин_раз;\nплагтн_два;...\nУстановить?" 
и окошко с красной и синей таблетками - QMessageBox::Yes и QMessageBox::No.
Когда? Каждый раз при открытии "выберите файл" ? Так это один тип файла из 10, он может пользователя вообще не интересовать. Даже если один раз (на каждом запуске приложения) - все равно не годится. А сохранить в преференсах - как потом позвать если надо будет? До "установить" еще тоже надо дожить, т.к. приложение-создатель может отсутствовать (или быть снесено).

Просьба: пожалуйста не тратьте Ваше время на пояснения QMessageBox::Yes, это я попытаюсь освоить самостоятельно  :) 


Название: Re: Open File (особый тип файла)
Отправлено: NortT от Май 11, 2011, 02:56
Ну почему каждый раз при открытии "выберите файл". После того как диалог "выберите файл" вернет имя файла, проверить что это за файл, если это что-то типо *.txt, то загружать в штатном порядке, если же это *.superMegaFile, то прокричать что плагины нужны для его обработки, в этом же сообщение сделать кнопочку "Установить" и "Установить позже", если нажато "Установить" - ставим, если "Установить позже" - показываем мессаджбокс, в котором сообщаем что доустановить можно так-то и так-то и вновь открываем "выберите файл", ну или вообще ничего не делаем, просто пустое окно программы показываем.


Название: Re: Open File (особый тип файла)
Отправлено: merke от Май 11, 2011, 07:44
Ну почему каждый раз при открытии "выберите файл". После того как диалог "выберите файл" вернет имя файла, проверить что это за файл, если это что-то типо *.txt, то загружать в штатном порядке, если же это *.superMegaFile, то прокричать что плагины нужны для его обработки, в этом же сообщение сделать кнопочку "Установить" и "Установить позже", если нажато "Установить" - ставим, если "Установить позже" - показываем мессаджбокс, в котором сообщаем что доустановить можно так-то и так-то и вновь открываем "выберите файл", ну или вообще ничего не делаем, просто пустое окно программы показываем.

Всё верно!!!


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 11, 2011, 08:04
Ну почему каждый раз при открытии "выберите файл". После того как диалог "выберите файл" вернет имя файла, проверить что это за файл, если это что-то типо *.txt, то загружать в штатном порядке, если же это *.superMegaFile, то прокричать что плагины нужны ..
Так было бы прекрасно, но ведь дело в том что пока плагины не стоят - взяться файлам такого типа неоткуда, приложение-создатель их писать не будет. Ну остается возможность что они могут быть просто скопированы - но это "теоретически".


Название: Re: Open File (особый тип файла)
Отправлено: NortT от Май 11, 2011, 08:08
Гм.. так а раз им неоткуда взяться пока не стоят плагины => раз файлы есть, есть и плагины, смысл тогда вообще проверять их наличие?


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 11, 2011, 08:30
Гм.. так а раз им неоткуда взяться пока не стоят плагины => раз файлы есть, есть и плагины, смысл тогда вообще проверять их наличие?
Приложение-создатель работает так:

- при нажатии кнопки "Export", появляется меню типа "для какого приложения (приемника) будем писать?". Если я хочу получать файлы, я должен долить свои плагины в определенный фолдер. Если нет поддерживаемых приемников - кнопка export задизаблена.

Кстати файлы оно пишет для всех одинаковые - идея в том что плагины могут сигналить приемнику "пришли файлы" (и наоборот), т.е. "динамический" import/export. Ну то уже др. песня - пока мне бы просто файлы получить.

Понятно можно свалить установку в отдельную утилиту и указать в документации - но таскать ее потом за собой на 2 платформах не хочется.


Название: Re: Open File (особый тип файла)
Отправлено: Igors от Май 13, 2011, 08:17
Сделал так: если пользователь держит клавишу Control и выбирает данный тип файла из popup menu - то файловый диалог закрывается и появляется информация об установленных плагинах или предложение их установить.

Тоже не персик - если не знает что надо держать Control, то не найдет. Но лучшего не видно, так что пусть читает документацию.