A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from http://mail.python.org/pipermail/python-checkins/2010-October/098839.html below:

[Python-checkins] r85844 - in python/branches/py3k/Demo/tkinter/guido: AttrDialog.py ManPage.py MimeViewer.py ShellWindow.py attr_dialog.py manpage.py mbox.py mimeviewer.py shell_window.py sortvisu.py ss1.py tkman.py wish.py

[Python-checkins] r85844 - in python/branches/py3k/Demo/tkinter/guido: AttrDialog.py ManPage.py MimeViewer.py ShellWindow.py attr_dialog.py manpage.py mbox.py mimeviewer.py shell_window.py sortvisu.py ss1.py tkman.py wish.pygeorg.brandl python-checkins at python.org
Tue Oct 26 12:39:14 CEST 2010
Author: georg.brandl
Date: Tue Oct 26 12:39:14 2010
New Revision: 85844

Log:
Work a bit more on tkinter demos.

Added:
   python/branches/py3k/Demo/tkinter/guido/attr_dialog.py
      - copied, changed from r85843, /python/branches/py3k/Demo/tkinter/guido/AttrDialog.py
   python/branches/py3k/Demo/tkinter/guido/manpage.py
      - copied, changed from r85843, /python/branches/py3k/Demo/tkinter/guido/ManPage.py
   python/branches/py3k/Demo/tkinter/guido/mimeviewer.py
      - copied unchanged from r85843, /python/branches/py3k/Demo/tkinter/guido/MimeViewer.py
   python/branches/py3k/Demo/tkinter/guido/shell_window.py
      - copied unchanged from r85843, /python/branches/py3k/Demo/tkinter/guido/ShellWindow.py
Removed:
   python/branches/py3k/Demo/tkinter/guido/AttrDialog.py
   python/branches/py3k/Demo/tkinter/guido/ManPage.py
   python/branches/py3k/Demo/tkinter/guido/MimeViewer.py
   python/branches/py3k/Demo/tkinter/guido/ShellWindow.py
Modified:
   python/branches/py3k/Demo/tkinter/guido/   (props changed)
   python/branches/py3k/Demo/tkinter/guido/mbox.py
   python/branches/py3k/Demo/tkinter/guido/sortvisu.py
   python/branches/py3k/Demo/tkinter/guido/ss1.py
   python/branches/py3k/Demo/tkinter/guido/tkman.py
   python/branches/py3k/Demo/tkinter/guido/wish.py

