summaryrefslogtreecommitdiff
path: root/gem/aes.py
diff options
context:
space:
mode:
authorJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-22 19:05:15 -0400
committerJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-22 19:05:15 -0400
commit6a51839ca252a993fee42c9e1b7c7079e74d652e (patch)
tree7deeb95ec14c10bf243d268cc2fdff4f1ebfa22e /gem/aes.py
parent4887bfbc732ff6ffe456a980874c65219ca08674 (diff)
downloadgempy-6a51839ca252a993fee42c9e1b7c7079e74d652e.tar.gz
gempy-6a51839ca252a993fee42c9e1b7c7079e74d652e.zip
Various fixes to get the example running.
Diffstat (limited to 'gem/aes.py')
-rw-r--r--gem/aes.py46
1 files changed, 32 insertions, 14 deletions
diff --git a/gem/aes.py b/gem/aes.py
index 3b80b4e..23f7020 100644
--- a/gem/aes.py
+++ b/gem/aes.py
@@ -1,3 +1,5 @@
+import struct
+
import _gem
from error import GEMError
@@ -54,9 +56,10 @@ def window_update(action):
class Window:
"""A class wrapping GEM windows and their functionality"""
- def __init__(self, type=NAME|FULLER|CLOSER|SIZER):
+ def __init__(self, type=NAME|FULLER|MOVER|CLOSER|SIZER):
"""Creates (but does not show) a window"""
self.id = _gem.wind_create(type,(0,0,10,10))
+ self.name = None
def open(self,rect):
"""Opens a window using the the specified rectangle (x,y,w,h)"""
@@ -69,10 +72,20 @@ class Window:
def destroy(self):
"""Deletes an existing GEM window"""
_gem.wind_delete(self.id)
-
+
+ def resize(self,rect):
+ """Resizes/moves a window"""
+ _gem.wind_set(self.id,WF_CURRXYWH,rect)
+
+ def top(self):
+ """Sets the current window to topmost"""
+ _gem.wind_set(self.id,WF_TOP,(self.id,0,0,0))
+ print "Topped!"
+
def set_name(self,name):
"""Sets the name of a window"""
- _gem.wind_set(self.id,WF_NAME,name)
+ _gem.wind_set_string(self.id,WF_NAME,name)
+ self.name = name
def begin_update(self):
window_update(BEG_UPDATE)
@@ -129,17 +142,22 @@ class MessageEvent(Event):
"""Retrieves a word from the raw message array"""
if index > 7:
raise ValueError('Message index must be between 0 and (including) 7.')
- return int(self.raw_message[index]) + int(self.raw_message[index+1])
-
+ try:
+ ret = struct.unpack_from("@h",self.raw_message,offset=index*2)
+ except SystemError:
+ print 'Warning: SystemError on struct.unpack_from in get_word()'
+ return 0
+ return ret[0]
+
def process(self):
self.message = self.get_word(0)
self.sender_id = self.get_word(1)
extended_data_length = self.get_word(2)
- if extended_data_length > 0:
- self.extended_data = _gem.appl_read(self.sender_id,extended_data_length)
- else:
- self.extended_data = None
+ #if extended_data_length > 0:
+ # self.extended_data = _gem.appl_read(self.sender_id,extended_data_length)
+ #else:
+ # self.extended_data = None
class Application:
@@ -193,9 +211,9 @@ class Application:
"""Opens an application-managed window"""
w = Window()
w.begin_update()
- w.open(rect)
if name is not None:
w.set_name(name)
+ w.open(rect)
w.end_update()
self.windows.append(w)
@@ -245,10 +263,10 @@ class Application:
ret = _gem.evnt_multi(events,**kwdict)
if ret['events'] & MU_MESAG:
- if type(ret['message']) is str:
- self.message_event.raw_message = bytearray(ret['message'])
- else:
- self.message_event.raw_message = ret['message']
+ #if type(ret['message']) is str:
+ # self.message_event.raw_message = bytearray(ret['message'])
+ #else:
+ self.message_event.raw_message = ret['message']
self.message_event.process()
if ret['events'] & MU_BUTTON: