annotate Lib/idlelib/configSectionNameDialog.py @ 79675:c0a2294de787 2.7

Issue #16199: Backport 2to3 typo fix from 3.2.
author Chris Jerdonek <chris.jerdonek@gmail.com>
date Thu, 11 Oct 2012 16:15:46 -0700
parents b53604fad54b
children 31a67a0194ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
1 """
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
2 Dialog that allows user to specify a new config file section name.
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
3 Used to get new highlight theme and keybinding set names.
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
4 """
47183
b53604fad54b Tkinter rename reversal: remove tkinter package, adapt imports and docs.
Georg Brandl <georg@python.org>
parents: 47101
diff changeset
5 from Tkinter import *
b53604fad54b Tkinter rename reversal: remove tkinter package, adapt imports and docs.
Georg Brandl <georg@python.org>
parents: 47101
diff changeset
6 import tkMessageBox
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
7
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
8 class GetCfgSectionNameDialog(Toplevel):
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
9 def __init__(self,parent,title,message,usedNames):
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
10 """
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
11 message - string, informational message to display
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
12 usedNames - list, list of names already in use for validity check
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
13 """
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
14 Toplevel.__init__(self, parent)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
15 self.configure(borderwidth=5)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
16 self.resizable(height=FALSE,width=FALSE)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
17 self.title(title)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
18 self.transient(parent)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
19 self.grab_set()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
20 self.protocol("WM_DELETE_WINDOW", self.Cancel)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
21 self.parent = parent
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
22 self.message=message
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
23 self.usedNames=usedNames
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
24 self.result=''
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
25 self.CreateWidgets()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
26 self.withdraw() #hide while setting geometry
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
27 self.update_idletasks()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
28 #needs to be done here so that the winfo_reqwidth is valid
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
29 self.messageInfo.config(width=self.frameMain.winfo_reqwidth())
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 21875
diff changeset
30 self.geometry("+%d+%d" %
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
31 ((parent.winfo_rootx()+((parent.winfo_width()/2)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
32 -(self.winfo_reqwidth()/2)),
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
33 parent.winfo_rooty()+((parent.winfo_height()/2)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
34 -(self.winfo_reqheight()/2)) )) ) #centre dialog over parent
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
35 self.deiconify() #geometry set, unhide
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
36 self.wait_window()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
37
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
38 def CreateWidgets(self):
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
39 self.name=StringVar(self)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
40 self.fontSize=StringVar(self)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
41 self.frameMain = Frame(self,borderwidth=2,relief=SUNKEN)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
42 self.frameMain.pack(side=TOP,expand=TRUE,fill=BOTH)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
43 self.messageInfo=Message(self.frameMain,anchor=W,justify=LEFT,padx=5,pady=5,
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
44 text=self.message)#,aspect=200)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
45 entryName=Entry(self.frameMain,textvariable=self.name,width=30)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
46 entryName.focus_set()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
47 self.messageInfo.pack(padx=5,pady=5)#,expand=TRUE,fill=BOTH)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
48 entryName.pack(padx=5,pady=5)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
49 frameButtons=Frame(self)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
50 frameButtons.pack(side=BOTTOM,fill=X)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
51 self.buttonOk = Button(frameButtons,text='Ok',
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
52 width=8,command=self.Ok)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
53 self.buttonOk.grid(row=0,column=0,padx=5,pady=5)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
54 self.buttonCancel = Button(frameButtons,text='Cancel',
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
55 width=8,command=self.Cancel)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
56 self.buttonCancel.grid(row=0,column=1,padx=5,pady=5)
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
57
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
58 def NameOk(self):
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 21875
diff changeset
59 #simple validity check for a sensible
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
60 #ConfigParser file section name
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
61 nameOk=1
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
62 name=self.name.get()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
63 name.strip()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
64 if not name: #no name specified
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
65 tkMessageBox.showerror(title='Name Error',
27245
d3ab532b3b6d M Bindings.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26959
diff changeset
66 message='No name specified.', parent=self)
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
67 nameOk=0
21875
7faf0fddf7e6 further work on config system and config saving
Steven M. Gava <elguavas@python.net>
parents: 21797
diff changeset
68 elif len(name)>30: #name too long
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
69 tkMessageBox.showerror(title='Name Error',
21875
7faf0fddf7e6 further work on config system and config saving
Steven M. Gava <elguavas@python.net>
parents: 21797
diff changeset
70 message='Name too long. It should be no more than '+
27245
d3ab532b3b6d M Bindings.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26959
diff changeset
71 '30 characters.', parent=self)
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
72 nameOk=0
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
73 elif name in self.usedNames:
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
74 tkMessageBox.showerror(title='Name Error',
27245
d3ab532b3b6d M Bindings.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26959
diff changeset
75 message='This name is already in use.', parent=self)
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
76 nameOk=0
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
77 return nameOk
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 21875
diff changeset
78
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
79 def Ok(self, event=None):
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
80 if self.NameOk():
21875
7faf0fddf7e6 further work on config system and config saving
Steven M. Gava <elguavas@python.net>
parents: 21797
diff changeset
81 self.result=self.name.get().strip()
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
82 self.destroy()
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 21875
diff changeset
83
21797
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
84 def Cancel(self, event=None):
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
85 self.result=''
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
86 self.destroy()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
87
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
88 if __name__ == '__main__':
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
89 #test the dialog
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
90 root=Tk()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
91 def run():
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
92 keySeq=''
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
93 dlg=GetCfgSectionNameDialog(root,'Get Name',
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
94 'The information here should need to be word wrapped. Test.')
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
95 print dlg.result
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
96 Button(root,text='Dialog',command=run).pack()
e7d8a9da3b18 dialog for getting a new config file section name
Steven M. Gava <elguavas@python.net>
parents:
diff changeset
97 root.mainloop()