Page 1 of 4

@open

Posted: Tue Feb 10, 2015 3:56 am
by e-andrew
В настоящий момент в колибри несколько файловых менаджеров (только 3 в ночной), каждый использует свою таблицу ассоциаций -> у каждого фм свой ini-файл с таблицей. Это не есть хорошо и Mario вот тут предложил сделать единый запускальщик файлов. И вот, я этот запускальщик и написал.

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

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

Формат запуска:

Code: Select all

@open path/to/file
@open ~open/file/as
Формат assoc.ini (таблицы ассоциаций)

Code: Select all

[Tinypad]
exec=/sys/tinypad
icon=123
next=$TextEditor

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

Re: @open

Posted: Tue Feb 10, 2015 4:08 am
by punk_joker
Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.

Re: @open

Posted: Tue Feb 10, 2015 4:13 am
by e-andrew
punk_joker wrote:Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.
Пробовал, это оказалось намного сложнее, чем я думал (из-за двухмерного списка), да и размер тогда увеличиться еще больше.

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

Re: @open

Posted: Thu Feb 12, 2015 1:38 pm
by Leency
ОГОГО!!!! Выглядит круто и идея офигенная! Я попробую!

Re: @open

Posted: Thu Feb 12, 2015 4:08 pm
by punk_joker
А "использовать всегда" еще не сделано?

Re: @open

Posted: Thu Feb 12, 2015 4:22 pm
by e-andrew
punk_joker wrote:А "использовать всегда" еще не сделано?
Я могу конечно и сам попробовать перевести некоторые программы (скажем @docky). Для интеграции в @icon нужно добавить отправку параметров (сложно придумать хороший синтаксис, а unix-синтаксис (если он так называется) я вряд ли смогу реализовать. Ничего не могу сказать про @menu, а в другие fm я лезть боюсь. А так же есть еще куча программ, которые запускают другие программы, например запускающие @notify, и тут я без понятия, нужно ли переписывать эти вызовы через @open или лучше оставить прямой вызов (наверное прямой лучше).

Re: @open

Posted: Thu Feb 12, 2015 4:28 pm
by punk_joker
В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.

Re: @open

Posted: Thu Feb 12, 2015 4:29 pm
by punk_joker
По поводу использование @open в других программах, думаю стоит подождать. Сейчас надо протестить и допилить где надо, а уж потом интегрировать. С последним обязуюсь помочь :)

Re: @open

Posted: Thu Feb 12, 2015 4:42 pm
by e-andrew
punk_joker wrote:В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.
Возможно баг (хоть у меня все нормально было), но чекбокс должен быть checked только в том случае, если в таблице нет записи для расширения, в других случях он отключен.

Re: @open

Posted: Thu Feb 12, 2015 4:45 pm
by punk_joker
Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

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

Re: @open

Posted: Thu Feb 12, 2015 4:49 pm
by e-andrew
punk_joker wrote:Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

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

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

Re: @open

Posted: Thu Feb 12, 2015 4:55 pm
by punk_joker
Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.

Re: @open

Posted: Thu Feb 12, 2015 5:01 pm
by e-andrew
punk_joker wrote:Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.
Да, мой последний фикс поломал все то, что раньше работало. Пойду чинить.

Re: @open

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

Re: @open

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