Deleted: python/branches/py3k/Demo/tkinter/guido/AttrDialog.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/AttrDialog.py	Tue Oct 26 12:39:14 2010
+++ (empty file)
@@ -1,450 +0,0 @@
-
-# The options of a widget are described by the following attributes
-# of the Pack and Widget dialogs:
-#
-# Dialog.current: {name: value}
-# -- changes during Widget's lifetime
-#
-# Dialog.options: {name: (default, klass)}
-# -- depends on widget class only
-#
-# Dialog.classes: {klass: (v0, v1, v2, ...) | 'boolean' | 'other'}
-# -- totally static, though different between PackDialog and WidgetDialog
-#    (but even that could be unified)
-
-from tkinter import *
-
-class Option:
-
-    varclass = StringVar            # May be overridden
-
-    def __init__(self, dialog, option):
-        self.dialog = dialog
-        self.option = option
-        self.master = dialog.top
-        self.default, self.klass = dialog.options[option]
-        self.var = self.varclass(self.master)
-        self.frame = Frame(self.master)
-        self.frame.pack(fill=X)
-        self.label = Label(self.frame, text=(option + ":"))
-        self.label.pack(side=LEFT)
-        self.update()
-        self.addoption()
-
-    def refresh(self):
-        self.dialog.refresh()
-        self.update()
-
-    def update(self):
-        try:
-            self.current = self.dialog.current[self.option]
-        except KeyError:
-            self.current = self.default
-        self.var.set(self.current)
-
-    def set(self, e=None):          # Should be overridden
-        pass
-
-class BooleanOption(Option):
-
-    varclass = BooleanVar
-
-    def addoption(self):
-        self.button = Checkbutton(self.frame,
-                                 text='on/off',
-                                 onvalue=1,
-                                 offvalue=0,
-                                 variable=self.var,
-                                 relief=RAISED,
-                                 borderwidth=2,
-                                 command=self.set)
-        self.button.pack(side=RIGHT)
-
-class EnumOption(Option):
-
-    def addoption(self):
-        self.button = Menubutton(self.frame,
-                                 textvariable=self.var,
-                                 relief=RAISED, borderwidth=2)
-        self.button.pack(side=RIGHT)
-        self.menu = Menu(self.button)
-        self.button['menu'] = self.menu
-        for v in self.dialog.classes[self.klass]:
-            self.menu.add_radiobutton(
-                label=v,
-                variable=self.var,
-                value=v,
-                command=self.set)
-
-class StringOption(Option):
-
-    def addoption(self):
-        self.entry = Entry(self.frame,
-                           textvariable=self.var,
-                           width=10,
-                           relief=SUNKEN,
-                           borderwidth=2)
-        self.entry.pack(side=RIGHT, fill=X, expand=1)
-        self.entry.bind('<Return>', self.set)
-
-class ReadonlyOption(Option):
-
-    def addoption(self):
-        self.label = Label(self.frame, textvariable=self.var,
-                           anchor=E)
-        self.label.pack(side=RIGHT)
-
-class Dialog:
-
-    def __init__(self, master):
-        self.master = master
-        self.fixclasses()
-        self.refresh()
-        self.top = Toplevel(self.master)
-        self.top.title(self.__class__.__name__)
-        self.top.minsize(1, 1)
-        self.addchoices()
-
-    def refresh(self): pass         # Must override
-
-    def fixclasses(self): pass      # May override
-
-    def addchoices(self):
-        self.choices = {}
-        list = []
-        for k, dc in self.options.items():
-            list.append((k, dc))
-        list.sort()
-        for k, (d, c) in list:
-            try:
-                cl = self.classes[c]
-            except KeyError:
-                cl = 'unknown'
-            if type(cl) is tuple:
-                cl = self.enumoption
-            elif cl == 'boolean':
-                cl = self.booleanoption
-            elif cl == 'readonly':
-                cl = self.readonlyoption
-            else:
-                cl = self.stringoption
-            self.choices[k] = cl(self, k)
-
-    # Must override:
-    options = {}
-    classes = {}
-
-    # May override:
-    booleanoption = BooleanOption
-    stringoption = StringOption
-    enumoption = EnumOption
-    readonlyoption = ReadonlyOption
-
-class PackDialog(Dialog):
-
-    def __init__(self, widget):
-        self.widget = widget
-        Dialog.__init__(self, widget)
-
-    def refresh(self):
-        self.current = self.widget.info()
-        self.current['.class'] = self.widget.winfo_class()
-        self.current['.name'] = self.widget._w
-
-    class packoption: # Mix-in class
-        def set(self, e=None):
-            self.current = self.var.get()
-            try:
-                self.dialog.widget.pack(**{self.option: self.current})
-            except TclError as msg:
-                print(msg)
-                self.refresh()
-
-    class booleanoption(packoption, BooleanOption): pass
-    class enumoption(packoption, EnumOption): pass
-    class stringoption(packoption, StringOption): pass
-    class readonlyoption(packoption, ReadonlyOption): pass
-
-    options = {
-            '.class': (None, 'Class'),
-            '.name': (None, 'Name'),
-            'after': (None, 'Widget'),
-            'anchor': ('center', 'Anchor'),
-            'before': (None, 'Widget'),
-            'expand': ('no', 'Boolean'),
-            'fill': ('none', 'Fill'),
-            'in': (None, 'Widget'),
-            'ipadx': (0, 'Pad'),
-            'ipady': (0, 'Pad'),
-            'padx': (0, 'Pad'),
-            'pady': (0, 'Pad'),
-            'side': ('top', 'Side'),
-            }
-
-    classes = {
-            'Anchor': (N, NE, E, SE, S, SW, W, NW, CENTER),
-            'Boolean': 'boolean',
-            'Class': 'readonly',
-            'Expand': 'boolean',
-            'Fill': (NONE, X, Y, BOTH),
-            'Name': 'readonly',
-            'Pad': 'pixel',
-            'Side': (TOP, RIGHT, BOTTOM, LEFT),
-            'Widget': 'readonly',
-            }
-
-class RemotePackDialog(PackDialog):
-
-    def __init__(self, master, app, widget):
-        self.master = master
-        self.app = app
-        self.widget = widget
-        self.refresh()
-        self.top = Toplevel(self.master)
-        self.top.title(self.app + ' PackDialog')
-        self.top.minsize(1, 1)
-        self.addchoices()
-
-    def refresh(self):
-        try:
-            words = self.master.tk.splitlist(
-                    self.master.send(self.app,
-                                     'pack',
-                                     'info',
-                                     self.widget))
-        except TclError as msg:
-            print(msg)
-            return
-        dict = {}
-        for i in range(0, len(words), 2):
-            key = words[i][1:]
-            value = words[i+1]
-            dict[key] = value
-        dict['.class'] = self.master.send(self.app,
-                                          'winfo',
-                                          'class',
-                                          self.widget)
-        dict['.name'] = self.widget
-        self.current = dict
-
-    class remotepackoption: # Mix-in class
-        def set(self, e=None):
-            self.current = self.var.get()
-            try:
-                self.dialog.master.send(
-                        self.dialog.app,
-                        'pack',
-                        'config',
-                        self.dialog.widget,
-                        '-'+self.option,
-                        self.dialog.master.tk.merge(
-                                self.current))
-            except TclError as msg:
-                print(msg)
-                self.refresh()
-
-    class booleanoption(remotepackoption, BooleanOption): pass
-    class enumoption(remotepackoption, EnumOption): pass
-    class stringoption(remotepackoption, StringOption): pass
-    class readonlyoption(remotepackoption, ReadonlyOption): pass
-
-class WidgetDialog(Dialog):
-
-    def __init__(self, widget):
-        self.widget = widget
-        self.klass = widget.winfo_class()
-        Dialog.__init__(self, widget)
-
-    def fixclasses(self):
-        if self.klass in self.addclasses:
-            classes = {}
-            for c in (self.classes,
-                      self.addclasses[self.klass]):
-                for k in c.keys():
-                    classes[k] = c[k]
-            self.classes = classes
-
-    def refresh(self):
-        self.configuration = self.widget.config()
-        self.update()
-        self.current['.class'] = self.widget.winfo_class()
-        self.current['.name'] = self.widget._w
-
-    def update(self):
-        self.current = {}
-        self.options = {}
-        for k, v in self.configuration.items():
-            if len(v) > 4:
-                self.current[k] = v[4]
-                self.options[k] = v[3], v[2] # default, klass
-        self.options['.class'] = (None, 'Class')
-        self.options['.name'] = (None, 'Name')
-
-    class widgetoption: # Mix-in class
-        def set(self, e=None):
-            self.current = self.var.get()
-            try:
-                self.dialog.widget[self.option] = self.current
-            except TclError as msg:
-                print(msg)
-                self.refresh()
-
-    class booleanoption(widgetoption, BooleanOption): pass
-    class enumoption(widgetoption, EnumOption): pass
-    class stringoption(widgetoption, StringOption): pass
-    class readonlyoption(widgetoption, ReadonlyOption): pass
-
-    # Universal classes
-    classes = {
-            'Anchor': (N, NE, E, SE, S, SW, W, NW, CENTER),
-            'Aspect': 'integer',
-            'Background': 'color',
-            'Bitmap': 'bitmap',
-            'BorderWidth': 'pixel',
-            'Class': 'readonly',
-            'CloseEnough': 'double',
-            'Command': 'command',
-            'Confine': 'boolean',
-            'Cursor': 'cursor',
-            'CursorWidth': 'pixel',
-            'DisabledForeground': 'color',
-            'ExportSelection': 'boolean',
-            'Font': 'font',
-            'Foreground': 'color',
-            'From': 'integer',
-            'Geometry': 'geometry',
-            'Height': 'pixel',
-            'InsertWidth': 'time',
-            'Justify': (LEFT, CENTER, RIGHT),
-            'Label': 'string',
-            'Length': 'pixel',
-            'MenuName': 'widget',
-            'Name': 'readonly',
-            'OffTime': 'time',
-            'OnTime': 'time',
-            'Orient': (HORIZONTAL, VERTICAL),
-            'Pad': 'pixel',
-            'Relief': (RAISED, SUNKEN, FLAT, RIDGE, GROOVE),
-            'RepeatDelay': 'time',
-            'RepeatInterval': 'time',
-            'ScrollCommand': 'command',
-            'ScrollIncrement': 'pixel',
-            'ScrollRegion': 'rectangle',
-            'ShowValue': 'boolean',
-            'SetGrid': 'boolean',
-            'Sliderforeground': 'color',
-            'SliderLength': 'pixel',
-            'Text': 'string',
-            'TickInterval': 'integer',
-            'To': 'integer',
-            'Underline': 'index',
-            'Variable': 'variable',
-            'Value': 'string',
-            'Width': 'pixel',
-            'Wrap': (NONE, CHAR, WORD),
-            }
-
-    # Classes that (may) differ per widget type
-    _tristate = {'State': (NORMAL, ACTIVE, DISABLED)}
-    _bistate = {'State': (NORMAL, DISABLED)}
-    addclasses = {
-            'Button': _tristate,
-            'Radiobutton': _tristate,
-            'Checkbutton': _tristate,
-            'Entry': _bistate,
-            'Text': _bistate,
-            'Menubutton': _tristate,
-            'Slider': _bistate,
-            }
-
-class RemoteWidgetDialog(WidgetDialog):
-
-    def __init__(self, master, app, widget):
-        self.app = app
-        self.widget = widget
-        self.klass = master.send(self.app,
-                                 'winfo',
-                                 'class',
-                                 self.widget)
-        Dialog.__init__(self, master)
-
-    def refresh(self):
-        try:
-            items = self.master.tk.splitlist(
-                    self.master.send(self.app,
-                                     self.widget,
-                                     'config'))
-        except TclError as msg:
-            print(msg)
-            return
-        dict = {}
-        for item in items:
-            words = self.master.tk.splitlist(item)
-            key = words[0][1:]
-            value = (key,) + words[1:]
-            dict[key] = value
-        self.configuration = dict
-        self.update()
-        self.current['.class'] = self.klass
-        self.current['.name'] = self.widget
-
-    class remotewidgetoption: # Mix-in class
-        def set(self, e=None):
-            self.current = self.var.get()
-            try:
-                self.dialog.master.send(
-                        self.dialog.app,
-                        self.dialog.widget,
-                        'config',
-                        '-'+self.option,
-                        self.current)
-            except TclError as msg:
-                print(msg)
-                self.refresh()
-
-    class booleanoption(remotewidgetoption, BooleanOption): pass
-    class enumoption(remotewidgetoption, EnumOption): pass
-    class stringoption(remotewidgetoption, StringOption): pass
-    class readonlyoption(remotewidgetoption, ReadonlyOption): pass
-
-def test():
-    import sys
-    root = Tk()
-    root.minsize(1, 1)
-    if sys.argv[1:]:
-        remotetest(root, sys.argv[1])
-    else:
-        frame = Frame(root, name='frame')
-        frame.pack(expand=1, fill=BOTH)
-        button = Button(frame, name='button', text='button')
-        button.pack(expand=1)
-        canvas = Canvas(frame, name='canvas')
-        canvas.pack()
-        fpd = PackDialog(frame)
-        fwd = WidgetDialog(frame)
-        bpd = PackDialog(button)
-        bwd = WidgetDialog(button)
-        cpd = PackDialog(canvas)
-        cwd = WidgetDialog(canvas)
-    root.mainloop()
-
-def remotetest(root, app):
-    from listtree import listtree
-    list = listtree(root, app)
-    list.bind('<Any-Double-1>', opendialogs)
-    list.app = app                  # Pass it on to handler
-
-def opendialogs(e):
-    list = e.widget
-    sel = list.curselection()
-    for i in sel:
-        item = list.get(i)
-        widget = item.split()[0]
-        RemoteWidgetDialog(list, list.app, widget)
-        if widget == '.': continue
-        try:
-            RemotePackDialog(list, list.app, widget)
-        except TclError as msg:
-            print(msg)
-
-test()

