AkelPad Forum Index AkelPad
Support forum
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

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

 
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian)
View previous topic :: View next topic  
Author Message
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Jul 23, 2010 6:40 am    Post subject: Reply with quote

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



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Fri Jul 23, 2010 7:39 am    Post subject: Reply with quote

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

Только ini'шники не мешают; эта опция:
Quote:
opt = AkelGetOption("Toolbar", "Options.BigIcons");
указывает, что брать надо из соответствующего ini. Когда первого параметра нет, то берём из ini/реестра проги.
Думаю, что скорость немного падает, если ini-файл большой... Хотя с другой стороны, если дёргать ini, то тоже производительность садится.
Если и делать "всё в одном", то в разных секциях, соответствующих названию плагина. А функции GetOption/SetOption чтобы не лазили по файлам и реестру, а брали значения из памяти.
Back to top
View user's profile Send private message Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2038
Location: Vinnitsa, Ukraine

PostPosted: Fri Jul 23, 2010 9:10 am    Post subject: Reply with quote

Fr0sT
А он существует Wink
Code:
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
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
Fr0sT



Joined: 24 Jul 2007
Posts: 876

PostPosted: Fri Jul 23, 2010 9:53 am    Post subject: Reply with quote

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

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

upd идеи: чисто две функции такого вида:
GetOption("<Module>::<Section>.<Option>")
где Module = AkelPad или название плагина.
Back to top
View user's profile Send private message
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Fri Jul 23, 2010 10:09 am    Post subject: Reply with quote

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

В остальном всё 100%! Я именно это и хотел сказать, но у тебя, видимо, получилось это лучше))
Back to top
View user's profile Send private message Visit poster's website
FeyFre



Joined: 07 Aug 2007
Posts: 2038
Location: Vinnitsa, Ukraine

PostPosted: Fri Jul 23, 2010 10:35 am    Post subject: Reply with quote

Quote:
FeyFre
хм, да, действительно есть. Однако, признаться, больно уж мудрёно они сделаны. Открыть ини, получить секцию, получить значение, закрыть ини...
Не мудрено, а в лоб по стандартному алгоритму: открыть секцию, прочитать/записать, закрыть. В принципе всё по такому же принципу работает: открыть файл, прочитать, закрыть файл. Открыть холодильник, взять еду, закрыть холодильник. Все без исключения(те которым нужно сохранять настройки) плагины так делают.
Quote:
Вот функции и должны делать следующее:
Это и делают вышеуказанные сообщения.
Back to top
View user's profile Send private message AIM Address Yahoo Messenger MSN Messenger
VladSh



Joined: 29 Nov 2006
Posts: 2610
Location: Киев, Русь

PostPosted: Fri Jul 23, 2010 11:06 am    Post subject: Reply with quote

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

Когда надо что-то положить в холодильник, то да, - открываем и кладём.
А можно попросить кого-то (метод) положить на сохранение, а уж он сам определит куда: в холодильник (если оно должно храниться в холодильнике) или ещё куда...
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AkelPad Forum Index -> Discussion (Russian) All times are GMT
Page 1 of 1

 
Jump to:  
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 vote in polls in this forum


SourceForge.net Logo Powered by phpBB © 2001, 2005 phpBB Group