Board.KolibriOS.org

Official KolibriOS board
It is currently Thu Nov 21, 2019 10:41 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 54 posts ]  Go to page 1 2 3 4 Next
Author Message
 Post subject: @open
PostPosted: Tue Feb 10, 2015 3:56 am 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
В настоящий момент в колибри несколько файловых менаджеров (только 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 121 times
File comment: Образ с @open, Assoc.ini а так же с Eolite, открывающим все через @open.
kolibri.img.7z [1.2 MiB]
Downloaded 119 times
File comment: Скриншот
1.png
1.png [ 14.87 KiB | Viewed 4908 times ]


Last edited by e-andrew on Wed Nov 11, 2015 12:11 am, edited 1 time in total.
Top
   
 Post subject: Re: @open
PostPosted: Tue Feb 10, 2015 4:08 am 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Tue Feb 10, 2015 4:13 am 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
punk_joker wrote:
Отлично сделано. Пока только одно пожелание, доработать управление с клавиатуры.

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

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


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 1:38 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5066
ОГОГО!!!! Выглядит круто и идея офигенная! Я попробую!

_________________
Через тернии к звездам


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:08 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
А "использовать всегда" еще не сделано?

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:22 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
punk_joker wrote:
А "использовать всегда" еще не сделано?

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


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:28 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:29 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
По поводу использование @open в других программах, думаю стоит подождать. Сейчас надо протестить и допилить где надо, а уж потом интегрировать. С последним обязуюсь помочь :)

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:42 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
punk_joker wrote:
В диалоге открыть с помощью, ты сделал чекбокс использвать всегда, логично если при установки в нем галочки и выборе программы должна изменится программа, которая ассоциируется с разрешением, и при последующем обычном запуске файл должен открываться в последней выбранной программе. А сейчас запускается как и раньше.

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


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:45 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

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

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:49 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
punk_joker wrote:
Думаю лучше для всех случаев, так можно будет менять ассоциация и не лезть в конфиг

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

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

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


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 4:55 pm 
Offline

Joined: Tue Apr 12, 2011 11:19 pm
Posts: 1151
Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.

_________________
я лишь учусь


Top
   
 Post subject: Re: @open
PostPosted: Thu Feb 12, 2015 5:01 pm 
Offline
User avatar

Joined: Sat Oct 05, 2013 9:32 pm
Posts: 386
punk_joker wrote:
Я это и имел ввиду. Но эта функция кажется не работает. Ассоциация не переопределяется.

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


Top
   
 Post subject: Re: @open
PostPosted: Fri Feb 13, 2015 11:17 pm 
Offline
Designer
User avatar

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

_________________
Через тернии к звездам


Top
   
 Post subject: Re: @open
PostPosted: Sat Feb 14, 2015 1:23 am 
Offline
User avatar

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 54 posts ]  Go to page 1 2 3 4 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited