def action(self, arg): if arg["Type"] == "SoKeyboardEvent" and arg["Key"] == "ESCAPE": self.finish() if arg["Type"] == "SoMouseButtonEvent": if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"): # coin detection happens before the selection got a chance of being updated, so we must delay todo.delay(self.checkSelection,None)
def Activated(self): """Execute when the command is called.""" # finish active Draft command if any if FreeCAD.activeDraftCommand is not None: FreeCAD.activeDraftCommand.finish() # Reset variables self.view = Draft.get3DView() self.wpButton = FreeCADGui.draftToolBar.wplabel FreeCAD.DraftWorkingPlane.setup() # Write current WP if states are empty if not self.states: p = FreeCAD.DraftWorkingPlane self.states.append([p.u, p.v, p.axis, p.position]) # Create task panel FreeCADGui.Control.closeDialog() self.taskd = task_selectplane.SelectPlaneTaskPanel() self.taskd.reject = self.reject # Fill values self.taskd.form.checkCenter.setChecked( self.param.GetBool("CenterPlaneOnView", False)) q = FreeCAD.Units.Quantity(self.param.GetFloat("gridSpacing", 1.0), FreeCAD.Units.Length) self.taskd.form.fieldGridSpacing.setText(q.UserString) self.taskd.form.fieldGridMainLine.setValue( self.param.GetInt("gridEvery", 10)) self.taskd.form.fieldGridExtension.setValue( self.param.GetInt("gridSize", 100)) self.taskd.form.fieldSnapRadius.setValue( self.param.GetInt("snapRange", 8)) # Set icons self.taskd.form.setWindowIcon( QtGui.QIcon(":/icons/Draft_SelectPlane.svg")) self.taskd.form.buttonTop.setIcon(QtGui.QIcon(":/icons/view-top.svg")) self.taskd.form.buttonFront.setIcon( QtGui.QIcon(":/icons/view-front.svg")) self.taskd.form.buttonSide.setIcon( QtGui.QIcon(":/icons/view-right.svg")) self.taskd.form.buttonAlign.setIcon( QtGui.QIcon(":/icons/view-isometric.svg")) self.taskd.form.buttonAuto.setIcon( QtGui.QIcon(":/icons/view-axonometric.svg")) self.taskd.form.buttonMove.setIcon( QtGui.QIcon(":/icons/Draft_Move.svg")) self.taskd.form.buttonCenter.setIcon( QtGui.QIcon(":/icons/view-fullscreen.svg")) self.taskd.form.buttonPrevious.setIcon( QtGui.QIcon(":/icons/edit-undo.svg")) # Connect slots self.taskd.form.buttonTop.clicked.connect(self.onClickTop) self.taskd.form.buttonFront.clicked.connect(self.onClickFront) self.taskd.form.buttonSide.clicked.connect(self.onClickSide) self.taskd.form.buttonAlign.clicked.connect(self.onClickAlign) self.taskd.form.buttonAuto.clicked.connect(self.onClickAuto) self.taskd.form.buttonMove.clicked.connect(self.onClickMove) self.taskd.form.buttonCenter.clicked.connect(self.onClickCenter) self.taskd.form.buttonPrevious.clicked.connect(self.onClickPrevious) self.taskd.form.fieldGridSpacing.textEdited.connect(self.onSetGridSize) self.taskd.form.fieldGridMainLine.valueChanged.connect( self.onSetMainline) self.taskd.form.fieldGridExtension.valueChanged.connect( self.onSetExtension) self.taskd.form.fieldSnapRadius.valueChanged.connect( self.onSetSnapRadius) # save previous WP to ensure back to the last used when restored FreeCAD.DraftWorkingPlane.save() # Try to find a WP from the current selection if FreeCADGui.Selection.getSelectionEx(FreeCAD.ActiveDocument.Name): if self.handle(): pass # Try another method elif FreeCAD.DraftWorkingPlane.alignToSelection(): FreeCADGui.Selection.clearSelection() self.display(FreeCAD.DraftWorkingPlane.axis) return None # Execute the actual task panel delayed to catch possible active Draft command todo.delay(FreeCADGui.Control.showDialog, self.taskd) _msg( translate( "draft", "Pick a face, 3 vertices or a WP Proxy to define the drawing plane" )) self.call = self.view.addEventCallback("SoEvent", self.action)