[Idle-dev] CVS: idle configDialog.py,1.32,1.33
Stephen M. Gava
elguavas@users.sourceforge.net
Sun, 10 Feb 2002 18:19:53 -0800
- Previous message: [Idle-dev] CVS: idle configHelpSourceEdit.py,NONE,1.1 configSectionNameDialog.py,1.1,1.2
- Next message: [Idle-dev] CVS: idle configHandler.py,1.18,1.19 config-highlight.def,1.4,1.5 config-keys.def,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/idlefork/idle
In directory usw-pr-cvs1:/tmp/cvs-serv8151
Modified Files:
configDialog.py
Log Message:
further work on config saving
Index: configDialog.py
===================================================================
RCS file: /cvsroot/idlefork/idle/configDialog.py,v
retrieving revision 1.32
retrieving revision 1.33
diff -C2 -r1.32 -r1.33
*** configDialog.py 5 Feb 2002 04:50:26 -0000 1.32
--- configDialog.py 11 Feb 2002 02:19:51 -0000 1.33
***************
*** 4,8 ****
from Tkinter import *
import tkMessageBox, tkColorChooser, tkFont
! import string
from configHandler import idleConf
--- 4,8 ----
from Tkinter import *
import tkMessageBox, tkColorChooser, tkFont
! import string, copy
from configHandler import idleConf
***************
*** 186,190 ****
text.bind('<Double-Button-1>',lambda e: 'break')
text.bind('<B1-Motion>',lambda e: 'break')
! textAndTags=(('#you can click in here','comment'),('\n','normal'),
('#to choose items','comment'),('\n','normal'),('def','keyword'),
(' ','normal'),('func','definition'),('(param):','normal'),
--- 186,190 ----
text.bind('<Double-Button-1>',lambda e: 'break')
text.bind('<B1-Motion>',lambda e: 'break')
! textAndTags=(('#you can click here','comment'),('\n','normal'),
('#to choose items','comment'),('\n','normal'),('def','keyword'),
(' ','normal'),('func','definition'),('(param):','normal'),
***************
*** 258,262 ****
self.builtinKeys=StringVar(self)
self.customKeys=StringVar(self)
! self.keysAreDefault=BooleanVar(self)
self.keyBinding=StringVar(self)
##widget creation
--- 258,262 ----
self.builtinKeys=StringVar(self)
self.customKeys=StringVar(self)
! self.keysAreBuiltin=BooleanVar(self)
self.keyBinding=StringVar(self)
##widget creation
***************
*** 286,292 ****
labelKeysTitle=Label(frameKeySets,text='Select a Key Set')
labelTypeTitle=Label(frameKeySets,text='Select : ')
! self.radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysAreDefault,
value=1,command=self.SetKeysType,text='a Built-in Key Set')
! self.radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysAreDefault,
value=0,command=self.SetKeysType,text='a Custom Key Set')
self.optMenuKeysBuiltin=DynOptionMenu(frameKeySets,
--- 286,292 ----
labelKeysTitle=Label(frameKeySets,text='Select a Key Set')
labelTypeTitle=Label(frameKeySets,text='Select : ')
! self.radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysAreBuiltin,
value=1,command=self.SetKeysType,text='a Built-in Key Set')
! self.radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysAreBuiltin,
value=0,command=self.SetKeysType,text='a Custom Key Set')
self.optMenuKeysBuiltin=DynOptionMenu(frameKeySets,
***************
*** 411,419 ****
self.indentBySpaces.trace_variable('w',self.VarChanged_indentBySpaces)
self.colour.trace_variable('w',self.VarChanged_colour)
self.keyBinding.trace_variable('w',self.VarChanged_keyBinding)
self.winWidth.trace_variable('w',self.VarChanged_winWidth)
self.winHeight.trace_variable('w',self.VarChanged_winHeight)
self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
!
def VarChanged_fontSize(self,*params):
value=self.fontSize.get()
--- 411,426 ----
self.indentBySpaces.trace_variable('w',self.VarChanged_indentBySpaces)
self.colour.trace_variable('w',self.VarChanged_colour)
+ self.builtinTheme.trace_variable('w',self.VarChanged_builtinTheme)
+ self.customTheme.trace_variable('w',self.VarChanged_customTheme)
+ self.themeIsBuiltin.trace_variable('w',self.VarChanged_themeIsBuiltin)
+ self.highlightTarget.trace_variable('w',self.VarChanged_highlightTarget)
self.keyBinding.trace_variable('w',self.VarChanged_keyBinding)
+ self.builtinKeys.trace_variable('w',self.VarChanged_builtinKeys)
+ self.customKeys.trace_variable('w',self.VarChanged_customKeys)
+ self.keysAreBuiltin.trace_variable('w',self.VarChanged_keysAreBuiltin)
self.winWidth.trace_variable('w',self.VarChanged_winWidth)
self.winHeight.trace_variable('w',self.VarChanged_winHeight)
self.startupEdit.trace_variable('w',self.VarChanged_startupEdit)
!
def VarChanged_fontSize(self,*params):
value=self.fontSize.get()
***************
*** 441,448 ****
def VarChanged_colour(self,*params):
! value=self.colour.get()
! theme=self.customTheme.get()
! element=self.themeElements[self.highlightTarget.get()][0]
! self.AddChangedItem('highlight',theme,element,value)
def VarChanged_keyBinding(self,*params):
--- 448,470 ----
def VarChanged_colour(self,*params):
! self.OnNewColourSet()
!
! def VarChanged_builtinTheme(self,*params):
! value=self.builtinTheme.get()
! self.AddChangedItem('main','Theme','name',value)
! self.PaintThemeSample()
!
! def VarChanged_customTheme(self,*params):
! value=self.customTheme.get()
! self.AddChangedItem('main','Theme','name',value)
! self.PaintThemeSample()
!
! def VarChanged_themeIsBuiltin(self,*params):
! value=self.themeIsBuiltin.get()
! self.AddChangedItem('main','Theme','default',value)
! self.PaintThemeSample()
!
! def VarChanged_highlightTarget(self,*params):
! self.SetHighlightTarget()
def VarChanged_keyBinding(self,*params):
***************
*** 458,461 ****
--- 480,501 ----
self.AddChangedItem('extensions',extKeybindSection,event,value)
+ def VarChanged_builtinKeys(self,*params):
+ value=self.builtinKeys.get()
+ self.AddChangedItem('main','Keys','name',value)
+ self.LoadKeysList(value)
+
+ def VarChanged_customKeys(self,*params):
+ value=self.customKeys.get()
+ self.AddChangedItem('main','Keys','name',value)
+ self.LoadKeysList(value)
+
+ def VarChanged_keysAreBuiltin(self,*params):
+ value=self.keysAreBuiltin.get()
+ self.AddChangedItem('main','Keys','default',value)
+ if value:
+ self.LoadKeysList(self.builtinKeys.get())
+ else:
+ self.LoadKeysList(self.customKeys.get())
+
def VarChanged_winWidth(self,*params):
value=self.winWidth.get()
***************
*** 470,479 ****
self.AddChangedItem('main','General','editor-on-startup',value)
- def ExtensionStateToggled(self):
- #callback for the extension enable/disable radio buttons
- value=self.extEnabled.get()
- 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
--- 510,513 ----
***************
*** 515,519 ****
def SetKeysType(self):
! if self.keysAreDefault.get():
self.optMenuKeysBuiltin.config(state=NORMAL)
self.optMenuKeysCustom.config(state=DISABLED)
--- 549,553 ----
def SetKeysType(self):
! if self.keysAreBuiltin.get():
self.optMenuKeysBuiltin.config(state=NORMAL)
self.optMenuKeysCustom.config(state=DISABLED)
***************
*** 533,537 ****
currentKeySequences).result
if newKeys: #new keys were specified
! if self.keysAreDefault.get(): #current key set is a built-in
message=('Your changes will be saved as a new Custom Key Set. '+
'Enter a name for your new Custom Key Set below.')
--- 567,571 ----
currentKeySequences).result
if newKeys: #new keys were specified
! if self.keysAreBuiltin.get(): #current key set is a built-in
message=('Your changes will be saved as a new Custom Key Set. '+
'Enter a name for your new Custom Key Set below.')
***************
*** 547,551 ****
self.listBindings.select_set(listIndex)
self.listBindings.select_anchor(listIndex)
! self.keyBinding.set(newKeys.result)
else:
self.listBindings.select_set(listIndex)
--- 581,585 ----
self.listBindings.select_set(listIndex)
self.listBindings.select_anchor(listIndex)
! self.keyBinding.set(newKeys)
else:
self.listBindings.select_set(listIndex)
***************
*** 554,559 ****
def GetNewKeysName(self,message):
usedNames=idleConf.GetSectionList('user','keys')
! for newName in self.changedItems['keys'].keys():
! if newName not in usedNames: usedNames.append(newName)
newKeySet=GetCfgSectionNameDialog(self,'New Custom Key Set',
message,usedNames).result
--- 588,593 ----
def GetNewKeysName(self,message):
usedNames=idleConf.GetSectionList('user','keys')
! # for newName in self.changedItems['keys'].keys():
! # if newName not in usedNames: usedNames.append(newName)
newKeySet=GetCfgSectionNameDialog(self,'New Custom Key Set',
message,usedNames).result
***************
*** 571,599 ****
#creates new custom key set based on the previously active key set,
#and makes the new key set active
! if self.keysAreDefault.get():
! keySetName=self.builtinKeys.get()
else:
! keySetName=self.customKeys.get()
! #add the new key set to changedItems
! 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,
! 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()
self.optMenuKeysCustom.SetMenu(customKeyList,newKeySetName)
! self.keysAreDefault.set(0)
self.SetKeysType()
def GetColour(self):
target=self.highlightTarget.get()
rgbTuplet, colourString = tkColorChooser.askcolor(parent=self,
! title='Pick new colour for : '+target,
! initialcolor=self.frameColourSet.cget('bg'))
! if colourString: #user didn't cancel
if self.themeIsBuiltin.get(): #current theme is a built-in
message=('Your changes will be saved as a new Custom Theme. '+
--- 605,695 ----
#creates new custom key set based on the previously active key set,
#and makes the new key set active
! if self.keysAreBuiltin.get():
! prevKeySetName=self.builtinKeys.get()
else:
! prevKeySetName=self.customKeys.get()
! # #add the new core key set to changedItems
! # if prevKeySetName in self.changedItems['keys'].keys():
! # #existing core key set hasn't been saved yet, copy from changedItems
! # self.changedItems['keys'][newKeySetName]=copy.deepcopy(
! # self.changedItems['keys'][prevKeySetName]) #copy core bindings
! # else: #get core key set from config
! prevKeys=idleConf.GetCoreKeys(prevKeySetName)
!
! newKeys={}
! for event in prevKeys.keys(): #add key set to changed items
eventName=event[2:-2] #trim off the angle brackets
! binding=string.join(prevKeys[event])
! newKeys[eventName]=binding
! # self.AddChangedItem('keys',newKeySetName,eventName,binding)
!
! #handle any unsaved changes to prev key set
! if prevKeySetName in self.changedItems['keys'].keys():
! keySetChanges=self.changedItems['keys'][prevKeySetName]
! for event in keySetChanges.keys():
! newKeys[event]=keySetChanges[event]
!
! #save the new theme
! self.SaveNewKeySet(newKeySetName,newKeys)
!
!
#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()
self.optMenuKeysCustom.SetMenu(customKeyList,newKeySetName)
! self.keysAreBuiltin.set(0)
self.SetKeysType()
+ def LoadKeysList(self,keySetName):
+ reselect=0
+ newKeySet=0
+ if self.listBindings.curselection():
+ reselect=1
+ listIndex=self.listBindings.index(ANCHOR)
+ # if keySetName in self.changedItems['keys'].keys():
+ # #new key set, not yet in saved configuration
+ # newKeySet=1
+ # keySet=self.changedItems['keys'][keySetName] #core keys
+ # for section in self.changedItems['extensions'].keys():
+ # #add active extension bindings
+ # keySet
+ # else: #key set in existing configuration
+
+ keySet=idleConf.GetKeySet(keySetName)
+ # print 'copy from new key set:',newKeySet
+ bindNames=keySet.keys()
+ bindNames.sort()
+ self.listBindings.delete(0,END)
+ for bindName in bindNames:
+ # if newKeySet:
+ # key=keySet[bindName]
+
+ key=string.join(keySet[bindName]) #make key(s) into a string
+ bindName=bindName[2:-2] #trim off the angle brackets
+
+ if keySetName in self.changedItems['keys'].keys():
+ #handle any unsaved changes to this key set
+ if bindName in self.changedItems['keys'][keySetName].keys():
+ key=self.changedItems['keys'][keySetName][bindName]
+
+ # else: #convert existing config keys to list display string
+ # key=string.join(keySet[bindName]) #make key(s) into a string
+
+ self.listBindings.insert(END, bindName+' - '+key)
+
+ if reselect:
+ self.listBindings.see(listIndex)
+ self.listBindings.select_set(listIndex)
+ self.listBindings.select_anchor(listIndex)
+
def GetColour(self):
target=self.highlightTarget.get()
+ prevColour=self.frameColourSet.cget('bg')
rgbTuplet, colourString = tkColorChooser.askcolor(parent=self,
! title='Pick new colour for : '+target,initialcolor=prevColour)
! if colourString and (colourString!=prevColour):
! #user didn't cancel, and they chose a new colour
if self.themeIsBuiltin.get(): #current theme is a built-in
message=('Your changes will be saved as a new Custom Theme. '+
***************
*** 604,618 ****
else: #create new custom theme based on previously active theme
self.CreateNewTheme(newTheme)
! self.colour.set(colourString)
! self.frameColourSet.config(bg=colourString)#set sample
! if self.fgHilite.get(): plane='foreground'
! else: plane='background'
! apply(self.textHighlightSample.tag_config,
! (self.themeElements[target][0],),{plane:colourString})
!
def GetNewThemeName(self,message):
usedNames=idleConf.GetSectionList('user','highlight')
- for newName in self.changedItems['highlight'].keys():
- if newName not in usedNames: usedNames.append(newName)
newTheme=GetCfgSectionNameDialog(self,'New Custom Theme',
message,usedNames).result
--- 700,722 ----
else: #create new custom theme based on previously active theme
self.CreateNewTheme(newTheme)
! self.colour.set(colourString)
! else: #current theme is user defined
! self.colour.set(colourString)
!
! def OnNewColourSet(self):
! newColour=self.colour.get()
! self.frameColourSet.config(bg=newColour)#set sample
! if self.fgHilite.get(): plane='foreground'
! else: plane='background'
! sampleElement=self.themeElements[self.highlightTarget.get()][0]
! apply(self.textHighlightSample.tag_config,
! (sampleElement,),{plane:newColour})
! theme=self.customTheme.get()
! themeElement=sampleElement+'-'+plane
! self.AddChangedItem('highlight',theme,themeElement,newColour)
! print self.changedItems['highlight'][theme]
!
def GetNewThemeName(self,message):
usedNames=idleConf.GetSectionList('user','highlight')
newTheme=GetCfgSectionNameDialog(self,'New Custom Theme',
message,usedNames).result
***************
*** 634,643 ****
themeName=self.customTheme.get()
newTheme=idleConf.GetThemeDict(themeType,themeName)
! #add the new theme to changedItems
! self.changedItems['highlight'][newThemeName]=newTheme
#change gui over to the new theme
customThemeList=idleConf.GetSectionList('user','highlight')
- for newName in self.changedItems['highlight'].keys():
- if newName not in customThemeList: customThemeList.append(newName)
customThemeList.sort()
self.optMenuThemeCustom.SetMenu(customThemeList,newThemeName)
--- 738,750 ----
themeName=self.customTheme.get()
newTheme=idleConf.GetThemeDict(themeType,themeName)
! #apply any of the old theme's unsaved changes to the new theme
! if themeName in self.changedItems['highlight'].keys():
! themeChanges=self.changedItems['highlight'][themeName]
! for element in themeChanges.keys():
! newTheme[element]=themeChanges[element]
! #save the new theme
! self.SaveNewTheme(newThemeName,newTheme)
#change gui over to the new theme
customThemeList=idleConf.GetSectionList('user','highlight')
customThemeList.sort()
self.optMenuThemeCustom.SetMenu(customThemeList,newThemeName)
***************
*** 658,664 ****
weight=fontWeight,family=fontName)
- def SetHighlightTargetBinding(self,*args):
- self.SetHighlightTarget()
-
def SetHighlightTarget(self):
if self.highlightTarget.get()=='Cursor': #bg not possible
--- 765,768 ----
***************
*** 688,698 ****
else: #a user theme
theme=self.customTheme.get()
! for element in self.themeElements.keys():
! colours=idleConf.GetHighlight(theme, self.themeElements[element][0])
! if element=='Cursor': #cursor sample needs special painting
colours['background']=idleConf.GetHighlight(theme,
'normal', fgBg='bg')
! apply(self.textHighlightSample.tag_config,
! (self.themeElements[element][0],),colours)
def OnCheckUserHelpBrowser(self):
--- 792,810 ----
else: #a user theme
theme=self.customTheme.get()
! for elementTitle in self.themeElements.keys():
! element=self.themeElements[elementTitle][0]
! colours=idleConf.GetHighlight(theme,element)
! if element=='cursor': #cursor sample needs special painting
colours['background']=idleConf.GetHighlight(theme,
'normal', fgBg='bg')
! #handle any unsaved changes to this theme
! if theme in self.changedItems['highlight'].keys():
! themeDict=self.changedItems['highlight'][theme]
! if themeDict.has_key(element+'-foreground'):
! colours['foreground']=themeDict[element+'-foreground']
! if themeDict.has_key(element+'-background'):
! colours['background']=themeDict[element+'-background']
! apply(self.textHighlightSample.tag_config,(element,),colours)
! self.SetColourSample()
def OnCheckUserHelpBrowser(self):
***************
*** 831,840 ****
def LoadKeyCfg(self):
##current keys type radiobutton
! self.keysAreDefault.set(idleConf.GetOption('main','Keys','default',
type='bool',default=1))
##currently set keys
currentOption=idleConf.CurrentKeys()
##load available keyset option menus
! if self.keysAreDefault.get(): #default theme selected
itemList=idleConf.GetSectionList('default','keys')
itemList.sort()
--- 943,952 ----
def LoadKeyCfg(self):
##current keys type radiobutton
! self.keysAreBuiltin.set(idleConf.GetOption('main','Keys','default',
type='bool',default=1))
##currently set keys
currentOption=idleConf.CurrentKeys()
##load available keyset option menus
! if self.keysAreBuiltin.get(): #default theme selected
itemList=idleConf.GetSectionList('default','keys')
itemList.sort()
***************
*** 856,867 ****
self.SetKeysType()
##load keyset element list
! keySet=idleConf.GetCurrentKeySet()
! bindNames=keySet.keys()
! bindNames.sort()
! for bindName in bindNames:
! key=string.join(keySet[bindName]) #make key(s) into a string
! bindName=bindName[2:-2] #trim off the angle brackets
! self.listBindings.insert(END, bindName+' - '+key)
!
def LoadGeneralCfg(self):
#startup state
--- 968,974 ----
self.SetKeysType()
##load keyset element list
! keySetName=idleConf.CurrentKeys()
! self.LoadKeysList(keySetName)
!
def LoadGeneralCfg(self):
#startup state
***************
*** 897,900 ****
--- 1004,1031 ----
self.LoadGeneralCfg()
+ def SaveNewKeySet(self,keySetName,keySet):
+ """
+ save a newly created core key set.
+ keySetName - string, the name of the new key set
+ keySet - dictionary containing the new key set
+ """
+ if not idleConf.userCfg['keys'].has_section(keySetName):
+ idleConf.userCfg['keys'].add_section(keySetName)
+ for event in keySet.keys():
+ value=keySet[event]
+ idleConf.userCfg['keys'].SetOption(keySetName,event,value)
+
+ def SaveNewTheme(self,themeName,theme):
+ """
+ save a newly created theme.
+ themeName - string, the name of the new theme
+ theme - dictionary containing the new theme
+ """
+ if not idleConf.userCfg['highlight'].has_section(themeName):
+ idleConf.userCfg['highlight'].add_section(themeName)
+ for element in theme.keys():
+ value=theme[element]
+ idleConf.userCfg['highlight'].SetOption(themeName,element,value)
+
def SetUserValue(self,configType,section,item,value):
if idleConf.defaultCfg[configType].has_option(section,item):
***************
*** 905,911 ****
return idleConf.userCfg[configType].SetOption(section,item,value)
! def SaveConfigs(self):
"""
! save configuration changes to user config files.
"""
if self.changedItems['main'].has_key('HelpFiles'):
--- 1036,1042 ----
return idleConf.userCfg[configType].SetOption(section,item,value)
! def SaveAllChangedConfigs(self):
"""
! save all configuration changes to user config files.
"""
if self.changedItems['main'].has_key('HelpFiles'):
***************
*** 931,935 ****
def Apply(self):
! self.SaveConfigs()
def Help(self):
--- 1062,1066 ----
def Apply(self):
! self.SaveAllChangedConfigs()
def Help(self):
- Previous message: [Idle-dev] CVS: idle configHelpSourceEdit.py,NONE,1.1 configSectionNameDialog.py,1.1,1.2
- Next message: [Idle-dev] CVS: idle configHandler.py,1.18,1.19 config-highlight.def,1.4,1.5 config-keys.def,1.5,1.6
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]