Source code for enaml.icon_provider

#------------------------------------------------------------------------------
#  Copyright (c) 2012, Enthought, Inc.
#  All rights reserved.
#------------------------------------------------------------------------------
from abc import ABCMeta, abstractmethod

from traits.api import HasTraits, Enum, Instance, List

from .image_provider import Image
from .resource import Resource


[docs]class IconImage(HasTraits): """ An object representing an image in an icon. Instances of this class are used to populate the `images` list of an `Icon` instance. Instances of this class should be treated as read-only once they are created. """ #: The widget mode for which this icon should apply. mode = Enum('normal', 'active', 'disabled', 'selected') #: The widget state for which this icon should apply. state = Enum('off', 'on') #: The image to use for this icon. image = Instance(Image)
[docs] def snapshot(self): """ Get a snapshot dictionary for this icon image. """ snap = {} snap['mode'] = self.mode snap['state'] = self.state snap['image'] = self.image.snapshot() if self.image else None return snap
[docs]class Icon(Resource): """ A resource object representing an icon. Instances of this class are created by an `IconProvider` when it handles a request for an icon. Instances of this class should be treated as read-only once they are created. """ #: The list of icon images which compose this icon. images = List(IconImage)
[docs] def snapshot(self): """ Get a snapshot dictionary for this icon. """ snap = super(Icon, self).snapshot() snap['images'] = [image.snapshot() for image in self.images] return snap
[docs]class IconProvider(object): """ An abstract API definition for an icon provider object. """ __metaclass__ = ABCMeta @abstractmethod
[docs] def request_icon(self, path, callback): """ Request an icon from this provider. Parameters ---------- path : str The requested path of the icon, with the provider prefix removed. For example, if the full icon source path was: `icon://myprovider/icons/foo` then the path passed to this method will be `icons/foo`. callback : callable A callable which should be invoked when the icon is loaded. It accepts a single argument, which is the loaded `Icon` object. It is safe to invoke this callable from a thread. """ raise NotImplementedError