forked from philwilliammee/wx_python_obj_viewer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathwx_obj_viewer.py
135 lines (117 loc) · 5.48 KB
/
wx_obj_viewer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env python
# -*- coding: CP1252 -*-
#
# generated by wxGlade 0.6.7 (standalone edition) on Sun Dec 28 10:31:17 2014
#
import wx, os
from wx_obj_canvas import GL_Canvas
# begin wxGlade: dependencies
import gettext
# end wxGlade
class MyFrame(wx.Frame):
def __init__(self, *args, **kwds):
# begin wxGlade: MyFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
#self.panel_1 = wx.Panel(self, wx.ID_ANY, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL)
#create menu bar
# A Statusbar in the bottom of the window
self.CreateStatusBar()
# Setting up the menu
file_menu = wx.Menu()
# wx.ID_ABOUT and wx.ID_EXIT are standard IDs provided
# by wxWidgets.
file_open_menu_item = file_menu.Append(wx.ID_FILE, '&Open_File',
'open an object file')
file_menu.AppendSeparator()
file_menu.Append(wx.ID_ABOUT, '&About',
'Information about this application')
file_menu.AppendSeparator()
exitMenuItem = file_menu.Append(wx.ID_EXIT, 'E&xit', 'Exit the application')
self.Bind(wx.EVT_MENU, self.OnOpen, file_open_menu_item)
self.Bind(wx.EVT_MENU, self.onExit, exitMenuItem)
# Creating the menubar
menu_bar = wx.MenuBar()
menu_bar.Append(file_menu, '&File')
self.SetMenuBar(menu_bar)
self.panel_2 = wx.Panel(self, wx.ID_ANY, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL)
self.slider_1 = wx.Slider(self.panel_2, wx.ID_ANY, 0, 0, 10, style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
self.sizer_5_staticbox = wx.StaticBox(self.panel_2, wx.ID_ANY, _("Ambiant Lighting"))
self.panel_3 = wx.Panel(self, wx.ID_ANY, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL)
self.slider_2 = wx.Slider(self.panel_3, wx.ID_ANY, 0, -5, 5, style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
self.sizer_6_staticbox = wx.StaticBox(self.panel_3, wx.ID_ANY, _("Light Position"))
self.panel_4 = wx.Panel(self, wx.ID_ANY, style=wx.SUNKEN_BORDER | wx.TAB_TRAVERSAL)
self.slider_3 = wx.Slider(self.panel_4, wx.ID_ANY, 0, 0, 10, style=wx.SL_HORIZONTAL | wx.SL_AUTOTICKS)
self.sizer_4_staticbox = wx.StaticBox(self.panel_4, wx.ID_ANY, _("Difused Lighting"))
self.canvas = GL_Canvas(self)
self.__set_properties()
self.__do_layout()
self.Bind(wx.EVT_COMMAND_SCROLL, self.slider_1_event, self.slider_1)
self.Bind(wx.EVT_COMMAND_SCROLL, self.slider_2_event, self.slider_2)
self.Bind(wx.EVT_COMMAND_SCROLL, self.slider_3_event, self.slider_3)
# end wxGlade
def __set_properties(self):
# begin wxGlade: MyFrame.__set_properties
self.SetTitle(_("frame_1"))
self.SetSize((622, 636))
self.SetBackgroundColour(wx.Colour(192, 192, 192))
self.slider_1.SetMinSize((575, 35))
self.slider_2.SetMinSize((575, 35))
self.slider_3.SetMinSize((575, 35))
# end wxGlade
def __do_layout(self):
# begin wxGlade: MyFrame.__do_layout
sizer_1 = wx.BoxSizer(wx.VERTICAL)
self.sizer_4_staticbox.Lower()
sizer_4 = wx.StaticBoxSizer(self.sizer_4_staticbox, wx.HORIZONTAL)
self.sizer_6_staticbox.Lower()
sizer_6 = wx.StaticBoxSizer(self.sizer_6_staticbox, wx.HORIZONTAL)
self.sizer_5_staticbox.Lower()
sizer_5 = wx.StaticBoxSizer(self.sizer_5_staticbox, wx.HORIZONTAL)
sizer_1.Add(self.canvas, 6, wx.ALL | wx.EXPAND, 5)
sizer_5.Add(self.slider_1, 0, 0, 0)
self.panel_2.SetSizer(sizer_5)
sizer_1.Add(self.panel_2, 0, wx.ALL | wx.EXPAND, 5)
sizer_6.Add(self.slider_2, 0, 0, 0)
self.panel_3.SetSizer(sizer_6)
sizer_1.Add(self.panel_3, 0, wx.ALL | wx.EXPAND, 5)
sizer_4.Add(self.slider_3, 0, 0, 0)
self.panel_4.SetSizer(sizer_4)
sizer_1.Add(self.panel_4, 0, wx.ALL | wx.EXPAND, 5)
self.SetSizer(sizer_1)
self.Layout()
# end wxGlade
def slider_1_event(self, event): # wxGlade: MyFrame.<event_handler>
v=self.slider_1.Value/10.0
self.canvas.adj_amb_light(v)
event.Skip()
def slider_2_event(self, event): # wxGlade: MyFrame.<event_handler>
v=self.slider_2.Value
self.canvas.adj_light_pos(v)
event.Skip()
def slider_3_event(self, event): # wxGlade: MyFrame.<event_handler>
v=self.slider_3.Value/10.0
self.canvas.adj_dif_light(v)
event.Skip()
def OnOpen(self, event):
"Open an Obj file, set title if successful"
# Create a file-open dialog in the current directory
filters = 'Obj files (*.obj;*.OBJ;*.Obj)|*.obj;*.OBJ;*.Obj'
dlg = wx.FileDialog(self, message="Open an Image...", defaultDir=os.getcwd()+"\objects",
defaultFile="", wildcard=filters, style=wx.OPEN)
if dlg.ShowModal() == wx.ID_OK:
filename = dlg.GetFilename()
print filename
self.canvas.load_obj(filename)
dlg.Destroy() # we don't need the dialog any more so we ask it to clean-up
def onExit(self, event):
self.Close()
# end of class MyFrame
if __name__ == "__main__":
gettext.install("app") # replace with the appropriate catalog name
app = wx.PySimpleApp(0)
wx.InitAllImageHandlers()
frame_1 = MyFrame(None, wx.ID_ANY, "Wx object loader")
app.SetTopWindow(frame_1)
frame_1.Show()
app.MainLoop()