Page 1 of 11
OpenDialog - диалог выбора файлов и директории
Posted: Fri Mar 19, 2010 1:43 pm
by Mario
Программа является подобием мелкософтовского компонента Microsoft Common Dialog Control или его аналогов в Linux (там их вообще несколько разных присутствует).
Программа имеет 3 режима работы:
1) Диалог выбора для открытия файла.
-
1.png (6.84 KiB)
Viewed 12692 times
2) Диалог выбора для сохранения файла.
-
2.png (6.82 KiB)
Viewed 12691 times
3) Диалог выбора директории.
-
3.png (5.3 KiB)
Viewed 12692 times
Программа сама физически не открывает на чтение или запись - она предназначена для взаимодействия с пользователем. Результат работы - готовый, полный путь передаваемый через "расшаренную" именованную область памяти к программе использующей OpenDialog. Например:
/hd0/1/dir1/dir2/example.tmp
/rd/1/dir1/file.bin
Для прикручивания к программам, написанным на
ассемблере, используется макрос
opendial.mac либо подобная по функциональности процедура из библиотеки
Proc_Lib.obj. В последнем случае возможно использование OpenDialog для ЯВУ (например, Си).
Исходники самой программы и макросы залиты на
SVN в директории с
BoxLib. Примером использования является
ctrldemo.asm (демо некоторых компонентов BoxLib).
UPD В настоящее время OpenDialog используют 19 программ:
zSea
Heed
RtfRead
CtrlDemo
KIV
MidAmp
Planet viewer
T_editor
RDsave
Screenshooter
Desktop.
FASM - flat assembler
Kolibri Graphics Benchmark (MGB)
HDD информер
TinyPad
Animage
Kpack
PCIDEV
Info3ds
Re: OpenDialog - диалог выбора файлов и директории
Posted: Fri Mar 19, 2010 8:59 pm
by IgorA
Re: OpenDialog - диалог выбора файлов и директории
Posted: Fri Mar 19, 2010 9:18 pm
by Mario
Спасибо.
Наверное вот
здесь это:
OpenDialog - отличный системный файловый менеджер
Не совсем корректно сформулировано. Не менеджер и эпитет "отличный" не совсем понятно к чему относится.
Я не понял как поправить (нет доступа не редактирование), если кто может просьба заменить на "OpenDialog - диалог выбора файлов и директории" в Wiki.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Fri May 28, 2010 1:32 pm
by Mario
Ревизия 1470. Добавлено использование OpenDialog в
KIV.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Fri Jun 11, 2010 10:00 am
by Mario
Ревизия 1490. Исправлен хитрый баг приводивший к выносу ядра, уже после завершения программы, когда ее даже в памяти уже нет.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sat Jun 12, 2010 4:45 pm
by Mario
Ревизия 1493. Добавлено использование OpenDialog в
MidAmp.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sat Jun 12, 2010 8:59 pm
by Leency
Отлично, так держать. Надеюсь SysXtree уже в ближайшем времени потеряет все замки и канет в лету.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sat Jun 12, 2010 10:07 pm
by Mario
Ну, я на всякий случай оставляю код для его вызова, который уже присутствовал.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Fri Jun 18, 2010 12:18 pm
by Mario
Проконсультировавшись с Diamond'ом я решил код макроса
opendial.mac, служащего для вызова и работы с
OpenDialog, оформить в
библиотеку. Для приложений написанных на
ассемблере это не настолько существенно, ибо размер макроса невелик, но зато такой подход позволит вызвать
OpenDialog приложениям написанным на
ЯВУ. В частности
HTMLv - я думаю будет полезно подключение
OpenDialog'а. Формат вызова будет подобен вызову функций
Box_Lib.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Thu Jul 01, 2010 10:22 pm
by Mario
SVN r. 1510 - прикрутил использование вызова
OpenDialog через библиотеку
proc_lib.obj, к программе
Heed. Также выбросил код вызова
Sysxtree. Подчистил еще пару мест - размер программы уменьшился.
Да кстати информация для программистов ЯВУ (языков высокого уровня) - через вызовы proc_lib.obj, теперь можно вызывать OpenDialog из программ написанных на другом языке, а не только на ассемблере. Все вызовы оформляются подобно вызовам Box_Lib. Однако сам я прикручивать к ним не имею возможности, так как нет инструментария, опыта компиляции ЯВУ приложений и самое главное времени, но отвечу на все вопросы возникающие с применением.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sat Jul 03, 2010 5:28 pm
by Mario
SVN r. 1511 - прикрутил использование вызова OpenDialog через библиотеку proc_lib.obj, к программе KIV.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sat Jul 03, 2010 6:31 pm
by Mario
SVN r. 1512 - прикрутил использование вызова OpenDialog через библиотеку proc_lib.obj, к программе Rtfread. Также убрал макрос вызова Sysxtree. Размер программы уменьшился.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Sun Jul 11, 2010 8:53 pm
by Nasarus
Хотелось бы, чтобы при запуске окно OpenDialog'a было выровнено по центру, так имхо юзабельней. Тем более, что это очень легко реализовать
Re: OpenDialog - диалог выбора файлов и директории
Posted: Tue Jul 13, 2010 2:18 pm
by Mario
Я посмотрел на реакцию диалогов в Виндовс и Линукс. Разные программы открывают по разному.
Мне кажется, что лучше если OpenDialog будет центрироваться относительно текущего родительского окна. Конечно это потребует наличия двух dword (X+Xsize, Y+Ysize) в структуре блока данных передаваемых для макроса opendial.mac (ну и кода proc_lib.obj соответственно) и одного dword (X,Y центр родительского приложения) в структуре расшаренной памяти.
Либо 4 dword в структуре и 2 dword в расшаренной памяти и можно будет сохранять позицию и размер OpenDialog, в текущем сеансе для текущего приложения.
Вот как-то так.
Re: OpenDialog - диалог выбора файлов и директории
Posted: Tue Aug 24, 2010 11:45 am
by Mario
SVN r. 1581 - сохранение размеров
OpenDialog и центрирование его относительно текущего окна. Также доработана библиотека
proc_lib.obj для поддержки этой фичи. Пока поддержано только для приложения
Heed. Остальные доработаю чуть погодя - там небольшая доработка, всего пара dword в структуре блока данных OpenDialog добавляется.