Use full package paths in imports.
[python/dscho.git] / Lib / idlelib / aboutDialog.py
blob1e1fa9248d65a4229ffcce0e4f0f445016782e0d
1 """
2 about box for idle
3 """
4 from Tkinter import *
5 import tkFont
6 import string, os
7 import textView
8 import idlever
9 class AboutDialog(Toplevel):
10 """
11 modal about dialog for idle
12 """
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))
18 self.bg="#707070"
19 self.fg="#ffffff"
21 self.CreateWidgets()
22 self.resizable(height=FALSE,width=FALSE)
23 self.title(title)
24 self.transient(parent)
25 self.grab_set()
26 self.protocol("WM_DELETE_WINDOW", self.Ok)
27 self.parent = parent
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
34 self.wait_window()
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,
78 padx=5,pady=5)
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):
116 self.destroy()
118 if __name__ == '__main__':
119 #test the dialog
120 root=Tk()
121 def run():
122 import aboutDialog
123 aboutDialog.AboutDialog(root,'About')
124 Button(root,text='Dialog',command=run).pack()
125 root.mainloop()