Page 1 of 9

Файловый навигатор

Posted: Mon Nov 26, 2012 12:02 am
by 0CodErr
Image
Пока ещё много недоработок, например, во время навигации,
во время перемещения по списку при переключении с мыши на клавиатуру, при возврате из пустой папки,
со скроллбаром какой-то глюк, имена с русскими буквами не всегда правильно сортируются, ...

Управление клавиатурой:
  • 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, "своя атмосфера".
Самих исходников, возможно, будет не достаточно. Я многое сначала схематично изображаю на картинках, поэтому комментариев в коде не очень много. Картинки, например, такие:
Image

В новой версии некоторые доработки в навигации и во время перемещения по списку.
Добавил управление мышью:
  • средняя кнопка + движение вверх на уровень вверх
  • средняя кнопка + движение влево в предыдущую директорию
  • средняя кнопка + движение вправо в следующую директорию
Файл из архива 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, если не ошибаюсь).

Забыл сказать. Можно же разные шрифты использовать. Например, это может выглядеть так:
ImageImageImage

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
:arrow: Образ забирай отсюда. Всё работает. fNav расположен в папке File Managers.
--------------
0CodErr советую выкладывать свои проги, вместе с dll бинарниками (если они необходимы), с кратким описание их расположения, чтобы небыло глупых вопросов, в будущем.
--------------

Re: Файловый навигатор

Posted: Wed Dec 05, 2012 2:20 am
by Leency
Спасибо, попробую!
Кстати на ftp сервер не пускает, просит пароль.