1 """Provides access to configuration information"""
5 from ConfigParser
import ConfigParser
, NoOptionError
, NoSectionError
7 class IdleConfParser(ConfigParser
):
9 # these conf sections do not define extensions!
11 for section
in ('EditorWindow', 'Colors'):
12 builtin_sections
[section
] = section
14 def getcolor(self
, sec
, name
):
15 """Return a dictionary with foreground and background colors
17 The return value is appropriate for passing to Tkinter in, e.g.,
20 fore
= self
.getdef(sec
, name
+ "-foreground")
21 back
= self
.getdef(sec
, name
+ "-background")
22 return {"foreground": fore
,
25 def getdef(self
, sec
, options
, raw
=0, vars=None, default
=None):
26 """Get an option value for given section or return default"""
28 return self
.get(sec
, options
, raw
, vars)
29 except (NoSectionError
, NoOptionError
):
32 def getsection(self
, section
):
33 """Return a SectionConfigParser object"""
34 return SectionConfigParser(section
, self
)
36 def getextensions(self
):
38 for sec
in self
.sections():
39 if self
.builtin_sections
.has_key(sec
):
41 # enable is a bool, but it may not be defined
42 if self
.getdef(sec
, 'enable') != '0':
48 idleconf
= IdleConfParser()
49 load(_dir
) # _dir is a global holding the last directory loaded
51 class SectionConfigParser
:
52 """A ConfigParser object specialized for one section
54 This class has all the get methods that a regular ConfigParser does,
55 but without requiring a section argument.
57 def __init__(self
, section
, config
):
58 self
.section
= section
62 return self
.config
.options(self
.section
)
64 def get(self
, options
, raw
=0, vars=None):
65 return self
.config
.get(self
.section
, options
, raw
, vars)
67 def getdef(self
, options
, raw
=0, vars=None, default
=None):
68 return self
.config
.getdef(self
.section
, options
, raw
, vars, default
)
70 def getint(self
, option
):
71 return self
.config
.getint(self
.section
, option
)
73 def getfloat(self
, option
):
74 return self
.config
.getint(self
.section
, option
)
76 def getboolean(self
, option
):
77 return self
.config
.getint(self
.section
, option
)
79 def getcolor(self
, option
):
80 return self
.config
.getcolor(self
.section
, option
)
83 """Load IDLE configuration files based on IDLE install in dir
85 Attempts to load two config files:
87 dir/config-[win/mac/unix].txt
88 dir/config-%(sys.platform)s.txt
94 if sys
.platform
[:3] == 'win':
95 genplatfile
= os
.path
.join(dir, "config-win.txt")
96 # XXX don't know what the platform string is on a Mac
97 elif sys
.platform
[:3] == 'mac':
98 genplatfile
= os
.path
.join(dir, "config-mac.txt")
100 genplatfile
= os
.path
.join(dir, "config-unix.txt")
102 platfile
= os
.path
.join(dir, "config-%s.txt" % sys
.platform
)
105 homedir
= os
.environ
['HOME']
107 homedir
= os
.getcwd()
109 idleconf
.read((os
.path
.join(dir, "config.txt"), genplatfile
, platfile
,
110 os
.path
.join(homedir
, ".idle")))
112 idleconf
= IdleConfParser()
113 load(os
.path
.dirname(__file__
))