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

Work with drives, directories, files
  • Молодец. А ты видел, что есть такая штука, как opendial, и в box_lib есть компонент для отображения директории файлов?
  • SoUrcerer
    Я так понимаю, 0CodErr написал "Файловый навигатор" с целью обучения асму и использования библиотек. И это похвально.

    С другой стороны два файловых менеджера уже есть в Колибри. В то время, как нехватает ещё множества других программ! Например: поиск, программа календарь требует переработки, нет менеджера обоев (функция ресайза уже есть в img_lib) и много другого. Не лучше ли начать писать что-то полезное сразу? Еолайт, к примеру, был моей первой программой вместо "Hello World", или ты хочешь составить ему конкуренцию?))
    Из хаоса в космос
  • 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]
    Думаю что это хорошая программа, не смотря на то что уже есть другие файловые менеджеры.
  • Leency
    Каждый начинающий программист должен написать своей клон коммандера, эксплорера или чего-то-там-файловое-ещё. Без этого никак нельзя.

    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 — нормально. Думаю, дело тут не в самой программе.
    Attachments
    fNav(0.2a).7z (7.13 KiB)
    Downloaded 386 times
  • Со сколл-баром у мя тоже была проблема в 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); //чтоб лишний раз не перерисовывать
    				}
    Из хаоса в космос
  • Я тоже пытаюсь сам корректировать .position скроллбара.
    Но я ещё перед этим вызываю scrollbar_v_mouse, наверное, из-за этого меняется реальное положение ползунка(.position2, если не ошибаюсь).

    Забыл сказать. Можно же разные шрифты использовать. Например, это может выглядеть так:
    ImageImageImage
  • >>Может 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 или может юзать текущую папку программы?
    Из хаоса в космос
  • >>Может buf2d слишком старая?
    Я вообще не знал, что она нужна,
    В первом сообщении указаны используемые библиотеки.
    А ещё - путь к png файлу жёстко прописан на /sys/file managers или может юзать текущую папку программы?
    Сейчас все пути жёстко заданы.
    Ок, собрал последнюю версию с SVN, всё равено падает.
    А другие программы с buf2d работают?

    Используемые png-изображения открываются в KIV?
  • 0CodErr wrote:buf2d (отрисовка списка)

    Следующие файлы должны находится в "/rd/1/file managers/":
    • fnav.set (список ассоциированных приложений и расширений файлов)
    • fnav_icn.png (иконки)
    • fnav_fnt.png (шрифт)
    Сейчас все пути жёстко заданы.
    Часть файлов только в первом архиве, часть обновлено во втором. buf2d по-умолчанию в дистре нет (надо добавить). Получился пазл.
    Надо какие-то сообщения об ошибках и всё же юзать текущую папку с программой. FFFUUUUU~
    Из хаоса в космос
  • Всё равно падает. Скинь свой образ kolibri.img
    Из хаоса в космос
  • На досуге, в помощь, сделал специально для чайников описание установки fNav, в образ. Всё файлы и описание в архиве, который прикрепил. Читать ReadMe.txt.
    Leency wrote:Всё равно падает. Скинь свой образ kolibri.img
    :arrow: Образ забирай отсюда. Всё работает. fNav расположен в папке File Managers.
    --------------
    0CodErr советую выкладывать свои проги, вместе с dll бинарниками (если они необходимы), с кратким описание их расположения, чтобы небыло глупых вопросов, в будущем.
    --------------
    Attachments
    fNav_v0.2a.7z (62.7 KiB)
    Downloaded 383 times
  • Спасибо, попробую!
    Кстати на ftp сервер не пускает, просит пароль.
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 4 guests