Deleted: python/branches/py3k/Demo/tkinter/guido/ManPage.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/ManPage.py	Tue Oct 26 12:39:14 2010
+++ (empty file)
@@ -1,220 +0,0 @@
-# Widget to display a man page
-
-import re
-from tkinter import *
-from tkinter import _tkinter
-from tkinter.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
-        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 as 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):
-            # Buffered line was empty -- set a flag
-            self.empty = 1
-            self.buffer = nextline
-            return
-        textline = self.buffer
-        if ulprog.match(nextline):
-            # 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):
-            # 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
-        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 = ''
-    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()

Deleted: python/branches/py3k/Demo/tkinter/guido/MimeViewer.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/MimeViewer.py	Tue Oct 26 12:39:14 2010
+++ (empty file)
@@ -1,159 +0,0 @@
-#! /usr/bin/env python3
-
-# View a single MIME multipart message.
-# Display each part as a box.
-
-import os
-import sys
-import getopt
-import mailbox
-from tkinter import *
-from tkinter.scrolledtext import ScrolledText
-
-MBOXPATH = os.environ['HOME'] + '/Mail'
-
-class Error(Exception):
-    pass
-
-def getcurrent(self):
-    """Return the current message.  Raise Error when there is none."""
-    seqs = self.get_sequences()
-    try:
-        return max(seqs['cur'])
-    except (ValueError, KeyError):
-        raise Error("no cur message")
-
-
-class MimeViewer:
-    def __init__(self, parent, title, msg):
-        self.title = title
-        self.msg = msg
-        self.frame = Frame(parent, {'relief': 'raised', 'bd': 2})
-        self.frame.packing = {'expand': 0, 'fill': 'both'}
-        self.button = Checkbutton(self.frame,
-                             {'text': title,
-                              'command': self.toggle})
-        self.button.pack({'anchor': 'w'})
-        headertext = []
-        for item in msg.items():
-            headertext.append("%s: %s" % item)
-        headertext = '\n'.join(headertext)
-        height = countlines(headertext, 4)
-        if height:
-            self.htext = ScrolledText(self.frame,
-                              {'height': height,
-                               'width': 80,
-                               'wrap': 'none',
-                               'relief': 'raised',
-                               'bd': 2})
-            self.htext.packing = {'expand': 1, 'fill': 'both',
-                                  'after': self.button}
-            self.htext.insert('end', headertext)
-        else:
-            self.htext = Frame(self.frame,
-                               {'relief': 'raised', 'bd': 2})
-            self.htext.packing = {'side': 'top',
-                                  'ipady': 2,
-                                  'fill': 'x',
-                                  'after': self.button}
-        body = msg.get_payload()
-        if type(body) == str:
-            self.pad = None
-            height = countlines(body, 10)
-            if height:
-                self.btext = ScrolledText(self.frame,
-                                  {'height': height,
-                                   'width': 80,
-                                   'wrap': 'none',
-                                   'relief': 'raised',
-                                   'bd': 2})
-                self.btext.packing = {'expand': 1,
-                                      'fill': 'both'}
-                self.btext.insert('end', body)
-            else:
-                self.btext = None
-            self.parts = None
-        else:
-            self.pad = Frame(self.frame,
-                             {'relief': 'flat', 'bd': 2})
-            self.pad.packing = {'side': 'left', 'ipadx': 10,
-                                'fill': 'y', 'after': self.htext}
-            self.parts = []
-            for i in range(len(body)):
-                p = MimeViewer(self.frame,
-                               '%s.%d' % (title, i+1),
-                               body[i])
-                self.parts.append(p)
-            self.btext = None
-        self.collapsed = 1
-    def pack(self):
-        self.frame.pack(self.frame.packing)
-    def destroy(self):
-        self.frame.destroy()
-    def show(self):
-        if self.collapsed:
-            self.button.invoke()
-    def toggle(self):
-        if self.collapsed:
-            self.explode()
-        else:
-            self.collapse()
-    def collapse(self):
-        self.collapsed = 1
-        for comp in self.htext, self.btext, self.pad:
-            if comp:
-                comp.forget()
-        if self.parts:
-            for part in self.parts:
-                part.frame.forget()
-        self.frame.pack({'expand': 0})
-    def explode(self):
-        self.collapsed = 0
-        for comp in self.htext, self.btext, self.pad:
-            if comp: comp.pack(comp.packing)
-        if self.parts:
-            for part in self.parts:
-                part.pack()
-        self.frame.pack({'expand': 1})
-
-def countlines(str, limit):
-    i = 0
-    n = 0
-    while  n < limit:
-        i = str.find('\n', i)
-        if i < 0: break
-        n = n+1
-        i = i+1
-    return n
-
-def main():
-    opts, args = getopt.getopt(sys.argv[1:], '')
-    for o, a in opts:
-        pass
-    message = None
-    folder = 'inbox'
-    for arg in args:
-        if arg[:1] == '+':
-            folder = arg[1:]
-        else:
-            message = int(arg)
-
-    mh = mailbox.MH(MBOXPATH)
-    f = mh.get_folder(folder)
-    if message is None:
-        message = getcurrent(f)
-    m = mailbox.MHMessage(f.get(message))
-
-    root = Tk()
-    tk = root.tk
-
-    top = MimeViewer(root, '+%s/%d' % (folder, message), m)
-    top.pack()
-    top.show()
-
-    root.minsize(1, 1)
-
-    tk.mainloop()
-
-if __name__ == '__main__':
-    main()

