@@ -226,7 +226,8 @@ def CreatePageHighlight(self):
226226 self .builtinTheme ,None ,command = None )
227227 self .optMenuThemeCustom = DynOptionMenu (frameTheme ,
228228 self .customTheme ,None ,command = None )
229- self .buttonDeleteCustomTheme = Button (frameTheme ,text = 'Delete Custom Theme' )
229+ self .buttonDeleteCustomTheme = Button (frameTheme ,text = 'Delete Custom Theme' ,
230+ command = self .DeleteCustomTheme )
230231 ##widget packing
231232 #body
232233 frameCustom .pack (side = LEFT ,padx = 5 ,pady = 10 ,expand = TRUE ,fill = BOTH )
@@ -293,7 +294,8 @@ def CreatePageKeys(self):
293294 self .builtinKeys ,None ,command = None )
294295 self .optMenuKeysCustom = DynOptionMenu (frameKeySets ,
295296 self .customKeys ,None ,command = None )
296- self .buttonDeleteCustomKeys = Button (frameKeySets ,text = 'Delete Custom Key Set' )
297+ self .buttonDeleteCustomKeys = Button (frameKeySets ,text = 'Delete Custom Key Set' ,
298+ command = self .DeleteCustomKeys )
297299 ##widget packing
298300 #body
299301 frameCustom .pack (side = LEFT ,padx = 5 ,pady = 5 ,expand = TRUE ,fill = BOTH )
@@ -456,8 +458,9 @@ def VarChanged_builtinTheme(self,*params):
456458
457459 def VarChanged_customTheme (self ,* params ):
458460 value = self .customTheme .get ()
459- self .AddChangedItem ('main' ,'Theme' ,'name' ,value )
460- self .PaintThemeSample ()
461+ if value != '- no custom themes -' :
462+ self .AddChangedItem ('main' ,'Theme' ,'name' ,value )
463+ self .PaintThemeSample ()
461464
462465 def VarChanged_themeIsBuiltin (self ,* params ):
463466 value = self .themeIsBuiltin .get ()
@@ -486,8 +489,9 @@ def VarChanged_builtinKeys(self,*params):
486489
487490 def VarChanged_customKeys (self ,* params ):
488491 value = self .customKeys .get ()
489- self .AddChangedItem ('main' ,'Keys' ,'name' ,value )
490- self .LoadKeysList (value )
492+ if value != '- no custom keys -' :
493+ self .AddChangedItem ('main' ,'Keys' ,'name' ,value )
494+ self .LoadKeysList (value )
491495
492496 def VarChanged_keysAreBuiltin (self ,* params ):
493497 value = self .keysAreBuiltin .get ()
@@ -594,7 +598,8 @@ def GetNewKeys(self):
594598 self .listBindings .select_anchor (listIndex )
595599
596600 def GetNewKeysName (self ,message ):
597- usedNames = idleConf .GetSectionList ('user' ,'keys' )
601+ usedNames = (idleConf .GetSectionList ('user' ,'keys' )+
602+ idleConf .GetSectionList ('default' ,'keys' ))
598603 newKeySet = GetCfgSectionNameDialog (self ,'New Custom Key Set' ,
599604 message ,usedNames ).result
600605 return newKeySet
@@ -657,6 +662,58 @@ def LoadKeysList(self,keySetName):
657662 self .listBindings .select_set (listIndex )
658663 self .listBindings .select_anchor (listIndex )
659664
665+ def DeleteCustomKeys (self ):
666+ keySetName = self .customKeys .get ()
667+ if not tkMessageBox .askyesno ('Delete Key Set' ,'Are you sure you wish ' +
668+ 'to delete the key set ' + `keySetName` + ' ?' ):
669+ return
670+ #remove key set from config
671+ idleConf .userCfg ['keys' ].remove_section (keySetName )
672+ if self .changedItems ['keys' ].has_key (keySetName ):
673+ del (self .changedItems ['keys' ][keySetName ])
674+ #write changes
675+ idleConf .userCfg ['keys' ].Save ()
676+ #reload user key set list
677+ itemList = idleConf .GetSectionList ('user' ,'keys' )
678+ itemList .sort ()
679+ if not itemList :
680+ self .radioKeysCustom .config (state = DISABLED )
681+ self .optMenuKeysCustom .SetMenu (itemList ,'- no custom keys -' )
682+ else :
683+ self .optMenuKeysCustom .SetMenu (itemList ,itemList [0 ])
684+ #revert to default key set
685+ self .keysAreBuiltin .set (idleConf .defaultCfg ['main' ].Get ('Keys' ,'default' ))
686+ self .builtinKeys .set (idleConf .defaultCfg ['main' ].Get ('Keys' ,'name' ))
687+ #user can't back out of these changes, they must be applied now
688+ self .Apply ()
689+ self .SetKeysType ()
690+
691+ def DeleteCustomTheme (self ):
692+ themeName = self .customTheme .get ()
693+ if not tkMessageBox .askyesno ('Delete Theme' ,'Are you sure you wish ' +
694+ 'to delete the theme ' + `themeName` + ' ?' ):
695+ return
696+ #remove theme from config
697+ idleConf .userCfg ['highlight' ].remove_section (themeName )
698+ if self .changedItems ['highlight' ].has_key (themeName ):
699+ del (self .changedItems ['highlight' ][themeName ])
700+ #write changes
701+ idleConf .userCfg ['highlight' ].Save ()
702+ #reload user theme list
703+ itemList = idleConf .GetSectionList ('user' ,'highlight' )
704+ itemList .sort ()
705+ if not itemList :
706+ self .radioThemeCustom .config (state = DISABLED )
707+ self .optMenuThemeCustom .SetMenu (itemList ,'- no custom themes -' )
708+ else :
709+ self .optMenuThemeCustom .SetMenu (itemList ,itemList [0 ])
710+ #revert to default theme
711+ self .themeIsBuiltin .set (idleConf .defaultCfg ['main' ].Get ('Theme' ,'default' ))
712+ self .builtinTheme .set (idleConf .defaultCfg ['main' ].Get ('Theme' ,'name' ))
713+ #user can't back out of these changes, they must be applied now
714+ self .Apply ()
715+ self .SetThemeType ()
716+
660717 def GetColour (self ):
661718 target = self .highlightTarget .get ()
662719 prevColour = self .frameColourSet .cget ('bg' )
@@ -689,7 +746,8 @@ def OnNewColourSet(self):
689746 self .AddChangedItem ('highlight' ,theme ,themeElement ,newColour )
690747
691748 def GetNewThemeName (self ,message ):
692- usedNames = idleConf .GetSectionList ('user' ,'highlight' )
749+ usedNames = (idleConf .GetSectionList ('user' ,'highlight' )+
750+ idleConf .GetSectionList ('default' ,'highlight' ))
693751 newTheme = GetCfgSectionNameDialog (self ,'New Custom Theme' ,
694752 message ,usedNames ).result
695753 return newTheme
@@ -1025,6 +1083,17 @@ def SaveAllChangedConfigs(self):
10251083 idleConf .userCfg [configType ].Save ()
10261084 self .ResetChangedItems () #clear the changed items dict
10271085
1086+ def ActivateConfigChanges (self ):
1087+ #things that need to be done to make
1088+ #applied config changes dynamic:
1089+ #
1090+ #update editor/shell font and repaint
1091+ #dynamically update indentation setttings
1092+ #update theme and repaint
1093+ #update keybindings and re-bind
1094+ #update user help sources menu
1095+ pass
1096+
10281097 def Cancel (self ):
10291098 self .destroy ()
10301099
@@ -1034,6 +1103,7 @@ def Ok(self):
10341103
10351104 def Apply (self ):
10361105 self .SaveAllChangedConfigs ()
1106+ self .ActivateConfigChanges ()
10371107
10381108 def Help (self ):
10391109 pass
0 commit comments