~bennabiy/+junk/python-xlib

« back to all changes in this revision

Viewing changes to Xlib/display.py

  • Committer: Package Import Robot
  • Author(s): Andrew Shadura, Ramkumar Ramachandra, Andrew Shadura
  • Date: 2015-08-13 08:14:19 UTC
  • mfrom: (6.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20150813081419-hdefinnghp2iydkx
Tags: 0.14+20091101-3
[ Ramkumar Ramachandra ]
* Remove useless debugging output (Closes: #565996)

[ Andrew Shadura ]
* Switch to 3.0 (quilt) format.
* Rename patches.
* Use debhelper 9 in its short form.
* Use pybuild.
* Bump Standards-Version.
* Don't build or install PostScript documentation and info files.
* Use system-provided texi2html instead of a shipped version
  (Closes: #795057).
* Update debian/copyright (Closes: #795057).
* Don't install Makefile or texi2html with the documentation.
* Set executable bit for examples.

Show diffs side-by-side

added added

removed removed

Lines of Context:
17
17
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18
18
 
19
19
# Python modules
20
 
import new
 
20
import types
21
21
 
22
22
# Xlib modules
23
 
import error
24
 
import ext
25
 
import X
 
23
from Xlib import error, ext, X
26
24
 
27
25
# Xlib.protocol modules
28
 
import protocol.display
29
 
from protocol import request, event, rq
 
26
from Xlib.protocol import display, request, event, rq
30
27
 
31
28
# Xlib.xobjects modules
32
 
import xobject.resource
33
 
import xobject.drawable
34
 
import xobject.fontable
35
 
import xobject.colormap
36
 
import xobject.cursor
 
29
import Xlib.xobject.resource
 
30
import Xlib.xobject.drawable
 
31
import Xlib.xobject.fontable
 
32
import Xlib.xobject.colormap
 
33
import Xlib.xobject.cursor
37
34
 
38
35
_resource_baseclasses = {
39
 
    'resource': xobject.resource.Resource,
40
 
    'drawable': xobject.drawable.Drawable,
41
 
    'window': xobject.drawable.Window,
42
 
    'pixmap': xobject.drawable.Pixmap,
43
 
    'fontable': xobject.fontable.Fontable,
44
 
    'font': xobject.fontable.Font,
45
 
    'gc': xobject.fontable.GC,
46
 
    'colormap': xobject.colormap.Colormap,
47
 
    'cursor': xobject.cursor.Cursor,
 
36
    'resource': Xlib.xobject.resource.Resource,
 
37
    'drawable': Xlib.xobject.drawable.Drawable,
 
38
    'window': Xlib.xobject.drawable.Window,
 
39
    'pixmap': Xlib.xobject.drawable.Pixmap,
 
40
    'fontable': Xlib.xobject.fontable.Fontable,
 
41
    'font': Xlib.xobject.fontable.Font,
 
42
    'gc': Xlib.xobject.fontable.GC,
 
43
    'colormap': Xlib.xobject.colormap.Colormap,
 
44
    'cursor': Xlib.xobject.cursor.Cursor,
48
45
    }
49
46
 
50
47
_resource_hierarchy = {
55
52
    'fontable': ('font', 'gc')
56
53
    }
57
54
 
58
 
class _BaseDisplay(protocol.display.Display):
 
55
class _BaseDisplay(display.Display):
59
56
    resource_classes = _resource_baseclasses.copy()
60
57
 
61
58
    # Implement a cache of atom names, used by Window objects when
62
59
    # dealing with some ICCCM properties not defined in Xlib.Xatom
63
60
 
64
61
    def __init__(self, *args, **keys):
65
 
        apply(protocol.display.Display.__init__, (self, ) + args, keys)
 
62
        display.Display.__init__(*(self, ) + args, **keys)
66
63
        self._atom_cache = {}
67
64
 
68
65
    def get_atom(self, atomname, only_if_exists=0):
69
 
        if self._atom_cache.has_key(atomname):
 
66
        if atomname in self._atom_cache:
70
67
            return self._atom_cache[atomname]
71
68
 
72
69
        r = request.InternAtom(display = self, name = atomname, only_if_exists = only_if_exists)
119
116
 
120
117
 
121
118
        # Finalize extensions by creating new classes
122
 
        for type, dict in self.class_extension_dicts.items():
123
 
            origcls = self.display.resource_classes[type]
124
 
            self.display.resource_classes[type] = new.classobj(origcls.__name__,
125
 
                                                               (origcls,),
126
 
                                                               dict)
 
119
        for type_, dict in self.class_extension_dicts.items():
 
120
            origcls = self.display.resource_classes[type_]
 
121
            self.display.resource_classes[type_] = type(origcls.__name__,
 
122
                                                        (origcls, object),
 
123
                                                        dict)
127
124
 
128
125
        # Problem: we have already created some objects without the
129
126
        # extensions: the screen roots and default colormaps.
211
208
    def __getattr__(self, attr):
212
209
        try:
213
210
            function = self.display_extension_methods[attr]
214
 
            return new.instancemethod(function, self, self.__class__)
 
211
            return types.MethodType(function, self)
215
212
        except KeyError:
216
213
            raise AttributeError(attr)
217
214
 
272
269
                if hasattr(cls, name):
273
270
                    raise error.MethodOverrideError('attempting to replace %s method: %s' % (type, name))
274
271
 
275
 
                method = new.instancemethod(function, None, cls)
276
 
 
277
272
                # Maybe should check extension overrides too
278
273
                try:
279
 
                    self.class_extension_dicts[type][name] = method
 
274
                    self.class_extension_dicts[type][name] = function
280
275
                except KeyError:
281
 
                    self.class_extension_dicts[type] = { name: method }
 
276
                    self.class_extension_dicts[type] = { name: function }
282
277
 
283
278
    def extension_add_event(self, code, evt, name = None):
284
279
        """extension_add_event(code, evt, [name])
292
287
        extension_event.
293
288
        """
294
289
 
295
 
        newevt = new.classobj(evt.__name__, evt.__bases__,
296
 
                              evt.__dict__.copy())
 
290
        newevt = type(evt.__name__, evt.__bases__,
 
291
                      evt.__dict__.copy())
297
292
        newevt._code = code
298
293
 
299
294
        self.display.add_extension_event(code, newevt)
395
390
            index = 0
396
391
            for sym in syms:
397
392
                if sym != X.NoSymbol:
398
 
                    if self._keymap_syms.has_key(sym):
 
393
                    if sym in self._keymap_syms:
399
394
                        symcodes = self._keymap_syms[sym]
400
395
                        symcodes.append((index, code))
401
396
                        symcodes.sort()
595
590
            self.display.free_resource_id(fid)
596
591
            return None
597
592
        else:
598
 
            cls = self.display.get_resource_class('font', xobject.fontable.Font)
 
593
            cls = self.display.get_resource_class('font', Xlib.xobject.fontable.Font)
599
594
            return cls(self.display, fid, owner = 1)
600
595
 
601
596
    def list_fonts(self, pattern, max_names):