-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' into feature/apptools-undo-tools
Conflicts: CHANGES.txt
- Loading branch information
Showing
19 changed files
with
1,046 additions
and
60 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,3 @@ | ||
include kiva/agg/agg.i | ||
include chaco/tests/data/PngSuite/*.png | ||
include chaco/tests/data/PngSuite/LICENSE.txt |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
Enable Tools | ||
============ | ||
|
||
Enable ``Tools`` are ``Interator`` subclasses that do not have to have any | ||
visual representation, and which can be dynamically added and removed from | ||
components by adding or removing them from the component's ``tools`` list. | ||
This permits developers to quickly build up complex behaviours from simple, | ||
reproducible parts without having complex inheritance hierarchies. | ||
|
||
Basic Tools | ||
----------- | ||
|
||
Enable provides a number of basic tools for common interactions. | ||
|
||
ButtonTool | ||
~~~~~~~~~~ | ||
|
||
The :py:class:`ButtonTool` provides basic push-button or checkbox | ||
interactions, depending on how it is configured. The primary interface it | ||
provides is a :py:attr:`clicked` event which is fired when the user clicks in | ||
the region of the underlying component, or when the :py:meth:`click` method is | ||
called. The :py:attr:`clicked` event is fired on mouse up. | ||
|
||
To get checkbox-style behaviour, set :py:attr:`togglable` to ``True`` and | ||
then every click will invert the :py:attr:`checked` trait. The toggle state | ||
can also be changed via the :py:meth:`toggle` method, which does not fire the | ||
:py:attr:`clicked` event when called. For buttons with multi-state toggles, | ||
subclasses can override the :py:meth:`toggle` method to perform more complex | ||
state changes. | ||
|
||
By default, the tool responds to clicks that are within the associated | ||
component, but subclasses can override this behaviour by replacing the | ||
:py:method:`is_clickable` method with something else. | ||
|
||
It will commonly be the case that components or :py:class:`ButtonTool` | ||
subclasses which draw may wish to respond to user interactions by drawing | ||
themselves in a highlighted or selected mode when the mouse is down inside | ||
the button region. The :py:attr:`down` trait provides this information | ||
conveniently, so that users of the tool can change their drawing state and | ||
request redraws when it changes. | ||
|
||
DragTool | ||
~~~~~~~~ | ||
|
||
The :py:class:`DragTool` is an abstract base class that provides basic | ||
interaction support for draging within Enable. Many other tools within | ||
Enable and Chaco use it. | ||
|
||
HoverTool | ||
~~~~~~~~~ | ||
|
||
The :py:class:`HoverTool` is a simple tool that calls a callback when the | ||
mouse has been held steadily over the component for a period of time. | ||
|
||
MoveTool | ||
~~~~~~~~ | ||
|
||
A :py:class:`DragTool` subclass that allows a user to move a component around | ||
its container by dragging. | ||
|
||
ResizeTool | ||
~~~~~~~~~~ | ||
|
||
A :py:class:`DragTool` subclass that allows a user to resize a component by | ||
dragging from the edges of the component. | ||
|
||
ValueDragTool | ||
~~~~~~~~~~~~~ | ||
|
||
A :py:class:`DragTool` subclass that allows a drag operation to set an | ||
arbitrary value. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
""" Defines the Image component class. | ||
""" | ||
|
||
from __future__ import absolute_import | ||
|
||
# Enthought library imports | ||
from traits.api import Array, Bool, Enum, Instance, Property, cached_property | ||
|
||
# Local imports | ||
from enable.component import Component | ||
from kiva.image import GraphicsContext | ||
|
||
|
||
class Image(Component): | ||
""" Component that displays a static image | ||
This is extremely simple right now. By default it will draw the array into | ||
the entire region occupied by the component, stretching or shrinking as | ||
needed. By default the bounds are set to the width and height of the data | ||
array, and we provide the same information to constraints-based layout | ||
with the layout_size_hint trait. | ||
""" | ||
|
||
#: the image data as an array | ||
data = Array(shape=(None, None, (3,4)), dtype='uint8') | ||
|
||
#: the format of the image data (eg. RGB vs. RGBA) | ||
format = Property(Enum('rgb24', 'rgba32'), depends_on='data') | ||
|
||
#: the size-hint for constraints-based layout | ||
layout_size_hint = Property(data, depends_on='data') | ||
|
||
#: the image as an Image GC | ||
_image = Property(Instance(GraphicsContext), depends_on='data') | ||
|
||
@classmethod | ||
def from_file(cls, filename, **traits): | ||
from PIL import Image | ||
from numpy import asarray | ||
data = asarray(Image.open(filename)) | ||
return cls(data=data, **traits) | ||
|
||
def __init__(self, data, **traits): | ||
# the default bounds are the size of the image | ||
traits.setdefault('bounds', data.shape[1::-1]) | ||
super(Image, self).__init__(data=data, **traits) | ||
|
||
def _draw_mainlayer(self, gc, view_bounds=None, mode="normal"): | ||
""" Draws the image. """ | ||
with gc: | ||
gc.draw_image(self._image, (self.x, self.y, self.width, self.height)) | ||
|
||
@cached_property | ||
def _get_format(self): | ||
if self.data.shape[-1] == 3: | ||
return 'rgb24' | ||
elif self.data.shape[-1] == 4: | ||
return 'rgba32' | ||
else: | ||
raise ValueError('Data array not correct shape') | ||
|
||
@cached_property | ||
def _get_layout_size_hint(self): | ||
return self.data.shape[1::-1] | ||
|
||
@cached_property | ||
def _get__image(self): | ||
if not self.data.flags['C_CONTIGUOUS']: | ||
data = self.data.copy() | ||
else: | ||
data = self.data | ||
image_gc = GraphicsContext(data, pix_format=self.format) | ||
return image_gc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
PngSuite | ||
-------- | ||
|
||
Permission to use, copy, modify and distribute these images for any | ||
purpose and without fee is hereby granted. | ||
|
||
|
||
(c) Willem van Schaik, 1996, 2011 |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.