diff options
author | Steven M. Gava <elguavas@python.net> | 2002-02-01 01:33:36 (GMT) |
---|---|---|
committer | Steven M. Gava <elguavas@python.net> | 2002-02-01 01:33:36 (GMT) |
commit | a498af269c0974fddb81e8693051dbfb0ecc8f8b (patch) | |
tree | 09549c5c69b887c78d80969303f9901df31377f3 /Lib/idlelib/configDialog.py | |
parent | 11bd9944e5bb6344ed2187e416c57db457a2c834 (diff) | |
download | cpython-a498af269c0974fddb81e8693051dbfb0ecc8f8b.zip cpython-a498af269c0974fddb81e8693051dbfb0ecc8f8b.tar.gz cpython-a498af269c0974fddb81e8693051dbfb0ecc8f8b.tar.bz2 |
more work on configuration saving
Diffstat (limited to 'Lib/idlelib/configDialog.py')
-rw-r--r-- | Lib/idlelib/configDialog.py | 47 |
1 files changed, 23 insertions, 24 deletions
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py index c325123..16d9298 100644 --- a/Lib/idlelib/configDialog.py +++ b/Lib/idlelib/configDialog.py @@ -36,16 +36,7 @@ class ConfigDialog(Toplevel): 'Shell Normal Text':('console','09'), 'Shell Stdout Text':('stdout','10'), 'Shell Stderr Text':('stderr','11')} - #changedItems. When any config item is changed in this dialog, an entry - #should be made in the relevant section (config type) of this - #dictionary. The key should be the config file section name and the - #value a dictionary, whose key:value pairs are item=value pairs for - #that config file section. - self.changedItems={'main':{},'highlight':{},'keys':{},'extensions':{}} -# #defaultItems. This dictionary is loaded with the values from the -# #default config files. It is used for comparison with self.changedItems -# #to decide which changed items actually need saving. -# self.defaultItems=self.GetDefaultItems() + self.ResetChangedItems() #load initial values in changed items dict self.CreateWidgets() self.resizable(height=FALSE,width=FALSE) self.transient(parent) @@ -444,15 +435,19 @@ class ConfigDialog(Toplevel): theme=self.customTheme.get() element=self.themeElements[self.highlightTarget.get()][0] self.AddChangedItem('highlight',theme,element,value) - print params def VarChanged_keyBinding(self,*params): value=self.keyBinding.get() keySet=self.customKeys.get() event=self.listBindings.get(ANCHOR).split()[0] - self.AddChangedItem('keys',keySet,event,value) - print params - + if idleConf.IsCoreBinding(event): + #this is a core keybinding + self.AddChangedItem('keys',keySet,event,value) + else: #this is an extension key binding + extName=idleConf.GetExtnNameForEvent(event) + extKeybindSection=extName+'_cfgBindings' + self.AddChangedItem('extensions',extKeybindSection,event,value) + def VarChanged_winWidth(self,*params): value=self.winWidth.get() self.AddChangedItem('main','EditorWindow','width',value) @@ -471,12 +466,19 @@ class ConfigDialog(Toplevel): extension=self.listExt.get(ANCHOR) self.AddChangedItem('extensions',extension,'enabled',value) + def ResetChangedItems(self): + #changedItems. When any config item is changed in this dialog, an entry + #should be made in the relevant section (config type) of this + #dictionary. The key should be the config file section name and the + #value a dictionary, whose key:value pairs are item=value pairs for + #that config file section. + self.changedItems={'main':{},'highlight':{},'keys':{},'extensions':{}} + def AddChangedItem(self,type,section,item,value): value=str(value) #make sure we use a string if not self.changedItems[type].has_key(section): self.changedItems[type][section]={} self.changedItems[type][section][item]=value - print type,section,item,value def GetDefaultItems(self): dItems={'main':{},'highlight':{},'keys':{},'extensions':{}} @@ -552,18 +554,17 @@ class ConfigDialog(Toplevel): keySetName=self.builtinKeys.get() else: keySetName=self.customKeys.get() - prevKeySet=idleConf.GetKeySet(keySetName) #add the new key set to changedItems - for event in prevKeySet.keys(): + prevCoreKeys=idleConf.GetCoreKeys(keySetName) + for event in prevCoreKeys.keys(): #add core key set to changed items eventName=event[2:-2] #trim off the angle brackets self.AddChangedItem('keys',newKeySetName,eventName, - prevKeySet[event]) + string.join(prevCoreKeys[event])) #change gui over to the new key set customKeyList=idleConf.GetSectionList('user','keys') for newName in self.changedItems['keys'].keys(): if newName not in customKeyList: customKeyList.append(newName) customKeyList.sort() - print newKeySetName,customKeyList,self.changedItems['keys'][newKeySetName] self.optMenuKeysCustom.SetMenu(customKeyList,newKeySetName) self.keysAreDefault.set(0) self.SetKeysType() @@ -610,7 +611,6 @@ class ConfigDialog(Toplevel): for newName in self.changedItems['highlight'].keys(): if newName not in customThemeList: customThemeList.append(newName) customThemeList.sort() - print newThemeName,customThemeList,newTheme self.optMenuThemeCustom.SetMenu(customThemeList,newThemeName) self.themeIsBuiltin.set(0) self.SetThemeType() @@ -760,7 +760,7 @@ class ConfigDialog(Toplevel): self.customKeys.set('- no custom keys -') else: self.optMenuKeysCustom.SetMenu(itemList,itemList[0]) - else: #user theme selected + else: #user key set selected itemList=idleConf.GetSectionList('user','keys') itemList.sort() self.optMenuKeysCustom.SetMenu(itemList,currentOption) @@ -813,7 +813,6 @@ class ConfigDialog(Toplevel): self.LoadGeneralCfg() def SetUserValue(self,configType,section,item,value): - print idleConf.defaultCfg[configType].Get(section,item),value if idleConf.defaultCfg[configType].has_option(section,item): if idleConf.defaultCfg[configType].Get(section,item)==value: #the setting equals a default setting, remove it from user cfg @@ -830,12 +829,12 @@ class ConfigDialog(Toplevel): for section in self.changedItems[configType].keys(): for item in self.changedItems[configType][section].keys(): value=self.changedItems[configType][section][item] - print configType,section,item,value if self.SetUserValue(configType,section,item,value): cfgTypeHasChanges=1 if cfgTypeHasChanges: idleConf.userCfg[configType].Save() - + self.ResetChangedItems() #clear the changed items dict + def Cancel(self): self.destroy() |