1 #!/usr/bin/env python
\r
7 import tkinter.filedialog
\r
10 import opengl.rokuro
\r
14 class Frame(tkinter.Frame):
\r
15 def __init__(self, width, height, master=None, **kw):
\r
16 super(Frame, self).__init__(master, **kw)
\r
17 self.master.title('pymeshio viewer')
\r
20 menu_bar = tkinter.Menu(self)
\r
21 self.master.config(menu=menu_bar)
\r
23 menu_file = tkinter.Menu(menu_bar, tearoff=False)
\r
24 menu_bar.add_cascade(label='File', menu=menu_file, underline=0)
\r
26 menu_file.add_command(label='Open', under=0, command=self.onOpen)
\r
28 # setup opengl widget
\r
29 self.glworld=opengl.BaseController(opengl.rokuro.RokuroView(25))
\r
30 self.glwidget=togl.Widget(self, self.glworld, width=width, height=height)
\r
31 self.glwidget.pack(fill=tkinter.BOTH, expand=True)
\r
34 self.bind('<Key>', self.onKeyDown)
\r
35 self.bind('<MouseWheel>', lambda e: self.glworld.onWheel(-e.delta) and self.glwidget.onDraw())
\r
38 filename=tkinter.filedialog.askopenfilename(
\r
40 ('poloygon model files', '*.mqo;*.pmd'),
\r
42 initialdir=self.current)
\r
43 if filename.lower().endswith(".mqo"):
\r
44 self.loadMqo(filename)
\r
45 elif filename.lower().endswith(".pmd"):
\r
46 self.loadPmd(filename)
\r
47 self.current=os.path.dirname(filename)
\r
49 def loadMqo(self, path):
\r
51 model=mqobuilder.build(path)
\r
53 print('fail to load %s' % path)
\r
55 self.glworld.setRoot(model)
\r
56 print('loadMqo %s' % path)
\r
57 self.glwidget.onDraw()
\r
59 def loadPmd(self, path):
\r
60 print('loadPmd %s' % path)
\r
62 def onKeyDown(self, event):
\r
71 print("keycode: %d" % key)
\r
74 if __name__ == '__main__':
\r
75 f = Frame(width=600, height=600)
\r
76 f.pack(fill=tkinter.BOTH, expand=True)
\r