Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r1664 - trunk/SwigInterface


Chronological Thread 
  • From: brownlee@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r1664 - trunk/SwigInterface
  • Date: Fri, 17 Aug 2007 18:27:04 -0600 (MDT)

Author: brownlee
Date: Fri Aug 17 18:27:03 2007
New Revision: 1664

Modified:
   trunk/SwigInterface/wxManta.py
Log:
Camera controls now allowing copying and pasting and other awesomeness

Modified: trunk/SwigInterface/wxManta.py
==============================================================================
--- trunk/SwigInterface/wxManta.py      (original)
+++ trunk/SwigInterface/wxManta.py      Fri Aug 17 18:27:03 2007
@@ -3,6 +3,8 @@
 import wx
 import sys
 import time
+import string
+import re
 
 from wxPython.glcanvas import wxGLCanvas
 from wx.glcanvas import WX_GL_DOUBLEBUFFER    as GL_DOUBLEBUFFER
@@ -177,6 +179,7 @@
 # CAMERA FRAME          CAMERA FRAME          CAMERA FRAME          CAMERA 
FRAME
 
###############################################################################
 
###############################################################################
+#send complaints to: brownlee@cs.utah.edu
 
 class CameraFrame(wx.Frame):
     def __init__(self, parent, engine):
@@ -196,73 +199,139 @@
        
        hSizer0 = wx.BoxSizer(wx.HORIZONTAL)
        self.channelST = wx.StaticText(panel, -1, "Channel: ")
-       self.channelTCL = wx.TextCtrl(panel, -1, "0", size=(125,-1))
+       self.channelSP = wx.SpinCtrl(panel, -1, "", (30,50))
+       self.channelSP.SetRange(0,100)
+       self.channelSP.SetValue(0)
        hSizer0.Add(self.channelST)
-       hSizer0.Add(self.channelTCL)
+       hSizer0.Add(self.channelSP)
        
        hSizer1 = wx.BoxSizer(wx.HORIZONTAL)
        self.eyeST = wx.StaticText(panel, -1, "eye x,y,z: " )
-       self.eyeXTCL = wx.TextCtrl(panel, -1, str(eye.x()), size=(125,-1))
-       self.eyeYTCL = wx.TextCtrl(panel, -1, str(eye.y()), size=(125, -1))
-       self.eyeZTCL = wx.TextCtrl(panel, -1, str(eye.z()), size=(125,-1))
+       self.eyeXSP = self.addSpinner(panel, eye.x())
+       self.eyeYSP = self.addSpinner(panel, eye.y())
+       self.eyeZSP = self.addSpinner(panel, eye.z())
        hSizer1.Add(self.eyeST)
-       hSizer1.Add(self.eyeXTCL)
-       hSizer1.Add(self.eyeYTCL)
-       hSizer1.Add(self.eyeZTCL)
+       hSizer1.Add(self.eyeXSP)
+       hSizer1.Add(self.eyeYSP)
+       hSizer1.Add(self.eyeZSP)
 
        hSizer2 = wx.BoxSizer(wx.HORIZONTAL)
        self.lookatST =  wx.StaticText(panel, -1, "lookat x,y,z: ")
-       self.lookXTCL = wx.TextCtrl(panel, -1, str(lookat.x()), size=(125,-1))
-       self.lookYTCL = wx.TextCtrl(panel, -1, str(lookat.y()), size=(125,-1))
-       self.lookZTCL = wx.TextCtrl(panel, -1, str(lookat.z()), 
size=(125,-1))  
+       self.lookXSP = self.addSpinner(panel, lookat.x())
+       self.lookYSP = self.addSpinner(panel, lookat.y())
+       self.lookZSP = self.addSpinner(panel,lookat.z())
+       #self.lookZTCL = wx.TextCtrl(panel, -1, str(lookat.z()), 
size=(125,-1)) 
        hSizer2.Add(self.lookatST)
-       hSizer2.Add(self.lookXTCL)
-       hSizer2.Add(self.lookYTCL)
-       hSizer2.Add(self.lookZTCL)
+       hSizer2.Add(self.lookXSP)
+       hSizer2.Add(self.lookYSP)
+       hSizer2.Add(self.lookZSP)
        
        hSizer3 = wx.BoxSizer(wx.HORIZONTAL)
        self.upST = wx.StaticText(panel, -1, "up vector x,y,z: ")
