1 #!/usr/bin/env python
\r
7 import tkinter.filedialog
\r
10 import opengl.rokuro
\r
15 class Frame(tkinter.Frame):
\r
16 def __init__(self, width, height, master=None, **kw):
\r
17 super(Frame, self).__init__(master, **kw)
\r
18 self.master.title('pymeshio viewer')
\r
21 menu_bar = tkinter.Menu(self)
\r
22 self.master.config(menu=menu_bar)
\r
24 menu_file = tkinter.Menu(menu_bar, tearoff=False)
\r
25 menu_bar.add_cascade(label='File', menu=menu_file, underline=0)
\r
27 menu_file.add_command(label='Open', under=0, command=self.onOpen)
\r
29 # setup opengl widget
\r
30 self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(500))
\r
31 self.glwidget=togl.Widget(self, self.glworld, width=width, height=height)
\r
32 self.glwidget.pack(fill=tkinter.BOTH, expand=True)
\r
35 self.bind('<Key>', self.onKeyDown)
\r
36 self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw())
\r
39 path=tkinter.filedialog.askopenfilename(
\r
41 ('poloygon model files', '*.mqo;*.pmd'),
\r
43 initialdir=self.current)
\r
46 def load(self, path):
\r
47 model=self.loadModel(path)
\r
49 print('fail to load %s' % path)
\r
51 self.glworld.setRoot(model)
\r
52 print('load %s' % path)
\r
53 self.glwidget.onDraw()
\r
55 def loadModel(self, path):
\r
56 if path.lower().endswith(".mqo"):
\r
57 return mqobuilder.build(path)
\r
58 elif path.lower().endswith(".pmd"):
\r
59 return pmdbuilder.build(path)
\r
61 def onKeyDown(self, event):
\r
70 print("keycode: %d" % key)
\r
73 if __name__ == '__main__':
\r
74 f = Frame(width=600, height=600)
\r
75 f.pack(fill=tkinter.BOTH, expand=True)
\r