/usr/lib/python2.7/dist-packages/guiqwt/interfaces.py is in python-guiqwt 3.0.3-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 | # -*- coding: utf-8 -*-
#
# Copyright © 2009-2010 CEA
# Pierre Raybaut
# Licensed under the terms of the CECILL License
# (see guiqwt/__init__.py for details)
"""
guiqwt.interfaces
-----------------
The `interfaces` module provides object interface classes for `guiqwt`.
"""
class IItemType(object):
"""Item types are used to categorized items in a
broader way than objects obeying IBasePlotItem.
The necessity arises from the fact that GuiQwt Items
can inherit from different base classes and still
provide functionalities akin to a given ItemType
the types() method of an item returns a list of interfaces
this item supports
"""
pass
class ITrackableItemType(IItemType):
def get_closest_coordinates(self, xc, yc):
pass
def get_coordinates_label(self, x, y):
pass
class IDecoratorItemType(IItemType):
"""represents a decorative item (usually not active)
such as grid, or axes markers"""
pass
class ICurveItemType(IItemType):
"""A curve"""
pass
class IImageItemType(IItemType):
"""An image"""
pass
class IVoiImageItemType(IItemType):
"""An image with set_lut_range, get_lut_range"""
def set_lut_range(self, lut_range):
pass
def get_lut_range(self):
"""Get the current active lut range"""
return 0., 1.
def get_lut_range_full(self):
"""Return full dynamic range"""
return 10., 20.
def get_lut_range_max(self):
"""Get maximum range for this dataset"""
return 0., 255.
class IColormapImageItemType(IItemType):
"""An image with an associated colormap"""
pass
class IExportROIImageItemType(IItemType):
"""An image with export_roi"""
def export_roi(self, src_rect, dst_rect, dst_image,
apply_lut=False, apply_interpolation=False,
original_resolution=False):
pass
class IStatsImageItemType(IItemType):
"""An image supporting stats computations"""
def get_stats(self, x0, y0, x1, y1):
"""Return formatted string with stats on image rectangular area
(output should be compatible with AnnotatedShape.get_infos)"""
return dict()
class ICSImageItemType(IItemType):
"""An image supporting X/Y cross sections"""
def get_xsection(self, y0, apply_lut=False):
"""Return cross section along x-axis at y=y0"""
assert isinstance(y0, (float, int))
return np.array([])
def get_ysection(self, x0, apply_lut=False):
"""Return cross section along y-axis at x=x0"""
assert isinstance(x0, (float, int))
return np.array([])
def get_average_xsection(self, x0, y0, x1, y1, apply_lut=False):
"""Return average cross section along x-axis"""
return np.array([])
def get_average_ysection(self, x0, y0, x1, y1, apply_lut=False):
"""Return average cross section along y-axis"""
return np.array([])
class IShapeItemType(IItemType):
"""A shape (annotation)"""
pass
class ISerializableType(IItemType):
"""An item that can be serialized"""
def serialize(self, writer):
"""Serialize object to HDF5 writer"""
pass
def deserialize(self, reader):
"""Deserialize object from HDF5 reader"""
pass
# XXX: we should differentiate shapes and annotation :
# an annotation is a shape but is supposed to stay on the canvas
# while a shape only could be the rectangle used to select the zoom
# area
class IBasePlotItem(object):
"""
This is the interface that QwtPlotItem objects must implement
to be handled by *BasePlot* widgets
"""
selected = False # True if this item is selected
_readonly = False
_private = False
_can_select = True # Indicate this item can be selected
_can_move = True
_can_resize = True
_can_rotate = True
def set_selectable(self, state):
"""Set item selectable state"""
self._can_select = state
def set_resizable(self, state):
"""Set item resizable state
(or any action triggered when moving an handle, e.g. rotation)"""
self._can_resize = state
def set_movable(self, state):
"""Set item movable state"""
self._can_move = state
def set_rotatable(self, state):
"""Set item rotatable state"""
self._can_rotate = state
def can_select(self):
return self._can_select
def can_resize(self):
return self._can_resize
def can_move(self):
return self._can_move
def can_rotate(self):
return self._can_rotate
def types(self):
"""Returns a group or category for this item
this should be a class object inheriting from
IItemType
"""
return (IItemType,)
def set_readonly(self, state):
"""Set object readonly state"""
self._readonly = state
def is_readonly(self):
"""Return object readonly state"""
return self._readonly
def set_private(self, state):
"""Set object as private"""
self._private = state
def is_private(self):
"""Return True if object is private"""
return self._private
def select(self):
"""
Select the object and eventually change its appearance to highlight the
fact that it's selected
"""
# should call plot.invalidate() or replot to force redraw
pass
def unselect(self):
"""
Unselect the object and eventually restore its original appearance to
highlight the fact that it's not selected anymore
"""
# should call plot.invalidate() or replot to force redraw
pass
def hit_test(self, pos):
"""
Return a tuple with four elements:
(distance, attach point, inside, other_object)
distance : distance in pixels (canvas coordinates)
to the closest attach point
attach point: handle of the attach point
inside: True if the mouse button has been clicked inside the object
other_object: if not None, reference of the object which
will be considered as hit instead of self
"""
pass
def update_item_parameters(self):
"""
Update item parameters (dataset) from object properties
"""
pass
def get_item_parameters(self, itemparams):
"""
Appends datasets to the list of DataSets describing the parameters
used to customize apearance of this item
"""
pass
def set_item_parameters(self, itemparams):
"""
Change the appearance of this item according
to the parameter set provided
params is a list of Datasets of the same types as those returned
by get_item_parameters
"""
pass
def move_local_point_to(self, handle, pos, ctrl=None):
"""Move a handle as returned by hit_test to the new position pos
ctrl: True if <Ctrl> button is being pressed, False otherwise"""
pass
def move_local_shape(self, old_pos, new_pos):
"""
Translate the shape such that old_pos becomes new_pos
in canvas coordinates
"""
pass
def move_with_selection(self, delta_x, delta_y):
"""
Translate the shape together with other selected items
delta_x, delta_y: translation in plot coordinates
"""
pass
class IBaseImageItem(object):
"""
QwtPlotItem objects handled by *ImagePlot* widgets must implement
_both_ the IBasePlotItem interface and this one
"""
_can_setfullscale = True # Image will be set full scale when added to plot
_can_sethistogram = False # A levels histogram will be bound to image
def can_setfullscale(self):
return self._can_setfullscale
def can_sethistogram(self):
return self._can_sethistogram
class IHistDataSource(object):
def get_histogram(self, nbins):
# this raises NameError but it's here to show what this method
# should return
return numpy.histogram(data, nbins)
class IPlotManager(object):
"""A 'controller' that organizes relations between
plots (BasePlot), panels, tools (GuiTool) and toolbar
"""
def add_plot(self, plot, plot_id="default"):
assert id not in self.plots
assert isinstance(plot, BasePlot)
def add_panel(self, panel):
assert id not in self.panels
def add_toolbar(self, toolbar, toolbar_id="default"):
assert id not in self.toolbars
def get_active_plot(self):
"""The active plot is the plot whose canvas has the focus
otherwise it's the "default" plot
"""
pass
class IPanel(object):
"""Interface for panels controlled by PlotManager"""
@staticmethod
def __inherits__():
from guiqwt.panels import PanelWidget
return PanelWidget
def register_panel(self, manager):
"""Register panel to plot manager"""
pass
def configure_panel(self):
"""Configure panel"""
pass
|