-       self.upXTCL = wx.TextCtrl(panel, -1, str(up.x()), size=(125,-1))
-       self.upYTCL = wx.TextCtrl(panel, -1, str(up.y()), size=(125,-1))
-       self.upZTCL = wx.TextCtrl(panel, -1, str(up.z()), size=(125,-1))
+       self.upXSP = self.addSpinner(panel, up.x())
+       self.upYSP = self.addSpinner(panel, up.y())
+       self.upZSP = self.addSpinner(panel, up.z())
        hSizer3.Add(self.upST)
-       hSizer3.Add(self.upXTCL)
-       hSizer3.Add(self.upYTCL)
-       hSizer3.Add(self.upZTCL)
+       hSizer3.Add(self.upXSP)
+       hSizer3.Add(self.upYSP)
+       hSizer3.Add(self.upZSP)
 
        hSizer4 = wx.BoxSizer(wx.HORIZONTAL)
        self.fovST = wx.StaticText(panel, -1, "fov horizontal, vertical: ")
-       self.fovXTCL = wx.TextCtrl(panel, -1, str(hfov), size = (125, -1))
-       self.fovYTCL = wx.TextCtrl(panel, -1, str(vfov), size = (125,-1))
+       self.fovXSP = self.addSpinner(panel, hfov)
+       self.fovYSP = self.addSpinner(panel, vfov)
        hSizer4.Add(self.fovST)
-       hSizer4.Add(self.fovXTCL)
-       hSizer4.Add(self.fovYTCL)
+       hSizer4.Add(self.fovXSP)
+       hSizer4.Add(self.fovYSP)
+       
+       hSizer6 = wx.BoxSizer(wx.HORIZONTAL)
+       self.stringTCL = wx.TextCtrl(panel, -1, "camera string", 
size=(400,-1))
+       self.ComputeString()
+       self.stringB = wx.Button(panel, -1, "Set")
+       hSizer6.Add(self.stringTCL)
+       hSizer6.Add(self.stringB)
        
        hSizer5 = wx.BoxSizer(wx.HORIZONTAL)
        self.okButton = wx.Button(panel, wx.ID_OK)
        self.cancelButton = wx.Button(panel, wx.ID_CANCEL)
        self.applyButton = wx.Button(panel, wx.ID_APPLY)
-       hSizer5.Add(self.okButton)
-       hSizer5.Add(self.cancelButton)
-       hSizer5.Add(self.applyButton)
+       hSizer5.Add(self.okButton, wx.ALIGN_CENTER)
+       hSizer5.Add(self.cancelButton, wx.ALIGN_CENTER)
+       hSizer5.Add(self.applyButton, wx.ALIGN_CENTER)
 
        sizer.Add(hSizer0, wx.ALIGN_CENTER, 2)
        sizer.Add(hSizer1, wx.ALIGN_CENTER, 2)
        sizer.Add(hSizer2, wx.ALIGN_CENTER,2)
        sizer.Add(hSizer3, wx.ALIGN_CENTER,2)
        sizer.Add(hSizer4, wx.ALIGN_CENTER,2)
+       sizer.Add(hSizer6, wx.ALIGN_CENTER, 2)
        sizer.Add(hSizer5, wx.ALIGN_CENTER,2)
        panel.SetSizer(sizer)
        selfSizer = wx.BoxSizer()
-       selfSizer.Add(panel, -1, wx.EXPAND)
+       selfSizer.Add(panel, -1, wx.EXPAND|wx.ALIGN_CENTER)
        self.SetSizer(selfSizer)
        self.SetAutoLayout(True)
 
        self.Bind(wx.EVT_BUTTON, self.OnClickOK, self.okButton)
        self.Bind(wx.EVT_BUTTON, self.OnClickCancel, self.cancelButton)
        self.Bind(wx.EVT_BUTTON, self.OnClickApply, self.applyButton)
+       self.Bind(wx.EVT_BUTTON, self.OnClickSet, self.stringB)
        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)
 
