chiark / gitweb /
Added a proper toolbar to the 3D preview.
authordaid <daid303@gmail.com>
Thu, 23 Feb 2012 13:08:34 +0000 (14:08 +0100)
committerdaid <daid303@gmail.com>
Thu, 23 Feb 2012 13:08:34 +0000 (14:08 +0100)
Fixed pypy run (wx error)

SkeinPyPy_NewUI/newui/mainWindow.py
SkeinPyPy_NewUI/newui/preview3d.py
SkeinPyPy_NewUI/newui/skeinRun.py
SkeinPyPy_NewUI/skeinpypy.py

index 657a55b4b39efa278b1affe7a36b2133faea19f9..616b0965dd95003737007df632675d29b0255887 100644 (file)
@@ -102,7 +102,7 @@ class mainWindow(wx.Frame):
                nb.AddPage(alterationPanel.alterationPanel(nb), "Start/End-GCode")
 
                #Preview window, load and slice buttons.
-               self.preview3d = preview3d.myGLCanvas(p)
+               self.preview3d = preview3d.previewPanel(p)
                
                loadButton = wx.Button(p, -1, 'Load STL')
                sliceButton = wx.Button(p, -1, 'Slice to GCode')
index 434c5f29d562b7027e2cc27af7f859e6030ec312..3df62ed10c1598e2c42f2b57871cfae39cde09da 100644 (file)
@@ -17,13 +17,17 @@ except:
 from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret\r
 from fabmetheus_utilities.vector3 import Vector3\r
 \r
-class myGLCanvas(GLCanvas):\r
+class previewPanel(wx.Panel):\r
        def __init__(self, parent):\r
-               GLCanvas.__init__(self, parent,-1)\r
-               wx.EVT_PAINT(self, self.OnPaint)\r
-               wx.EVT_SIZE(self, self.OnSize)\r
-               wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground)\r
-               wx.EVT_MOTION(self, self.OnMouseMotion)\r
+               wx.Panel.__init__(self, parent,-1)\r
+               \r
+               self.SetBackgroundColour(wx.SystemSettings.GetColour(wx.SYS_COLOUR_3DDKSHADOW))\r
+\r
+               self.glCanvas = GLCanvas(self, -1)\r
+               wx.EVT_PAINT(self.glCanvas, self.OnPaint)\r
+               wx.EVT_SIZE(self.glCanvas, self.OnSize)\r
+               wx.EVT_ERASE_BACKGROUND(self.glCanvas, self.OnEraseBackground)\r
+               wx.EVT_MOTION(self.glCanvas, self.OnMouseMotion)\r
                self.init = 0\r
                self.triangleMesh = None\r
                self.modelDisplayList = None\r
@@ -34,21 +38,31 @@ class myGLCanvas(GLCanvas):
                self.renderTransparent = False\r
                self.machineSize = Vector3(210, 210, 200)\r
                self.machineCenter = Vector3(105, 105, 0)\r
-               configButton = wx.Button(self, -1, '', (3,3), (10,10))\r
-               self.Bind(wx.EVT_BUTTON, self.OnConfigClick, configButton)\r
+               \r
+               tb = wx.ToolBar( self, -1 )\r
+               self.ToolBar = tb\r
+               tb.SetToolBitmapSize( ( 21, 21 ) )\r
+               transparentButton = wx.Button(tb, -1, "T", size=(21,21))\r
+               tb.AddControl(transparentButton)\r
+               self.Bind(wx.EVT_BUTTON, self.OnConfigClick, transparentButton)\r
+               tb.Realize()\r
+\r
+               sizer = wx.BoxSizer(wx.VERTICAL)\r
+               sizer.Add(tb, 0, flag=wx.EXPAND|wx.TOP|wx.LEFT|wx.RIGHT, border=1)\r
+               sizer.Add(self.glCanvas, 1, flag=wx.EXPAND)\r
+               self.SetSizer(sizer)\r
+\r
        \r
        def loadModelFile(self, filename):\r
                self.modelFilename = filename\r
                #Do the STL file loading in a background thread so we don't block the UI.\r
                thread = threading.Thread(target=self.DoModelLoad)\r
-               thread.setDaemon(True)\r
                thread.start()\r
 \r
        def loadGCodeFile(self, filename):\r
                self.gcodeFilename = filename\r
                #Do the STL file loading in a background thread so we don't block the UI.\r
                thread = threading.Thread(target=self.DoGCodeLoad)\r
-               thread.setDaemon(True)\r
                thread.start()\r
        \r
        def DoModelLoad(self):\r
@@ -206,7 +220,7 @@ class myGLCanvas(GLCanvas):
                        dc.Clear()\r
                        dc.DrawText("No PyOpenGL installation found.\nNo preview window available.", 10, 10)\r
                        return\r
-               self.SetCurrent()\r
+               self.glCanvas.SetCurrent()\r
                self.InitGL()\r
                self.OnDraw()\r
                return\r
@@ -302,14 +316,15 @@ class myGLCanvas(GLCanvas):
                                glEnable(GL_LIGHTING)\r
                                glCallList(self.modelDisplayList)\r
                \r
-               self.SwapBuffers()\r
+               self.glCanvas.SwapBuffers()\r
                return\r
 \r
        def InitGL(self):\r
                # set viewing projection\r
                glMatrixMode(GL_MODELVIEW)\r
                glLoadIdentity()\r
-               glViewport(0,0, self.GetSize().GetWidth(), self.GetSize().GetHeight())\r
+               size = self.glCanvas.GetSize()\r
+               glViewport(0,0, size.GetWidth(), size.GetHeight())\r
                \r
                if self.renderTransparent:\r
                        glLightfv(GL_LIGHT0, GL_DIFFUSE,  [0.5, 0.4, 0.3, 1.0])\r
index 306d56ceb9858f1703a6b957b640263c7ee45361..2070cff77cba4567e6cdebef7a038d0e6f8d02f3 100644 (file)
@@ -18,6 +18,7 @@ def getPyPyExe():
                pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/pypy.exe"));
        else:
                pypyExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../pypy/bin/pypy"));
+       print pypyExe
        if os.path.exists(pypyExe):
                return pypyExe
        pypyExe = "/bin/pypy";
index af451d797036141084efe88a001295efc9c60542..c701b9b9a85dd2e210cb6c7f87b4241c8a88b4bc 100644 (file)
@@ -11,11 +11,14 @@ The slicing code is the same as Skeinforge. But the UI has been revamped to be..
 
 from __future__ import absolute_import
 
+import sys
+import platform
+
 from optparse import OptionParser
-from newui import mainWindow
 from newui import skeinRun
 
-import sys
+if platform.python_implementation() != "PyPy":
+       from newui import mainWindow
 
 __author__ = 'Daid'
 __credits__ = """