Mirage File Manager

Work with drives, directories, files
  • Один из файловых менеджеров (kfm) давно уже не развивается. Потому переодически появляются предложения о том что-бы убрать его из дистрибутива. Если тебе удастся сделать хороший ФМ наподобие виндосовского тотал командера, то это будет очень хорошо.
  • theonlymirage
    Я бы сказал, что лучше не гнаться за функционалом, а сделать немного, но качественно, хорошо продумать архитектуру, чтобы кто-то другой мог разобраться и развивать. В новом ФМ больше всего хотелось бы увидеть поддержку юникода и вид значками. Помимо функции 70 есть ещё 80. Какую ошибку возвращает подфункция 1? Какие данные передаёшь?
  • После множественного прочтения мануала по сисфункциям и исправления своих ошибок, наконец удалось прочитать содержимое корневой директории. ;)
    Продвинулся и в интерфейсе, боковая панель под вопросом (но так как она уже есть, то будет присутствовать в первых релизах).

    kfm - заглянул, попробовал в деле. kfm очень хорошо передаёт атмосферу колибри ос и даже приятен в использовании.
    Пожелания про интерфейс похожий на kfm и про юникод будут учтены. Но не стоит ожидать полноценную замену kfm, всё-таки моя разработка будет сильно отличаться визуально. Это как-то скажется на привычках работы и получаемом пользовательском опыте.

    Про ф-цию 80 учту, но пока не знаю где её мне применить.
    Сейчас работаю над выделением вкладок и табличек в отдельные модули (а то код разрастается), скроллбаром и перемещению по директориям.

    В общем, ещё на шажочек ближе к релизу.
    Attachments
    Обновлённый прототип ФМ.PNG
    Обновлённый прототип ФМ.PNG (12.36 KiB)
    Viewed 10268 times
  • Собственно, моё пожелание как раз было про интерфейс, не похожий на kfm, а то сейчас во всех ФМ вид только таблицей, как-то несовременненько...
  • За сегодня разбил код в inc'и. В целом разделение на модули прошло успешно.
    В боковой панели появится подробная информация о выбранном файле.

    Pathoswithin
    Как и было заявлено в шапке, вариантов отображения будет несколько. Помимо таблички уже есть тайлы/плитки. В них текст относительно изображения может располагаться как внизу, так и сбоку. Из тайлов несложно будет сделать значки.


    Вопрос: откуда можно взять (следует брать) иконки для папок, файлов и прочего? какие есть готовые варианты? Рисование не осилю.
    Attachments
    Режим таблицы.PNG
    Режим таблицы.PNG (11.86 KiB)
    Viewed 10213 times
    Режим плитки.PNG
    Режим плитки.PNG (10.86 KiB)
    Viewed 10213 times
  • ICONS32.PNG

    Кстати, лучше использовать второй шрифт (да и юникод поддерживает только он).
  • Оке, спасибо, скоро займусь добавлением изображений. А тексты значит все переводим в UTF-16LE, верно?

    Коротко о достижениях
    Добавил: scrollbar, функцию запуска приложений, запись текущего пути в буфер обмена. Появилось лучшее видение как всё устроить, поэтому интерфейс приобретает более законченный вид.

    Проблема:
    При работе с буфером обмена у меня не получилось прочитать буфер. Если слота нет, то всё хорошо - в eax возвращается 1, как и положено. Но когда я указываю на номер существующего слота, то моё приложение виснет. Например, первый слот: mcall 54, 1, 1 (буфер предварительно набиваю два раза текстом из tinypad)
    Функции записи в буфер, узнать кол-во слотов, удалить последний слот - успешно работают. Проблема только с прочтением, что я делаю не так?


    Вот описание, которым я руководствовался:
    ======================================================================
    ====================== Функция 54, подфункция 1 ======================
    ================== Считать данные из буфера обмена. ==================
    ======================================================================
    Параметры:
    * eax = 54 - номер функции
    * ebx = 1 - номер подфункции
    * eсx = номер слота
    Возвращаемое значение:
    * eax = если успешно - указатель на область памяти с данными
    * eax = 1 - ошибка
    * eax = -1 - отсутствует область главного списка
    Замечания:
    * буфер, на который указывает eax, содержит следующую информацию:
    * +0: dword: общая длина данных
    * +4: dword: определяет тип данныx:
    * 0 = Текст
    * 1 = Текст с блочным выделением
    * 2 = Изображение
    * 3 = RAW
    * 4 и выше зарезервировано
    * +8: более детально смотрите файл clipboard_container_rus.txt

    ---------------------- Константы для регистров: ----------------------
    eax - SF_CLIPBOARD (54)
    ebx - SSF_READ_CB (1)
  • ... возможно, первый слот это номер 0?
  • Еще можно попробовать открыть debug и ввести команду:

    Code: Select all

    load имя_файла
    Потом если открылось нажать g и попробовать сделать вставку, которая приводит к вылету программы.
    Должно показать участок программы на котором случился вылет. В некоторых случаях это может помочь установить причину.
  • Спасибо, за инфу по дебагу, но мне не помогает - остаётся на той же строке.

    Чуть некорректно написал про первый слот, да первый это 0, но я использую для теста специально следующий. Если нет никакого слота или занят только 0 слот, то всё правильно возвращает eax=1, приложение продолжает работать. Но когда я заполняю 1 слот и обращаюсь к нему, то программа виснет на mcall.

    Я воспроизвёл проблему на минимальном коде - из примера example, который брал за основу своего. В оригинале я обрабатываю нажатия клавиш по инструкции (тут в примере это всё опустил), но результат с зависанием одинаковый.

    Ниже прикладываю скрин и код этого example:
    Attachments
    Пример кода:
    Downloaded 293 times
    Скриншот изменений example.asm
    скрин.PNG (22.05 KiB)
    Скриншот изменений example.asm Viewed 10114 times
  • theonlymirage wrote:Я воспроизвёл проблему на минимальном коде - из примера example, который брал за основу своего. В оригинале я обрабатываю нажатия клавиш по инструкции (тут в примере это всё опустил), но результат с зависанием одинаковый.
    Я пробовал запускать твой пример (451 б) в эмуляторе, при открытии сразу пишет что не поддерживаемая инструкция процессора.
    Потом попробовал перекомпилировать его, но с другим файлом macros.inc (с тем что лежит на rd/1). Получился файл размером (402 б) который у меня запускается и работает, даже при нажатии на F1 ничего не виснет.
    Может у тебя какой-то старый файл macros.inc из-за которого что-то не работает.