+    def OnClickSet(self, evt):
+       p = re.compile('-?\d+\.?\d*')
+       s = p.findall(self.stringTCL.GetValue())
+       print s
+       try:
+               self.eyeXSP.SetValue(float(s[0]))
+               self.eyeYSP.SetValue(float(s[1]))
+               self.eyeZSP.SetValue(float(s[2]))
+               self.lookXSP.SetValue(float(s[3]))
+               self.lookYSP.SetValue(float(s[4]))
+               self.lookZSP.SetValue(float(s[5]))
+               self.upXSP.SetValue(float(s[6]))
+               self.upYSP.SetValue(float(s[7]))
+               self.upZSP.SetValue(float(s[8]))
+               self.fovXSP.SetValue(float(s[9]))
+               self.fovYSP.SetValue(float(s[10]))
+       except ValueError:
+               print "incorrect string value"
+       
+    def ComputeString(self):
+       ex = float(self.eyeXSP.GetValue())
+        ey = float(self.eyeYSP.GetValue())
+        ez = float(self.eyeZSP.GetValue())
+
+        lx = float(self.lookXSP.GetValue()) #float(self.lookXTCL.GetValue())
+        ly = float(self.lookYSP.GetValue())
+        lz = float(self.lookZSP.GetValue())
+
+        ux = float(self.upXSP.GetValue())
+        uy = float(self.upYSP.GetValue())
+       uz = float(self.upZSP.GetValue())
+       hfov = float(self.fovXSP.GetValue())
+        vfov = float(self.fovYSP.GetValue())
+
+       s = 'eye: (%f %f %f) lookat: (%f, %f, %f) up: (%f, %f, %f) hfov: %f 
vfov: %f' % (ex,ey,ez,lx,ly,lz,ux,uy,uz,hfov,vfov)
+       self.stringTCL.SetValue(s)
+
+
+    def addSpinner(self, where, value, id=wx.ID_ANY):
+        floatspin = FS.FloatSpin(where, id,
+                                 increment=0.01, value=value,
+                                 extrastyle=FS.FS_LEFT)
+        floatspin.SetFormat("%g")
+        floatspin.SetDigits(5)
+        floatspin.Bind(FS.EVT_FLOATSPIN, self.OnFloatSpin)
+        return floatspin
+
+    def OnFloatSpin(self, event):
+        # Pull out the new value
+        #spinner = event.GetEventObject()
+        #x = float(spinner.GetValue())
+       self.ApplySettings()
+       self.ComputeString()
+
     def OnClickOK(self, evt):
        self.ApplySettings()
        self.Close(True)
@@ -271,24 +340,24 @@
        self.ApplySettings()
 
     def ApplySettings(self):
-       channel = int(self.channelTCL.GetValue())
-       ex = float(self.eyeXTCL.GetValue())
-       ey = float(self.eyeYTCL.GetValue())
-       ez = float(self.eyeZTCL.GetValue())
+       channel = int(self.channelSP.GetValue())
+       ex = float(self.eyeXSP.GetValue())
+       ey = float(self.eyeYSP.GetValue())
+       ez = float(self.eyeZSP.GetValue())
        
-       lx = float(self.lookXTCL.GetValue())
-       ly = float(self.lookYTCL.GetValue())
-       lz = float(self.lookZTCL.GetValue())
-
-       ux = float(self.upXTCL.GetValue())
-       uy = float(self.upYTCL.GetValue())
-       uz = float(self.upZTCL.GetValue())
+       lx = float(self.lookXSP.GetValue()) #float(self.lookXTCL.GetValue())
+       ly = float(self.lookYSP.GetValue())
+       lz = float(self.lookZSP.GetValue())
+
+       ux = float(self.upXSP.GetValue())
+       uy = float(self.upYSP.GetValue())
+       uz = float(self.upZSP.GetValue())
 
        eye = manta_new(Vector(ex,ey,ez))
        lookat = manta_new(Vector(lx,ly,lz))
        up = manta_new(Vector(ux, uy,uz))
-       fovx = float(self.fovXTCL.GetValue())
-       fovy = float(self.fovYTCL.GetValue())
+       fovx = float(self.fovXSP.GetValue())
+       fovy = float(self.fovYSP.GetValue())
 
        data = manta_new(BasicCameraData(eye, lookat, up, fovx, fovy))
        self.engine.getCamera(channel).setBasicCameraData(data)




  • [Manta] r1664 - trunk/SwigInterface, brownlee, 08/17/2007

Archive powered by MHonArc 2.6.16.

Top of page