Page 1 of 11

OpenDialog - диалог выбора файлов и директории

Posted: Fri Mar 19, 2010 1:43 pm
by Mario
Программа является подобием мелкософтовского компонента Microsoft Common Dialog Control или его аналогов в Linux (там их вообще несколько разных присутствует).

Программа имеет 3 режима работы:
1) Диалог выбора для открытия файла.
1.png
1.png (6.84 KiB)
Viewed 12692 times
2) Диалог выбора для сохранения файла.
2.png
2.png (6.82 KiB)
Viewed 12691 times
3) Диалог выбора директории.
3.png
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
я сохранил это сообщение здесь http://wiki.kolibrios.org/OpenDialog

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 добавляется.