| 196 | | configFileName = os.path.join(self.HomeDirectory, ".userSettings.ini") |
|---|
| 197 | | |
|---|
| 198 | | cp = ConfigParser.ConfigParser() |
|---|
| 199 | | cp.read(configFileName) |
|---|
| 200 | | |
|---|
| 201 | | spec = spec.lower() |
|---|
| 202 | | |
|---|
| 203 | | try: |
|---|
| 204 | | items = cp.items("UserSettings") |
|---|
| 205 | | except ConfigParser.NoSectionError: |
|---|
| 206 | | items = [] |
|---|
| 207 | | |
|---|
| 208 | | ret = [] |
|---|
| 209 | | for item in items: |
|---|
| 210 | | wholekey = item[0].lower() |
|---|
| 211 | | if wholekey[:len(spec)] == spec: |
|---|
| 212 | | key = wholekey[len(spec):].split(".")[0] |
|---|
| 213 | | if ret.count(key) == 0: |
|---|
| 214 | | ret.append(key) |
|---|
| 215 | | return ret |
|---|
| 216 | | |
|---|
| | 197 | if self.UserSettingProvider: |
|---|
| | 198 | return self.UserSettingProvider.getUserSettingKeys(spec) |
|---|
| | 199 | return None |
|---|
| | 200 | |
|---|
| | 201 | |
|---|
| 235 | | configFileName = os.path.join(self.HomeDirectory, ".userSettings.ini") |
|---|
| 236 | | |
|---|
| 237 | | cp = ConfigParser.ConfigParser() |
|---|
| 238 | | cp.read(configFileName) |
|---|
| 239 | | |
|---|
| 240 | | try: |
|---|
| 241 | | valueType = cp.get("UserSettingsValueTypes", item) |
|---|
| 242 | | except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): |
|---|
| 243 | | valueType = "C" |
|---|
| 244 | | |
|---|
| 245 | | try: |
|---|
| 246 | | if valueType == "I": |
|---|
| 247 | | value = cp.getint("UserSettings", item) |
|---|
| 248 | | elif valueType == "N": |
|---|
| 249 | | value = cp.getfloat("UserSettings", item) |
|---|
| 250 | | elif valueType == "L": |
|---|
| 251 | | value = cp.getboolean("UserSettings", item) |
|---|
| 252 | | else: |
|---|
| 253 | | value = cp.get("UserSettings", item) |
|---|
| 254 | | except (ConfigParser.NoSectionError, ConfigParser.NoOptionError): |
|---|
| 255 | | value = None |
|---|
| 256 | | |
|---|
| 257 | | return value |
|---|
| | 220 | if self.UserSettingProvider: |
|---|
| | 221 | return self.UserSettingProvider.getUserSetting(item, user, system) |
|---|
| | 222 | return None |
|---|
| 263 | | # For now, save this info in a plain ini file. Eventually, I'd like |
|---|
| 264 | | # to see this get saved in a persistent dabosettings db table. |
|---|
| 265 | | configFileName = os.path.join(self.HomeDirectory, ".userSettings.ini") |
|---|
| 266 | | |
|---|
| 267 | | cp = ConfigParser.ConfigParser() |
|---|
| 268 | | cp.read(configFileName) |
|---|
| 269 | | |
|---|
| 270 | | if isinstance(value, basestring): |
|---|
| 271 | | valueType = "C" |
|---|
| 272 | | elif isinstance(value, bool): |
|---|
| 273 | | valueType = "L" |
|---|
| 274 | | elif isinstance(value, float): |
|---|
| 275 | | valueType = "N" |
|---|
| 276 | | elif isinstance(value, (int, long)): |
|---|
| 277 | | valueType = "I" |
|---|
| 278 | | else: |
|---|
| 279 | | valueType = "?" |
|---|
| 280 | | |
|---|
| 281 | | if not cp.has_section("UserSettings"): |
|---|
| 282 | | cp.add_section("UserSettings") |
|---|
| 283 | | cp.set("UserSettings", item, str(value)) |
|---|
| 284 | | |
|---|
| 285 | | if not cp.has_section("UserSettingsValueTypes"): |
|---|
| 286 | | cp.add_section("UserSettingsValueTypes") |
|---|
| 287 | | cp.set("UserSettingsValueTypes", item, valueType) |
|---|
| 288 | | |
|---|
| 289 | | configFile = open(configFileName, "w") |
|---|
| 290 | | cp.write(configFile) |
|---|
| 291 | | configFile.close() |
|---|
| | 228 | if self.UserSettingProvider: |
|---|
| | 229 | self.UserSettingProvider.setUserSetting(item, value) |
|---|
| | 448 | |
|---|
| | 449 | def _getUserSettingProvider(self): |
|---|
| | 450 | try: |
|---|
| | 451 | v = self._userSettingProvider |
|---|
| | 452 | except AttributeError: |
|---|
| | 453 | if self.UserSettingProviderClass is not None: |
|---|
| | 454 | v = self._userSettingProvider = self.UserSettingProviderClass() |
|---|
| | 455 | else: |
|---|
| | 456 | v = self._userSettingProvider = None |
|---|
| | 457 | return v |
|---|
| | 458 | |
|---|
| | 459 | def _setUserSettingProvider(self, val): |
|---|
| | 460 | self._userSettingProvider = val |
|---|
| | 461 | |
|---|
| | 462 | |
|---|
| | 463 | def _getUserSettingProviderClass(self): |
|---|
| | 464 | try: |
|---|
| | 465 | v = self._userSettingProviderClass |
|---|
| | 466 | except AttributeError: |
|---|
| | 467 | v = self._userSettingProviderClass = dUserSettingProvider.dUserSettingProvider |
|---|
| | 468 | return v |
|---|
| | 469 | |
|---|
| | 470 | def _setUserSettingProviderClass(self, val): |
|---|
| | 471 | self._userSettingProviderClass = val |
|---|
| | 472 | |
|---|
| | 473 | |
|---|
| 571 | | |
|---|
| | 535 | |
|---|
| | 536 | UserSettingProvider = property(_getUserSettingProvider, _setUserSettingProvider, |
|---|
| | 537 | _("""Specifies the reference to the object providing user preference persistence. |
|---|
| | 538 | |
|---|
| | 539 | The default UserSettingProvider will save user preferences inside the .dabo |
|---|
| | 540 | directory inside the user's home directory.""")) |
|---|
| | 541 | |
|---|
| | 542 | UserSettingProviderClass = property(_getUserSettingProviderClass, |
|---|
| | 543 | _setUserSettingProviderClass, |
|---|
| | 544 | _("""Specifies the class to use for user preference persistence. |
|---|
| | 545 | |
|---|
| | 546 | The default UserSettingProviderClass will save user preferences inside the .dabo |
|---|
| | 547 | directory inside the user's home directory, and will be instantiated by Dabo |
|---|
| | 548 | automatically.""")) |
|---|
| | 549 | |
|---|