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
This commit is contained in:
Kurt B. Kaiser 2003-06-12 04:20:56 +00:00
parent f31cb0cbcf
commit 09cb74ba20
2 changed files with 123 additions and 100 deletions

View File

@ -1,5 +1,5 @@
"""
about box for idle
"""About Dialog for IDLE
"""
from Tkinter import *
@ -8,8 +8,8 @@ import textView
import idlever
class AboutDialog(Toplevel):
"""
modal about dialog for idle
"""Modal about dialog for idle
"""
def __init__(self,parent,title):
Toplevel.__init__(self, parent)
@ -18,7 +18,6 @@ class AboutDialog(Toplevel):
parent.winfo_rooty()+30))
self.bg = "#707070"
self.fg = "#ffffff"
self.CreateWidgets()
self.resizable(height=FALSE, width=FALSE)
self.title(title)
@ -27,9 +26,6 @@ class AboutDialog(Toplevel):
self.protocol("WM_DELETE_WINDOW", self.Ok)
self.parent = parent
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('<Escape>',self.Ok) #dismiss dialog
self.wait_window()
@ -39,45 +35,33 @@ class AboutDialog(Toplevel):
frameButtons = Frame(self)
frameButtons.pack(side=BOTTOM, fill=X)
frameMain.pack(side=TOP, expand=TRUE, fill=BOTH)
self.buttonOk = Button(frameButtons,text='Ok',
command=self.Ok)#,default=ACTIVE
self.buttonOk = Button(frameButtons, text='Close',
command=self.Ok)
self.buttonOk.pack(padx=5, pady=5)
#self.picture = Image('photo', data=self.pictureData)
frameBg = Frame(frameMain, bg=self.bg)
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'))
labelTitle.grid(row=0, column=0, sticky=W, padx=10, pady=10)
#labelPicture = Label(frameBg, text='[picture]')
#image=self.picture, bg=self.bg)
#labelPicture.grid(row=0,column=1,sticky=W,rowspan=2,padx=0,pady=3)
labelVersion = Label(frameBg,text='version '+idlever.IDLE_VERSION,
#labelPicture.grid(row=1, column=1, sticky=W, rowspan=2,
# padx=0, pady=3)
byline = "Python's Integrated DeveLopment Environment" + 5*'\n'
labelDesc = Label(frameBg, text=byline, justify=LEFT,
fg=self.fg, bg=self.bg)
labelVersion.grid(row=1,column=0,sticky=W,padx=10,pady=5)
labelDesc = Label(frameBg,
text="A development version of Python's lightweight\n"+
'Integrated DeveLopment Environment, IDLE.',
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)
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)
labelWWW.grid(row=7, column=0, columnspan=2, sticky=W, padx=10, pady=0)
Frame(frameBg, borderwidth=1, relief=SUNKEN,
height=2, bg=self.bg).grid(row=8, column=0, sticky=EW,
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)
labelPythonVer.grid(row=9, column=0, sticky=W, padx=10, pady=0)
# handle weird tk version num in windoze python >= 1.6 (?!?)
@ -89,26 +73,64 @@ class AboutDialog(Toplevel):
labelTkVer = Label(frameBg, text='Tk version: '+
tkVer, fg=self.fg, bg=self.bg)
labelTkVer.grid(row=9, column=1, sticky=W, padx=2, pady=0)
self.buttonLicense = Button(frameBg,text='View License',underline=5,
width=14,highlightbackground=self.bg,command=self.ShowLicense)#takefocus=FALSE
self.buttonLicense.grid(row=10,column=0,sticky=W,padx=10,pady=10)
self.buttonCredits = Button(frameBg,text='View Credits',underline=5,
width=14,highlightbackground=self.bg,command=self.ShowCredits)#takefocus=FALSE
self.buttonCredits.grid(row=10,column=1,columnspan=2,sticky=E,padx=10,pady=10)
def CreditsButtonBinding(self,event):
self.buttonCredits.invoke()
def LicenseButtonBinding(self,event):
self.buttonLicense.invoke()
py_button_f = Frame(frameBg, bg=self.bg)
py_button_f.grid(row=10, column=0, columnspan=2, sticky=NSEW)
buttonLicense = Button(py_button_f, text='License', width=8,
highlightbackground=self.bg,
command=self.ShowLicense)
buttonLicense.pack(side=LEFT, 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 ShowLicense(self):
self.ViewFile('About - License','LICENSE.txt')
self.display_printer_text(license, 'About - License')
def ShowCredits(self):
def ShowCopyright(self):
self.display_printer_text(copyright, 'About - Copyright')
def ShowPythonCredits(self):
self.display_printer_text(credits, 'About - Python Credits')
def ShowIDLECredits(self):
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):
fn=os.path.join(os.path.abspath(os.path.dirname(__file__)),viewFile)
textView.TextViewer(self,viewTitle,fn)

View File

@ -1,12 +1,7 @@
##---------------------------------------------------------------------------##
##
## idle - simple text view dialog
## elguavas
##
##---------------------------------------------------------------------------##
"""
simple text browser for idle
"""Simple text browser for IDLE
"""
from Tkinter import *
import tkMessageBox
@ -14,17 +9,19 @@ class TextViewer(Toplevel):
"""
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
"""
Toplevel.__init__(self, parent)
self.configure(borderwidth=5)
self.geometry("+%d+%d" % (parent.winfo_rootx()+10,
self.geometry("=%dx%d+%d+%d" % (625, 500,
parent.winfo_rootx() + 10,
parent.winfo_rooty() + 10))
#elguavas - config placeholders til config stuff completed
self.bg=None
self.fg=None
self.bg = '#ffffff'
self.fg = '#000000'
self.CreateWidgets()
self.title(title)
@ -36,6 +33,9 @@ class TextViewer(Toplevel):
#key bindings for this dialog
self.bind('<Return>',self.Ok) #dismiss dialog
self.bind('<Escape>',self.Ok) #dismiss dialog
if data:
self.textView.insert(0.0, data)
else:
self.LoadTextFile(fileName)
self.textView.config(state=DISABLED)
self.wait_window()
@ -51,16 +51,17 @@ class TextViewer(Toplevel):
self.textView.insert(0.0,textFile.read())
def CreateWidgets(self):
frameText = Frame(self)
frameText = Frame(self, relief=SUNKEN, height=700)
frameButtons = Frame(self)
self.buttonOk = Button(frameButtons,text='Ok',
command=self.Ok,takefocus=FALSE,default=ACTIVE)
self.buttonOk = Button(frameButtons, text='Close',
command=self.Ok, takefocus=FALSE)
self.scrollbarView = Scrollbar(frameText, orient=VERTICAL,
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.textView.config(yscrollcommand=self.scrollbarView.set)
self.buttonOk.pack(padx=5,pady=5)
self.buttonOk.pack()
self.scrollbarView.pack(side=RIGHT,fill=Y)
self.textView.pack(side=LEFT,expand=TRUE,fill=BOTH)
frameButtons.pack(side=BOTTOM,fill=X)