chiark / gitweb /
Add scale/rotate controls to project planner.
authordaid <daid303@gmail.com>
Fri, 20 Apr 2012 13:12:06 +0000 (15:12 +0200)
committerdaid <daid303@gmail.com>
Fri, 20 Apr 2012 13:12:06 +0000 (15:12 +0200)
Cura/gui/projectPlanner.py

index 8f93a94bbb36466808458fc34b950183e44e225b..02de4e2ef703cf2e03a02ff223335cf57b00b2ef 100644 (file)
@@ -68,9 +68,9 @@ class projectPlanner(wx.Frame):
                self.remButton = wx.Button(self, -1, "Remove")\r
                self.sliceButton = wx.Button(self, -1, "Slice")\r
                \r
-               sizer.Add(self.toolbar, (0,0), span=(1,1), flag=wx.EXPAND)\r
-               sizer.Add(self.preview, (1,0), span=(3,1), flag=wx.EXPAND)\r
-               sizer.Add(self.listbox, (0,1), span=(2,2), flag=wx.EXPAND)\r
+               sizer.Add(self.toolbar, (0,0), span=(1,3), flag=wx.EXPAND)\r
+               sizer.Add(self.preview, (1,0), span=(4,1), flag=wx.EXPAND)\r
+               sizer.Add(self.listbox, (1,1), span=(1,2), flag=wx.EXPAND)\r
                sizer.Add(self.addButton, (2,1), span=(1,1))\r
                sizer.Add(self.remButton, (2,2), span=(1,1))\r
                sizer.Add(self.sliceButton, (3,1), span=(1,1))\r
@@ -81,7 +81,25 @@ class projectPlanner(wx.Frame):
                self.remButton.Bind(wx.EVT_BUTTON, self.OnRemModel)\r
                self.sliceButton.Bind(wx.EVT_BUTTON, self.OnSlice)\r
                self.listbox.Bind(wx.EVT_LISTBOX, self.OnListSelect)\r
+\r
+               panel = wx.Panel(self, -1)\r
+               sizer.Add(panel, (4,1), span=(1,2))\r
+               \r
+               sizer = wx.GridBagSizer(2,2)\r
+               panel.SetSizer(sizer)\r
                \r
+               self.scaleCtrl = wx.TextCtrl(panel, -1, '')\r
+               self.rotateCtrl = wx.SpinCtrl(panel, -1, '', size=(21*4,21), style=wx.SP_ARROW_KEYS)\r
+               self.rotateCtrl.SetRange(0, 360)\r
+\r
+               sizer.Add(wx.StaticText(panel, -1, 'Scale'), (0,0), flag=wx.ALIGN_CENTER_VERTICAL)\r
+               sizer.Add(self.scaleCtrl, (0,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)\r
+               sizer.Add(wx.StaticText(panel, -1, 'Rotate'), (1,0), flag=wx.ALIGN_CENTER_VERTICAL)\r
+               sizer.Add(self.rotateCtrl, (1,1), flag=wx.ALIGN_BOTTOM|wx.EXPAND)\r
+\r
+               self.scaleCtrl.Bind(wx.EVT_TEXT, self.OnScaleChange)\r
+               self.rotateCtrl.Bind(wx.EVT_SPINCTRL, self.OnRotateChange)\r
+\r
                self.SetSize((800,600))\r
 \r
        def OnClose(self, e):\r
@@ -165,6 +183,8 @@ class projectPlanner(wx.Frame):
                if self.listbox.GetSelection() == -1:\r
                        return\r
                self.selection = self.list[self.listbox.GetSelection()]\r
+               self.scaleCtrl.SetValue(str(self.selection.scale))\r
+               self.rotateCtrl.SetValue(int(self.selection.rotate))\r
                self.preview.Refresh()\r
 \r
        def OnAddModel(self, e):\r
@@ -285,12 +305,29 @@ class projectPlanner(wx.Frame):
                \r
                self.updateModelTransform(item)\r
 \r
+               item.centerX = -item.getMinimum().x + 5\r
+               item.centerY = -item.getMinimum().y + 5\r
+\r
+       def OnScaleChange(self, e):\r
+               if self.selection == None:\r
+                       return\r
+               try:\r
+                       self.selection.scale = float(self.scaleCtrl.GetValue())\r
+               except ValueError:\r
+                       self.selection.scale = 1.0\r
+               self.preview.Refresh()\r
+       \r
+       def OnRotateChange(self, e):\r
+               if self.selection == None:\r
+                       return\r
+               self.selection.rotate = float(self.rotateCtrl.GetValue())\r
+               self.updateModelTransform(self.selection)\r
+\r
        def updateModelTransform(self, item):\r
-               scale = item.scale\r
-               rotate = item.rotate\r
-               scaleX = scale\r
-               scaleY = scale\r
-               scaleZ = scale\r
+               rotate = item.rotate / 180.0 * math.pi\r
+               scaleX = 1.0\r
+               scaleY = 1.0\r
+               scaleZ = 1.0\r
                if item.flipX:\r
                        scaleX = -scaleX\r
                if item.flipY:\r
@@ -498,14 +535,14 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
 \r
                        if self.parent.selection == item:\r
                                if item.gotHit:\r
-                                       glColor3f(1.0,0.3,0.0)\r
+                                       glColor3f(1.0,0.0,0.3)\r
                                else:\r
-                                       glColor3f(1.0,1.0,0.0)\r
+                                       glColor3f(1.0,0.0,1.0)\r
                                opengl.DrawBox(vMin, vMax)\r
                                if item.gotHit:\r
-                                       glColor3f(1.0,0.0,0.3)\r
+                                       glColor3f(1.0,0.3,0.0)\r
                                else:\r
-                                       glColor3f(1.0,0.0,1.0)\r
+                                       glColor3f(1.0,1.0,0.0)\r
                                opengl.DrawBox(vMinHead, vMaxHead)\r
                        elif seenSelected:\r
                                if item.gotHit:\r