symbian-qemu-0.9.1-12/python-2.6.1/Lib/lib-tk/Canvas.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # This module exports classes for the various canvas item types
       
     2 
       
     3 # NOTE: This module was an experiment and is now obsolete.
       
     4 # It's best to use the Tkinter.Canvas class directly.
       
     5 
       
     6 from warnings import warnpy3k
       
     7 warnpy3k("the Canvas module has been removed in Python 3.0", stacklevel=2)
       
     8 del warnpy3k
       
     9 
       
    10 from Tkinter import Canvas, _cnfmerge, _flatten
       
    11 
       
    12 
       
    13 class CanvasItem:
       
    14     def __init__(self, canvas, itemType, *args, **kw):
       
    15         self.canvas = canvas
       
    16         self.id = canvas._create(itemType, args, kw)
       
    17         if not hasattr(canvas, 'items'):
       
    18             canvas.items = {}
       
    19         canvas.items[self.id] = self
       
    20     def __str__(self):
       
    21         return str(self.id)
       
    22     def __repr__(self):
       
    23         return '<%s, id=%d>' % (self.__class__.__name__, self.id)
       
    24     def delete(self):
       
    25         del self.canvas.items[self.id]
       
    26         self.canvas.delete(self.id)
       
    27     def __getitem__(self, key):
       
    28         v = self.canvas.tk.split(self.canvas.tk.call(
       
    29                 self.canvas._w, 'itemconfigure',
       
    30                 self.id, '-' + key))
       
    31         return v[4]
       
    32     cget = __getitem__
       
    33     def __setitem__(self, key, value):
       
    34         self.canvas.itemconfig(self.id, {key: value})
       
    35     def keys(self):
       
    36         if not hasattr(self, '_keys'):
       
    37             self._keys = map(lambda x, tk=self.canvas.tk:
       
    38                              tk.splitlist(x)[0][1:],
       
    39                              self.canvas.tk.splitlist(
       
    40                                      self.canvas._do(
       
    41                                              'itemconfigure',
       
    42                                              (self.id,))))
       
    43         return self._keys
       
    44     def has_key(self, key):
       
    45         return key in self.keys()
       
    46     def __contains__(self, key):
       
    47         return key in self.keys()
       
    48     def addtag(self, tag, option='withtag'):
       
    49         self.canvas.addtag(tag, option, self.id)
       
    50     def bbox(self):
       
    51         x1, y1, x2, y2 = self.canvas.bbox(self.id)
       
    52         return (x1, y1), (x2, y2)
       
    53     def bind(self, sequence=None, command=None, add=None):
       
    54         return self.canvas.tag_bind(self.id, sequence, command, add)
       
    55     def unbind(self, sequence, funcid=None):
       
    56         self.canvas.tag_unbind(self.id, sequence, funcid)
       
    57     def config(self, cnf={}, **kw):
       
    58         return self.canvas.itemconfig(self.id, _cnfmerge((cnf, kw)))
       
    59     def coords(self, pts = ()):
       
    60         flat = ()
       
    61         for x, y in pts: flat = flat + (x, y)
       
    62         return self.canvas.coords(self.id, *flat)
       
    63     def dchars(self, first, last=None):
       
    64         self.canvas.dchars(self.id, first, last)
       
    65     def dtag(self, ttd):
       
    66         self.canvas.dtag(self.id, ttd)
       
    67     def focus(self):
       
    68         self.canvas.focus(self.id)
       
    69     def gettags(self):
       
    70         return self.canvas.gettags(self.id)
       
    71     def icursor(self, index):
       
    72         self.canvas.icursor(self.id, index)
       
    73     def index(self, index):
       
    74         return self.canvas.index(self.id, index)
       
    75     def insert(self, beforethis, string):
       
    76         self.canvas.insert(self.id, beforethis, string)
       
    77     def lower(self, belowthis=None):
       
    78         self.canvas.tag_lower(self.id, belowthis)
       
    79     def move(self, xamount, yamount):
       
    80         self.canvas.move(self.id, xamount, yamount)
       
    81     def tkraise(self, abovethis=None):
       
    82         self.canvas.tag_raise(self.id, abovethis)
       
    83     raise_ = tkraise # BW compat
       
    84     def scale(self, xorigin, yorigin, xscale, yscale):
       
    85         self.canvas.scale(self.id, xorigin, yorigin, xscale, yscale)
       
    86     def type(self):
       
    87         return self.canvas.type(self.id)
       
    88 
       
    89 class Arc(CanvasItem):
       
    90     def __init__(self, canvas, *args, **kw):
       
    91         CanvasItem.__init__(self, canvas, 'arc', *args, **kw)
       
    92 
       
    93 class Bitmap(CanvasItem):
       
    94     def __init__(self, canvas, *args, **kw):
       
    95         CanvasItem.__init__(self, canvas, 'bitmap', *args, **kw)
       
    96 
       
    97 class ImageItem(CanvasItem):
       
    98     def __init__(self, canvas, *args, **kw):
       
    99         CanvasItem.__init__(self, canvas, 'image', *args, **kw)
       
   100 
       
   101 class Line(CanvasItem):
       
   102     def __init__(self, canvas, *args, **kw):
       
   103         CanvasItem.__init__(self, canvas, 'line', *args, **kw)
       
   104 
       
   105 class Oval(CanvasItem):
       
   106     def __init__(self, canvas, *args, **kw):
       
   107         CanvasItem.__init__(self, canvas, 'oval', *args, **kw)
       
   108 
       
   109 class Polygon(CanvasItem):
       
   110     def __init__(self, canvas, *args, **kw):
       
   111         CanvasItem.__init__(self, canvas, 'polygon', *args, **kw)
       
   112 
       
   113 class Rectangle(CanvasItem):
       
   114     def __init__(self, canvas, *args, **kw):
       
   115         CanvasItem.__init__(self, canvas, 'rectangle', *args, **kw)
       
   116 
       
   117 # XXX "Text" is taken by the Text widget...
       
   118 class CanvasText(CanvasItem):
       
   119     def __init__(self, canvas, *args, **kw):
       
   120         CanvasItem.__init__(self, canvas, 'text', *args, **kw)
       
   121 
       
   122 class Window(CanvasItem):
       
   123     def __init__(self, canvas, *args, **kw):
       
   124         CanvasItem.__init__(self, canvas, 'window', *args, **kw)
       
   125 
       
   126 class Group:
       
   127     def __init__(self, canvas, tag=None):
       
   128         if not tag:
       
   129             tag = 'Group%d' % id(self)
       
   130         self.tag = self.id = tag
       
   131         self.canvas = canvas
       
   132         self.canvas.dtag(self.tag)
       
   133     def str(self):
       
   134         return self.tag
       
   135     __str__ = str
       
   136     def _do(self, cmd, *args):
       
   137         return self.canvas._do(cmd, (self.tag,) + _flatten(args))
       
   138     def addtag_above(self, tagOrId):
       
   139         self._do('addtag', 'above', tagOrId)
       
   140     def addtag_all(self):
       
   141         self._do('addtag', 'all')
       
   142     def addtag_below(self, tagOrId):
       
   143         self._do('addtag', 'below', tagOrId)
       
   144     def addtag_closest(self, x, y, halo=None, start=None):
       
   145         self._do('addtag', 'closest', x, y, halo, start)
       
   146     def addtag_enclosed(self, x1, y1, x2, y2):
       
   147         self._do('addtag', 'enclosed', x1, y1, x2, y2)
       
   148     def addtag_overlapping(self, x1, y1, x2, y2):
       
   149         self._do('addtag', 'overlapping', x1, y1, x2, y2)
       
   150     def addtag_withtag(self, tagOrId):
       
   151         self._do('addtag', 'withtag', tagOrId)
       
   152     def bbox(self):
       
   153         return self.canvas._getints(self._do('bbox'))
       
   154     def bind(self, sequence=None, command=None, add=None):
       
   155         return self.canvas.tag_bind(self.id, sequence, command, add)
       
   156     def unbind(self, sequence, funcid=None):
       
   157         self.canvas.tag_unbind(self.id, sequence, funcid)
       
   158     def coords(self, *pts):
       
   159         return self._do('coords', pts)
       
   160     def dchars(self, first, last=None):
       
   161         self._do('dchars', first, last)
       
   162     def delete(self):
       
   163         self._do('delete')
       
   164     def dtag(self, tagToDelete=None):
       
   165         self._do('dtag', tagToDelete)
       
   166     def focus(self):
       
   167         self._do('focus')
       
   168     def gettags(self):
       
   169         return self.canvas.tk.splitlist(self._do('gettags', self.tag))
       
   170     def icursor(self, index):
       
   171         return self._do('icursor', index)
       
   172     def index(self, index):
       
   173         return self.canvas.tk.getint(self._do('index', index))
       
   174     def insert(self, beforeThis, string):
       
   175         self._do('insert', beforeThis, string)
       
   176     def config(self, cnf={}, **kw):
       
   177         return self.canvas.itemconfigure(self.tag, _cnfmerge((cnf,kw)))
       
   178     def lower(self, belowThis=None):
       
   179         self._do('lower', belowThis)
       
   180     def move(self, xAmount, yAmount):
       
   181         self._do('move', xAmount, yAmount)
       
   182     def tkraise(self, aboveThis=None):
       
   183         self._do('raise', aboveThis)
       
   184     lift = tkraise
       
   185     def scale(self, xOrigin, yOrigin, xScale, yScale):
       
   186         self._do('scale', xOrigin, yOrigin, xScale, yScale)
       
   187     def select_adjust(self, index):
       
   188         self.canvas._do('select', ('adjust', self.tag, index))
       
   189     def select_from(self, index):
       
   190         self.canvas._do('select', ('from', self.tag, index))
       
   191     def select_to(self, index):
       
   192         self.canvas._do('select', ('to', self.tag, index))
       
   193     def type(self):
       
   194         return self._do('type')