golden hour
/usr/lib64/python2.7/Demo/tkinter/guido
⬆️ Go Up
Upload
File/Folder
Size
Actions
AttrDialog.py
14 KB
Del
OK
AttrDialog.pyc
18.34 KB
Del
OK
AttrDialog.pyo
18.34 KB
Del
OK
ManPage.py
6.7 KB
Del
OK
ManPage.pyc
6.27 KB
Del
OK
ManPage.pyo
6.27 KB
Del
OK
MimeViewer.py
4.39 KB
Del
OK
MimeViewer.pyc
4.83 KB
Del
OK
MimeViewer.pyo
4.83 KB
Del
OK
ShellWindow.py
4.07 KB
Del
OK
ShellWindow.pyc
5.47 KB
Del
OK
ShellWindow.pyo
5.47 KB
Del
OK
brownian.py
1.07 KB
Del
OK
brownian.pyc
1.59 KB
Del
OK
brownian.pyo
1.59 KB
Del
OK
brownian2.py
1.35 KB
Del
OK
brownian2.pyc
1.74 KB
Del
OK
brownian2.pyo
1.74 KB
Del
OK
canvasevents.py
6.45 KB
Del
OK
canvasevents.pyc
10.46 KB
Del
OK
canvasevents.pyo
10.46 KB
Del
OK
dialog.py
3.13 KB
Del
OK
dialog.pyc
3.11 KB
Del
OK
dialog.pyo
3.11 KB
Del
OK
electrons.py
2.27 KB
Del
OK
electrons.pyc
2.33 KB
Del
OK
electrons.pyo
2.33 KB
Del
OK
hanoi.py
4.54 KB
Del
OK
hanoi.pyc
3.82 KB
Del
OK
hanoi.pyo
3.82 KB
Del
OK
hello.py
331 B
Del
OK
hello.pyc
701 B
Del
OK
hello.pyo
701 B
Del
OK
imagedraw.py
509 B
Del
OK
imagedraw.pyc
1.13 KB
Del
OK
imagedraw.pyo
1.13 KB
Del
OK
imageview.py
205 B
Del
OK
imageview.pyc
570 B
Del
OK
imageview.pyo
570 B
Del
OK
kill.py
3.79 KB
Del
OK
kill.pyc
4.81 KB
Del
OK
kill.pyo
4.81 KB
Del
OK
listtree.py
991 B
Del
OK
listtree.pyc
1.5 KB
Del
OK
listtree.pyo
1.5 KB
Del
OK
mbox.py
7.3 KB
Del
OK
mbox.pyc
8.17 KB
Del
OK
mbox.pyo
8.17 KB
Del
OK
newmenubardemo.py
1.2 KB
Del
OK
newmenubardemo.pyc
1.59 KB
Del
OK
newmenubardemo.pyo
1.59 KB
Del
OK
optionmenu.py
441 B
Del
OK
optionmenu.pyc
594 B
Del
OK
optionmenu.pyo
594 B
Del
OK
paint.py
1.85 KB
Del
OK
paint.pyc
2.19 KB
Del
OK
paint.pyo
2.19 KB
Del
OK
rmt.py
4.39 KB
Del
OK
rmt.pyc
4.93 KB
Del
OK
rmt.pyo
4.93 KB
Del
OK
solitaire.py
17.37 KB
Del
OK
solitaire.pyc
20.41 KB
Del
OK
solitaire.pyo
20.41 KB
Del
OK
sortvisu.py
18.89 KB
Del
OK
sortvisu.pyc
23.18 KB
Del
OK
sortvisu.pyo
23.18 KB
Del
OK
ss1.py
25.57 KB
Del
OK
ss1.pyc
31.67 KB
Del
OK
ss1.pyo
31.07 KB
Del
OK
svkill.py
4.75 KB
Del
OK
svkill.pyc
5.8 KB
Del
OK
svkill.pyo
5.8 KB
Del
OK
switch.py
1.52 KB
Del
OK
switch.pyc
2.85 KB
Del
OK
switch.pyo
2.85 KB
Del
OK
tkman.py
8.79 KB
Del
OK
tkman.pyc
8.88 KB
Del
OK
tkman.pyo
8.88 KB
Del
OK
wish.py
623 B
Del
OK
wish.pyc
736 B
Del
OK
wish.pyo
736 B
Del
OK
Edit: ManPage.py
# Widget to display a man page import re from Tkinter import * from Tkinter import _tkinter from ScrolledText import ScrolledText # XXX These fonts may have to be changed to match your system BOLDFONT = '*-Courier-Bold-R-Normal-*-120-*' ITALICFONT = '*-Courier-Medium-O-Normal-*-120-*' # XXX Recognizing footers is system dependent # (This one works for IRIX 5.2 and Solaris 2.2) footerprog = re.compile( '^ Page [1-9][0-9]*[ \t]+\|^.*Last change:.*[1-9][0-9]*\n') emptyprog = re.compile('^[ \t]*\n') ulprog = re.compile('^[ \t]*[Xv!_][Xv!_ \t]*\n') # Basic Man Page class -- does not disable editing class EditableManPage(ScrolledText): # Initialize instance def __init__(self, master=None, **cnf): # Initialize base class apply(ScrolledText.__init__, (self, master), cnf) # Define tags for formatting styles self.tag_config('X', underline=1) self.tag_config('!', font=BOLDFONT) self.tag_config('_', font=ITALICFONT) # Set state to idle self.fp = None self.lineno = 0 # Test whether we are busy parsing a file def busy(self): return self.fp != None # Ensure we're not busy def kill(self): if self.busy(): self._endparser() # Parse a file, in the background def asyncparsefile(self, fp): self._startparser(fp) self.tk.createfilehandler(fp, _tkinter.READABLE, self._filehandler) parsefile = asyncparsefile # Alias # I/O handler used by background parsing def _filehandler(self, fp, mask): nextline = self.fp.readline() if not nextline: self._endparser() return self._parseline(nextline) # Parse a file, now (cannot be aborted) def syncparsefile(self, fp): from select import select def avail(fp=fp, tout=0.0, select=select): return select([fp], [], [], tout)[0] height = self.getint(self['height']) self._startparser(fp) while 1: nextline = fp.readline() if not nextline: break self._parseline(nextline) self._endparser() # Initialize parsing from a particular file -- must not be busy def _startparser(self, fp): if self.busy(): raise RuntimeError, 'startparser: still busy' fp.fileno() # Test for file-ness self.fp = fp self.lineno = 0 self.ok = 0 self.empty = 0 self.buffer = None savestate = self['state'] self['state'] = NORMAL self.delete('1.0', END) self['state'] = savestate # End parsing -- must be busy, need not be at EOF def _endparser(self): if not self.busy(): raise RuntimeError, 'endparser: not busy' if self.buffer: self._parseline('') try: self.tk.deletefilehandler(self.fp) except TclError, msg: pass self.fp.close() self.fp = None del self.ok, self.empty, self.buffer # Parse a single line def _parseline(self, nextline): if not self.buffer: # Save this line -- we need one line read-ahead self.buffer = nextline return if emptyprog.match(self.buffer) >= 0: # Buffered line was empty -- set a flag self.empty = 1 self.buffer = nextline return textline = self.buffer if ulprog.match(nextline) >= 0: # Next line is properties for buffered line propline = nextline self.buffer = None else: # Next line is read-ahead propline = None self.buffer = nextline if not self.ok: # First non blank line after footer must be header # -- skip that too self.ok = 1 self.empty = 0 return if footerprog.match(textline) >= 0: # Footer -- start skipping until next non-blank line self.ok = 0 self.empty = 0 return savestate = self['state'] self['state'] = NORMAL if TkVersion >= 4.0: self.mark_set('insert', 'end-1c') else: self.mark_set('insert', END) if self.empty: # One or more previous lines were empty # -- insert one blank line in the text self._insert_prop('\n') self.lineno = self.lineno + 1 self.empty = 0 if not propline: # No properties self._insert_prop(textline) else: # Search for properties p = '' j = 0 for i in range(min(len(propline), len(textline))): if propline[i] != p: if j < i: self._insert_prop(textline[j:i], p) j = i p = propline[i] self._insert_prop(textline[j:]) self.lineno = self.lineno + 1 self['state'] = savestate # Insert a string at the end, with at most one property (tag) def _insert_prop(self, str, prop = ' '): here = self.index(AtInsert()) self.insert(AtInsert(), str) if TkVersion <= 4.0: tags = self.tag_names(here) for tag in tags: self.tag_remove(tag, here, AtInsert()) if prop != ' ': self.tag_add(prop, here, AtInsert()) # Readonly Man Page class -- disables editing, otherwise the same class ReadonlyManPage(EditableManPage): # Initialize instance def __init__(self, master=None, **cnf): cnf['state'] = DISABLED apply(EditableManPage.__init__, (self, master), cnf) # Alias ManPage = ReadonlyManPage # Test program. # usage: ManPage [manpage]; or ManPage [-f] file # -f means that the file is nroff -man output run through ul -i def test(): import os import sys # XXX This directory may be different on your system MANDIR = '/usr/local/man/mann' DEFAULTPAGE = 'Tcl' formatted = 0 if sys.argv[1:] and sys.argv[1] == '-f': formatted = 1 del sys.argv[1] if sys.argv[1:]: name = sys.argv[1] else: name = DEFAULTPAGE if not formatted: if name[-2:-1] != '.': name = name + '.n' name = os.path.join(MANDIR, name) root = Tk() root.minsize(1, 1) manpage = ManPage(root, relief=SUNKEN, borderwidth=2) manpage.pack(expand=1, fill=BOTH) if formatted: fp = open(name, 'r') else: fp = os.popen('nroff -man %s | ul -i' % name, 'r') manpage.parsefile(fp) root.mainloop() # Run the test program when called as a script if __name__ == '__main__': test()
Save