chiark / gitweb /
Make the project planner always auto-place.
[cura.git] / Cura / gui / projectPlanner.py
index 767ca07579a689aa9dd4c0b486a7a1b59cecb44b..c83e1af1844935e470e61f8b8669b770fda679ef 100644 (file)
@@ -153,6 +153,7 @@ class projectPlanner(wx.Frame):
                self.list = []\r
                self.selection = None\r
                self.printMode = 0\r
+               self.alwaysAutoPlace = True\r
 \r
                self.machineSize = numpy.array([profile.getPreferenceFloat('machine_width'), profile.getPreferenceFloat('machine_depth'), profile.getPreferenceFloat('machine_height')])\r
                self.headSizeMin = numpy.array([profile.getPreferenceFloat('extruder_head_size_min_x'), profile.getPreferenceFloat('extruder_head_size_min_y'),0])\r
@@ -170,8 +171,8 @@ class projectPlanner(wx.Frame):
                toolbarUtil.NormalButton(self.toolbar, self.OnSaveProject, 'save.png', 'Save project')\r
                self.toolbar.AddSeparator()\r
                group = []\r
-               toolbarUtil.RadioButton(self.toolbar, group, 'object-3d-on.png', 'object-3d-off.png', '3D view', callback=self.On3DClick)\r
-               toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick).SetValue(True)\r
+               toolbarUtil.RadioButton(self.toolbar, group, 'object-3d-on.png', 'object-3d-off.png', '3D view', callback=self.On3DClick).SetValue(self.alwaysAutoPlace)\r
+               toolbarUtil.RadioButton(self.toolbar, group, 'object-top-on.png', 'object-top-off.png', 'Topdown view', callback=self.OnTopClick).SetValue(not self.alwaysAutoPlace)\r
                self.toolbar.AddSeparator()\r
                toolbarUtil.NormalButton(self.toolbar, self.OnPreferences, 'preferences.png', 'Project planner preferences')\r
                self.toolbar.AddSeparator()\r
@@ -196,7 +197,8 @@ class projectPlanner(wx.Frame):
                toolbarUtil.NormalButton(self.toolbar2, self.OnCopy, 'copy.png', 'Make a copy of the current selected object')\r
                toolbarUtil.NormalButton(self.toolbar2, self.OnSetCustomProfile, 'set-profile.png', 'Set a custom profile to be used to prepare a specific object.')\r
                self.toolbar2.AddSeparator()\r
-               toolbarUtil.NormalButton(self.toolbar2, self.OnAutoPlace, 'autoplace.png', 'Automaticly organize the objects on the platform.')\r
+               if not self.alwaysAutoPlace:\r
+                       toolbarUtil.NormalButton(self.toolbar2, self.OnAutoPlace, 'autoplace.png', 'Automaticly organize the objects on the platform.')\r
                toolbarUtil.NormalButton(self.toolbar2, self.OnSlice, 'slice.png', 'Prepare to project into a gcode file.')\r
                self.toolbar2.Realize()\r
 \r
@@ -218,7 +220,8 @@ class projectPlanner(wx.Frame):
                self.addButton = wx.Button(self.panel, -1, "Add")\r
                self.remButton = wx.Button(self.panel, -1, "Remove")\r
                self.sliceButton = wx.Button(self.panel, -1, "Prepare")\r
-               self.autoPlaceButton = wx.Button(self.panel, -1, "Auto Place")\r
+               if not self.alwaysAutoPlace:\r
+                       self.autoPlaceButton = wx.Button(self.panel, -1, "Auto Place")\r
                \r
                sizer.Add(self.toolbar, (0,0), span=(1,1), flag=wx.EXPAND|wx.LEFT|wx.RIGHT)\r
                sizer.Add(self.toolbar2, (0,1), span=(1,2), flag=wx.EXPAND|wx.LEFT|wx.RIGHT)\r
@@ -228,14 +231,16 @@ class projectPlanner(wx.Frame):
                sizer.Add(self.addButton, (3,1), span=(1,1))\r
                sizer.Add(self.remButton, (3,2), span=(1,1))\r
                sizer.Add(self.sliceButton, (4,1), span=(1,1))\r
-               sizer.Add(self.autoPlaceButton, (4,2), span=(1,1))\r
+               if not self.alwaysAutoPlace:\r
+                       sizer.Add(self.autoPlaceButton, (4,2), span=(1,1))\r
                sizer.AddGrowableCol(0)\r
                sizer.AddGrowableRow(1)\r
                \r
                self.addButton.Bind(wx.EVT_BUTTON, self.OnAddModel)\r
                self.remButton.Bind(wx.EVT_BUTTON, self.OnRemModel)\r
                self.sliceButton.Bind(wx.EVT_BUTTON, self.OnSlice)\r
-               self.autoPlaceButton.Bind(wx.EVT_BUTTON, self.OnAutoPlace)\r
+               if not self.alwaysAutoPlace:\r
+                       self.autoPlaceButton.Bind(wx.EVT_BUTTON, self.OnAutoPlace)\r
                self.listbox.Bind(wx.EVT_LISTBOX, self.OnListSelect)\r
 \r
                panel = wx.Panel(self.panel, -1)\r