Deleted: python/branches/py3k/Demo/tkinter/guido/ShellWindow.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/ShellWindow.py	Tue Oct 26 12:39:14 2010
+++ (empty file)
@@ -1,146 +0,0 @@
-import os
-import sys
-from tkinter import *
-from tkinter.scrolledtext import ScrolledText
-from tkinter.dialog import Dialog
-import signal
-
-BUFSIZE = 512
-
-class ShellWindow(ScrolledText):
-
-    def __init__(self, master=None, shell=None, **cnf):
-        if not shell:
-            try:
-                shell = os.environ['SHELL']
-            except KeyError:
-                shell = '/bin/sh'
-            shell = shell + ' -i'
-        args = shell.split()
-        shell = args[0]
-
-        ScrolledText.__init__(self, master, **cnf)
-        self.pos = '1.0'
-        self.bind('<Return>', self.inputhandler)
-        self.bind('<Control-c>', self.sigint)
-        self.bind('<Control-t>', self.sigterm)
-        self.bind('<Control-k>', self.sigkill)
-        self.bind('<Control-d>', self.sendeof)
-
-        self.pid, self.fromchild, self.tochild = spawn(shell, args)
-        self.tk.createfilehandler(self.fromchild, READABLE,
-                                  self.outputhandler)
-
-    def outputhandler(self, file, mask):
-        data = os.read(file, BUFSIZE).decode()
-        if not data:
-            self.tk.deletefilehandler(file)
-            pid, sts = os.waitpid(self.pid, 0)
-            print('pid', pid, 'status', sts)
-            self.pid = None
-            detail = sts>>8
-            cause = sts & 0xff
-            if cause == 0:
-                msg = "exit status %d" % detail
-            else:
-                msg = "killed by signal %d" % (cause & 0x7f)
-                if cause & 0x80:
-                    msg = msg + " -- core dumped"
-            Dialog(self.master,
-                   text=msg,
-                   title="Exit status",
-                   bitmap='warning',
-                   default=0,
-                   strings=('OK',))
-            return
-        self.insert(END, data)
-        self.pos = self.index("end - 1 char")
-        self.yview_pickplace(END)
-
-    def inputhandler(self, *args):
-        if not self.pid:
-            self.no_process()
-            return "break"
-        self.insert(END, "\n")
-        line = self.get(self.pos, "end - 1 char")
-        self.pos = self.index(END)
-        os.write(self.tochild, line.encode())
-        return "break"
-
-    def sendeof(self, *args):
-        if not self.pid:
-            self.no_process()
-            return "break"
-        os.close(self.tochild)
-        return "break"
-
-    def sendsig(self, sig):
-        if not self.pid:
-            self.no_process()
-            return "break"
-        os.kill(self.pid, sig)
-        return "break"
-
-    def sigint(self, *args):
-        return self.sendsig(signal.SIGINT)
-
-    def sigquit(self, *args):
-        return self.sendsig(signal.SIGQUIT)
-
-    def sigterm(self, *args):
-        return self.sendsig(signal.SIGTERM)
-
-    def sigkill(self, *args):
-        return self.sendsig(signal.SIGKILL)
-
-    def no_process(self):
-        Dialog(self.master,
-               text="No active process",
-               title="No process",
-               bitmap='error',
-               default=0,
-               strings=('OK',))
-
-MAXFD = 100     # Max number of file descriptors (os.getdtablesize()???)
-
-def spawn(prog, args):
-    p2cread, p2cwrite = os.pipe()
-    c2pread, c2pwrite = os.pipe()
-    pid = os.fork()
-    if pid == 0:
-        # Child
-        for i in 0, 1, 2:
-            try:
-                os.close(i)
-            except os.error:
-                pass
-        if os.dup(p2cread) != 0:
-            sys.stderr.write('popen2: bad read dup\n')
-        if os.dup(c2pwrite) != 1:
-            sys.stderr.write('popen2: bad write dup\n')
-        if os.dup(c2pwrite) != 2:
-            sys.stderr.write('popen2: bad write dup\n')
-        os.closerange(3, MAXFD)
-        try:
-            os.execvp(prog, args)
-        finally:
-            sys.stderr.write('execvp failed\n')
-            os._exit(1)
-    os.close(p2cread)
-    os.close(c2pwrite)
-    return pid, c2pread, p2cwrite
-
-def test():
-    shell = ' '.join(sys.argv[1: ])
-    root = Tk()
-    root.minsize(1, 1)
-    if shell:
-        w = ShellWindow(root, shell=shell)
-    else:
-        w = ShellWindow(root)
-    w.pack(expand=1, fill=BOTH)
-    w.focus_set()
-    w.tk.mainloop()
-
-if __name__ == '__main__':
-    test()

