blob: be3ade02a09976f81b2fa254eb276ed0319d0ad8 [file] [log] [blame]
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +00001"""Simple text browser for IDLE
2
Steven M. Gava44d3d1a2001-07-31 06:59:02 +00003"""
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +00004
Steven M. Gava44d3d1a2001-07-31 06:59:02 +00005from Tkinter import *
6import tkMessageBox
7
8class TextViewer(Toplevel):
Steven M. Gava44d3d1a2001-07-31 06:59:02 +00009 """
Steven M. Gavad721c482001-07-31 10:46:53 +000010 simple text viewer dialog for idle
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000011 """
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000012 def __init__(self, parent, title, fileName, data=None):
13 """If data exists, load it into viewer, otherwise try to load file.
14
15 fileName - string, should be an absoulute filename
Steven M. Gavad721c482001-07-31 10:46:53 +000016 """
17 Toplevel.__init__(self, parent)
18 self.configure(borderwidth=5)
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000019 self.geometry("=%dx%d+%d+%d" % (625, 500,
20 parent.winfo_rootx() + 10,
21 parent.winfo_rooty() + 10))
Steven M. Gavad721c482001-07-31 10:46:53 +000022 #elguavas - config placeholders til config stuff completed
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000023 self.bg = '#ffffff'
24 self.fg = '#000000'
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000025
Steven M. Gavad721c482001-07-31 10:46:53 +000026 self.CreateWidgets()
27 self.title(title)
28 self.transient(parent)
29 self.grab_set()
30 self.protocol("WM_DELETE_WINDOW", self.Ok)
31 self.parent = parent
32 self.textView.focus_set()
33 #key bindings for this dialog
34 self.bind('<Return>',self.Ok) #dismiss dialog
35 self.bind('<Escape>',self.Ok) #dismiss dialog
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000036 if data:
37 self.textView.insert(0.0, data)
38 else:
39 self.LoadTextFile(fileName)
Steven M. Gavad721c482001-07-31 10:46:53 +000040 self.textView.config(state=DISABLED)
41 self.wait_window()
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000042
Steven M. Gavad721c482001-07-31 10:46:53 +000043 def LoadTextFile(self, fileName):
44 textFile = None
45 try:
46 textFile = open(fileName, 'r')
47 except IOError:
48 tkMessageBox.showerror(title='File Load Error',
49 message='Unable to load file '+`fileName`+' .')
50 else:
51 self.textView.insert(0.0,textFile.read())
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000052
Steven M. Gavad721c482001-07-31 10:46:53 +000053 def CreateWidgets(self):
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000054 frameText = Frame(self, relief=SUNKEN, height=700)
Steven M. Gavad721c482001-07-31 10:46:53 +000055 frameButtons = Frame(self)
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000056 self.buttonOk = Button(frameButtons, text='Close',
57 command=self.Ok, takefocus=FALSE)
58 self.scrollbarView = Scrollbar(frameText, orient=VERTICAL,
59 takefocus=FALSE, highlightthickness=0)
60 self.textView = Text(frameText, wrap=WORD, highlightthickness=0,
61 fg=self.fg, bg=self.bg)
Steven M. Gavad721c482001-07-31 10:46:53 +000062 self.scrollbarView.config(command=self.textView.yview)
63 self.textView.config(yscrollcommand=self.scrollbarView.set)
Kurt B. Kaiser09cb74b2003-06-12 04:20:56 +000064 self.buttonOk.pack()
Steven M. Gavad721c482001-07-31 10:46:53 +000065 self.scrollbarView.pack(side=RIGHT,fill=Y)
66 self.textView.pack(side=LEFT,expand=TRUE,fill=BOTH)
67 frameButtons.pack(side=BOTTOM,fill=X)
68 frameText.pack(side=TOP,expand=TRUE,fill=BOTH)
Kurt B. Kaiser6655e4b2002-12-31 16:03:23 +000069
Steven M. Gavad721c482001-07-31 10:46:53 +000070 def Ok(self, event=None):
71 self.destroy()
Steven M. Gava44d3d1a2001-07-31 06:59:02 +000072
73if __name__ == '__main__':
Steven M. Gavad721c482001-07-31 10:46:53 +000074 #test the dialog
75 root=Tk()
76 Button(root,text='View',
77 command=lambda:TextViewer(root,'Text','./textView.py')).pack()
78 root.mainloop()