/usr/share/pyshared/PythonCard/components/image.py is in python-pythoncard 0.8.2-2.
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 | """
__version__ = "$Revision: 1.24 $"
__date__ = "$Date: 2004/08/11 01:58:03 $"
"""
import wx
from PythonCard import event, graphic, widget
USE_GENERIC = wx.Platform == '__WXGTK__'
if USE_GENERIC:
from wx.lib.statbmp import GenStaticBitmap as StaticBitmap
else:
StaticBitmap = wx.StaticBitmap
class ImageSpec(widget.WidgetSpec):
def __init__(self):
events = []
attributes = {
'file' : { 'presence' : 'optional', 'default':'' },
# KEA shouldn't there be a 'file' attribute here
# could call it 'image' to match background above
# but it is mandatory
#'bitmap' : { 'presence' : 'optional', 'default' : None },
# KEA kill border for now, until variations of what is possible are worked out
# use ImageButton if you want images with transparent border
#'border' : { 'presence' : 'optional', 'default' : '3d', 'values' : [ '3d', 'transparent', 'none' ] },
'size' : { 'presence' : 'optional', 'default' : [ -1, -1 ] },
}
widget.WidgetSpec.__init__( self, 'Image', 'Widget', events, attributes )
class Image(widget.Widget, StaticBitmap):
"""
A static image.
"""
_spec = ImageSpec()
def __init__(self, aParent, aResource):
self._bitmap = graphic.Bitmap(aResource.file, aResource.size)
self._file = aResource.file
self._size = tuple(aResource.size)
w = aResource.size[0]
if w == -2:
w = self._bitmap.getWidth()
h = aResource.size[1]
if h == -2:
h = self._bitmap.getHeight()
size = (w, h)
#size = wx.Size( self._bitmap.GetWidth(), self._bitmap.GetHeight() )
##if aResource.border == 'transparent':
## mask = wx.MaskColour(self._bitmap, wxBLACK)
## self._bitmap.SetMask(mask)
StaticBitmap.__init__(
self,
aParent,
widget.makeNewId(aResource.id),
self._bitmap.getBits(),
aResource.position,
size,
style = wx.NO_FULL_REPAINT_ON_RESIZE | wx.CLIP_SIBLINGS,
name = aResource.name
)
widget.Widget.__init__( self, aParent, aResource )
wx.EVT_WINDOW_DESTROY(self, self._OnDestroy)
self._bindEvents(event.WIDGET_EVENTS)
def _OnDestroy(self, event):
# memory leak cleanup
self._bitmap = None
event.Skip()
# KEA added getBitmap, setBitmap
def _getBitmap( self ) :
return self._bitmap
def _setBitmap( self, aValue ) :
self._bitmap = aValue
self.SetBitmap( aValue.getBits() )
# may actually need to refresh the panel as well
# depending on the size of the new bitmap compared
# to the old one
# in addition, the size of the image or imagebutton needs
# to be set appropriately after changing the bitmap so
# there are still a few issues to work out
self.Refresh()
"""
# KEA do we query the Bitmap to find the actual dimensions
# _size can contain -1, and -2
# or provide a special getBitmapSize method?
# this getSize is actually the same as its parent
def _getSize( self ) :
return self.GetSizeTuple() # get the actual size, not (-1, -1)
"""
# KEA special handling for -2 size option
def _setSize(self, aSize):
self._size = tuple(aSize)
w = aSize[0]
if w == -2:
w = self._bitmap.getWidth()
h = aSize[1]
if h == -2:
h = self._bitmap.getHeight()
self.SetSize((w, h))
# KEA 2001-08-02
# right now the image is loaded from a filename
# during initialization
# but later these might not make any sense
# if setBitmap is used directly in user code
def _getFile( self ) :
return self._file
# KEA 2001-08-14
# if we're going to support setting the file
# after initialization, then this will need to handle the bitmap loading
# overhead
def _setFile( self, aFile ) :
self._file = aFile
self._setBitmap(graphic.Bitmap(aFile))
def _setBackgroundColor( self, aColor ) :
aColor = self._getDefaultColor( aColor )
if self._file == '':
bmp = self._bitmap.getBits()
dc = wx.MemoryDC()
dc.SelectObject(bmp)
dc.SetBackground(wx.Brush(aColor))
dc.Clear()
dc.SelectObject(wx.NullBitmap)
self.SetBackgroundColour( aColor )
self.Refresh() # KEA wxPython bug?
backgroundColor = property(widget.Widget._getBackgroundColor, _setBackgroundColor)
bitmap = property(_getBitmap, _setBitmap)
file = property(_getFile, _setFile)
size = property(widget.Widget._getSize, _setSize)
import sys
from PythonCard import registry
registry.Registry.getInstance().register(sys.modules[__name__].Image)
|