Copied: python/branches/py3k/Demo/tkinter/guido/attr_dialog.py (from r85843, /python/branches/py3k/Demo/tkinter/guido/AttrDialog.py)
==============================================================================
--- /python/branches/py3k/Demo/tkinter/guido/AttrDialog.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/attr_dialog.py	Tue Oct 26 12:39:14 2010
@@ -14,6 +14,7 @@
 
 from tkinter import *
 
+
 class Option:
 
     varclass = StringVar            # May be overridden
@@ -45,6 +46,7 @@
     def set(self, e=None):          # Should be overridden
         pass
 
+
 class BooleanOption(Option):
 
     varclass = BooleanVar
@@ -60,6 +62,7 @@
                                  command=self.set)
         self.button.pack(side=RIGHT)
 
+
 class EnumOption(Option):
 
     def addoption(self):
@@ -76,6 +79,7 @@
                 value=v,
                 command=self.set)
 
+
 class StringOption(Option):
 
     def addoption(self):
@@ -87,6 +91,7 @@
         self.entry.pack(side=RIGHT, fill=X, expand=1)
         self.entry.bind('<Return>', self.set)
 
+
 class ReadonlyOption(Option):
 
     def addoption(self):
@@ -94,6 +99,7 @@
                            anchor=E)
         self.label.pack(side=RIGHT)
 
