Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 60fc707

Browse files
author
Steven M. Gava
committed
further work on keybinding page
1 parent c173137 commit 60fc707

1 file changed

Lines changed: 119 additions & 29 deletions

File tree

Lib/idlelib/configDialog.py

Lines changed: 119 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
from Tkinter import *
1111
import tkMessageBox
1212

13+
import IdleConf
14+
1315
class ConfigDialog(Toplevel):
1416
"""
1517
configuration dialog for idle
@@ -22,7 +24,7 @@ def __init__(self,parent,title,configDict):
2224
self.configure(borderwidth=5)
2325
self.geometry("+%d+%d" % (parent.winfo_rootx()+20,
2426
parent.winfo_rooty()+30))
25-
self.config=configDict
27+
self.LoadConfig()
2628
#elguavas - config placeholders til config stuff completed
2729
self.bg=self.cget('bg')
2830
self.fg=None
@@ -38,7 +40,6 @@ def __init__(self,parent,title,configDict):
3840
self.parent = parent
3941
self.framePages.focus_set()
4042
#key bindings for this dialog
41-
# self.bind('<Return>',self.Ok) #dismiss dialog
4243
self.bind('<Escape>',self.CancelBinding) #dismiss dialog, no save
4344
self.bind('<Alt-s>',self.SaveBinding) #dismiss dialog, save
4445
self.bind('<F1>',self.HelpBinding) #context help
@@ -48,6 +49,17 @@ def __init__(self,parent,title,configDict):
4849
self.bind('<Alt-g>',self.ChangePageBinding)
4950
self.wait_window()
5051

52+
def LoadConfig(self):
53+
#self.configParser=IdleConf.idleconf
54+
#self.loadedConfig={}
55+
#self.workingConfig={}
56+
#for key in .keys():
57+
#print self.configParser.getsection('Colors').options()
58+
self.workingTestColours={
59+
'Foo-Bg': '#ffffff',
60+
'Foo-Fg': '#000000',
61+
'Bar-Bg': '#777777'}
62+
5163
def Cancel(self):
5264
self.destroy()
5365

@@ -68,7 +80,7 @@ def HelpBinding(self,event):
6880

6981
def ChangePage(self):
7082
self.pages[self.pageNum.get()].lift()
71-
self.title('Settings -'+self.pageButtons[self.pageNum.get()].cget('text'))
83+
self.title('Settings - '+self.pageButtons[self.pageNum.get()].cget('text'))
7284

7385
def ChangePageBinding(self,event):
7486
pageKeys=('f','h','k','g')
@@ -84,11 +96,21 @@ def SetThemeType(self):
8496
if self.themeType.get()==0:
8597
self.optMenuThemeBuiltin.config(state=NORMAL)
8698
self.optMenuThemeCustom.config(state=DISABLED)
87-
self.buttonDeleteCustom.config(state=DISABLED)
99+
self.buttonDeleteCustomTheme.config(state=DISABLED)
88100
elif self.themeType.get()==1:
89101
self.optMenuThemeBuiltin.config(state=DISABLED)
90102
self.optMenuThemeCustom.config(state=NORMAL)
91-
self.buttonDeleteCustom.config(state=NORMAL)
103+
self.buttonDeleteCustomTheme.config(state=NORMAL)
104+
105+
def SetKeysType(self):
106+
if self.keysType.get()==0:
107+
self.optMenuKeysBuiltin.config(state=NORMAL)
108+
self.optMenuKeysCustom.config(state=DISABLED)
109+
self.buttonDeleteCustomKeys.config(state=DISABLED)
110+
elif self.keysType.get()==1:
111+
self.optMenuKeysBuiltin.config(state=DISABLED)
112+
self.optMenuKeysCustom.config(state=NORMAL)
113+
self.buttonDeleteCustomKeys.config(state=NORMAL)
92114

93115
def CreateWidgets(self):
94116
self.framePages = Frame(self)
@@ -104,23 +126,23 @@ def CreateWidgets(self):
104126
#page buttons
105127
self.pageNum=IntVar()
106128
self.pageNum.set(0)
107-
buttonPageFonts = Radiobutton(framePageButtons,value=0,
129+
buttonPageFontTab = Radiobutton(framePageButtons,value=0,
108130
text='Font/Tabs',padx=5,pady=5)
109131
buttonPageHighlight = Radiobutton(framePageButtons,value=1,
110132
text='Highlighting',padx=5,pady=5)
111133
buttonPageKeys = Radiobutton(framePageButtons,value=2,
112134
text='Keys',padx=5,pady=5)
113135
buttonPageGeneral = Radiobutton(framePageButtons,value=3,
114136
text='General',padx=5,pady=5)
115-
self.pageButtons=(buttonPageFonts,buttonPageHighlight,
137+
self.pageButtons=(buttonPageFontTab,buttonPageHighlight,
116138
buttonPageKeys,buttonPageGeneral)
117139
for button in self.pageButtons:
118140
button.config(command=self.ChangePage,underline=0,takefocus=FALSE,
119141
indicatoron=FALSE,highlightthickness=0,variable=self.pageNum,
120142
selectcolor=self.bg,borderwidth=1)
121143
button.pack(side=LEFT)
122144
#pages
123-
self.pages=(self.CreatePageFonts(),
145+
self.pages=(self.CreatePageFontTab(),
124146
self.CreatePageHighlight(),
125147
self.CreatePageKeys(),
126148
self.CreatePageGeneral())
@@ -135,14 +157,14 @@ def CreateWidgets(self):
135157
frameActionButtons.pack(side=BOTTOM)
136158
self.framePages.pack(side=TOP,expand=TRUE,fill=BOTH)
137159

138-
def CreatePageFonts(self):
160+
def CreatePageFontTab(self):
139161
frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
140-
Button(frame,text='fonts page test').pack(padx=30,pady=30)
162+
Button(frame,text='font/tabs page test').pack(padx=90,pady=90)
141163
return frame
142164

143165
def CreatePageHighlight(self):
144166
#tkVars
145-
self.target=StringVar()
167+
self.highlightTarget=StringVar()
146168
self.builtinTheme=StringVar()
147169
self.customTheme=StringVar()
148170
self.colour=StringVar()
@@ -157,30 +179,30 @@ def CreatePageHighlight(self):
157179
#body section frames
158180
frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
159181
frameTheme=Frame(frame,borderwidth=2,relief=GROOVE)
160-
161182
#frameCustom
162183
frameTarget=Frame(frameCustom)
163-
frameSample=Frame(frameCustom,relief=SOLID,borderwidth=1)
184+
frameSample=Frame(frameCustom,relief=SOLID,borderwidth=1,
185+
bg=self.workingTestColours['Foo-Bg'])
164186
frameSet=Frame(frameCustom)
165-
frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1)
187+
frameColourSet=Frame(frameSet,relief=SOLID,borderwidth=1,
188+
bg=self.workingTestColours['Foo-Bg'])
166189
frameFontSet=Frame(frameSet)
167-
168190
labelCustomTitle=Label(frameCustom,text='Set Custom Highlighting')
169191
labelTargetTitle=Label(frameTarget,text='for : ')
170192
optMenuTarget=OptionMenu(frameTarget,
171-
self.target,'test target interface item','test target interface item 2')
172-
self.target.set('test target interface item')
193+
self.highlightTarget,'test target interface item','test target interface item 2')
194+
self.highlightTarget.set('test target interface item')
173195
buttonSetColour=Button(frameColourSet,text='Set Colour')
174196
labelFontTitle=Label(frameFontSet,text='Set Font Style')
175197
checkFontBold=Checkbutton(frameFontSet,variable=self.fontBold,
176198
onvalue='Bold',offvalue='',text='Bold')
177199
checkFontItalic=Checkbutton(frameFontSet,variable=self.fontItalic,
178200
onvalue='Italic',offvalue='',text='Italic')
179201
labelTestSample=Label(frameSample,justify=LEFT,
180-
text='def Ahem(foo,bar):\n test=foo\n text=bar\n return')
181-
buttonSaveCustom=Button(frameCustom,
202+
text='def Ahem(foo,bar):\n test=foo\n text=bar\n return',
203+
bg=self.workingTestColours['Foo-Bg'])
204+
buttonSaveCustomTheme=Button(frameCustom,
182205
text='Save as a Custom Theme')
183-
184206
#frameTheme
185207
#frameDivider=Frame(frameTheme,relief=SUNKEN,borderwidth=1,
186208
# width=2,height=10)
@@ -197,13 +219,12 @@ def CreatePageHighlight(self):
197219
self.customTheme,'test custom junk','test custom junk 2')
198220
self.customTheme.set('test custom junk')
199221
self.themeType.set(0)
200-
self.buttonDeleteCustom=Button(frameTheme,text='Delete Custom Theme')
222+
self.buttonDeleteCustomTheme=Button(frameTheme,text='Delete Custom Theme')
201223
self.SetThemeType()
202-
203224
##widget packing
204225
#body
205-
frameCustom.pack(side=LEFT,padx=5,pady=10,fill=Y)
206-
frameTheme.pack(side=RIGHT,padx=5,pady=10,fill=Y)
226+
frameCustom.pack(side=LEFT,padx=5,pady=10,expand=TRUE,fill=BOTH)
227+
frameTheme.pack(side=LEFT,padx=5,pady=10,fill=Y)
207228
#frameCustom
208229
labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
209230
frameTarget.pack(side=TOP,padx=5,pady=5,expand=TRUE,fill=X)
@@ -218,8 +239,7 @@ def CreatePageHighlight(self):
218239
checkFontBold.pack(side=LEFT,anchor=W,pady=2)
219240
checkFontItalic.pack(side=RIGHT,anchor=W)
220241
labelTestSample.pack()
221-
buttonSaveCustom.pack(side=BOTTOM,fill=X,padx=5,pady=5)
222-
242+
buttonSaveCustomTheme.pack(side=BOTTOM,fill=X,padx=5,pady=5)
223243
#frameTheme
224244
#frameDivider.pack(side=LEFT,fill=Y,padx=5,pady=5)
225245
labelThemeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
@@ -228,13 +248,83 @@ def CreatePageHighlight(self):
228248
radioThemeCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
229249
self.optMenuThemeBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
230250
self.optMenuThemeCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
231-
self.buttonDeleteCustom.pack(side=TOP,fill=X,padx=5,pady=5)
232-
251+
self.buttonDeleteCustomTheme.pack(side=TOP,fill=X,padx=5,pady=5)
233252
return frame
234253

235254
def CreatePageKeys(self):
255+
#tkVars
256+
self.bindingTarget=StringVar()
257+
self.builtinKeys=StringVar()
258+
self.customKeys=StringVar()
259+
self.keyChars=StringVar()
260+
self.keyCtrl=StringVar()
261+
self.keyAlt=StringVar()
262+
self.keyShift=StringVar()
263+
self.keysType=IntVar()
264+
##widget creation
265+
#body frame
236266
frame=Frame(self.framePages,borderwidth=2,relief=SUNKEN)
237-
Button(frame,text='keys page test').pack(padx=90,pady=90)
267+
#body section frames
268+
frameCustom=Frame(frame,borderwidth=2,relief=GROOVE)
269+
frameKeySets=Frame(frame,borderwidth=2,relief=GROOVE)
270+
#frameCustom
271+
frameTarget=Frame(frameCustom)
272+
frameSet=Frame(frameCustom)
273+
labelCustomTitle=Label(frameCustom,text='Set Custom Key Bindings')
274+
labelTargetTitle=Label(frameTarget,text='Action')
275+
scrollTarget=Scrollbar(frameTarget)
276+
listTarget=Listbox(frameTarget)
277+
labelKeyBindTitle=Label(frameSet,text='Binding')
278+
labelModifierTitle=Label(frameSet,text='Modifier:')
279+
checkCtrl=Checkbutton(frameSet,text='Ctrl')
280+
checkAlt=Checkbutton(frameSet,text='Alt')
281+
checkShift=Checkbutton(frameSet,text='Shift')
282+
labelKeyEntryTitle=Label(frameSet,text='Key:')
283+
entryKey=Entry(frameSet,width=4)
284+
buttonSaveCustomKeys=Button(frameCustom,text='Save as a Custom Key Set')
285+
#frameKeySets
286+
labelKeysTitle=Label(frameKeySets,text='Select a Key Binding Set')
287+
labelTypeTitle=Label(frameKeySets,text='Select : ')
288+
radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysType,
289+
value=0,command=self.SetKeysType,text='a Built-in Key Set')
290+
radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysType,
291+
value=1,command=self.SetKeysType,text='a Custom Key Set')
292+
self.optMenuKeysBuiltin=OptionMenu(frameKeySets,
293+
self.builtinKeys,'test builtin junk','test builtin junk 2')
294+
self.builtinKeys.set('test builtin junk')
295+
self.optMenuKeysCustom=OptionMenu(frameKeySets,
296+
self.customKeys,'test custom junk','test custom junk 2')
297+
self.customKeys.set('test custom junk')
298+
self.keysType.set(0)
299+
self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set')
300+
self.SetKeysType()
301+
##widget packing
302+
#body
303+
frameCustom.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH)
304+
frameKeySets.pack(side=LEFT,padx=5,pady=5,fill=Y)
305+
#frameCustom
306+
labelCustomTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
307+
buttonSaveCustomKeys.pack(side=BOTTOM,fill=X,padx=5,pady=5)
308+
frameTarget.pack(side=LEFT,padx=5,pady=5,fill=Y)
309+
frameSet.pack(side=LEFT,padx=5,pady=5,fill=Y)
310+
labelTargetTitle.pack(side=TOP,anchor=W)
311+
scrollTarget.pack(side=RIGHT,anchor=W,fill=Y)
312+
listTarget.pack(side=TOP,anchor=W,expand=TRUE,fill=BOTH)
313+
labelKeyBindTitle.pack(side=TOP,anchor=W)
314+
labelModifierTitle.pack(side=TOP,anchor=W,pady=5)
315+
checkCtrl.pack(side=TOP,anchor=W)
316+
checkAlt.pack(side=TOP,anchor=W,pady=2)
317+
checkShift.pack(side=TOP,anchor=W)
318+
labelKeyEntryTitle.pack(side=TOP,anchor=W,pady=5)
319+
entryKey.pack(side=TOP,anchor=W)
320+
#frameKeySets
321+
labelKeysTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
322+
labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5)
323+
radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5)
324+
radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2)
325+
self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5)
326+
self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5)
327+
self.buttonDeleteCustomKeys.pack(side=TOP,fill=X,padx=5,pady=5)
238328
return frame
239329

240330
def CreatePageGeneral(self):

0 commit comments

Comments
 (0)