Issue #1135: Add the XView and YView mix-ins to avoid duplicating

the xview* and yview* methods.
This commit is contained in:
Guilherme Polo 2009-08-14 14:36:45 +00:00
parent f198ac2db2
commit e45f017023
4 changed files with 54 additions and 131 deletions

View File

@ -850,7 +850,7 @@ class FileEntry(TixWidget):
# FIXME: return python object # FIXME: return python object
pass pass
class HList(TixWidget): class HList(TixWidget, XView, YView):
"""HList - Hierarchy display widget can be used to display any data """HList - Hierarchy display widget can be used to display any data
that have a hierarchical structure, for example, file system directory that have a hierarchical structure, for example, file system directory
trees. The list entries are indented and connected by branch lines trees. The list entries are indented and connected by branch lines
@ -1037,12 +1037,6 @@ class HList(TixWidget):
def show_entry(self, entry): def show_entry(self, entry):
return self.tk.call(self._w, 'show', 'entry', entry) return self.tk.call(self._w, 'show', 'entry', entry)
def xview(self, *args):
self.tk.call(self._w, 'xview', *args)
def yview(self, *args):
self.tk.call(self._w, 'yview', *args)
class InputOnly(TixWidget): class InputOnly(TixWidget):
"""InputOnly - Invisible widget. Unix only. """InputOnly - Invisible widget. Unix only.
@ -1419,7 +1413,7 @@ class StdButtonBox(TixWidget):
if self.subwidget_list.has_key(name): if self.subwidget_list.has_key(name):
self.tk.call(self._w, 'invoke', name) self.tk.call(self._w, 'invoke', name)
class TList(TixWidget): class TList(TixWidget, XView, YView):
"""TList - Hierarchy display widget which can be """TList - Hierarchy display widget which can be
used to display data in a tabular format. The list entries of a TList used to display data in a tabular format. The list entries of a TList
widget are similar to the entries in the Tk listbox widget. The main widget are similar to the entries in the Tk listbox widget. The main
@ -1502,12 +1496,6 @@ class TList(TixWidget):
def selection_set(self, first, last=None): def selection_set(self, first, last=None):
self.tk.call(self._w, 'selection', 'set', first, last) self.tk.call(self._w, 'selection', 'set', first, last)
def xview(self, *args):
self.tk.call(self._w, 'xview', *args)
def yview(self, *args):
self.tk.call(self._w, 'yview', *args)
class Tree(TixWidget): class Tree(TixWidget):
"""Tree - The tixTree widget can be used to display hierachical """Tree - The tixTree widget can be used to display hierachical
data in a tree form. The user can adjust data in a tree form. The user can adjust
@ -1777,7 +1765,7 @@ class CObjView(TixWidget):
pass pass
class Grid(TixWidget): class Grid(TixWidget, XView, YView):
'''The Tix Grid command creates a new window and makes it into a '''The Tix Grid command creates a new window and makes it into a
tixGrid widget. Additional options, may be specified on the command tixGrid widget. Additional options, may be specified on the command
line or in the option database to configure aspects such as its cursor line or in the option database to configure aspects such as its cursor
@ -1865,22 +1853,6 @@ class Grid(TixWidget):
# def size dim index ?option value ...? # def size dim index ?option value ...?
# def unset x y # def unset x y
def xview(self):
return self._getdoubles(self.tk.call(self, 'xview'))
def xview_moveto(self, fraction):
self.tk.call(self,'xview', 'moveto', fraction)
def xview_scroll(self, count, what="units"):
"Scroll right (count>0) or left <count> of units|pages"
self.tk.call(self, 'xview', 'scroll', count, what)
def yview(self):
return self._getdoubles(self.tk.call(self, 'yview'))
def yview_moveto(self, fraction):
self.tk.call(self,'ysview', 'moveto', fraction)
def yview_scroll(self, count, what="units"):
"Scroll down (count>0) or up <count> of units|pages"
self.tk.call(self, 'yview', 'scroll', count, what)
class ScrolledGrid(Grid): class ScrolledGrid(Grid):
'''Scrolled Grid widgets''' '''Scrolled Grid widgets'''

View File

