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

Запускальщик по ассоциации
http://board.kolibrios.org/viewtopic.php?f=39&t=2342
Page 1 of 2

Author:  Mario_r4 [ Sat Jun 22, 2013 2:24 am ]
Post subject:  Запускальщик по ассоциации

На настоящий момент мы имеем три официально поддержанных файловых менеджера: KFAR, KFM, Eolite. Все они производят запуск по ассоциациям, у каждого собственный файл INI с ассоциациями. Ситуация не самая полезная - думаю с этим никто не будет спорить. Править один файл с ассоциациями проще и надежней, чем три файла.

Одно время даже была идея сделать библиотеку ассоциаций и один из разработчиков (не будем тыкать пальцем, но это дальний родственник пресловутого Слонёнка и если захочет сам сознается) даже брался сделать, но как обычно "обстоятельства непреодолимой силы"
Spoiler: Show
Так, обстоятельства непреодолимой силы могут вытекать из следующих событий, перечень которых не является исчерпывающим: война, как объявленная, так и необъявленная, гражданская война, бунты и революции, пиратские действия, акты саботажа; стихийные бедствия: бури, циклоны, землетрясения, цунами, наводнения, вред, причиненный молнией; аварии, взрывы, пожары, уничтожение машин, пошел на хуй, предприятий и всякого рода оборудования, за исключением незначительных аварий у стороны, в случае если они были вызваны отсутствием запасных частей, износом оборудования и другими обстоятельствами, которые сторона должна была предвидеть при принятии на себя обязательств по договору; бойкот, забастовки и локауты, уклонение от труда работников, занятие предприятий и их территорий; акты государственных органов государств сторон и иных государств, в том числе местных органов управления и самоуправления, как законные, так и незаконные (за исключением случаев отсутствия у стороны полномочий или специальных разрешений (лицензий), права въезда или нахождения или согласия, необходимых для исполнения договора, выдаваемых государственными органами), а также собственная лень и необязательность.
Нужное подчеркните сами.

помешали реализации благого начинания.

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

З.Ы. Создавая этот псто я полностью осознаю п.1, потому что в этом мире надеяться можно только на себя.

Author:  SoUrcerer [ Sat Jun 22, 2013 6:17 am ]
Post subject:  Re: Запускальщик по ассоциации

Вот это правильное предложение!

Author:  dunkaist [ Sat Jun 22, 2013 10:11 am ]
Post subject:  Re: Запускальщик по ассоциации

Mario_r4 wrote:
Одно время даже была идея сделать библиотеку ассоциаций и один из разработчиков (не будем тыкать пальцем, но это дальний родственник пресловутого Слонёнка и если захочет сам сознается) даже брался сделать, но как обычно "обстоятельства непреодолимой силы"
Spoiler: Show

помешали реализации благого начинания.
Я тут. Советов не просили, но вдруг окажется полезно: в libini есть удобная для таких задач функция ini.enum_keys. Хотя, конечно, всё зависит от реализации.

Code:
;;================================================================================================;;
proc ini.enum_keys _f_name, _sec_name, _callback ;////////////////////////////////////////////////;;
;;------------------------------------------------------------------------------------------------;;
;? Enumerate keys within a section, calling callback function for each of them                    ;;
;;------------------------------------------------------------------------------------------------;;
;> _f_name = ini filename <asciiz>                                                                ;;
;> _sec_name = section name <asciiz>                                                              ;;
;> _callback = callback function address: func(f_name, sec_name, key_name, key_value), where      ;;
;>   f_name = ini filename (as passed to the function) <asciiz>                                   ;;
;>   sec_name = section name (as passed to the function) <asciiz>                                 ;;
;>   key_name = key name found <asciiz>                                                           ;;
;>   key_value = value of key found <asciiz>                                                      ;;
;;------------------------------------------------------------------------------------------------;;
;< eax = -1 (error) / 0                                                                           ;;
;;================================================================================================;;

Author:  0CodErr [ Sat Jun 22, 2013 11:15 am ]
Post subject:  Re: Запускальщик по ассоциации

Mario_r4 wrote:
у каждого собственный файл INI с ассоциациями
Можно использовать и один для всех ini-файл.
Вообще можно настройки(ini, dat и т.п) хранить в отдельной папке(например /sys/settings). Но тут ешё возникает вопрос, настройки принадлежат всей системе или же только конкретной программе.
Может возникнуть необходимость просто узнать путь к ассоциированной программе, а не сразу пытаться запустить.
Или, например, появится какая-нибудь отдельная программа для работы с архивами(в том числе zip). Kfar сейчас заходит в архив как в папку, а другой ФМ захочет открывать в отдельной программе.

Author:  Leency [ Sat Jun 22, 2013 11:51 am ]
Post subject:  Re: Запускальщик по ассоциации

Отличная идея. Как насчёт того, чтобы этот файл содержал не только ассоциаци
расширение = программа
но и
расширение = иконка?

Author:  Mario_r4 [ Sat Jun 22, 2013 11:56 am ]
Post subject:  Re: Запускальщик по ассоциации

Leency wrote:
Отличная идея. Как насчёт того, чтобы этот файл содержал не только ассоциаци
расширение = программа
но и
расширение = иконка?

Пищевод работает только в одну сторону и все попытки заставить его работать в обратную сторону заканчиваются с неожиданными результатами - это не библиотека.

Author:  Mario_r4 [ Sat Jun 22, 2013 12:01 pm ]
Post subject:  Re: Запускальщик по ассоциации

0CodErr wrote:
Можно использовать и один для всех ini-файл.

