More generic configuration.
import imp
import sys
import os
class ActionsLoader:
def __init__(self):
self._actions = {}
def keys(self):
return self._actions.keys()
def _getmodule(self, name):
modpath = os.path.join(os.path.dirname(__file__), 'actions')
fp, pathname, description = imp.find_module(name, [modpath])
try:
return imp.load_module(name, fp, pathname, description)
finally:
if fp:
fp.close()
def __getitem__(self, item):
mname, fname = self._actions[item]
return self._getmodule(mname).__dict__[fname]
def __setitem__(self, key, value):
self._actions[key] = value
actions = ActionsLoader()
actions['default'] = ('index', 'do_it')
actions['index'] = ('index', 'do_it')
actions['edit'] = ('edit', 'do_it')
actions['import'] = ('imp_xbel', 'do_it')
actions['add'] = ('add', 'do_it')
actions['keywords'] = ('editkw', 'do_it')
actions['prefs'] = ('edit_prefs', 'do_it')