@ -1414,6 +1414,48 @@ class CallWrapper:
self.widget._report_exception() self.widget._report_exception()
class XView:
"""Mix-in class for querying and changing the horizontal position
of a widget's window."""
def xview(self, *args):
"""Query and change the horizontal position of the view."""
res = self.tk.call(self._w, 'xview', *args)
if not args:
return self._getdoubles(res)
def xview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total width of the canvas is off-screen to the left."""
self.tk.call(self._w, 'xview', 'moveto', fraction)
def xview_scroll(self, number, what):
"""Shift the x-view according to NUMBER which is measured in "units"
or "pages" (WHAT)."""
self.tk.call(self._w, 'xview', 'scroll', number, what)
class YView:
"""Mix-in class for querying and changing the vertical position
of a widget's window."""
def yview(self, *args):
"""Query and change the vertical position of the view."""
res = self.tk.call(self._w, 'yview', *args)
if not args:
return self._getdoubles(res)
def yview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total height of the canvas is off-screen to the top."""
self.tk.call(self._w, 'yview', 'moveto', fraction)
def yview_scroll(self, number, what):
"""Shift the y-view according to NUMBER which is measured in
"units" or "pages" (WHAT)."""
self.tk.call(self._w, 'yview', 'scroll', number, what)
class Wm: class Wm:
"""Provides functions for the communication with the window manager.""" """Provides functions for the communication with the window manager."""
@ -2057,7 +2099,7 @@ def At(x, y=None):
else: else:
return '@%r,%r' % (x, y) return '@%r,%r' % (x, y)
class Canvas(Widget): class Canvas(Widget, XView, YView):
"""Canvas widget to display graphical elements like lines or text.""" """Canvas widget to display graphical elements like lines or text."""
def __init__(self, master=None, cnf={}, **kw): def __init__(self, master=None, cnf={}, **kw):
"""Construct a canvas widget with the parent MASTER. """Construct a canvas widget with the parent MASTER.
@ -2297,30 +2339,6 @@ class Canvas(Widget):
def type(self, tagOrId): def type(self, tagOrId):
"""Return the type of the item TAGORID.""" """Return the type of the item TAGORID."""
return self.tk.call(self._w, 'type', tagOrId) or None return self.tk.call(self._w, 'type', tagOrId) or None
def xview(self, *args):
"""Query and change horizontal position of the view."""
if not args:
return self._getdoubles(self.tk.call(self._w, 'xview'))
self.tk.call((self._w, 'xview') + args)
def xview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total width of the canvas is off-screen to the left."""
self.tk.call(self._w, 'xview', 'moveto', fraction)
def xview_scroll(self, number, what):
"""Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'xview', 'scroll', number, what)
def yview(self, *args):
"""Query and change vertical position of the view."""
if not args:
return self._getdoubles(self.tk.call(self._w, 'yview'))
self.tk.call((self._w, 'yview') + args)
def yview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total height of the canvas is off-screen to the top."""
self.tk.call(self._w, 'yview', 'moveto', fraction)
def yview_scroll(self, number, what):
"""Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'yview', 'scroll', number, what)
class Checkbutton(Widget): class Checkbutton(Widget):
"""Checkbutton widget which is either in on- or off-state.""" """Checkbutton widget which is either in on- or off-state."""
@ -2351,7 +2369,7 @@ class Checkbutton(Widget):
"""Toggle the button.""" """Toggle the button."""
self.tk.call(self._w, 'toggle') self.tk.call(self._w, 'toggle')
class Entry(Widget): class Entry(Widget, XView):
"""Entry widget which allows to display simple text.""" """Entry widget which allows to display simple text."""
def __init__(self, master=None, cnf={}, **kw): def __init__(self, master=None, cnf={}, **kw):
"""Construct an entry widget with the parent MASTER. """Construct an entry widget with the parent MASTER.
@ -2414,16 +2432,6 @@ class Entry(Widget):
"""Set the variable end of a selection to INDEX.""" """Set the variable end of a selection to INDEX."""
self.tk.call(self._w, 'selection', 'to', index) self.tk.call(self._w, 'selection', 'to', index)
select_to = selection_to select_to = selection_to
def xview(self, index):
"""Query and change horizontal position of the view."""
self.tk.call(self._w, 'xview', index)
def xview_moveto(self, fraction):
"""Adjust the view in the window so that FRACTION of the
total width of the entry is off-screen to the left."""
self.tk.call(self._w, 'xview', 'moveto', fraction)
def xview_scroll(self, number, what):
"""Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'xview', 'scroll', number, what)
class Frame(Widget): class Frame(Widget):
"""Frame widget which may contain other widgets and can have a 3D border.""" """Frame widget which may contain other widgets and can have a 3D border."""
@ -2465,7 +2473,7 @@ class Label(Widget):
""" """
Widget.__init__(self, master, 'label', cnf, kw) Widget.__init__(self, master, 'label', cnf, kw)
class Listbox(Widget): class Listbox(Widget, XView, YView):
"""Listbox widget which can display a list of strings.""" """Listbox widget which can display a list of strings."""
def __init__(self, master=None, cnf={}, **kw): def __init__(self, master=None, cnf={}, **kw):
"""Construct a listbox widget with the parent MASTER. """Construct a listbox widget with the parent MASTER.
@ -2544,30 +2552,6 @@ class Listbox(Widget):
def size(self): def size(self):
"""Return the number of elements in the listbox.""" """Return the number of elements in the listbox."""
return getint(self.tk.call(self._w, 'size')) return getint(self.tk.call(self._w, 'size'))
def xview(self, *what):
"""Query and change horizontal position of the view."""
if not what:
return self._getdoubles(self.tk.call(self._w, 'xview'))
self.tk.call((self._w, 'xview') + what)
def xview_moveto(self, fraction):
"""Adjust the view in the window so that FRACTION of the
total width of the entry is off-screen to the left."""
self.tk.call(self._w, 'xview', 'moveto', fraction)
def xview_scroll(self, number, what):
"""Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'xview', 'scroll', number, what)
def yview(self, *what):
"""Query and change vertical position of the view."""
if not what:
return self._getdoubles(self.tk.call(self._w, 'yview'))
self.tk.call((self._w, 'yview') + what)
def yview_moveto(self, fraction):
"""Adjust the view in the window so that FRACTION of the
total width of the entry is off-screen to the top."""
self.tk.call(self._w, 'yview', 'moveto', fraction)
def yview_scroll(self, number, what):
"""Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'yview', 'scroll', number, what)
def itemcget(self, index, option): def itemcget(self, index, option):
"""Return the resource value for an ITEM and an OPTION.""" """Return the resource value for an ITEM and an OPTION."""
return self.tk.call( return self.tk.call(
@ -2814,7 +2798,7 @@ class Scrollbar(Widget):
class Text(Widget): class Text(Widget, XView, YView):
"""Text widget which can display text in various forms.""" """Text widget which can display text in various forms."""
def __init__(self, master=None, cnf={}, **kw): def __init__(self, master=None, cnf={}, **kw):
"""Construct a text widget with the parent MASTER. """Construct a text widget with the parent MASTER.
@ -3136,32 +3120,6 @@ class Text(Widget):
"""Return all names of embedded windows in this widget.""" """Return all names of embedded windows in this widget."""
return self.tk.splitlist( return self.tk.splitlist(
self.tk.call(self._w, 'window', 'names')) self.tk.call(self._w, 'window', 'names'))
def xview(self, *what):
"""Query and change horizontal position of the view."""
if not what:
return self._getdoubles(self.tk.call(self._w, 'xview'))
self.tk.call((self._w, 'xview') + what)
def xview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total width of the canvas is off-screen to the left."""
self.tk.call(self._w, 'xview', 'moveto', fraction)
def xview_scroll(self, number, what):
"""Shift the x-view according to NUMBER which is measured
in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'xview', 'scroll', number, what)
def yview(self, *what):
"""Query and change vertical position of the view."""
if not what:
return self._getdoubles(self.tk.call(self._w, 'yview'))
self.tk.call((self._w, 'yview') + what)
def yview_moveto(self, fraction):
"""Adjusts the view in the window so that FRACTION of the
total height of the canvas is off-screen to the top."""
self.tk.call(self._w, 'yview', 'moveto', fraction)
def yview_scroll(self, number, what):
"""Shift the y-view according to NUMBER which is measured
in "units" or "pages" (WHAT)."""
self.tk.call(self._w, 'yview', 'scroll', number, what)
def yview_pickplace(self, *what): def yview_pickplace(self, *what):
"""Obsolete function, use see.""" """Obsolete function, use see."""
self.tk.call((self._w, 'yview', '-pickplace') + what) self.tk.call((self._w, 'yview', '-pickplace') + what)
@ -3347,7 +3305,7 @@ def image_names(): return _default_root.tk.call('image', 'names')
def image_types(): return _default_root.tk.call('image', 'types') def image_types(): return _default_root.tk.call('image', 'types')
class Spinbox(Widget): class Spinbox(Widget, XView):
"""spinbox widget.""" """spinbox widget."""
def __init__(self, master=None, cnf={}, **kw): def __init__(self, master=None, cnf={}, **kw):
"""Construct a spinbox widget with the parent MASTER. """Construct a spinbox widget with the parent MASTER.

View File

@ -1170,7 +1170,7 @@ class Sizegrip(Widget):
Widget.__init__(self, master, "ttk::sizegrip", kw) Widget.__init__(self, master, "ttk::sizegrip", kw)
class Treeview(Widget): class Treeview(Widget, Tkinter.XView, Tkinter.YView):
"""Ttk Treeview widget displays a hierarchical collection of items. """Ttk Treeview widget displays a hierarchical collection of items.
Each item has a textual label, an optional image, and an optional list Each item has a textual label, an optional image, and an optional list
@ -1480,16 +1480,6 @@ class Treeview(Widget):
return self.tk.call(self._w, "tag", "has", tagname, item) return self.tk.call(self._w, "tag", "has", tagname, item)
def xview(self, *args):
"""Query or modify horizontal position of the treeview."""
return self.tk.call(self._w, "xview", *args)
def yview(self, *args):
"""Query or modify vertical position of the treeview."""
return self.tk.call(self._w, "yview", *args)
# Extensions # Extensions
class LabeledScale(Frame, object): class LabeledScale(Frame, object):

View File

@ -354,6 +354,9 @@ Core and Builtins
Library Library
------- -------
- Issue #1135: Add the XView and YView mix-ins to avoid duplicating
the xview* and yview* methods.
- Issue #6629: Fix a data corruption issue in the new `io` package, which could - Issue #6629: Fix a data corruption issue in the new `io` package, which could
occur when writing to a BufferedRandom object (e.g. a file opened in "rb+" or occur when writing to a BufferedRandom object (e.g. a file opened in "rb+" or
"wb+" mode) after having buffered a certain amount of data for reading. This "wb+" mode) after having buffered a certain amount of data for reading. This