+
 class Dialog:
 
     def __init__(self, master):
@@ -140,6 +146,7 @@
     enumoption = EnumOption
     readonlyoption = ReadonlyOption
 
+
 class PackDialog(Dialog):
 
     def __init__(self, widget):
@@ -248,6 +255,7 @@
     class stringoption(remotepackoption, StringOption): pass
     class readonlyoption(remotepackoption, ReadonlyOption): pass
 
+
 class WidgetDialog(Dialog):
 
     def __init__(self, widget):
@@ -357,6 +365,7 @@
             'Slider': _bistate,
             }
 
+
 class RemoteWidgetDialog(WidgetDialog):
 
     def __init__(self, master, app, widget):
@@ -407,6 +416,7 @@
     class stringoption(remotewidgetoption, StringOption): pass
     class readonlyoption(remotewidgetoption, ReadonlyOption): pass
 
+
 def test():
     import sys
     root = Tk()

Copied: python/branches/py3k/Demo/tkinter/guido/manpage.py (from r85843, /python/branches/py3k/Demo/tkinter/guido/ManPage.py)
==============================================================================
--- /python/branches/py3k/Demo/tkinter/guido/ManPage.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/manpage.py	Tue Oct 26 12:39:14 2010
@@ -1,14 +1,13 @@
 # Widget to display a man page
 
+import os
 import re
+import sys
+
 from tkinter import *
-from tkinter import _tkinter
+from tkinter.font import Font
 from tkinter.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(
@@ -16,64 +15,64 @@
 emptyprog = re.compile('^[ \t]*\n')
 ulprog = re.compile('^[ \t]*[Xv!_][Xv!_ \t]*\n')
 
-# Basic Man Page class -- does not disable editing
+
 class EditableManPage(ScrolledText):
+    """Basic Man Page class -- does not disable editing."""
 
-    # Initialize instance
     def __init__(self, master=None, **cnf):
-        # Initialize base class
         ScrolledText.__init__(self, master, **cnf)
 
+        bold = Font(font=self['font']).copy()
+        bold.config(weight='bold')
+        italic = Font(font=self['font']).copy()
+        italic.config(slant='italic')
+
         # Define tags for formatting styles
         self.tag_config('X', underline=1)
-        self.tag_config('!', font=BOLDFONT)
-        self.tag_config('_', font=ITALICFONT)
+        self.tag_config('!', font=bold)
+        self.tag_config('_', font=italic)
 
         # Set state to idle
         self.fp = None
         self.lineno = 0
 
-    # Test whether we are busy parsing a file
     def busy(self):
+        """Test whether we are busy parsing a file."""
         return self.fp != None
 
-    # Ensure we're not busy
     def kill(self):
+        """Ensure we're not busy."""
         if self.busy():
             self._endparser()
 
-    # Parse a file, in the background
     def asyncparsefile(self, fp):
+        """Parse a file, in the background."""
         self._startparser(fp)
-        self.tk.createfilehandler(fp, _tkinter.READABLE,
+        self.tk.createfilehandler(fp, READABLE,
                                   self._filehandler)
 
-    parsefile = asyncparsefile      # Alias
+    parsefile = asyncparsefile   # Alias
 
-    # I/O handler used by background parsing
     def _filehandler(self, fp, mask):
+        """I/O handler used by background parsing."""
         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'])
+        """Parse a file, now (cannot be aborted)."""
         self._startparser(fp)
-        while 1:
+        while True:
             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):
+        """Initialize parsing from a particular file -- must not be busy."""
         if self.busy():
             raise RuntimeError('startparser: still busy')
         fp.fileno()             # Test for file-ness
@@ -87,22 +86,22 @@
         self.delete('1.0', END)
         self['state'] = savestate
 
-    # End parsing -- must be busy, need not be at EOF
     def _endparser(self):
+        """End parsing -- must be busy, need not be at EOF."""
         if not self.busy():
             raise RuntimeError('endparser: not busy')
         if self.buffer:
             self._parseline('')
         try:
             self.tk.deletefilehandler(self.fp)
-        except TclError as msg:
+        except TclError:
             pass
         self.fp.close()
         self.fp = None
         del self.ok, self.empty, self.buffer
 
-    # Parse a single line
     def _parseline(self, nextline):
+        """Parse a single line."""
         if not self.buffer:
             # Save this line -- we need one line read-ahead
             self.buffer = nextline
@@ -161,8 +160,8 @@
         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 = ' '):
+        """Insert a string at the end, with at most one property (tag)."""
         here = self.index(AtInsert())
         self.insert(AtInsert(), str)
         if TkVersion <= 4.0:
@@ -172,10 +171,10 @@
         if prop != ' ':
             self.tag_add(prop, here, AtInsert())
 
-# Readonly Man Page class -- disables editing, otherwise the same
+
 class ReadonlyManPage(EditableManPage):
+    """Readonly Man Page class -- disables editing, otherwise the same."""
 
-    # Initialize instance
     def __init__(self, master=None, **cnf):
         cnf['state'] = DISABLED
         EditableManPage.__init__(self, master, **cnf)
@@ -183,12 +182,9 @@
 # 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
+def main():
     # XXX This directory may be different on your system
     MANDIR = ''
     DEFAULTPAGE = 'Tcl'
