diff options
author | Richard Darst <rkd@zgib.net> | 2009-07-31 18:02:53 (GMT) |
---|---|---|
committer | Richard Darst <rkd@zgib.net> | 2009-07-31 18:02:53 (GMT) |
commit | a232afc9558bf84502f3c5bfdd067bd301c5644e (patch) | |
tree | c5db8e179bd8f4cfaa5fb0978736cb74e6ba90ea | |
parent | 69fe50a7fe72d4fe64c20a81b41c648b47de3e5f (diff) |
Improve semantics of setting the supybot config proxy
- This no longer mucks with global variables as badly as before...
darcs-hash:20090731180253-82ea9-c7a6c0a923353a81e3b8be45e366eb8fe1b3d8ee.gz
-rw-r--r-- | plugin.py | 4 | ||||
-rw-r--r-- | supybotconfig.py | 19 |
2 files changed, 14 insertions, 9 deletions
@@ -42,6 +42,10 @@ import supybotconfig meeting = reload(meeting) supybotconfig = reload(supybotconfig) +if supybotconfig.is_supybotconfig_enabled(meeting.Config): + supybotconfig.setup_config(meeting.Config) + meeting.Config = supybotconfig.get_config_proxy(meeting.Config) + # By doing this, we can not lose all of our meetings across plugin # reloads. But, of course, you can't change the source too # drastically if you do that! diff --git a/supybotconfig.py b/supybotconfig.py index 537099d..bdbb68f 100644 --- a/supybotconfig.py +++ b/supybotconfig.py @@ -38,9 +38,6 @@ import supybot.registry as registry import meeting import writers -OriginalConfig = meeting.Config - - # The plugin group for configuration MeetBotConfigGroup = conf.registerPlugin('MeetBot') @@ -79,6 +76,7 @@ class WriterMap(registry.String): class SupybotConfigProxy(object): def __init__(self, *args, **kwargs): """Do the regular default configuration, and sta""" + OriginalConfig = self.__OriginalConfig self.__C = OriginalConfig(*args, **kwargs) def __getattr__(self, attrname): @@ -115,12 +113,14 @@ class SupybotConfigProxy(object): use_supybot_config = conf.registerGlobalValue(MeetBotConfigGroup, 'enableSupybotBasedConfig', registry.Boolean(False, '')) -#from fitz import interactnow -if (use_supybot_config.value and - not getattr(OriginalConfig, 'dontBotConfig', False)): +def is_supybotconfig_enabled(OriginalConfig): + return (use_supybot_config.value and + not getattr(OriginalConfig, 'dontBotConfig', False)) + +settable_attributes = [ ] +def setup_config(OriginalConfig): # Set all string variables in the default Config class as supybot # registry variables. - settable_attributes = [ ] for attrname in dir(OriginalConfig): # Don't configure attributs starting with '_' if attrname[0] == '_': @@ -145,8 +145,9 @@ if (use_supybot_config.value and WriterMap(OriginalConfig.writer_map, "")) settable_attributes.append('writer_map') - +def get_config_proxy(OriginalConfig): # Here is where the real proxying occurs. - meeting.Config = SupybotConfigProxy + SupybotConfigProxy._SupybotConfigProxy__OriginalConfig = OriginalConfig + return SupybotConfigProxy |