85 self.readhooks.append(hook) |
85 self.readhooks.append(hook) |
86 |
86 |
87 def setconfig(self, section, name, val): |
87 def setconfig(self, section, name, val): |
88 self.overlay[(section, name)] = val |
88 self.overlay[(section, name)] = val |
89 |
89 |
90 def config(self, section, name, default=None): |
90 def _config(self, section, name, default, funcname): |
91 if self.overlay.has_key((section, name)): |
91 if self.overlay.has_key((section, name)): |
92 return self.overlay[(section, name)] |
92 return self.overlay[(section, name)] |
93 if self.cdata.has_option(section, name): |
93 if self.cdata.has_option(section, name): |
94 try: |
94 try: |
95 return self.cdata.get(section, name) |
95 func = getattr(self.cdata, funcname) |
|
96 return func(section, name) |
96 except ConfigParser.InterpolationError, inst: |
97 except ConfigParser.InterpolationError, inst: |
97 raise util.Abort(_("Error in configuration section [%s] " |
98 raise util.Abort(_("Error in configuration section [%s] " |
98 "parameter '%s':\n%s") |
99 "parameter '%s':\n%s") |
99 % (section, name, inst)) |
100 % (section, name, inst)) |
100 if self.parentui is None: |
101 if self.parentui is None: |
101 return default |
102 return default |
102 else: |
103 else: |
103 return self.parentui.config(section, name, default) |
104 return self.parentui._config(section, name, default, funcname) |
|
105 |
|
106 def config(self, section, name, default=None): |
|
107 return self._config(section, name, default, 'get') |
|
108 |
|
109 def configbool(self, section, name, default=False): |
|
110 return self._config(section, name, default, 'getboolean') |
104 |
111 |
105 def configlist(self, section, name, default=None): |
112 def configlist(self, section, name, default=None): |
106 """Return a list of comma/space separated strings""" |
113 """Return a list of comma/space separated strings""" |
107 result = self.config(section, name) |
114 result = self.config(section, name) |
108 if result is None: |
115 if result is None: |
109 result = default or [] |
116 result = default or [] |
110 if isinstance(result, basestring): |
117 if isinstance(result, basestring): |
111 result = result.replace(",", " ").split() |
118 result = result.replace(",", " ").split() |
112 return result |
119 return result |
113 |
|
114 def configbool(self, section, name, default=False): |
|
115 if self.overlay.has_key((section, name)): |
|
116 return self.overlay[(section, name)] |
|
117 if self.cdata.has_option(section, name): |
|
118 try: |
|
119 return self.cdata.getboolean(section, name) |
|
120 except ConfigParser.InterpolationError, inst: |
|
121 raise util.Abort(_("Error in configuration section [%s] " |
|
122 "parameter '%s':\n%s") |
|
123 % (section, name, inst)) |
|
124 if self.parentui is None: |
|
125 return default |
|
126 else: |
|
127 return self.parentui.configbool(section, name, default) |
|
128 |
120 |
129 def has_config(self, section): |
121 def has_config(self, section): |
130 '''tell whether section exists in config.''' |
122 '''tell whether section exists in config.''' |
131 return self.cdata.has_section(section) |
123 return self.cdata.has_section(section) |
132 |
124 |