CVS: anygui/lib/anygui/backends dwgui.py,1.4,1.5
Robin Becker <[email protected]> Mon, 04 Nov 2002 11:47:27 -0800
| Newsgroups | gmane.comp.python.anygui.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/anygui/anygui/lib/anygui/backends
In directory usw-pr-cvs1:/tmp/cvs-serv9341
Modified Files:
dwgui.py
Log Message:
Add primitive resource handling
Index: dwgui.py
===================================================================
RCS file: /cvsroot/anygui/anygui/lib/anygui/backends/dwgui.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -r1.4 -r1.5
*** dwgui.py 3 Nov 2002 19:03:08 -0000 1.4
--- dwgui.py 4 Nov 2002 19:47:25 -0000 1.5
***************
*** 20,23 ****
--- 20,24 ----
from anygui.Events import *
from anygui import application
+ from anygui.Utils import log, setLogFile, logTraceback
################################################################
***************
*** 89,95 ****
GetLastError = kernel32.GetLastError
! _verbose=1
if _verbose:
- from anygui.Utils import log, setLogFile
setLogFile('/tmp/dbg.txt')
--- 90,95 ----
GetLastError = kernel32.GetLastError
! _verbose=0
if _verbose:
setLogFile('/tmp/dbg.txt')
***************
*** 203,208 ****
pass
except:
! import traceback
! traceback.print_exc(1)
return l,t,w,h
--- 203,207 ----
pass
except:
! logTraceback(1)
return l,t,w,h
***************
*** 562,565 ****
--- 561,607 ----
pass
+
+ class Resource:
+ inline = None
+ def __init__(self,text=None,suffix='.bmp',kind='bitmap'):
+ self.text = text
+ self.suffix = suffix
+ self.kind = kind
+ self._handle = None
+
+ def _fn2handle(self,fn):
+ if self.kind=='bitmap':
+ try:
+ self._handle = user32.LoadImage(0,windll.cstring(fn),
+ IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE)
+ except:
+ logTraceback(0)
+ from anygui.backends.dwgui import _lastErrorMessage
+ log(_lastErrorMessage())
+
+ def handle(self):
+ if not self._handle:
+ if self.inline:
+ import zlib, base64, tempfile, os
+ fn = tempfile.mktemp(self.suffix)
+ if _verbose: log('resource:','fn',fn,'kind',self.kind)
+ open(fn,'wb').write(zlib.decompress(base64.decodestring(self.text)))
+ try:
+ self._fn2handle(fn)
+ finally:
+ os.remove(fn)
+ else:
+ self._fn2handle(self.text)
+ if _verbose: log('resource:','-->',self._handle)
+ return self._handle
+
+ def __del__(self):
+ if self._handle:
+ if self.kind=='bitmap':
+ gdi32.DeleteObject(self._handle)
+
+ class inlineResource(Resource):
+ inline = 1
+
##################################################################
class ImageWrapper(ComponentWrapper):
***************
*** 569,573 ****
def _WM_PAINT(self, hwnd, msg, wParam, lParam):
if not self.widget: return
! if _verbose: log('in dwImage _WM_PAINT')
r = ComponentWrapper._WM_PAINT(self, hwnd, msg, wParam, lParam)
self.draw()
--- 611,615 ----
def _WM_PAINT(self, hwnd, msg, wParam, lParam):
if not self.widget: return
! if _verbose: log('Image _WM_PAINT self.__dict__',self.__dict__)
r = ComponentWrapper._WM_PAINT(self, hwnd, msg, wParam, lParam)
self.draw()
***************
*** 575,595 ****
def draw(self,*arg,**kw):
! if not self.widget: return
dc = user32.GetDC(self.widget)
- name = windll.cstring('/python/rlextra/distro/demo/RLImage.bmp')
- if _verbose: log('in draw widget=%s dc=%s dim=%sx%s' % (hex(self.widget),hex(dc),self.proxy.width,self.proxy.height))
- try:
- bmp=user32.LoadImage(0,name,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE)
- except:
- import traceback
- traceback.print_exc()
- from anygui.backends.dwgui import _lastErrorMessage
- log(_lastErrorMessage())
memdc = gdi32.CreateCompatibleDC(dc)
! old = gdi32.SelectObject(memdc,bmp)
gdi32.BitBlt(dc,0,0,self.proxy.width,self.proxy.height,memdc,0,0,0x00CC0020)
gdi32.SelectObject(memdc,old)
gdi32.DeleteDC(memdc)
! gdi32.DeleteObject(bmp)
class WindowWrapper(ContainerMixin,ComponentWrapper):
--- 617,635 ----
def draw(self,*arg,**kw):
! if _verbose: log('Image.draw',self.widget,self._image)
! if not self.widget or not self._image: return
dc = user32.GetDC(self.widget)
memdc = gdi32.CreateCompatibleDC(dc)
! if _verbose: log('Image.draw dc, memdc',dc,memdc)
! old = gdi32.SelectObject(memdc,self._image.handle())
gdi32.BitBlt(dc,0,0,self.proxy.width,self.proxy.height,memdc,0,0,0x00CC0020)
gdi32.SelectObject(memdc,old)
gdi32.DeleteDC(memdc)
!
! def setImage(self,image):
! self._image = image
!
! def getImage(self):
! return self._image
class WindowWrapper(ContainerMixin,ComponentWrapper):
-------------------------------------------------------
This SF.net email is sponsored by: ApacheCon, November 18-21 in
Las Vegas (supported by COMDEX), the only Apache event to be
fully supported by the ASF. http://www.apachecon.com