Работа с опциями

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

Посмотрел я на вот это
"bSensitive=WshShell.RegRead("HKCU\\Software\\Akelsoft\\AkelPad\\Plugs\\Scripts\\SearchReplace\\Sensitive");"
и подумал, что напрашивается централизованный интерфейс для работы с опциями через средства Акеля.
Например:
opt = AkelGetOption("Options.CaretWidth")
opt = AkelGetPluginOption("Toolbar", "Options.BigIcons");
ну и SetOption так же. Для простоты можно оперировать только строками. А все инишки плагов засунуть в общий ини Акеля. В этом случае уйдёт эта разношерстная куча инишек и не надо будет лазить в реестр за опциями, которых там нет.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

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

Только ini'шники не мешают; эта опция:
opt = AkelGetOption("Toolbar", "Options.BigIcons");
указывает, что брать надо из соответствующего ini. Когда первого параметра нет, то берём из ini/реестра проги.
Думаю, что скорость немного падает, если ini-файл большой... Хотя с другой стороны, если дёргать ini, то тоже производительность садится.
Если и делать "всё в одном", то в разных секциях, соответствующих названию плагина. А функции GetOption/SetOption чтобы не лазили по файлам и реестру, а брали значения из памяти.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Fr0sT
А он существует ;)

Code: Select all

AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1355,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1356,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1357,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1358,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1359,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1360,...)
AkelPad.SendMessage(AkelPad.GetMainHwnd(), 1365,...)
Подробнее смотрите AkelDll.h

Offline
Posts: 876
Joined: Tue Jul 24, 2007 8:54 am

Post by Fr0sT »

FeyFre
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
VladSh
Насчет замечаний не понял. По сути и реестр, и инишки устроены одинаково: есть секции, в них значения (не берем в расчет древовидность реестра). Вот функции и должны делать следующее:
1) Определять, где хранятся опции
2) Читать из ини или реестра по указанному пути
(либо, если они все уже хранятся в памяти, просто возвращать значение).

Плюс функции будет в том, что будет обеспечен простой доступ из скриптов (а ведь насколько я понимаю, структуры в скриптах не используешь?)

upd идеи: чисто две функции такого вида:
GetOption("<Module>::<Section>.<Option>")
где Module = AkelPad или название плагина.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

Fr0sT wrote:Плюс функции будет в том, что будет обеспечен простой доступ из скриптов (а ведь насколько я понимаю, структуры в скриптах не используешь?)
Структуры - для получения инфы о текущем файле, без неё никуда...
Использую - в ShowMenuEx.js.

В остальном всё 100%! Я именно это и хотел сказать, но у тебя, видимо, получилось это лучше))

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

FeyFre
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
Не мудрено, а в лоб по стандартному алгоритму: открыть секцию, прочитать/записать, закрыть. В принципе всё по такому же принципу работает: открыть файл, прочитать, закрыть файл. Открыть холодильник, взять еду, закрыть холодильник. Все без исключения(те которым нужно сохранять настройки) плагины так делают.
Вот функции и должны делать следующее:
Это и делают вышеуказанные сообщения.

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre
Если что-то непортящееся надо часто брать, то может лучше при первом заходе на кухню один раз открыть холодильник, взять, и положить на стол, а потом просто брать со стола /тем более мы всё равно смотрим что есть в холодильнике, а что нет/?

Когда надо что-то положить в холодильник, то да, - открываем и кладём.
А можно попросить кого-то (метод) положить на сохранение, а уж он сам определит куда: в холодильник (если оно должно храниться в холодильнике) или ещё куда...
Post Reply