summaryrefslogtreecommitdiff
path: root/example
diff options
context:
space:
mode:
authorJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-24 22:26:32 -0400
committerJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-24 22:26:32 -0400
commit5eaecae93f7ba32b6bec9515dfa465130bc8b808 (patch)
tree8eccbc1aafdbffc2684b43e77cffa0f9dbe7ecbd /example
parentfce2b435d228d240e24656d6baf47f7d6022b730 (diff)
downloadgempy-5eaecae93f7ba32b6bec9515dfa465130bc8b808.tar.gz
gempy-5eaecae93f7ba32b6bec9515dfa465130bc8b808.zip
Added VDI routines. Added proper resource handling, some menu library code, and object library code.
Diffstat (limited to 'example')
-rw-r--r--example/simple.h8
-rw-r--r--example/simple.hrdbin0 -> 82 bytes
-rw-r--r--example/simple.py119
-rw-r--r--example/simple.rscbin0 -> 1118 bytes
4 files changed, 89 insertions, 38 deletions
diff --git a/example/simple.h b/example/simple.h
new file mode 100644
index 0000000..470c481
--- /dev/null
+++ b/example/simple.h
@@ -0,0 +1,8 @@
+/* Resource file indices for SIMPLE. */
+
+#define MENU 0 /* Menu-tree */
+#define M_ABOUT 7 /* STRING in tree MENU */
+#define M_QUIT 16 /* STRING in tree MENU */
+
+#define ABOUT 1 /* Form/Dialog-box */
+#define B_ABOUT_OK 1 /* BUTTON in tree ABOUT */
diff --git a/example/simple.hrd b/example/simple.hrd
new file mode 100644
index 0000000..89efe33
--- /dev/null
+++ b/example/simple.hrd
Binary files differ
diff --git a/example/simple.py b/example/simple.py
index 8cfc487..aa91184 100644
--- a/example/simple.py
+++ b/example/simple.py
@@ -1,39 +1,82 @@
-import gem
-
-class AppMessageEvent(gem.MessageEvent):
- def __init__(self,app):
- gem.MessageEvent.__init__(self)
-
- self.app = app
- self.window = app.windows[0]
-
- 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)
-
-def start_app():
-
- app = gem.Application()
-
- w = app.new_window((60,60,500,300),'Awesome!')
-
- app.message_event = AppMessageEvent(app)
-
- app.event_loop()
-
- app.destroy()
-
-
-if __name__ == "__main__":
+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):
+ 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_OBJECT,ABOUT)
+ self.app.draw_object(dlg,2)
+ self.app.form_do(dlg)
+
+ 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))
+
+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
diff --git a/example/simple.rsc b/example/simple.rsc
new file mode 100644
index 0000000..599c5bb
--- /dev/null
+++ b/example/simple.rsc
Binary files differ