Можно, но лишний код никуда не денешь.
0CodErr wrote:
Вообще можно настройки(ini, dat и т.п) хранить в отдельной папке(например /sys/settings). Но тут ешё возникает вопрос, настройки принадлежат всей системе или же только конкретной программе.

Реестр пока не нужен, совсем не нужен.
0CodErr wrote:
Может возникнуть необходимость просто узнать путь к ассоциированной программе, а не сразу пытаться запустить.

Звчем?
0CodErr wrote:
Или, например, появится какая-нибудь отдельная программа для работы с архивами(в том числе zip). Kfar сейчас заходит в архив как в папку, а другой ФМ захочет открывать в отдельной программе.

Программе какая то религия запрещает вызывать запускальщик не для всех случаев и по собственному усмотрению?

Author:  Leency [ Sat Jun 22, 2013 12:02 pm ]
Post subject:  Re: Запускальщик по ассоциации

Code:
[run]
txt = /sys/tinypad
asm = /sys/tinypad
gif = /sys/media/kiv

[icons]
txt = 1
asm = 1
gif = 3

Author:  Mario_r4 [ Sat Jun 22, 2013 12:04 pm ]
Post subject:  Re: Запускальщик по ассоциации

dunkaist wrote:
Я тут.

Очень рад, что сам сознался. :lol:
dunkaist wrote:
Советов не просили, но вдруг окажется полезно: в libini есть удобная для таких задач функция ini.enum_keys. Хотя, конечно, всё зависит от реализации.

Можно, но опять же не универсальный выход. Это лучше в самом заспускальшике использовать.

Author:  Mario_r4 [ Sat Jun 22, 2013 12:08 pm ]
Post subject:  Re: Запускальщик по ассоциации

Leency wrote:
Code:
[run]
txt = /sys/tinypad
asm = /sys/tinypad
gif = /sys/media/kiv

[icons]
txt = 1
asm = 1
gif = 3

Запуск по ассоциации - универсальное решение, а иконки нужны не всем и они могут быть разными для разных программ.

З.Ы. Тут уже один бывший школьник (не будем тыкать пальцем, но тоже дальний родственник слоненка, а вернее крольчонка) очень сильно хотел иконки в бинарник размещать, не нужно повторять его опыт.

Author:  dunkaist [ Sat Jun 22, 2013 12:15 pm ]
Post subject:  Re: Запускальщик по ассоциации

Mario_r4 wrote:
Это лучше в самом заспускальшике использовать.
Я это и имел в виду. В своё время думал, как просмотреть все строки из конфига, если пользователь может руками добавить какой угодно непредсказуемый ключ вроде torrent=/hd1/2/torrent_client.

Author:  Leency [ Sat Jun 22, 2013 12:28 pm ]
Post subject:  Re: Запускальщик по ассоциации

>> З.Ы. Тут уже один бывший школьник очень сильно хотел иконки в бинарник размещать, не нужно повторять его опыт

А сейчас ты предлагаешь, чтобы каждый ФМ, open dialog и другие программы (например, браузер показывает иконку закаченного файла) имели свой набор иконок и ассоциаций? Чем это лучше идеи Максимыча?
Предлагаю одно место с ассоциациями. Набор иконок можно будет обсудить. И не обязательно ВСЕМ его юзать, но пусть бы он был в одном месте - и то, порядка было бы больше, а это то, зачем ты создал эту тему.

Author:  Mario_r4 [ Sat Jun 22, 2013 12:41 pm ]
Post subject:  Re: Запускальщик по ассоциации

Leency wrote:
Предлагаю одно место с ассоциациями. Набор иконок можно будет обсудить. И не обязательно ВСЕМ его юзать, но пусть бы он был в одном месте - и то, порядка было бы больше, а это то, зачем ты создал эту тему.

1) Еще раз - программа работает в одну сторону, библиотека работает в обе стороны. Я предложил сделать программу.
2) У каждого собственные понятия "о порядке".
3) Тему я создал для важности (чтобы гордо надувать щеки и бить себя пяткой в грудь), ведь у нас есть п.2, и чтобы учесть мнения по существу вопроса, а не на отвлеченную тему.

Author:  0CodErr [ Sat Jun 22, 2013 1:03 pm ]
Post subject:  Re: Запускальщик по ассоциации

Mario_r4 wrote:
Запуск по ассоциации - универсальное решение, а иконки нужны не всем и они могут быть разными для разных программ.
Здесь вопрос в том, кому принадлежит иконка: системе, ФМ или ассоциированной программе. В больших ОС ассоциированная программа при установке может сообщить системе о своих иконках. Мы сейчас хотим, чтобы все ФМ использовали общие настройки. Вполне логично здесь считать, что они принадлежат системе.

Если иконка не нужна(например Kfar-у она не нужна), то просто не надо читать настройки иконок. Это по аналогии с этим:
Mario_r4 wrote:
Программе какая то религия запрещает вызывать запускальщик не для всех случаев и по собственному усмотрению?
Вот мы и не будем для всех случаев читать настройки иконок.
Mario_r4 wrote:
Реестр пока не нужен, совсем не нужен.
Но по факту он есть: ini, dat, и т. п. Чем не реестр? Как его не называй — суть одна.

Author:  Mario_r4 [ Sat Jun 22, 2013 1:13 pm ]
Post subject:  Re: Запускальщик по ассоциации

0CodErr
1) Я не буду делать иконки и точка. Кому действительно нужно сделает сам.
2) Еще раз - это будет просто программа, без обратных связей. Передача каких либо параметров обратно, в том числе и иконок - не предусматривается.

Все, закрываем тему с иконками. Мне лично это не нужно, если вам нужно - сделаете сами.

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