diff options
| author | Jeff Armstrong <jeffrey.armstrong@approximatrix.com> | 2011-07-25 21:50:26 -0400 |
|---|---|---|
| committer | Jeff Armstrong <jeffrey.armstrong@approximatrix.com> | 2011-07-25 21:50:26 -0400 |
| commit | e4d9f600d8359e82b7a689896727080d570ab8a8 (patch) | |
| tree | c135a917b2c58152bf60ce474c505c1f7ba468c7 /simple.py | |
| parent | 5eaecae93f7ba32b6bec9515dfa465130bc8b808 (diff) | |
| download | gempy-e4d9f600d8359e82b7a689896727080d570ab8a8.tar.gz gempy-e4d9f600d8359e82b7a689896727080d570ab8a8.zip | |
Added menu highlight/normal switch. Fixed dialog handling. Extended simple application.
Diffstat (limited to 'simple.py')
| -rw-r--r-- | simple.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/simple.py b/simple.py new file mode 100644 index 0000000..275ef8c --- /dev/null +++ b/simple.py @@ -0,0 +1,85 @@ +import gem +import gem.vdi + +# Taken from resource headers +MENU = 0 +M_ABOUT = 7 +M_QUIT = 16 +ABOUT = 1 +B_ABOUT_OK = 1 + +def redraw(window): + + window.begin_update() + vh = window.graphics_handle() + gem.vdi.vsf_color(vh,0) + + for r in window.get_invalid_rectangles(): + todraw = window.intersect_work_area(r) + if todraw is not None: + gem.vdi.vs_clip(vh, True, todraw) + gem.vdi.bar(vh,todraw) + gem.vdi.vs_clip(vh, False, todraw) + + window.end_update() + +class AppMessageEvent(gem.MessageEvent): + def __init__(self,app): + gem.MessageEvent.__init__(self) + + self.app = app + self.window = app.windows[0] + + def handle_menu(self, item, title=None): + if item == M_QUIT: + self.app.send_message((gem.WM_CLOSED, 0, 0, self.window.id)) + + elif item == M_ABOUT: + dlg = self.app.get_resource_address(gem.R_TREE,ABOUT) + self.app.draw_tree(dlg,2) + self.app.form_do(dlg) + + if title is not None: + self.app.set_menu_state(title) + + def process(self): + + # First call the super's process() + gem.MessageEvent.process(self) + + if self.message == gem.WM_CLOSED: + self.app.event_processing = False + + elif self.message == gem.WM_TOPPED: + self.window.top() + + elif self.message == gem.WM_MOVED or self.message == gem.WM_SIZED: + rect = (self.get_word(4),self.get_word(5),self.get_word(6),self.get_word(7)) + self.window.resize(rect) + + elif self.message == gem.WM_REDRAW: + redraw(self.window) + + # Menu handling + elif self.message == gem.MN_SELECTED: + self.handle_menu(self.get_word(4),title=self.get_word(3)) + +def start_app(): + + app = gem.Application() + + app.load_resource("simple.rsc") + + app.set_menu(MENU) + + w = app.new_window((60,60,500,300),'Awesome!') + + app.message_event = AppMessageEvent(app) + + app.event_loop() + + app.destroy() + + +if __name__ == "__main__": + start_app()
\ No newline at end of file |
