Commit 09cb74ba authored by Kurt B. Kaiser's avatar Kurt B. Kaiser

aboutDialog.py:

1. Add additional buttons for Python Copyright and Credits
2. Use the Python LICENSE file instead of the old IDLE LICENSE.txt
3. Add additional buttons for IDLE's README and NEWS
4. Implement a method to read text from a _Printer object
5. Rename the Ok button to Close
6. Clean up to conform to Python code formatting standards

textView.py:
1. Change background to white on all platforms
2. Increase height of frame
3. Add an optional parameter to textViewer to allow inserting text into
   the viewer instead of reading a file.
4. Rename the Ok button to Close
 Modified Files:
 	aboutDialog.py textView.py
parent f31cb0cb
""" """About Dialog for IDLE
about box for idle
""" """
from Tkinter import * from Tkinter import *
...@@ -8,107 +8,129 @@ import textView ...@@ -8,107 +8,129 @@ import textView
import idlever import idlever
class AboutDialog(Toplevel): class AboutDialog(Toplevel):
""" """Modal about dialog for idle
modal about dialog for idle
""" """
def __init__(self,parent,title): def __init__(self,parent,title):
Toplevel.__init__(self, parent) Toplevel.__init__(self, parent)
self.configure(borderwidth=5) self.configure(borderwidth=5)
self.geometry("+%d+%d" % (parent.winfo_rootx()+30, self.geometry("+%d+%d" % (parent.winfo_rootx()+30,
parent.winfo_rooty()+30)) parent.winfo_rooty()+30))
self.bg="#707070" self.bg = "#707070"
self.fg="#ffffff" self.fg = "#ffffff"
self.CreateWidgets() self.CreateWidgets()
self.resizable(height=FALSE,width=FALSE) self.resizable(height=FALSE, width=FALSE)
self.title(title) self.title(title)
self.transient(parent) self.transient(parent)
self.grab_set() self.grab_set()
self.protocol("WM_DELETE_WINDOW", self.Ok) self.protocol("WM_DELETE_WINDOW", self.Ok)
self.parent = parent self.parent = parent
self.buttonOk.focus_set() self.buttonOk.focus_set()
#key bindings for this dialog
self.bind('<Alt-c>',self.CreditsButtonBinding) #credits button
self.bind('<Alt-l>',self.LicenseButtonBinding) #license button
self.bind('<Return>',self.Ok) #dismiss dialog self.bind('<Return>',self.Ok) #dismiss dialog
self.bind('<Escape>',self.Ok) #dismiss dialog self.bind('<Escape>',self.Ok) #dismiss dialog
self.wait_window() self.wait_window()
def CreateWidgets(self): def CreateWidgets(self):
frameMain = Frame(self,borderwidth=2,relief=SUNKEN) frameMain = Frame(self, borderwidth=2, relief=SUNKEN)
frameButtons = Frame(self) frameButtons = Frame(self)
frameButtons.pack(side=BOTTOM,fill=X) frameButtons.pack(side=BOTTOM, fill=X)
frameMain.pack(side=TOP,expand=TRUE,fill=BOTH) frameMain.pack(side=TOP, expand=TRUE, fill=BOTH)
self.buttonOk = Button(frameButtons,text='Ok', self.buttonOk = Button(frameButtons, text='Close',
command=self.Ok)#,default=ACTIVE command=self.Ok)
self.buttonOk.pack(padx=5,pady=5) self.buttonOk.pack(padx=5, pady=5)
#self.picture = Image('photo',data=self.pictureData) #self.picture = Image('photo', data=self.pictureData)
frameBg = Frame(frameMain,bg=self.bg) frameBg = Frame(frameMain, bg=self.bg)
frameBg.pack(expand=TRUE,fill=BOTH) frameBg.pack(expand=TRUE, fill=BOTH)
labelTitle = Label(frameBg,text='IDLEfork',fg=self.fg,bg=self.bg, labelTitle = Label(frameBg, text='IDLE', fg=self.fg, bg=self.bg,
font=('courier', 24, 'bold')) font=('courier', 24, 'bold'))
labelTitle.grid(row=0,column=0,sticky=W,padx=10,pady=10) labelTitle.grid(row=0, column=0, sticky=W, padx=10, pady=10)
#labelPicture = Label(frameBg,text='[picture]') #labelPicture = Label(frameBg, text='[picture]')
#image=self.picture,bg=self.bg) #image=self.picture, bg=self.bg)
#labelPicture.grid(row=0,column=1,sticky=W,rowspan=2,padx=0,pady=3) #labelPicture.grid(row=1, column=1, sticky=W, rowspan=2,
labelVersion = Label(frameBg,text='version '+idlever.IDLE_VERSION, # padx=0, pady=3)
fg=self.fg,bg=self.bg) byline = "Python's Integrated DeveLopment Environment" + 5*'\n'
labelVersion.grid(row=1,column=0,sticky=W,padx=10,pady=5) labelDesc = Label(frameBg, text=byline, justify=LEFT,
labelDesc = Label(frameBg, fg=self.fg, bg=self.bg)
text="A development version of Python's lightweight\n"+ labelDesc.grid(row=2, column=0, sticky=W, columnspan=3, padx=10, pady=5)
'Integrated DeveLopment Environment, IDLE.', labelEmail = Label(frameBg, text='email: idle-dev@python.org',
justify=LEFT,fg=self.fg,bg=self.bg) justify=LEFT, fg=self.fg, bg=self.bg)
labelDesc.grid(row=2,column=0,sticky=W,columnspan=3,padx=10,pady=5)
labelCopyright = Label(frameBg,
text="Copyright (c) 2001 - 2003 Python Software Foundation\nAll Rights Reserved",
justify=LEFT,fg=self.fg,bg=self.bg)
labelCopyright.grid(row=3,column=0,sticky=W,columnspan=3,padx=10,pady=5)
labelLicense = Label(frameBg,
text='Released under the Python 2.3 PSF License',
justify=LEFT,fg=self.fg,bg=self.bg)
labelLicense.grid(row=4,column=0,sticky=W,columnspan=3,padx=10,pady=5)
Frame(frameBg,height=5,bg=self.bg).grid(row=5,column=0)
labelEmail = Label(frameBg,text='email: idle-dev@python.org',
justify=LEFT,fg=self.fg,bg=self.bg)
labelEmail.grid(row=6,column=0,columnspan=2,sticky=W,padx=10,pady=0) labelEmail.grid(row=6,column=0,columnspan=2,sticky=W,padx=10,pady=0)
labelWWW = Label(frameBg,text='www: http://idlefork.sourceforge.net', labelWWW = Label(frameBg, text='www: http://www.python.org/idle/',
justify=LEFT,fg=self.fg,bg=self.bg) justify=LEFT, fg=self.fg, bg=self.bg)
labelWWW.grid(row=7,column=0,columnspan=2,sticky=W,padx=10,pady=0) labelWWW.grid(row=7, column=0, columnspan=2, sticky=W, padx=10, pady=0)
Frame(frameBg,borderwidth=1,relief=SUNKEN, Frame(frameBg, borderwidth=1, relief=SUNKEN,
height=2,bg=self.bg).grid(row=8,column=0,sticky=EW, height=2, bg=self.bg).grid(row=8, column=0, sticky=EW,
columnspan=3, padx=5, pady=5) columnspan=3, padx=5, pady=5)
labelPythonVer = Label(frameBg,text='Python version: '+ labelPythonVer = Label(frameBg, text='Python version: ' + \
sys.version.split()[0],fg=self.fg,bg=self.bg) sys.version.split()[0], fg=self.fg, bg=self.bg)
labelPythonVer.grid(row=9,column=0,sticky=W,padx=10,pady=0) labelPythonVer.grid(row=9, column=0, sticky=W, padx=10, pady=0)
#handle weird tk version num in windoze python >= 1.6 (?!?) # handle weird tk version num in windoze python >= 1.6 (?!?)
tkVer = `TkVersion`.split('.') tkVer = `TkVersion`.split('.')
tkVer[len(tkVer)-1] = str('%.3g' % (float('.'+tkVer[len(tkVer)-1])))[2:] tkVer[len(tkVer)-1] = str('%.3g' % (float('.'+tkVer[len(tkVer)-1])))[2:]
if tkVer[len(tkVer)-1] == '': if tkVer[len(tkVer)-1] == '':
tkVer[len(tkVer)-1] = '0' tkVer[len(tkVer)-1] = '0'
tkVer = string.join(tkVer,'.') tkVer = string.join(tkVer,'.')
labelTkVer = Label(frameBg,text='Tk version: '+ labelTkVer = Label(frameBg, text='Tk version: '+
tkVer,fg=self.fg,bg=self.bg) tkVer, fg=self.fg, bg=self.bg)
labelTkVer.grid(row=9,column=1,sticky=W,padx=2,pady=0) labelTkVer.grid(row=9, column=1, sticky=W, padx=2, pady=0)
py_button_f = Frame(frameBg, bg=self.bg)
self.buttonLicense = Button(frameBg,text='View License',underline=5, py_button_f.grid(row=10, column=0, columnspan=2, sticky=NSEW)
width=14,highlightbackground=self.bg,command=self.ShowLicense)#takefocus=FALSE buttonLicense = Button(py_button_f, text='License', width=8,
self.buttonLicense.grid(row=10,column=0,sticky=W,padx=10,pady=10) highlightbackground=self.bg,
self.buttonCredits = Button(frameBg,text='View Credits',underline=5, command=self.ShowLicense)
width=14,highlightbackground=self.bg,command=self.ShowCredits)#takefocus=FALSE buttonLicense.pack(side=LEFT, padx=10, pady=10)
self.buttonCredits.grid(row=10,column=1,columnspan=2,sticky=E,padx=10,pady=10) buttonCopyright = Button(py_button_f, text='Copyright', width=8,
highlightbackground=self.bg,
command=self.ShowCopyright)
buttonCopyright.pack(side=LEFT, padx=10, pady=10)
buttonCredits = Button(py_button_f, text='Credits', width=8,
highlightbackground=self.bg,
command=self.ShowPythonCredits)
buttonCredits.pack(side=LEFT, padx=10, pady=10)
Frame(frameBg, borderwidth=1, relief=SUNKEN,
height=2, bg=self.bg).grid(row=11, column=0, sticky=EW,
columnspan=3, padx=5, pady=5)
idle_v = Label(frameBg, text='IDLE version ' + idlever.IDLE_VERSION,
fg=self.fg, bg=self.bg)
idle_v.grid(row=12, column=0, sticky=W, padx=10, pady=0)
idle_button_f = Frame(frameBg, bg=self.bg)
idle_button_f.grid(row=13, column=0, columnspan=3, sticky=NSEW)
idle_about_b = Button(idle_button_f, text='README', width=8,
highlightbackground=self.bg,
command=self.ShowIDLEAbout)
idle_about_b.pack(side=LEFT, padx=10, pady=10)
idle_news_b = Button(idle_button_f, text='NEWS', width=8,
highlightbackground=self.bg,
command=self.ShowIDLENEWS)
idle_news_b.pack(side=LEFT, padx=10, pady=10)
idle_credits_b = Button(idle_button_f, text='Credits', width=8,
highlightbackground=self.bg,
command=self.ShowIDLECredits)
idle_credits_b.pack(side=LEFT, padx=10, pady=10)
def CreditsButtonBinding(self,event): def ShowLicense(self):
self.buttonCredits.invoke() self.display_printer_text(license, 'About - License')
def LicenseButtonBinding(self,event): def ShowCopyright(self):
self.buttonLicense.invoke() self.display_printer_text(copyright, 'About - Copyright')
def ShowLicense(self): def ShowPythonCredits(self):
self.ViewFile('About - License','LICENSE.txt') self.display_printer_text(credits, 'About - Python Credits')
def ShowCredits(self): def ShowIDLECredits(self):
self.ViewFile('About - Credits','CREDITS.txt') self.ViewFile('About - Credits','CREDITS.txt')
def ShowIDLEAbout(self):
self.ViewFile('About - Readme', 'README.txt')
def ShowIDLENEWS(self):
self.ViewFile('About - NEWS', 'NEWS.txt')
def display_printer_text(self, printer, title):
printer._Printer__setup()
data = '\n'.join(printer._Printer__lines)
textView.TextViewer(self, title, None, data)
def ViewFile(self,viewTitle,viewFile): def ViewFile(self,viewTitle,viewFile):
fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),viewFile) fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),viewFile)
textView.TextViewer(self,viewTitle,fn) textView.TextViewer(self,viewTitle,fn)
...@@ -117,10 +139,10 @@ class AboutDialog(Toplevel): ...@@ -117,10 +139,10 @@ class AboutDialog(Toplevel):
self.destroy() self.destroy()
if __name__ == '__main__': if __name__ == '__main__':
#test the dialog # test the dialog
root=Tk() root = Tk()
def run(): def run():
import aboutDialog import aboutDialog
aboutDialog.AboutDialog(root,'About') aboutDialog.AboutDialog(root,'About')
Button(root,text='Dialog',command=run).pack() Button(root, text='Dialog', command=run).pack()
root.mainloop() root.mainloop()
##---------------------------------------------------------------------------## """Simple text browser for IDLE
##
## idle - simple text view dialog
## elguavas
##
##---------------------------------------------------------------------------##
"""
simple text browser for idle
""" """
from Tkinter import * from Tkinter import *
import tkMessageBox import tkMessageBox
...@@ -14,17 +9,19 @@ class TextViewer(Toplevel): ...@@ -14,17 +9,19 @@ class TextViewer(Toplevel):
""" """
simple text viewer dialog for idle simple text viewer dialog for idle
""" """
def __init__(self,parent,title,fileName): def __init__(self, parent, title, fileName, data=None):
""" """If data exists, load it into viewer, otherwise try to load file.
fileName - string,should be an absoulute filename
fileName - string, should be an absoulute filename
""" """
Toplevel.__init__(self, parent) Toplevel.__init__(self, parent)
self.configure(borderwidth=5) self.configure(borderwidth=5)
self.geometry("+%d+%d" % (parent.winfo_rootx()+10, self.geometry("=%dx%d+%d+%d" % (625, 500,
parent.winfo_rooty()+10)) parent.winfo_rootx() + 10,
parent.winfo_rooty() + 10))
#elguavas - config placeholders til config stuff completed #elguavas - config placeholders til config stuff completed
self.bg=None self.bg = '#ffffff'
self.fg=None self.fg = '#000000'
self.CreateWidgets() self.CreateWidgets()
self.title(title) self.title(title)
...@@ -36,6 +33,9 @@ class TextViewer(Toplevel): ...@@ -36,6 +33,9 @@ class TextViewer(Toplevel):
#key bindings for this dialog #key bindings for this dialog
self.bind('<Return>',self.Ok) #dismiss dialog self.bind('<Return>',self.Ok) #dismiss dialog
self.bind('<Escape>',self.Ok) #dismiss dialog self.bind('<Escape>',self.Ok) #dismiss dialog
if data:
self.textView.insert(0.0, data)
else:
self.LoadTextFile(fileName) self.LoadTextFile(fileName)
self.textView.config(state=DISABLED) self.textView.config(state=DISABLED)
self.wait_window() self.wait_window()
...@@ -51,16 +51,17 @@ class TextViewer(Toplevel): ...@@ -51,16 +51,17 @@ class TextViewer(Toplevel):
self.textView.insert(0.0,textFile.read()) self.textView.insert(0.0,textFile.read())
def CreateWidgets(self): def CreateWidgets(self):
frameText = Frame(self) frameText = Frame(self, relief=SUNKEN, height=700)
frameButtons = Frame(self) frameButtons = Frame(self)
self.buttonOk = Button(frameButtons,text='Ok', self.buttonOk = Button(frameButtons, text='Close',
command=self.Ok,takefocus=FALSE,default=ACTIVE) command=self.Ok, takefocus=FALSE)
self.scrollbarView = Scrollbar(frameText,orient=VERTICAL, self.scrollbarView = Scrollbar(frameText, orient=VERTICAL,
takefocus=FALSE,highlightthickness=0) takefocus=FALSE, highlightthickness=0)
self.textView = Text(frameText,wrap=WORD,highlightthickness=0) self.textView = Text(frameText, wrap=WORD, highlightthickness=0,
fg=self.fg, bg=self.bg)
self.scrollbarView.config(command=self.textView.yview) self.scrollbarView.config(command=self.textView.yview)
self.textView.config(yscrollcommand=self.scrollbarView.set) self.textView.config(yscrollcommand=self.scrollbarView.set)
self.buttonOk.pack(padx=5,pady=5) self.buttonOk.pack()
self.scrollbarView.pack(side=RIGHT,fill=Y) self.scrollbarView.pack(side=RIGHT,fill=Y)
self.textView.pack(side=LEFT,expand=TRUE,fill=BOTH) self.textView.pack(side=LEFT,expand=TRUE,fill=BOTH)
frameButtons.pack(side=BOTTOM,fill=X) frameButtons.pack(side=BOTTOM,fill=X)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment