Page 1 of 9
Файловый навигатор
Posted: Mon Nov 26, 2012 12:02 am
by 0CodErr
Пока ещё много недоработок, например, во время навигации,
во время перемещения по списку при переключении с мыши на клавиатуру, при возврате из пустой папки,
со скроллбаром какой-то глюк, имена с русскими буквами не всегда правильно сортируются, ...
Управление клавиатурой:
- Home в начало списка
- End в конец списка
- PageUp на страницу вверх
- PageDown на страницу вниз
- ArrowUp на один элемент вверх
- ArrowDown на один элемент вниз
- L перейти в адресную строку
- BackSpace на уровень вверх
- ArrowLeft в предыдущую директорию
- ArrowRight в следующую директорию
- Enter перейти в выделенную(или введённую в адресную строку) директорию или открыть(запустить) выделенный файл
Действия Cut\Copy\Paste\Delete пока работают только для файлов. Delete подтверждения не спрашивает.
Используемые библиотеки:
- box_lib (edit_box, scrollbar)
- libimg (загрузка иконок и шрифта)
- buf2d (отрисовка списка)
Следующие файлы должны находится в "/rd/1/file managers/":
- fnav.set (список ассоциированных приложений и расширений файлов)
- fnav_icn.png (иконки)
- fnav_fnt.png (шрифт)
Re: Файловый навигатор
Posted: Mon Nov 26, 2012 12:15 am
by SoUrcerer
Молодец. А ты видел, что есть такая штука, как opendial, и в box_lib есть компонент для отображения директории файлов?
Re: Файловый навигатор
Posted: Mon Nov 26, 2012 12:56 am
by Leency
SoUrcerer
Я так понимаю, 0CodErr написал "Файловый навигатор" с целью обучения асму и использования библиотек. И это похвально.
С другой стороны два файловых менеджера уже есть в Колибри. В то время, как нехватает ещё множества других программ! Например: поиск, программа календарь требует переработки, нет менеджера обоев (функция ресайза уже есть в img_lib) и много другого. Не лучше ли начать писать что-то полезное сразу? Еолайт, к примеру, был моей первой программой вместо "Hello World", или ты хочешь составить ему конкуренцию?))
Re: Файловый навигатор
Posted: Tue Nov 27, 2012 1:43 am
by IgorA
Leency wrote:С другой стороны два файловых менеджера уже есть в Колибри
Почему только два - Eolite, Kfar, Kfm. Хотя Kfm уже развиватся не будет, но он пока еще есть в дистрибутиве.
SoUrcerer wrote:Молодец. А ты видел, что есть такая штука, как opendial, и в box_lib есть компонент для отображения директории файлов?
Я когда-то пробовал разбираться с подключением элемента opendial. Там очень много програмного кода нужного для подключения идет в самом приложении. Потому его так просто не подключишь. Например приложение само анализирует все нажатия кнопок, а перед вызовом функции нажатия на клавиатуру уже должно быть определено действие, которое должен делать элемент opendial.
Если интересно см. файл
http://websvn.kolibrios.org/filedetails ... endial.asm
со строки 130 (функция key) и далее со строки 269:
Code: Select all
.key_action:
mov [file_browser_data_1.key_action],ebx
push dword file_browser_data_1
call [FileBrowser_key]
Думаю что это хорошая программа, не смотря на то что уже есть другие файловые менеджеры.
Re: Файловый навигатор
Posted: Tue Nov 27, 2012 10:09 am
by Serge
Leency
Каждый начинающий программист должен написать своей клон коммандера, эксплорера или чего-то-там-файловое-ещё. Без этого никак нельзя.
0CodErr
Исходники будут ?
Re: Файловый навигатор
Posted: Wed Nov 28, 2012 5:35 pm
by Leency
Зависает при запуске.
Re: Файловый навигатор
Posted: Mon Dec 03, 2012 4:48 pm
by 0CodErr
Leency wrote:Зависает при запуске.
Может buf2d слишком старая?
Serge wrote:Исходники будут?
Только когда доделаю. Сейчас там, выражаясь словами
Leency, "своя атмосфера".
Самих исходников, возможно, будет не достаточно. Я многое сначала схематично изображаю на картинках, поэтому комментариев в коде не очень много. Картинки, например, такие:
В новой версии некоторые доработки в навигации и во время перемещения по списку.
Добавил управление мышью:
- средняя кнопка + движение вверх на уровень вверх
- средняя кнопка + движение влево в предыдущую директорию
- средняя кнопка + движение вправо в следующую директорию
Файл из архива fnav_cur.png надо тоже положить в "/rd/1/file managers/".
Со скроллбаром проблема осталась. Здесь
viewtopic.php?f=24&t=1220&start=195#p44130 я приводил пример. Это только у меня так?
Насчёт смены курсора:
Он у меня меняется не сразу, а только если подвигать мышью, поэтому приходится делать это программно.
На реальной системе у меня курсоры отображаются не совсем правильно, а VirtualBox — нормально. Думаю, дело тут не в самой программе.
Re: Файловый навигатор
Posted: Mon Dec 03, 2012 6:46 pm
by Leency
Со сколл-баром у мя тоже была проблема в HTMLv, посмотри видео по ссылке
http://bugs.kolibrios.org/view.php?id=41
Пришлось перетаскивание ползунка мышью делать вручную, а не юзать готовый метод.
Spoiler:
Code: Select all
/*scrollbar_v_mouse (#scroll1); //скролл притормажимает, идём "своим путём"
if (lines.first <> scroll1.position)
{
lines.first = scroll1.position;
WB1.ParseHTML(buf, filesize);
//break;
};*/
if (!m.lkm) scroll_used=0;
if (m.x>=WB1.width-14) && (m.x<=WB1.width+6) && (m.y>WB1.top+16)
&& (m.y<WB1.top+WB1.height-16) && (lines.all>lines.visible) && (m.lkm)
scroll_used=1;
if (scroll_used)
{
half_scroll_size = WB1.height - 16 * lines.visible / lines.all - 3 /2;
IF (half_scroll_size+WB1.top>m.y) || (m.y<0) || (m.y>4000) m.y=half_scroll_size+WB1.top; //если курсор над окном
btn=lines.first; //сохраняем старое количество
lines.first = m.y -half_scroll_size -WB1.top * lines.all / WB1.height;
if (lines.visible+lines.first>lines.all) lines.first=lines.all-lines.visible;
if (btn<>lines.first) WB1.ParseHTML(buf); //чтоб лишний раз не перерисовывать
}
Re: Файловый навигатор
Posted: Mon Dec 03, 2012 7:06 pm
by 0CodErr
Я тоже пытаюсь сам корректировать .position скроллбара.
Но я ещё перед этим вызываю scrollbar_v_mouse, наверное, из-за этого меняется реальное положение ползунка(.position2, если не ошибаюсь).
Забыл сказать. Можно же разные шрифты использовать. Например, это может выглядеть так:
Re: Файловый навигатор
Posted: Tue Dec 04, 2012 11:12 am
by Leency
>>Может buf2d слишком старая?
Я вообще не знал, что она нужна, и программа не пишет, что библиотека такая-то не найдена.
Ок, собрал последнюю версию с SVN, всё равено падает.
Code: Select all
K : Process - forced terminate PID: 0000002A
K : Page fault
K : EAX : 00000000 EBX : 700DD660 ECX : FFFFFFFA
K : EDX : 00020000 ESI : 700E29ED EDI : 00006000
K : EBP : 00004D1B EIP : 700D8E03 ESP : 00004D13
K : Flags : 00011246 CS : 0000001B (application)
K : destroy app object
K : destroy app object
K : Process - forced terminate PID: 0000002F
K : Page fault
K : EAX : 00000000 EBX : 70104660 ECX : FFFFFFFA
K : EDX : 00020000 ESI : 701099ED EDI : 00006000
K : EBP : 00004D1B EIP : 700FFE03 ESP : 00004D13
K : Flags : 00011246 CS : 0000001B (application)
K : Process - forced terminate PID: 00000031
K : Page fault
K : EAX : 00000000 EBX : 7011C660 ECX : FFFFFFFA
K : EDX : 00020000 ESI : 701219ED EDI : 00006000
K : EBP : 00004D1B EIP : 70117E03 ESP : 00004D13
K : Flags : 00011246 CS : 0000001B (application)
K : destroy app object
А ещё - путь к png файлу жёстко прописан на /sys/file managers или может юзать текущую папку программы?
Re: Файловый навигатор
Posted: Tue Dec 04, 2012 11:49 am
by 0CodErr
>>Может buf2d слишком старая?
Я вообще не знал, что она нужна,
В первом сообщении указаны используемые библиотеки.
А ещё - путь к png файлу жёстко прописан на /sys/file managers или может юзать текущую папку программы?
Сейчас все пути жёстко заданы.
Ок, собрал последнюю версию с SVN, всё равено падает.
А другие программы с buf2d работают?
Используемые png-изображения открываются в KIV?
Re: Файловый навигатор
Posted: Tue Dec 04, 2012 6:15 pm
by Leency
0CodErr wrote:buf2d (отрисовка списка)
Следующие файлы должны находится в "/rd/1/file managers/":
- fnav.set (список ассоциированных приложений и расширений файлов)
- fnav_icn.png (иконки)
- fnav_fnt.png (шрифт)
Сейчас все пути жёстко заданы.
Часть файлов только в первом архиве, часть обновлено во втором. buf2d по-умолчанию в дистре нет (надо добавить). Получился пазл.
Надо какие-то сообщения об ошибках и всё же юзать текущую папку с программой. FFFUUUUU~
Re: Файловый навигатор
Posted: Tue Dec 04, 2012 6:34 pm
by Leency
Всё равно падает. Скинь свой образ kolibri.img
Re: Файловый навигатор
Posted: Wed Dec 05, 2012 1:51 am
by Rock_maniak_forever
На досуге, в помощь, сделал специально для чайников описание установки
fNav, в образ. Всё файлы и описание в архиве, который прикрепил. Читать
ReadMe.txt.
Leency wrote:Всё равно падает. Скинь свой образ kolibri.img
Образ забирай отсюда. Всё работает.
fNav расположен в папке
File Managers.
--------------
0CodErr советую выкладывать свои проги, вместе с
dll бинарниками (если они необходимы), с кратким описание их расположения, чтобы небыло глупых вопросов, в будущем.
--------------
Re: Файловый навигатор
Posted: Wed Dec 05, 2012 2:20 am
by Leency
Спасибо, попробую!
Кстати на ftp сервер не пускает, просит пароль.