@@ -211,10 +207,9 @@
     if formatted:
         fp = open(name, 'r')
     else:
-        fp = os.popen('nroff -man %s | ul -i' % name, 'r')
+        fp = os.popen('nroff -man -c %s | ul -i' % name, 'r')
     manpage.parsefile(fp)
     root.mainloop()
 
-# Run the test program when called as a script
 if __name__ == '__main__':
-    test()
+    main()

Modified: python/branches/py3k/Demo/tkinter/guido/mbox.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/mbox.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/mbox.py	Tue Oct 26 12:39:14 2010
@@ -192,7 +192,7 @@
         num = int(m.group(1))
         m = mhf.get_message(num)
         if viewer: viewer.destroy()
-        from MimeViewer import MimeViewer
+        from mimeviewer import MimeViewer
         viewer = MimeViewer(bot, '+%s/%d' % (folder, num), m)
         viewer.pack()
         viewer.show()

Modified: python/branches/py3k/Demo/tkinter/guido/sortvisu.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/sortvisu.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/sortvisu.py	Tue Oct 26 12:39:14 2010
@@ -18,7 +18,6 @@
 
 """
 
-
 from tkinter import *
 import random
 
@@ -201,27 +200,28 @@
         self.value = value
         self.canvas = array.canvas
         x1, y1, x2, y2 = self.position()
-        self.item = array.canvas.create_rectangle(x1, y1, x2, y2,
+        self.item_id = array.canvas.create_rectangle(x1, y1, x2, y2,
             fill='red', outline='black', width=1)
-        array.canvas.tag_bind(self.item, '<Button-1>', self.mouse_down)
-        array.canvas.tag_bind(self.item, '<Button1-Motion>', self.mouse_move)
-        array.canvas.tag_bind(self.item, '<ButtonRelease-1>', self.mouse_up)
+        self.canvas.tag_bind(self.item_id, '<Button-1>', self.mouse_down)
+        self.canvas.tag_bind(self.item_id, '<Button1-Motion>', self.mouse_move)
+        self.canvas.tag_bind(self.item_id, '<ButtonRelease-1>', self.mouse_up)
 
     def delete(self):
-        item = self.item
+        item_id = self.item_id
         self.array = None
-        self.item = None
-        item.delete()
+        self.item_id = None
+        self.canvas.delete(item_id)
 
     def mouse_down(self, event):
         self.lastx = event.x
         self.lasty = event.y
         self.origx = event.x
         self.origy = event.y
-        self.item.tkraise()
+        self.canvas.tag_raise(self.item_id)
 
     def mouse_move(self, event):
-        self.item.move(event.x - self.lastx, event.y - self.lasty)
+        self.canvas.move(self.item_id,
+                         event.x - self.lastx, event.y - self.lasty)
         self.lastx = event.x
         self.lasty = event.y
 
@@ -236,7 +236,7 @@
         self.array.items[here], self.array.items[i] = other, self
         self.index = i
         x1, y1, x2, y2 = self.position()
-        self.canvas.coords(self.item, (x1, y1, x2, y2))
+        self.canvas.coords(self.item_id, (x1, y1, x2, y2))
         other.setindex(here)
 
     def setindex(self, index):
@@ -248,9 +248,9 @@
         self.index = index
         newpts = self.position()
         trajectory = interpolate(oldpts, newpts, nsteps)
-        self.item.tkraise()
+        self.canvas.tag_raise(self.item_id)
         for pts in trajectory:
-            self.canvas.coords(self.item, pts)
+            self.canvas.coords(self.item_id, pts)
             self.array.wait(50)
 
     def swapwith(self, other):
@@ -263,45 +263,45 @@
         self.index, other.index = other.index, self.index
         mynewpts = self.position()
         othernewpts = other.position()
-        myfill = self.canvas.itemcget(self.item, 'fill')
-        otherfill = self.canvas.itemcget(other.item, 'fill')
-        self.canvas.itemconfig(self.item, fill='green')
-        self.canvas.itemconfig(other.item, fill='yellow')
+        myfill = self.canvas.itemcget(self.item_id, 'fill')
+        otherfill = self.canvas.itemcget(other.item_id, 'fill')
+        self.canvas.itemconfig(self.item_id, fill='green')
+        self.canvas.itemconfig(other.item_id, fill='yellow')
         self.array.master.update()
         if self.array.speed == "single-step":
-            self.canvas.coords(self.item, mynewpts)
-            self.canvas.coords(other.item, othernewpts)
+            self.canvas.coords(self.item_id, mynewpts)
+            self.canvas.coords(other.item_id, othernewpts)
             self.array.master.update()
-            self.canvas.itemconfig(self.item, fill=myfill)
-            self.canvas.itemconfig(other.item, fill=otherfill)
+            self.canvas.itemconfig(self.item_id, fill=myfill)
+            self.canvas.itemconfig(other.item_id, fill=otherfill)
             self.array.wait(0)
             return
         mytrajectory = interpolate(myoldpts, mynewpts, nsteps)
         othertrajectory = interpolate(otheroldpts, othernewpts, nsteps)
         if self.value > other.value:
-            self.canvas.tag_raise(self.item)
-            self.canvas.tag_raise(other.item)
+            self.canvas.tag_raise(self.item_id)
+            self.canvas.tag_raise(other.item_id)
         else:
-            self.canvas.tag_raise(other.item)
-            self.canvas.tag_raise(self.item)
+            self.canvas.tag_raise(other.item_id)
+            self.canvas.tag_raise(self.item_id)
         try:
             for i in range(len(mytrajectory)):
                 mypts = mytrajectory[i]
                 otherpts = othertrajectory[i]
-                self.canvas.coords(self.item, mypts)
-                self.canvas.coords(other.item, otherpts)
+                self.canvas.coords(self.item_id, mypts)
+                self.canvas.coords(other.item_id, otherpts)
                 self.array.wait(50)
         finally:
             mypts = mytrajectory[-1]
             otherpts = othertrajectory[-1]
-            self.canvas.coords(self.item, mypts)
-            self.canvas.coords(other.item, otherpts)
-            self.canvas.itemconfig(self.item, fill=myfill)
-            self.canvas.itemconfig(other.item, fill=otherfill)
+            self.canvas.coords(self.item_id, mypts)
+            self.canvas.coords(other.item_id, otherpts)
+            self.canvas.itemconfig(self.item_id, fill=myfill)
+            self.canvas.itemconfig(other.item_id, fill=otherfill)
 
     def compareto(self, other):
-        myfill = self.canvas.itemcget(self.item, 'fill')
-        otherfill = self.canvas.itemcget(other.item, 'fill')
+        myfill = self.canvas.itemcget(self.item_id, 'fill')
+        otherfill = self.canvas.itemcget(other.item_id, 'fill')
         if self.value < other.value:
             myflash = 'white'
             otherflash = 'black'
@@ -314,12 +314,12 @@
             myflash = otherflash = 'grey'
             outcome = 0
         try:
-            self.canvas.itemconfig(self.item, fill=myflash)
-            self.canvas.itemconfig(other.item, fill=otherflash)
+            self.canvas.itemconfig(self.item_id, fill=myflash)
+            self.canvas.itemconfig(other.item_id, fill=otherflash)
             self.array.wait(500)
         finally:
-            self.canvas.itemconfig(self.item, fill=myfill)
-            self.canvas.itemconfig(other.item, fill=otherfill)
+            self.canvas.itemconfig(self.item_id, fill=myfill)
+            self.canvas.itemconfig(other.item_id, fill=otherfill)
         return outcome
 
     def position(self):

Modified: python/branches/py3k/Demo/tkinter/guido/ss1.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/ss1.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/ss1.py	Tue Oct 26 12:39:14 2010
@@ -3,7 +3,7 @@
 import os
 import re
 import sys
-import cgi
+import html
 from xml.parsers import expat
 
 LEFT, CENTER, RIGHT = "LEFT", "CENTER", "RIGHT"
@@ -201,7 +201,7 @@
             if hasattr(cell, 'xml'):
                 cellxml = cell.xml()
             else:
-                cellxml = '<value>%s</value>' % cgi.escape(cell)
+                cellxml = '<value>%s</value>' % html.escape(cell)
             out.append('<cell row="%s" col="%s">\n  %s\n</cell>' %
                        (y, x, cellxml))
         out.append('</spreadsheet>')
@@ -216,7 +216,7 @@
         f.close()
 
     def load(self, filename):
-        f = open(filename, 'r')
+        f = open(filename, 'rb')
         SheetParser(self).parsefile(f)
         f.close()
 
@@ -382,7 +382,7 @@
         return s % (
             align2xml[self.alignment],
             self.fmt,
-            cgi.escape(self.text))
+            html.escape(self.text))
 
 class FormulaCell(BaseCell):
 

Modified: python/branches/py3k/Demo/tkinter/guido/tkman.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/tkman.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/tkman.py	Tue Oct 26 12:39:14 2010
@@ -7,10 +7,10 @@
 import sys
 from tkinter import *
 
-from ManPage import ManPage
+from manpage import ManPage
 
-MANNDIRLIST = ['/depot/sundry/man/mann','/usr/local/man/mann']
-MAN3DIRLIST = ['/depot/sundry/man/man3','/usr/local/man/man3']
+MANNDIRLIST = ['/usr/local/man/mann', '/usr/share/man/mann']
+MAN3DIRLIST = ['/usr/local/man/man3', '/usr/share/man/man3']
 
 foundmanndir = 0
 for dir in MANNDIRLIST:
@@ -197,7 +197,7 @@
 
     def show_page(self, name):
         file = '%s/%s.?' % (self.chaptervar.get(), name)
-        fp = os.popen('nroff -man %s | ul -i' % file, 'r')
+        fp = os.popen('nroff -man -c %s | ul -i' % file, 'r')
         self.text.kill()
         self.title['text'] = name
         self.text.parsefile(fp)

Modified: python/branches/py3k/Demo/tkinter/guido/wish.py
==============================================================================
--- python/branches/py3k/Demo/tkinter/guido/wish.py	(original)
+++ python/branches/py3k/Demo/tkinter/guido/wish.py	Tue Oct 26 12:39:14 2010
@@ -4,21 +4,25 @@
 import os
 import sys
 
-tk = _tkinter.create(os.environ['DISPLAY'], 'wish', 'Tk', 1)
+tk = _tkinter.create(os.environ['DISPLAY'], 'wish', 'Tk', 1, 1)
 tk.call('update')
 
 cmd = ''
 
-while 1:
-    if cmd: prompt = ''
-    else: prompt = '% '
+while True:
+    if cmd:
+        prompt = ''
+    else:
+        prompt = '% '
     try:
         sys.stdout.write(prompt)
         sys.stdout.flush()
         line = sys.stdin.readline()
+        if not line:
+            break
     except EOFError:
         break
-    cmd = cmd + (line + '\n')
+    cmd += line
     if tk.getboolean(tk.call('info', 'complete', cmd)):
         tk.record(line)
         try:
More information about the Python-checkins mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4