further work on keybinding page
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 41b91eb..677567f 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -10,6 +10,8 @@
 from Tkinter import *
 import tkMessageBox
 
+import IdleConf
+
 class ConfigDialog(Toplevel):
     """
     configuration dialog for idle
@@ -22,7 +24,7 @@
         self.configure(borderwidth=5)
         self.geometry("+%d+%d" % (parent.winfo_rootx()+20,
                 parent.winfo_rooty()+30))
-        self.config=configDict
+        self.LoadConfig()
         #elguavas - config placeholders til config stuff completed
         self.bg=self.cget('bg')
         self.fg=None
@@ -38,7 +40,6 @@
         self.parent = parent
         self.framePages.focus_set()
         #key bindings for this dialog
-#    self.bind('<Return>',self.Ok) #dismiss dialog
         self.bind('<Escape>',self.CancelBinding) #dismiss dialog, no save
         self.bind('<Alt-s>',self.SaveBinding) #dismiss dialog, save
         self.bind('<F1>',self.HelpBinding) #context help
@@ -48,6 +49,17 @@
         self.bind('<Alt-g>',self.ChangePageBinding)
         self.wait_window()
         
+    def LoadConfig(self):
+        #self.configParser=IdleConf.idleconf
+        #self.loadedConfig={}        
+        #self.workingConfig={}
+        #for key in .keys():        
+        #print self.configParser.getsection('Colors').options()
+        self.workingTestColours={
+                'Foo-Bg': '#ffffff',
+                'Foo-Fg': '#000000',
+                'Bar-Bg': '#777777'}
+        
     def Cancel(self):
         self.destroy()
 
@@ -68,7 +80,7 @@
     
     def ChangePage(self):
         self.pages[self.pageNum.get()].lift()
-        self.title('Settings -'+self.pageButtons[self.pageNum.get()].cget('text'))
+        self.title('Settings - '+self.pageButtons[self.pageNum.get()].cget('text'))
 
     def ChangePageBinding(self,event):
         pageKeys=('f','h','k','g')
@@ -84,11 +96,21 @@
         if self.themeType.get()==0:
             self.optMenuThemeBuiltin.config(state=NORMAL)
             self.optMenuThemeCustom.config(state=DISABLED)
-            self.buttonDeleteCustom.config(state=DISABLED)
+            self.buttonDeleteCustomTheme.config(state=DISABLED)
         elif self.themeType.get()==1:
             self.optMenuThemeBuiltin.config(state=DISABLED)
             self.optMenuThemeCustom.config(state=NORMAL)
-            self.buttonDeleteCustom.config(state=NORMAL)
+            self.buttonDeleteCustomTheme.config(state=NORMAL)
+
+    def SetKeysType(self):
+        if self.keysType.get()==0:
+            self.optMenuKeysBuiltin.config(state=NORMAL)
+            self.optMenuKeysCustom.config(state=DISABLED)
+            self.buttonDeleteCustomKeys.config(state=DISABLED)
+        elif self.keysType.get()==1:
+            self.optMenuKeysBuiltin.config(state=DISABLED)
+            self.optMenuKeysCustom.config(state=NORMAL)
+            self.buttonDeleteCustomKeys.config(state=NORMAL)
     
     def CreateWidgets(self):
         self.framePages = Frame(self)
@@ -104,7 +126,7 @@
         #page buttons
         self.pageNum=IntVar()
         self.pageNum.set(0)
-        buttonPageFonts = Radiobutton(framePageButtons,value=0,
+        buttonPageFontTab = Radiobutton(framePageButtons,value=0,
                 text='Font/Tabs',padx=5,pady=5)
         buttonPageHighlight = Radiobutton(framePageButtons,value=1,
                 text='Highlighting',padx=5,pady=5)
@@ -112,7 +134,7 @@
                 text='Keys',padx=5,pady=5)
         buttonPageGeneral = Radiobutton(framePageButtons,value=3,
                 text='General',padx=5,pady=5)
-        self.pageButtons=(buttonPageFonts,buttonPageHighlight,
+        self.pageButtons=(buttonPageFontTab,buttonPageHighlight,
                 buttonPageKeys,buttonPageGeneral)
         for button in self.pageButtons:
             button.config(command=self.ChangePage,underline=0,takefocus=FALSE,
@@ -120,7 +142,7 @@
             selectcolor=self.bg,borderwidth=1)
             button.pack(side=LEFT)
         #pages
-        self.pages=(self.CreatePageFonts(),
+        self.pages=(self.CreatePageFontTab(),
                     self.CreatePageHighlight(),
                     self.CreatePageKeys(),
                     self.CreatePageGeneral())
@@ -135,14 +157,14 @@
         frameActionButtons.pack(side=BOTTOM)
         self.framePages.pack(side=TOP,expand=TRUE,fill=BOTH)
         
-    def CreatePageFonts(self):
+    def CreatePageFontTab(self):
         frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
-        Button(frame,text='fonts page test').pack(padx=30,pady=30)
+        Button(frame,text='font/tabs page test').pack(padx=90,pady=90)
         return frame
 
     def CreatePageHighlight(self):
         #tkVars
-        self.target=StringVar()
+        self.highlightTarget=StringVar()
         self.builtinTheme=StringVar()
         self.customTheme=StringVar()
         self.colour=StringVar()
@@ -157,19 +179,19 @@
         #body section frames
         frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
         frameTheme=Frame(frame,borderwidth=2,relief=GROOVE)
-
         #frameCustom
         frameTarget=Frame(frameCustom)
-        frameSample=Frame(frameCustom,relief=SOLID,borderwidth=1)
+        frameSample=Frame(frameCustom,relief=SOLID,borderwidth=1,
+                bg=self.workingTestColours['Foo-Bg'])
         frameSet=Frame(frameCustom)
-        frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1)
+        frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1,
+                bg=self.workingTestColours['Foo-Bg'])
         frameFontSet=Frame(frameSet)
-        
         labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting')
         labelTargetTitle=Label(frameTarget,text='for : ')
         optMenuTarget=OptionMenu(frameTarget,
-            self.target,'test target interface item','test target interface item 2')
-        self.target.set('test target interface item')
+            self.highlightTarget,'test target interface item','test target interface item 2')
+        self.highlightTarget.set('test target interface item')
         buttonSetColour=Button(frameColourSet,text='Set Colour')
         labelFontTitle=Label(frameFontSet,text='Set Font Style')
         checkFontBold=Checkbutton(frameFontSet,variable=self.fontBold,
@@ -177,10 +199,10 @@
         checkFontItalic=Checkbutton(frameFontSet,variable=self.fontItalic,
             onvalue='Italic',offvalue='',text='Italic')
         labelTestSample=Label(frameSample,justify=LEFT,
-            text='def Ahem(foo,bar):\n    test=foo\n    text=bar\n    return')        
-        buttonSaveCustom=Button(frameCustom, 
+            text='def Ahem(foo,bar):\n    test=foo\n    text=bar\n    return',
+            bg=self.workingTestColours['Foo-Bg'])        
+        buttonSaveCustomTheme=Button(frameCustom, 
             text='Save as a Custom Theme')
-        
         #frameTheme
         #frameDivider=Frame(frameTheme,relief=SUNKEN,borderwidth=1,
         #    width=2,height=10)
@@ -197,13 +219,12 @@
             self.customTheme,'test custom junk','test custom junk 2')
         self.customTheme.set('test custom junk')
         self.themeType.set(0)
-        self.buttonDeleteCustom=Button(frameTheme,text='Delete Custom Theme')
+        self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme')
         self.SetThemeType()
-        
         ##widget packing
         #body
-        frameCustom.pack(side=LEFT,padx=5,pady=10,fill=Y)
-        frameTheme.pack(side=RIGHT,padx=5,pady=10,fill=Y)
+        frameCustom.pack(side=LEFT,padx=5,pady=10,expand=TRUE,fill=BOTH)
+        frameTheme.pack(side=LEFT,padx=5,pady=10,fill=Y)
         #frameCustom
         labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
         frameTarget.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=X)
@@ -218,8 +239,7 @@
         checkFontBold.pack(side=LEFT,anchor=W,pady=2)
         checkFontItalic.pack(side=RIGHT,anchor=W)
         labelTestSample.pack()
-        buttonSaveCustom.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
-                
+        buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
         #frameTheme
         #frameDivider.pack(side=LEFT,fill=Y,padx=5,pady=5)
         labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
@@ -228,13 +248,83 @@
         radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
         self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
         self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
-        self.buttonDeleteCustom.pack(side=TOP,fill=X,padx=5,pady=5)
-        
+        self.buttonDeleteCustomTheme.pack(side=TOP,fill=X,padx=5,pady=5)
         return frame
 
     def CreatePageKeys(self):
+        #tkVars
+        self.bindingTarget=StringVar()
+        self.builtinKeys=StringVar()
+        self.customKeys=StringVar()
+        self.keyChars=StringVar()
+        self.keyCtrl=StringVar()
+        self.keyAlt=StringVar()
+        self.keyShift=StringVar()
+        self.keysType=IntVar() 
+        ##widget creation
+        #body frame
         frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
-        Button(frame,text='keys page test').pack(padx=90,pady=90)
+        #body section frames
+        frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
+        frameKeySets=Frame(frame,borderwidth=2,relief=GROOVE)
+        #frameCustom
+        frameTarget=Frame(frameCustom)
+        frameSet=Frame(frameCustom)
+        labelCustomTitle=Label(frameCustom,text='Set Custom Key Bindings')
+        labelTargetTitle=Label(frameTarget,text='Action')
+        scrollTarget=Scrollbar(frameTarget)
+        listTarget=Listbox(frameTarget)
+        labelKeyBindTitle=Label(frameSet,text='Binding')
+        labelModifierTitle=Label(frameSet,text='Modifier:')
+        checkCtrl=Checkbutton(frameSet,text='Ctrl')
+        checkAlt=Checkbutton(frameSet,text='Alt')
+        checkShift=Checkbutton(frameSet,text='Shift')
+        labelKeyEntryTitle=Label(frameSet,text='Key:')        
+        entryKey=Entry(frameSet,width=4)
+        buttonSaveCustomKeys=Button(frameCustom,text='Save as a Custom Key Set')
+        #frameKeySets
+        labelKeysTitle=Label(frameKeySets,text='Select a Key Binding Set')
+        labelTypeTitle=Label(frameKeySets,text='Select : ')
+        radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType,
+            value=0,command=self.SetKeysType,text='a Built-in Key Set')
+        radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType,
+            value=1,command=self.SetKeysType,text='a Custom Key Set')
+        self.optMenuKeysBuiltin=OptionMenu(frameKeySets,
+            self.builtinKeys,'test builtin junk','test builtin junk 2')
+        self.builtinKeys.set('test builtin junk')
+        self.optMenuKeysCustom=OptionMenu(frameKeySets,
+            self.customKeys,'test custom junk','test custom junk 2')
+        self.customKeys.set('test custom junk')
+        self.keysType.set(0)
+        self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set')
+        self.SetKeysType()
+        ##widget packing
+        #body
+        frameCustom.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH)
+        frameKeySets.pack(side=LEFT,padx=5,pady=5,fill=Y)
+        #frameCustom
+        labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
+        buttonSaveCustomKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)        
+        frameTarget.pack(side=LEFT,padx=5,pady=5,fill=Y)
+        frameSet.pack(side=LEFT,padx=5,pady=5,fill=Y)
+        labelTargetTitle.pack(side=TOP,anchor=W)
+        scrollTarget.pack(side=RIGHT,anchor=W,fill=Y)
+        listTarget.pack(side=TOP,anchor=W,expand=TRUE,fill=BOTH)
+        labelKeyBindTitle.pack(side=TOP,anchor=W)
+        labelModifierTitle.pack(side=TOP,anchor=W,pady=5)
+        checkCtrl.pack(side=TOP,anchor=W)
+        checkAlt.pack(side=TOP,anchor=W,pady=2)
+        checkShift.pack(side=TOP,anchor=W)
+        labelKeyEntryTitle.pack(side=TOP,anchor=W,pady=5)
+        entryKey.pack(side=TOP,anchor=W)
+        #frameKeySets
+        labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
+        labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
+        radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5)
+        radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
+        self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
+        self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
+        self.buttonDeleteCustomKeys.pack(side=TOP,fill=X,padx=5,pady=5)
         return frame
 
     def CreatePageGeneral(self):