9 class AboutDialog(Toplevel
):
11 modal about dialog for idle
13 def __init__(self
,parent
,title
):
14 Toplevel
.__init
__(self
, parent
)
15 self
.configure(borderwidth
=5)
16 self
.geometry("+%d+%d" % (parent
.winfo_rootx()+30,
17 parent
.winfo_rooty()+30))
22 self
.resizable(height
=FALSE
,width
=FALSE
)
24 self
.transient(parent
)
26 self
.protocol("WM_DELETE_WINDOW", self
.Ok
)
28 self
.buttonOk
.focus_set()
29 #key bindings for this dialog
30 self
.bind('<Alt-c>',self
.CreditsButtonBinding
) #credits button
31 self
.bind('<Alt-l>',self
.LicenseButtonBinding
) #license button
32 self
.bind('<Return>',self
.Ok
) #dismiss dialog
33 self
.bind('<Escape>',self
.Ok
) #dismiss dialog
36 def CreateWidgets(self
):
37 frameMain
= Frame(self
,borderwidth
=2,relief
=SUNKEN
)
38 frameButtons
= Frame(self
)
39 frameButtons
.pack(side
=BOTTOM
,fill
=X
)
40 frameMain
.pack(side
=TOP
,expand
=TRUE
,fill
=BOTH
)
41 self
.buttonOk
= Button(frameButtons
,text
='Ok',
42 command
=self
.Ok
)#,default=ACTIVE
43 self
.buttonOk
.pack(padx
=5,pady
=5)
44 #self.picture = Image('photo',data=self.pictureData)
45 frameBg
= Frame(frameMain
,bg
=self
.bg
)
46 frameBg
.pack(expand
=TRUE
,fill
=BOTH
)
47 labelTitle
= Label(frameBg
,text
='IDLEfork',fg
=self
.fg
,bg
=self
.bg
,
48 font
=('courier', 24, 'bold'))
49 labelTitle
.grid(row
=0,column
=0,sticky
=W
,padx
=10,pady
=10)
50 #labelPicture = Label(frameBg,text='[picture]')
51 #image=self.picture,bg=self.bg)
52 #labelPicture.grid(row=0,column=1,sticky=W,rowspan=2,padx=0,pady=3)
53 labelVersion
= Label(frameBg
,text
='version '+idlever
.IDLE_VERSION
,
54 fg
=self
.fg
,bg
=self
.bg
)
55 labelVersion
.grid(row
=1,column
=0,sticky
=W
,padx
=10,pady
=5)
56 labelDesc
= Label(frameBg
,
57 text
="A development version of Python's lightweight\n"+
58 'Integrated DeveLopment Environment, IDLE.',
59 justify
=LEFT
,fg
=self
.fg
,bg
=self
.bg
)
60 labelDesc
.grid(row
=2,column
=0,sticky
=W
,columnspan
=3,padx
=10,pady
=5)
61 labelCopyright
= Label(frameBg
,
62 text
="Copyright (c) 2001 Python Software Foundation;\nAll Rights Reserved",
63 justify
=LEFT
,fg
=self
.fg
,bg
=self
.bg
)
64 labelCopyright
.grid(row
=3,column
=0,sticky
=W
,columnspan
=3,padx
=10,pady
=5)
65 labelLicense
= Label(frameBg
,
66 text
='Released under the Python 2.1.1 PSF Licence',
67 justify
=LEFT
,fg
=self
.fg
,bg
=self
.bg
)
68 labelLicense
.grid(row
=4,column
=0,sticky
=W
,columnspan
=3,padx
=10,pady
=5)
69 framePad
= Frame(frameBg
,height
=5,bg
=self
.bg
).grid(row
=5,column
=0)
70 labelEmail
= Label(frameBg
,text
='email: idle-dev@python.org',
71 justify
=LEFT
,fg
=self
.fg
,bg
=self
.bg
)
72 labelEmail
.grid(row
=6,column
=0,columnspan
=2,sticky
=W
,padx
=10,pady
=0)
73 labelWWW
= Label(frameBg
,text
='www: http://idlefork.sourceforge.net',
74 justify
=LEFT
,fg
=self
.fg
,bg
=self
.bg
)
75 labelWWW
.grid(row
=7,column
=0,columnspan
=2,sticky
=W
,padx
=10,pady
=0)
76 frameDivider
= Frame(frameBg
,borderwidth
=1,relief
=SUNKEN
,
77 height
=2,bg
=self
.bg
).grid(row
=8,column
=0,sticky
=(E
,W
),columnspan
=3,
79 labelPythonVer
= Label(frameBg
,text
='Python version: '+
80 sys
.version
.split()[0],fg
=self
.fg
,bg
=self
.bg
)
81 labelPythonVer
.grid(row
=9,column
=0,sticky
=W
,padx
=10,pady
=0)
82 #handle weird tk version num in windoze python >= 1.6 (?!?)
83 tkVer
= `TkVersion`
.split('.')
84 tkVer
[len(tkVer
)-1] = str('%.3g' % (float('.'+tkVer
[len(tkVer
)-1])))[2:]
85 if tkVer
[len(tkVer
)-1] == '':
86 tkVer
[len(tkVer
)-1] = '0'
87 tkVer
= string
.join(tkVer
,'.')
88 labelTkVer
= Label(frameBg
,text
='Tk version: '+
89 tkVer
,fg
=self
.fg
,bg
=self
.bg
)
90 labelTkVer
.grid(row
=9,column
=1,sticky
=W
,padx
=2,pady
=0)
92 self
.buttonLicense
= Button(frameBg
,text
='View License',underline
=5,
93 width
=14,highlightbackground
=self
.bg
,command
=self
.ShowLicense
)#takefocus=FALSE
94 self
.buttonLicense
.grid(row
=10,column
=0,sticky
=W
,padx
=10,pady
=10)
95 self
.buttonCredits
= Button(frameBg
,text
='View Credits',underline
=5,
96 width
=14,highlightbackground
=self
.bg
,command
=self
.ShowCredits
)#takefocus=FALSE
97 self
.buttonCredits
.grid(row
=10,column
=1,columnspan
=2,sticky
=E
,padx
=10,pady
=10)
99 def CreditsButtonBinding(self
,event
):
100 self
.buttonCredits
.invoke()
102 def LicenseButtonBinding(self
,event
):
103 self
.buttonLicense
.invoke()
105 def ShowLicense(self
):
106 self
.ViewFile('About - License','LICENSE.txt')
108 def ShowCredits(self
):
109 self
.ViewFile('About - Credits','CREDITS.txt')
111 def ViewFile(self
,viewTitle
,viewFile
):
112 fn
=os
.path
.join(os
.path
.abspath(os
.path
.dirname(__file__
)),viewFile
)
113 textView
.TextViewer(self
,viewTitle
,fn
)
115 def Ok(self
, event
=None):
118 if __name__
== '__main__':
123 aboutDialog
.AboutDialog(root
,'About')
124 Button(root
,text
='Dialog',command
=run
).pack()