Board.KolibriOS.org
http://board.kolibrios.org/

@open
http://board.kolibrios.org/viewtopic.php?f=48&t=2997
Page 1 of 4

Author:  e-andrew [ Tue Feb 10, 2015 3:56 am ]
Post subject:  @open

В настоящий момент в колибри несколько файловых менаджеров (только 3 в ночной), каждый использует свою таблицу ассоциаций -> у каждого фм свой ini-файл с таблицей. Это не есть хорошо и Mario вот тут предложил сделать единый запускальщик файлов. И вот, я этот запускальщик и написал.

В @open передается путь к файлу/папке через параметр. Если это папка - открывается с помощью приложения, указанного в /sys/settings/assoc.ini -> [Assoc] -> "/". Если это приложение - запустить. Иначе поискать приложение для расширения в /sys/settings/assic.ini -> [Assoc]. Если оно там есть, запустить с помощью него файл, иначе открыть окно с выбором приложения. Если первый символ параметра = "~", то окно выбора приложения открывается в любом случае кроме папки.

Использовать @open желательно не только в fm, а во всех приложениях, которые могут что-то запускать, скажем, @icon может хранить только путь к файл/папке и открывать этот файл/папку с помощью @open, не заботясь о том, к чему ведет путь. Это значит, что создавать ярылки на папки и файлы станет намного легче.

Формат запуска:
Code:
@open path/to/file
@open ~open/file/as


Формат assoc.ini (таблицы ассоциаций)
Code:
[Tinypad]
exec=/sys/tinypad
icon=123
next=$TextEditor

[Assoc]
ini=$Tinypad
cmd=/sys/shell


Attachments:
File comment: Сорцы, куда ж без них
OPEN.7z [7.33 KiB]
Downloaded 119 times
File comment: Образ с @open, Assoc.ini а так же с Eolite, открывающим все через @open.
kolibri.img.7z [1.2 MiB]
Downloaded 117 times
File comment: Скриншот
1.png
1.png [ 14.87 KiB | Viewed 4854 times ]

Author:  punk_joker [ Tue Feb 10, 2015 4:08 am ]
Post subject:  Re: @open

Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.

Author:  e-andrew [ Tue Feb 10, 2015 4:13 am ]
Post subject:  Re: @open

punk_joker wrote:
Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.

Пробовал, это оказалось намного сложнее, чем я думал (из-за двухмерного списка), да и размер тогда увеличиться еще больше.

Кстати, про размер. Есть такой вариант: оставить в @open только запускающую часть, а диалог вынести в @openas. Если ассоциации не найдены, то уже из @open открывается @openas. Тогда можно не особо заботиться о размере (@open будет не больше 1кб, а @openas запускаться будет не так часто).

Author:  Leency [ Thu Feb 12, 2015 1:38 pm ]
Post subject:  Re: @open

ОГОГО!!!! Выглядит круто и идея офигенная! Я попробую!

Author:  punk_joker [ Thu Feb 12, 2015 4:08 pm ]
Post subject:  Re: @open

А "использовать всегда" еще не сделано?

Author:  e-andrew [ Thu Feb 12, 2015 4:22 pm ]
Post subject:  Re: @open

punk_joker wrote:
А "использовать всегда" еще не сделано?

Я могу конечно и сам попробовать перевести некоторые программы (скажем @docky). Для интеграции в @icon нужно добавить отправку параметров (сложно придумать хороший синтаксис, а unix-синтаксис (если он так называется) я вряд ли смогу реализовать. Ничего не могу сказать про @menu, а в другие fm я лезть боюсь. А так же есть еще куча программ, которые запускают другие программы, например запускающие @notify, и тут я без понятия, нужно ли переписывать эти вызовы через @open или лучше оставить прямой вызов (наверное прямой лучше).

Author:  punk_joker [ Thu Feb 12, 2015 4:28 pm ]
Post subject:  Re: @open

В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.

Author:  punk_joker [ Thu Feb 12, 2015 4:29 pm ]
Post subject:  Re: @open

По поводу использование @open в других программах, думаю стоит подождать. Сейчас надо протестить и допилить где надо, а уж потом интегрировать. С последним обязуюсь помочь :)

Author:  e-andrew [ Thu Feb 12, 2015 4:42 pm ]
Post subject:  Re: @open

punk_joker wrote:
В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.

Возможно баг (хоть у меня все нормально было), но чекбокс должен быть checked только в том случае, если в таблице нет записи для расширения, в других случях он отключен.

Author:  punk_joker [ Thu Feb 12, 2015 4:45 pm ]
Post subject:  Re: @open

Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

P.S. А вообще надо бы отдельную тулзу для настройки ассоциаций написать.

Author:  e-andrew [ Thu Feb 12, 2015 4:49 pm ]
Post subject:  Re: @open

punk_joker wrote:
Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

P.S. А вообще надо бы отдельную тулзу для настройки ассоциаций написать.

Хм, не понял, зачем лезть в конфиг, галочку же можно поставить просто. Логика такая: если нет записи, то это значит, что этот тип файла мы запускаем в первый раз и нужно добавить запись в таблицу. Если все же запись уже есть, то это значит, что мы просто хотим один раз запустить этот файл по другому (скажем, сжать, или открыть картинку не просмоторщиком, а редактором, или скрипт отредактировать) и менять специально запись не следует, но если юзеру нужно именно переопределить ассоциацию, то галочку он поставит сам. Логику подсмотрел у аналогичного приложения для винды и такого же у убунты.

Да, тулза нужна, согласен.

Author:  punk_joker [ Thu Feb 12, 2015 4:55 pm ]
Post subject:  Re: @open

Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.

Author:  e-andrew [ Thu Feb 12, 2015 5:01 pm ]
Post subject:  Re: @open

punk_joker wrote:
Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.

Да, мой последний фикс поломал все то, что раньше работало. Пойду чинить.

Author:  Leency [ Fri Feb 13, 2015 11:17 pm ]
Post subject:  Re: @open

Есть такой недочёт:
1. удаляем Tinypad
2. открываем файл Config.ini через @open
3. ассоциация найдена - Tinypad
4. запускается Tinypad с параметром Config.ini
Текущий результат: отсутствие файла не хэндлится
Ожидаемый результат: если запускаемый файл не найден - показать ошибку через нотифай скажем и диалог выбора приложения

Author:  e-andrew [ Sat Feb 14, 2015 1:23 am ]
Post subject:  Re: @open

Я знаю об этой проблеме, есть у меня еще другой вариант ожидаемого результата: не показывать приложение в списке вообще. Как такой вариант? Кстати, это позволит прописать в assoc.ini ассоциации на приложения из /kolibrios/, не все им пользуются и поэтому не все хотят видеть эти приложения в списке.
Еще одна идея - если файла нет, но есть поле next=%filename% или next=$appname, то запустить рекурсивно его, это позволит запустить сначала просмоторщик Zsea, если он есть, в другом случае KIV, а если и его нет, то уже открыть окно выбора.

Page 1 of 4 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/