diff --git a/src/Mod/Path/Gui/Resources/panels/PathEdit.ui b/src/Mod/Path/Gui/Resources/panels/PathEdit.ui
index f61e9a5eee..868d8b26be 100644
--- a/src/Mod/Path/Gui/Resources/panels/PathEdit.ui
+++ b/src/Mod/Path/Gui/Resources/panels/PathEdit.ui
@@ -31,8 +31,8 @@
0
0
- 378
- 477
+ 242
+ 129
@@ -292,7 +292,7 @@
-
-
+
Orientation
@@ -322,7 +322,7 @@
-
-
+
Alignment
@@ -515,8 +515,8 @@
0
0
- 378
- 514
+ 312
+ 159
@@ -690,7 +690,7 @@
0
0
395
- 462
+ 430
diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py
index e98995184d..ad472dd2d3 100644
--- a/src/Mod/Path/PathScripts/PathJobGui.py
+++ b/src/Mod/Path/PathScripts/PathJobGui.py
@@ -43,7 +43,7 @@ def translate(context, text, disambig=None):
if True:
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
- PathLog.trackModule(PathLog.thisModule)
+ PathLog.trackModule(PathLog.thisModule())
else:
PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule())
@@ -83,6 +83,10 @@ class ViewProvider:
def resetTaskPanel(self):
self.taskPanel = None
+ def unsetEdit(self, arg1, arg2):
+ if self.taskPanel:
+ self.taskPanel.reject(False)
+
def getIcon(self):
return ":/icons/Path-Job.svg"
@@ -136,19 +140,21 @@ class TaskPanel:
self.obj.Base.Objects[0].ViewObject.Visibility = False
def preCleanup(self):
+ PathLog.track()
+ FreeCADGui.Selection.removeObserver(self)
if self.obj.Base and self.obj.Base.ViewObject:
self.obj.Base.ViewObject.Visibility = self.baseVisibility
self.obj.Base.Objects[0].ViewObject.Visibility = self.baseOrigVisibility
- def accept(self):
- PathLog.debug('accept')
+ def accept(self, resetEdit=True):
+ PathLog.track()
self.preCleanup()
self.getFields()
FreeCAD.ActiveDocument.commitTransaction()
- self.cleanup()
+ self.cleanup(resetEdit)
- def reject(self):
- PathLog.debug('reject')
+ def reject(self, resetEdit=True):
+ PathLog.track()
self.preCleanup()
FreeCAD.ActiveDocument.abortTransaction()
if self.deleteOnReject:
@@ -156,13 +162,15 @@ class TaskPanel:
FreeCAD.ActiveDocument.openTransaction(translate("Path_Job", "Uncreate Job"))
FreeCAD.ActiveDocument.removeObject(self.obj.Name)
FreeCAD.ActiveDocument.commitTransaction()
- self.cleanup()
+ self.cleanup(resetEdit)
return True
- def cleanup(self):
+ def cleanup(self, resetEdit):
+ PathLog.track()
self.vobj.Proxy.resetTaskPanel()
FreeCADGui.Control.closeDialog()
- FreeCADGui.ActiveDocument.resetEdit()
+ if resetEdit:
+ FreeCADGui.ActiveDocument.resetEdit()
FreeCAD.ActiveDocument.recompute()
def updateTooltips(self):
@@ -426,6 +434,27 @@ class TaskPanel:
FreeCADGui.Selection.clearSelection()
FreeCADGui.Selection.addSelection(selObject, selFeature)
+ def alignSetOrigin(self):
+ pass
+ def alignMoveToOrigin(self):
+ pass
+
+ def updateSelection(self):
+ sel = FreeCADGui.Selection.getSelectionEx()
+ if len(sel) == 1 and len(sel[0].SubObjects) == 1:
+ if 'Vertex' == sel[0].SubObjects[0].ShapeType:
+ self.form.orientGroup.setEnabled(False)
+ self.form.alignGroup.setEnabled(True)
+ self.form.setOrigin.setEnabled(True)
+ self.form.moveToOrigin.setEnabled(True)
+ else:
+ self.form.orientGroup.setEnabled(True)
+ self.form.setOrigin.setEnabled(False)
+ self.form.moveToOrigin.setEnabled(False)
+ else:
+ self.form.orientGroup.setEnabled(False)
+ self.form.alignGroup.setEnabled(False)
+
def setupUi(self):
self.setFields()
@@ -452,11 +481,32 @@ class TaskPanel:
self.operationSelect()
self.toolControllerSelect()
+ # Stock, Orientation and Alignment
self.form.stockGroup.hide()
+ self.form.centerInStock.hide()
+ self.form.centerInStockXY.hide()
+
self.form.orientXAxis.clicked.connect(lambda: self.orientSelected(FreeCAD.Vector(1, 0, 0)))
self.form.orientYAxis.clicked.connect(lambda: self.orientSelected(FreeCAD.Vector(0, 1, 0)))
self.form.orientZAxis.clicked.connect(lambda: self.orientSelected(FreeCAD.Vector(0, 0, 1)))
+ self.form.setOrigin.clicked.connect(self.alignSetOrigin)
+ self.form.moveToOrigin.clicked.connect(self.alignMoveToOrigin)
+ self.updateSelection()
+
+ def open(self):
+ FreeCADGui.Selection.addObserver(self)
+
+ # SelectionObserver interface
+ def addSelection(self, doc, obj, sub, pnt):
+ self.updateSelection()
+ def removeSelection(self, doc, obj, sub):
+ self.updateSelection()
+ def setSelection(self, doc):
+ self.updateSelection()
+ def clearSelection(self, doc):
+ self.updateSelection()
+
def Create(base, template=None):
'''Create(base, template) ... creates a job instance for the given base object
using template to configure it.'''