OSDN Git Service

first commit
[meshio/pymeshio.git] / examples / pymeshviewer.py
diff --git a/examples/pymeshviewer.py b/examples/pymeshviewer.py
new file mode 100644 (file)
index 0000000..2063c8e
--- /dev/null
@@ -0,0 +1,61 @@
+#!/usr/bin/env python\r
+# coding: utf-8\r
+\r
+import sys\r
+import tkinter\r
+import tkinter.filedialog\r
+import togl\r
+import opengl\r
+import opengl.rokuro\r
+import triangle\r
+\r
+\r
+class Frame(tkinter.Frame):\r
+    def __init__(self, width, height, master=None, **kw):\r
+        super(Frame, self).__init__(master, **kw)\r
+        self.master.title('pymeshio viewer')\r
+        self.current='.'\r
+        # setup menu\r
+        menu_bar = tkinter.Menu(self)\r
+        self.master.config(menu=menu_bar)\r
+\r
+        menu_file = tkinter.Menu(menu_bar, tearoff=False)\r
+        menu_bar.add_cascade(label='FILE', menu=menu_file, underline=0)\r
+\r
+        menu_file.add_command(label='Open', under=0, command=self.onOpen)\r
+\r
+        # setup opengl widget\r
+        self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25), triangle.Triangle(5))\r
+        glwidget=togl.Widget(self, self.glworld, width=width, height=height)\r
+        glwidget.pack(fill=tkinter.BOTH, expand=True)\r
+\r
+        # event binding\r
+        self.bind('<Key>', self.onKeyDown)\r
+        self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and glwidget.onDraw())\r
+\r
+    def onOpen(self):\r
+        filename=tkinter.filedialog.askopenfilename(\r
+                filetypes=[\r
+                    ('poloygon model files', '*.mqo;*.pmd'),\r
+                    ], \r
+                initialdir=self.current)\r
+        print('open: %s' % filename)\r
+\r
+    def onKeyDown(self, event):\r
+        key=event.keycode\r
+        if key==27:\r
+            # Escape\r
+            sys.exit()\r
+        if key==81:\r
+            # q\r
+            sys.exit()\r
+        else:\r
+            print("keycode: %d" % key)\r
+\r
+\r
+if __name__ == '__main__':\r
+    f = Frame(width=600, height=600)\r
+    f.pack(fill=tkinter.BOTH, expand=True)\r
+    f.focus_set()\r
+    f.mainloop()\r
+\r