Russian Qt Forum
Ноябрь 25, 2024, 05:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Open File (особый тип файла)  (Прочитано 6939 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Май 10, 2011, 13:32 »

Добрый день

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

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

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

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

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

Спасибо
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Май 10, 2011, 13:36 »

Используй свой диалог.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Май 10, 2011, 13:51 »

Используй свой диалог.
"свой" - это какой?  Улыбающийся
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Май 10, 2011, 13:54 »

Который напишешь сам.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
merke
Гость
« Ответ #4 : Май 10, 2011, 13:57 »

Так без паники=)
Указать директории ты можешь и в нативном? если да то this is Хорошо
Ну при выборе плагина, когда юзер будет жать на открыть, проверяй есть ли необходимые плагины, если есть кул, если нет, то выскакивай из под стола меж ног юзера и кричи модально, что нет каких плагинов Подмигивающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Май 10, 2011, 15:19 »

Так без паники=)
Указать директории ты можешь и в нативном? если да то this is Хорошо
Ну при выборе плагина, когда юзер будет жать на открыть, проверяй есть ли необходимые плагины, если есть кул, если нет, то выскакивай из под стола меж ног юзера и кричи модально, что нет каких плагинов Подмигивающий
Могу перейти на заданный фолдер. Юзверь не может создать файлов пока плагины не стоят (или если приложения создателя вообще нет на данной машине). Однако он может взять/скопировать файлы со стороны. Так что активироваться (кричать) - сколько раз, как и когда? (а то получится диалог который достанет своими квешнзами)
Записан
shirushizo
Гость
« Ответ #6 : Май 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.

Стильно и дерзко Подмигивающий
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #7 : Май 11, 2011, 00:09 »

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

Просьба: пожалуйста не тратьте Ваше время на пояснения QMessageBox::Yes, это я попытаюсь освоить самостоятельно  Улыбающийся 
Записан
NortT
Гость
« Ответ #8 : Май 11, 2011, 02:56 »

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

Ну почему каждый раз при открытии "выберите файл". После того как диалог "выберите файл" вернет имя файла, проверить что это за файл, если это что-то типо *.txt, то загружать в штатном порядке, если же это *.superMegaFile, то прокричать что плагины нужны для его обработки, в этом же сообщение сделать кнопочку "Установить" и "Установить позже", если нажато "Установить" - ставим, если "Установить позже" - показываем мессаджбокс, в котором сообщаем что доустановить можно так-то и так-то и вновь открываем "выберите файл", ну или вообще ничего не делаем, просто пустое окно программы показываем.

Всё верно!!!
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #10 : Май 11, 2011, 08:04 »

Ну почему каждый раз при открытии "выберите файл". После того как диалог "выберите файл" вернет имя файла, проверить что это за файл, если это что-то типо *.txt, то загружать в штатном порядке, если же это *.superMegaFile, то прокричать что плагины нужны ..
Так было бы прекрасно, но ведь дело в том что пока плагины не стоят - взяться файлам такого типа неоткуда, приложение-создатель их писать не будет. Ну остается возможность что они могут быть просто скопированы - но это "теоретически".
Записан
NortT
Гость
« Ответ #11 : Май 11, 2011, 08:08 »

Гм.. так а раз им неоткуда взяться пока не стоят плагины => раз файлы есть, есть и плагины, смысл тогда вообще проверять их наличие?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #12 : Май 11, 2011, 08:30 »

Гм.. так а раз им неоткуда взяться пока не стоят плагины => раз файлы есть, есть и плагины, смысл тогда вообще проверять их наличие?
Приложение-создатель работает так:

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

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

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

Сообщений: 11445


Просмотр профиля
« Ответ #13 : Май 13, 2011, 08:17 »

Сделал так: если пользователь держит клавишу Control и выбирает данный тип файла из popup menu - то файловый диалог закрывается и появляется информация об установленных плагинах или предложение их установить.

Тоже не персик - если не знает что надо держать Control, то не найдет. Но лучшего не видно, так что пусть читает документацию.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.081 секунд. Запросов: 23.