@@ -309,6 +314,8 @@ class projectPlanner(wx.Frame):
                self.printMode = 0\r
                if self.printAllAtOnce.GetValue():\r
                        self.printMode = 1\r
+               if self.alwaysAutoPlace:\r
+                       self.OnAutoPlace(None)\r
                self.preview.Refresh()\r
        \r
        def OnSaveCombinedSTL(self, e):\r
@@ -508,6 +515,8 @@ class projectPlanner(wx.Frame):
                else:\r
                        self.selection = None\r
                        self.listbox.SetSelection(-1)\r
+               if self.alwaysAutoPlace:\r
+                       self.OnAutoPlace(None)\r
 \r
        def OnAutoPlace(self, e):\r
                bestAllowedSize = int(self.machineSize[1])\r
@@ -717,17 +726,25 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel)\r
                self.yaw = 30\r
                self.pitch = 60\r
-               self.zoom = self.parent.machineSize[0] / 2 + 10\r
                self.offsetX = 0\r
                self.offsetY = 0\r
-               self.view3D = False\r
+               self.view3D = self.parent.alwaysAutoPlace\r
+               if self.view3D:\r
+                       self.zoom = 300\r
+               else:\r
+                       self.zoom = self.parent.machineSize[0] / 2 + 10\r
                self.allowDrag = False\r
 \r
                self.objColor = profile.getPreferenceColour('model_colour')\r
 \r
        def OnMouseLeftDown(self,e):\r
                self.allowDrag = True\r
-       \r
+               if not self.parent.alwaysAutoPlace and not self.view3D:\r
+                       #TODO: Translate mouse X/Y to 3D X/Y/Z\r
+                       for item in self.parent.list:\r
+                               iMin = (item.getMinimum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder]\r
+                               iMax = (item.getMaximum() * item.scale) + numpy.array([item.centerX, item.centerY, 0]) - self.parent.extruderOffset[item.extruder]\r
+               \r
        def OnMouseMotion(self,e):\r
                if self.allowDrag and e.Dragging() and e.LeftIsDown():\r
                        if self.view3D:\r
@@ -737,7 +754,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
                                        self.pitch = 170\r
                                if self.pitch < 10:\r
                                        self.pitch = 10\r
-                       else:\r
+                       elif not self.parent.alwaysAutoPlace:\r
                                item = self.parent.selection\r
                                if item != None:\r
                                        item.centerX += float(e.GetX() - self.oldX) * self.zoom / self.GetSize().GetHeight() * 2\r
@@ -851,29 +868,30 @@ class PreviewGLCanvas(glcanvas.GLCanvas):
 \r
                        glDisable(GL_LIGHTING)\r
 \r
-                       if self.parent.selection == item:\r
-                               if item.gotHit:\r
-                                       glColor3f(1.0,0.0,0.3)\r
-                               else:\r
-                                       glColor3f(1.0,0.0,1.0)\r
-                               opengl.DrawBox(vMin, vMax)\r
-                               if item.gotHit:\r
-                                       glColor3f(1.0,0.3,0.0)\r
-                               else:\r
-                                       glColor3f(1.0,1.0,0.0)\r
-                               opengl.DrawBox(vMinHead, vMaxHead)\r
-                       elif seenSelected:\r
-                               if item.gotHit:\r
-                                       glColor3f(0.5,0.0,0.1)\r
-                               else:\r
-                                       glColor3f(0.5,0.0,0.5)\r
-                               opengl.DrawBox(vMinHead, vMaxHead)\r
-                       else:\r
-                               if item.gotHit:\r
-                                       glColor3f(0.7,0.1,0.0)\r
+                       if not self.parent.alwaysAutoPlace:\r
+                               if self.parent.selection == item:\r
+                                       if item.gotHit:\r
+                                               glColor3f(1.0,0.0,0.3)\r
+                                       else:\r
+                                               glColor3f(1.0,0.0,1.0)\r
+                                       opengl.DrawBox(vMin, vMax)\r
+                                       if item.gotHit:\r
+                                               glColor3f(1.0,0.3,0.0)\r
+                                       else:\r
+                                               glColor3f(1.0,1.0,0.0)\r
+                                       opengl.DrawBox(vMinHead, vMaxHead)\r
+                               elif seenSelected:\r
+                                       if item.gotHit:\r
+                                               glColor3f(0.5,0.0,0.1)\r
+                                       else:\r
+                                               glColor3f(0.5,0.0,0.5)\r
+                                       opengl.DrawBox(vMinHead, vMaxHead)\r
                                else:\r
-                                       glColor3f(0.7,0.7,0.0)\r
-                               opengl.DrawBox(vMin, vMax)\r
+                                       if item.gotHit:\r
+                                               glColor3f(0.7,0.1,0.0)\r
+                                       else:\r
+                                               glColor3f(0.7,0.7,0.0)\r
+                                       opengl.DrawBox(vMin, vMax)\r
                        \r
                        glPopMatrix()\r
                \r