summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/IdleConf.py
diff options
context:
space:
mode:
authorDavid Scherer <dscherer@cmu.edu>2000-08-15 01:13:23 (GMT)
committerDavid Scherer <dscherer@cmu.edu>2000-08-15 01:13:23 (GMT)
commit7aced17437a6b05bc4b0b5ff93aa6a5d3a374d68 (patch)
treece0576a16111fd86ac5f56ff4ec1500f29c4f8db /Lib/idlelib/IdleConf.py
parent33a6da9971a923ceaaee1406d0feaa64b8d1759a (diff)
downloadcpython-7aced17437a6b05bc4b0b5ff93aa6a5d3a374d68.zip
cpython-7aced17437a6b05bc4b0b5ff93aa6a5d3a374d68.tar.gz
cpython-7aced17437a6b05bc4b0b5ff93aa6a5d3a374d68.tar.bz2
Initial revision
Diffstat (limited to 'Lib/idlelib/IdleConf.py')
-rw-r--r--Lib/idlelib/IdleConf.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/Lib/idlelib/IdleConf.py b/Lib/idlelib/IdleConf.py
new file mode 100644
index 0000000..36cad51
--- /dev/null
+++ b/Lib/idlelib/IdleConf.py
@@ -0,0 +1,113 @@
+"""Provides access to configuration information"""
+
+import os
+import sys
+from ConfigParser import ConfigParser, NoOptionError, NoSectionError
+
+class IdleConfParser(ConfigParser):
+
+ # these conf sections do not define extensions!
+ builtin_sections = {}
+ for section in ('EditorWindow', 'Colors'):
+ builtin_sections[section] = section
+
+ def getcolor(self, sec, name):
+ """Return a dictionary with foreground and background colors
+
+ The return value is appropriate for passing to Tkinter in, e.g.,
+ a tag_config call.
+ """
+ fore = self.getdef(sec, name + "-foreground")
+ back = self.getdef(sec, name + "-background")
+ return {"foreground": fore,
+ "background": back}
+
+ def getdef(self, sec, options, raw=0, vars=None, default=None):
+ """Get an option value for given section or return default"""
+ try:
+ return self.get(sec, options, raw, vars)
+ except (NoSectionError, NoOptionError):
+ return default
+
+ def getsection(self, section):
+ """Return a SectionConfigParser object"""
+ return SectionConfigParser(section, self)
+
+ def getextensions(self):
+ exts = []
+ for sec in self.sections():
+ if self.builtin_sections.has_key(sec):
+ continue
+ # enable is a bool, but it may not be defined
+ if self.getdef(sec, 'enable') != '0':
+ exts.append(sec)
+ return exts
+
+ def reload(self):
+ global idleconf
+ idleconf = IdleConfParser()
+ load(_dir) # _dir is a global holding the last directory loaded
+
+class SectionConfigParser:
+ """A ConfigParser object specialized for one section
+
+ This class has all the get methods that a regular ConfigParser does,
+ but without requiring a section argument.
+ """
+ def __init__(self, section, config):
+ self.section = section
+ self.config = config
+
+ def options(self):
+ return self.config.options(self.section)
+
+ def get(self, options, raw=0, vars=None):
+ return self.config.get(self.section, options, raw, vars)
+
+ def getdef(self, options, raw=0, vars=None, default=None):
+ return self.config.getdef(self.section, options, raw, vars, default)
+
+ def getint(self, option):
+ return self.config.getint(self.section, option)
+
+ def getfloat(self, option):
+ return self.config.getint(self.section, option)
+
+ def getboolean(self, option):
+ return self.config.getint(self.section, option)
+
+ def getcolor(self, option):
+ return self.config.getcolor(self.section, option)
+
+def load(dir):
+ """Load IDLE configuration files based on IDLE install in dir
+
+ Attempts to load two config files:
+ dir/config.txt
+ dir/config-[win/mac/unix].txt
+ dir/config-%(sys.platform)s.txt
+ ~/.idle
+ """
+ global _dir
+ _dir = dir
+
+ if sys.platform[:3] == 'win':
+ genplatfile = os.path.join(dir, "config-win.txt")
+ # XXX don't know what the platform string is on a Mac
+ elif sys.platform[:3] == 'mac':
+ genplatfile = os.path.join(dir, "config-mac.txt")
+ else:
+ genplatfile = os.path.join(dir, "config-unix.txt")
+
+ platfile = os.path.join(dir, "config-%s.txt" % sys.platform)
+
+ try:
+ homedir = os.environ['HOME']
+ except KeyError:
+ homedir = os.getcwd()
+
+ idleconf.read((os.path.join(dir, "config.txt"), genplatfile, platfile,
+ os.path.join(homedir, ".idle")))
+
+idleconf = IdleConfParser()
+