Moved plugins to ~/.gramps/gramps32/plugins and ini to ~/.gramps/gramps32/

svn: r14110
This commit is contained in:
Doug Blank 2010-01-24 12:18:30 +00:00
parent 2e9a4c27d0
commit 4fd46fe669
3 changed files with 48 additions and 23 deletions

View File

@ -48,7 +48,7 @@ from gen.utils import ConfigManager
# Constants # Constants
# #
#--------------------------------------------------------------- #---------------------------------------------------------------
INIFILE = os.path.join(const.HOME_DIR, "gramps32.ini") INIFILE = os.path.join(const.VERSION_DIR, "gramps.ini")
#--------------------------------------------------------------- #---------------------------------------------------------------
# #
@ -120,7 +120,7 @@ def emit(key):
# #
#--------------------------------------------------------------- #---------------------------------------------------------------
CONFIGMAN = ConfigManager(INIFILE) CONFIGMAN = ConfigManager(INIFILE, "plugins")
register('behavior.addmedia-image-dir', '') register('behavior.addmedia-image-dir', '')
register('behavior.addmedia-relative-path', False) register('behavior.addmedia-relative-path', False)

View File

@ -35,6 +35,15 @@ import sys
import uuid import uuid
from gettext import gettext as _ from gettext import gettext as _
#-------------------------------------------------------------------------
#
# Gramps Version
#
#-------------------------------------------------------------------------
PROGRAM_NAME = "Gramps"
VERSION = "@VERSIONSTRING@"
VERSION_TUPLE = map(int, "@VERSION@".split(".", 2))
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
# Standard GRAMPS Websites # Standard GRAMPS Websites
@ -106,6 +115,8 @@ else:
unicode(__file__, sys.getfilesystemencoding()))) unicode(__file__, sys.getfilesystemencoding())))
IMAGE_DIR = os.path.join(ROOT_DIR, "images") IMAGE_DIR = os.path.join(ROOT_DIR, "images")
VERSION_DIR = os.path.join(
HOME_DIR, "gramps%s%s" % (VERSION_TUPLE[0], VERSION_TUPLE[1]))
CUSTOM_FILTERS = os.path.join(HOME_DIR, "custom_filters.xml") CUSTOM_FILTERS = os.path.join(HOME_DIR, "custom_filters.xml")
REPORT_OPTIONS = os.path.join(HOME_DIR, "report_options.xml") REPORT_OPTIONS = os.path.join(HOME_DIR, "report_options.xml")
@ -114,9 +125,9 @@ TOOL_OPTIONS = os.path.join(HOME_DIR, "tool_options.xml")
ENV_DIR = os.path.join(HOME_DIR, "env") ENV_DIR = os.path.join(HOME_DIR, "env")
TEMP_DIR = os.path.join(HOME_DIR, "temp") TEMP_DIR = os.path.join(HOME_DIR, "temp")
THUMB_DIR = os.path.join(HOME_DIR, "thumb") THUMB_DIR = os.path.join(HOME_DIR, "thumb")
USER_PLUGINS = os.path.join(HOME_DIR, "plugins") USER_PLUGINS = os.path.join(VERSION_DIR, "plugins")
# dirs checked/made for each Gramps session # dirs checked/made for each Gramps session
USER_DIRLIST = (HOME_DIR, ENV_DIR, TEMP_DIR, THUMB_DIR, USER_DIRLIST = (HOME_DIR, VERSION_DIR, ENV_DIR, TEMP_DIR, THUMB_DIR,
USER_PLUGINS) USER_PLUGINS)
ICON = os.path.join(ROOT_DIR, "images", "gramps.png") ICON = os.path.join(ROOT_DIR, "images", "gramps.png")
@ -156,8 +167,6 @@ else:
# About box information # About box information
# #
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
PROGRAM_NAME = "Gramps"
VERSION = "@VERSIONSTRING@"
COPYRIGHT_MSG = u"\u00A9 2001-2006 Donald N. Allingham\n" \ COPYRIGHT_MSG = u"\u00A9 2001-2006 Donald N. Allingham\n" \
u"\u00A9 2007-2009 The Gramps Developers" u"\u00A9 2007-2009 The Gramps Developers"
COMMENTS = _("Gramps (Genealogical Research and Analysis " COMMENTS = _("Gramps (Genealogical Research and Analysis "

View File

@ -59,9 +59,10 @@ class ConfigManager(object):
""" """
PLUGINS = {} PLUGINS = {}
def __init__(self, filename = None): def __init__(self, filename=None, plugins=None):
""" """
Configure manager constructor takes an optional filename. Configure manager constructor takes an optional filename, and
plugin path.
The data dictionary stores the settings: The data dictionary stores the settings:
@ -88,22 +89,29 @@ class ConfigManager(object):
The default filename (usually the one you are reading from) The default filename (usually the one you are reading from)
is stored as self.filename. However, you can save to another is stored as self.filename. However, you can save to another
filename using self.save(otherfilename). filename using self.save(otherfilename).
filename (if given) is a fullpath.
plugins (if given) is a relative path to filename.
""" """
self._cb_id = 0 # callback id counter self._cb_id = 0 # callback id counter
self.config_path, config_filename = os.path.split(os.path.abspath(filename)) self.config_path, config_filename = \
self.filename = filename # fullpath and filename os.path.split(os.path.abspath(filename))
self.filename = filename # fullpath and filename, or None
self.plugins = plugins # relative directory name, or None
self.callbacks = {} self.callbacks = {}
self.default = {} self.default = {}
self.data = {} self.data = {}
self.reset() self.reset()
def register_manager(self, name, override="", use_config_path=False): def register_manager(self, name, override="", use_plugins_path=True,
use_config_path=False):
""" """
Register a plugin manager. Register a plugin manager.
name is used as the key of the config manager singleton. It is name is used as the key of the config manager singleton. It is
also be used as the base filename (unless an override is given, also be used as the base filename (unless an override is given,
or use_config_path is True). or use_config_path or use_plugins_path is True).
override is either: override is either:
- a full path+filename ending in .ini - a full path+filename ending in .ini
@ -116,17 +124,20 @@ class ConfigManager(object):
the new manager's path, ignoring any path given in override. the new manager's path, ignoring any path given in override.
Examples: Examples:
>>> config.register_manager("Simple") >>> config.register_manager("Simple", use_plugins_path=False)
# will use the calling programs directory, and "Simple.ini" # will use the calling programs directory, and "Simple.ini"
>>> config.register_manager("Simple", __file__) >>> config.register_manager("Simple", __file__,
use_plugins_path=False)
# will use the __file__'s directory, and "Simple.ini" # will use the __file__'s directory, and "Simple.ini"
>>> config.register_manager("Simple", "c:\\temp") >>> config.register_manager("Simple", "c:\\temp",
use_plugins_path=False)
# will use the given directory, "c:\\temp\\Simple.ini" # will use the given directory, "c:\\temp\\Simple.ini"
>>> config.register_manager("Simple", use_config_path) >>> config.register_manager("Simple", use_config_path=True)
# will use config's path: ~/.gramps/gramps32/plugins/Simple.ini # will use config's path: ~/.gramps/gramps32/Simple.ini
>>> config.register_manager("Simple", "Other.ini", use_config_path) >>> config.register_manager("Simple", "Other.ini")
# will use config's path: ~/.gramps/gramps32/plugins/Other.ini # will use config + plugins path: ~/.gramps/gramps32/plugins/Other.ini
>>> config.register_manager("Simple", "/tmp/Other.ini") >>> config.register_manager("Simple", "/tmp/Other.ini",
use_plugins_path=False)
# will use /tmp/Other.ini # will use /tmp/Other.ini
""" """
if isinstance(override, str): # directory or filename if isinstance(override, str): # directory or filename
@ -138,6 +149,8 @@ class ConfigManager(object):
ininame = "%s.ini" % name ininame = "%s.ini" % name
if use_config_path: if use_config_path:
path = self.config_path path = self.config_path
elif use_plugins_path:
path = os.path.join(self.config_path, self.plugins)
filename = os.path.join(path, ininame) filename = os.path.join(path, ininame)
plugin = ConfigManager(filename) plugin = ConfigManager(filename)
elif isinstance(override, ConfigManager): elif isinstance(override, ConfigManager):
@ -197,13 +210,16 @@ class ConfigManager(object):
for section in self.default: for section in self.default:
self.data[section] = {} self.data[section] = {}
for setting in self.default[section]: for setting in self.default[section]:
self.data[section][setting] = copy.deepcopy(self.default[section][setting]) self.data[section][setting] = \
copy.deepcopy(self.default[section][setting])
elif setting is None: elif setting is None:
self.data[section] = {} self.data[section] = {}
for setting in self.default[section]: for setting in self.default[section]:
self.data[section][setting] = copy.deepcopy(self.default[section][setting]) self.data[section][setting] = \
copy.deepcopy(self.default[section][setting])
else: else:
self.data[section][setting] = copy.deepcopy(self.default[section][setting]) self.data[section][setting] = \
copy.deepcopy(self.default[section][setting])
# Callbacks are still connected # Callbacks are still connected
def get_sections(self): def get_sections(self):