Посмотрел я на вот это
"bSensitive=WshShell.RegRead("HKCU\\Software\\Akelsoft\\AkelPad\\Plugs\\Scripts\\SearchReplace\\Sensitive");"
и подумал, что напрашивается централизованный интерфейс для работы с опциями через средства Акеля.
Например:
opt = AkelGetOption("Options.CaretWidth")
opt = AkelGetPluginOption("Toolbar", "Options.BigIcons");
ну и SetOption так же. Для простоты можно оперировать только строками. А все инишки плагов засунуть в общий ини Акеля. В этом случае уйдёт эта разношерстная куча инишек и не надо будет лазить в реестр за опциями, которых там нет.
Работа с опциями
- Author
- Message
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Fr0sT, идея отличная, поддерживаю.
была уже здесь + получение информации о текущем файле здесь/
Только ini'шники не мешают; эта опция:
Думаю, что скорость немного падает, если ini-файл большой... Хотя с другой стороны, если дёргать ini, то тоже производительность садится.
Если и делать "всё в одном", то в разных секциях, соответствующих названию плагина. А функции GetOption/SetOption чтобы не лазили по файлам и реестру, а брали значения из памяти.
была уже здесь + получение информации о текущем файле здесь/
Только ini'шники не мешают; эта опция:
указывает, что брать надо из соответствующего ini. Когда первого параметра нет, то берём из ini/реестра проги.opt = AkelGetOption("Toolbar", "Options.BigIcons");
Думаю, что скорость немного падает, если ini-файл большой... Хотя с другой стороны, если дёргать ini, то тоже производительность садится.
Если и делать "всё в одном", то в разных секциях, соответствующих названию плагина. А функции GetOption/SetOption чтобы не лазили по файлам и реестру, а брали значения из памяти.
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Fr0sT
А он существуетПодробнее смотрите AkelDll.h
А он существует
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,...)
-
Offline
- Posts: 876
- Joined: Tue Jul 24, 2007 8:54 am
FeyFre
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
VladSh
Насчет замечаний не понял. По сути и реестр, и инишки устроены одинаково: есть секции, в них значения (не берем в расчет древовидность реестра). Вот функции и должны делать следующее:
1) Определять, где хранятся опции
2) Читать из ини или реестра по указанному пути
(либо, если они все уже хранятся в памяти, просто возвращать значение).
Плюс функции будет в том, что будет обеспечен простой доступ из скриптов (а ведь насколько я понимаю, структуры в скриптах не используешь?)
upd идеи: чисто две функции такого вида:
GetOption("<Module>::<Section>.<Option>")
где Module = AkelPad или название плагина.
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
VladSh
Насчет замечаний не понял. По сути и реестр, и инишки устроены одинаково: есть секции, в них значения (не берем в расчет древовидность реестра). Вот функции и должны делать следующее:
1) Определять, где хранятся опции
2) Читать из ини или реестра по указанному пути
(либо, если они все уже хранятся в памяти, просто возвращать значение).
Плюс функции будет в том, что будет обеспечен простой доступ из скриптов (а ведь насколько я понимаю, структуры в скриптах не используешь?)
upd идеи: чисто две функции такого вида:
GetOption("<Module>::<Section>.<Option>")
где Module = AkelPad или название плагина.
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
Структуры - для получения инфы о текущем файле, без неё никуда...Fr0sT wrote:Плюс функции будет в том, что будет обеспечен простой доступ из скриптов (а ведь насколько я понимаю, структуры в скриптах не используешь?)
Использую - в ShowMenuEx.js.
В остальном всё 100%! Я именно это и хотел сказать, но у тебя, видимо, получилось это лучше))
-
Offline
- Posts: 2247
- Joined: Tue Aug 07, 2007 2:03 pm
- Location: Vinnitsa, Ukraine
Не мудрено, а в лоб по стандартному алгоритму: открыть секцию, прочитать/записать, закрыть. В принципе всё по такому же принципу работает: открыть файл, прочитать, закрыть файл. Открыть холодильник, взять еду, закрыть холодильник. Все без исключения(те которым нужно сохранять настройки) плагины так делают.FeyFre
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
Это и делают вышеуказанные сообщения.Вот функции и должны делать следующее:
-
Offline
- Posts: 3217
- Joined: Wed Nov 29, 2006 1:19 pm
- Location: Киев, Русь
- Contact:
FeyFre
Если что-то непортящееся надо часто брать, то может лучше при первом заходе на кухню один раз открыть холодильник, взять, и положить на стол, а потом просто брать со стола /тем более мы всё равно смотрим что есть в холодильнике, а что нет/?
Когда надо что-то положить в холодильник, то да, - открываем и кладём.
А можно попросить кого-то (метод) положить на сохранение, а уж он сам определит куда: в холодильник (если оно должно храниться в холодильнике) или ещё куда...
Если что-то непортящееся надо часто брать, то может лучше при первом заходе на кухню один раз открыть холодильник, взять, и положить на стол, а потом просто брать со стола /тем более мы всё равно смотрим что есть в холодильнике, а что нет/?
Когда надо что-то положить в холодильник, то да, - открываем и кладём.
А можно попросить кого-то (метод) положить на сохранение, а уж он сам определит куда: в холодильник (если оно должно храниться в холодильнике) или ещё куда...