Lightningbeam/PyGUI-2.5.3/build/lib/GUI/GCursors.py

56 lines
1.8 KiB
Python

#--------------------------------------------------------------------------
#
# Python GUI - Cursors - Generic
#
#--------------------------------------------------------------------------
from GUI.Properties import Properties
from GUI.Resources import lookup_resource, find_resource, get_resource
from GUI import Image
def _hotspot_for_resource(resource_name):
path = lookup_resource(resource_name, "hot")
if path:
f = open(path, "rU")
xs, ys = f.readline().split()
return int(xs), int(ys)
else:
return None
class Cursor(Properties):
"""A Cursor is an image representing the mouse pointer.
Constructors:
Cursor(resource_name, hotspot)
Cursor(image, hotspot)
"""
def from_resource(cls, name, hotspot = None, **kwds):
def load(path):
image = Image.from_resource(name, **kwds)
return cls(image, hotspot or _hotspot_for_resource(name))
return get_resource(load, name)
from_resource = classmethod(from_resource)
def __init__(self, spec, hotspot = None):
"""Construct a Cursor from a resource or Image and a hotspot point.
The hotspot defaults to the centre of the image."""
if isinstance(spec, basestring):
self._init_from_resource(spec, hotspot)
else:
self._init_from_image(spec, hotspot)
def _init_from_resource(self, resource_name, hotspot):
image = Image(file = find_resource(resource_name))
if not hotspot:
hotspot = _hotspot_for_resource(resource_name)
self._init_from_image(image, hotspot)
def _init_from_image(self, image, hotspot):
if not hotspot:
width, height = image.size
hotspot = (width // 2, height // 2)
self._init_from_image_and_hotspot(image, hotspot)