OSDN Git Service

first commit
[meshio/pymeshio.git] / examples / togl.py
diff --git a/examples/togl.py b/examples/togl.py
new file mode 100644 (file)
index 0000000..1aa06d6
--- /dev/null
@@ -0,0 +1,33 @@
+#!/usr/bin/env python\r
+# coding: utf-8\r
+\r
+import OpenGL.Tk\r
+\r
+\r
+class Widget(OpenGL.Tk.RawOpengl):\r
+    def __init__(self, master, engine, *args, **kw):\r
+        super(Widget, self).__init__(master, *args, **kw)\r
+        self.engine=engine\r
+        self.bind('<Map>', self.onDraw)\r
+        self.bind('<Expose>', self.onDraw)\r
+        self.bind('<Configure>', self.onResize)\r
+        self.bind('<ButtonPress-1>', lambda e: self.engine.onLeftDown(e.x, e.y) and self.onDraw())\r
+        self.bind('<ButtonRelease-1>', lambda e: self.engine.onLeftUp(e.x, e.y) and self.onDraw())\r
+        self.bind('<B1-Motion>', lambda e: self.engine.onMotion(e.x, e.y) and self.onDraw())\r
+        self.bind('<ButtonPress-2>', lambda e: self.engine.onMiddleDown(e.x, e.y) and self.onDraw())\r
+        self.bind('<ButtonRelease-2>', lambda e: self.engine.onMiddleUp(e.x, e.y) and self.onDraw())\r
+        self.bind('<B2-Motion>', lambda e: self.engine.onMotion(e.x, e.y) and self.onDraw())\r
+        self.bind('<ButtonPress-3>', lambda e: self.engine.onRightDown(e.x, e.y) and self.onDraw())\r
+        self.bind('<ButtonRelease-3>', lambda e: self.engine.onRightUp(e.x, e.y) and self.onDraw())\r
+        self.bind('<B3-Motion>', lambda e: self.engine.onMotion(e.x, e.y) and self.onDraw())\r
+\r
+    def onDraw(self, *dummy):\r
+        self.tk.call(self._w, 'makecurrent')\r
+        self.update_idletasks()\r
+        self.engine.draw()\r
+        self.tk.call(self._w, 'swapbuffers')\r
+\r
+    def onResize(self, event):\r
+        self.engine.onResize(event.width, event.height)\r
+        self.onDraw()\r
+\r