Arch: Fixed toolbar mode - fixes #1473

This commit is contained in:
Yorik van Havre 2014-03-27 17:18:14 -03:00
parent ebb921d60a
commit e429b31acb
3 changed files with 30 additions and 21 deletions

View File

@ -481,11 +481,12 @@ class _CommandStructure:
def update(self,point,info): def update(self,point,info):
"this function is called by the Snapper when the mouse is moved" "this function is called by the Snapper when the mouse is moved"
if self.Height >= self.Length: if FreeCADGui.Control.activeDialog():
delta = Vector(0,0,self.Height/2) if self.Height >= self.Length:
else: delta = Vector(0,0,self.Height/2)
delta = Vector(self.Length/2,0,0) else:
self.tracker.pos(point.add(delta)) delta = Vector(self.Length/2,0,0)
self.tracker.pos(point.add(delta))
def setWidth(self,d): def setWidth(self,d):
self.Width = d self.Width = d

View File

@ -246,20 +246,21 @@ class _CommandWall:
def update(self,point,info): def update(self,point,info):
"this function is called by the Snapper when the mouse is moved" "this function is called by the Snapper when the mouse is moved"
b = self.points[0] if FreeCADGui.Control.activeDialog():
n = FreeCAD.DraftWorkingPlane.axis b = self.points[0]
bv = point.sub(b) n = FreeCAD.DraftWorkingPlane.axis
dv = bv.cross(n) bv = point.sub(b)
dv = DraftVecUtils.scaleTo(dv,self.Width/2) dv = bv.cross(n)
if self.Align == "Center": dv = DraftVecUtils.scaleTo(dv,self.Width/2)
self.tracker.update([b,point]) if self.Align == "Center":
elif self.Align == "Left": self.tracker.update([b,point])
self.tracker.update([b.add(dv),point.add(dv)]) elif self.Align == "Left":
else: self.tracker.update([b.add(dv),point.add(dv)])
dv = dv.negative() else:
self.tracker.update([b.add(dv),point.add(dv)]) dv = dv.negative()
if self.Length: self.tracker.update([b.add(dv),point.add(dv)])
self.Length.setValue(bv.Length) if self.Length:
self.Length.setValue(bv.Length)
def taskbox(self): def taskbox(self):
"sets up a taskbox widget" "sets up a taskbox widget"

View File

@ -561,6 +561,12 @@ class DraftToolBar:
# create a dummy task to block the UI during the works # create a dummy task to block the UI during the works
class dummy: class dummy:
"an empty dialog" "an empty dialog"
def __init__(self,extra=None):
if extra:
if isinstance(extra,list):
self.form = extra
else:
self.form = [extra]
def getStandardButtons(self): def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Cancel) return int(QtGui.QDialogButtonBox.Cancel)
def accept(self): def accept(self):
@ -571,8 +577,9 @@ class DraftToolBar:
FreeCADGui.draftToolBar.escape() FreeCADGui.draftToolBar.escape()
FreeCADGui.ActiveDocument.resetEdit() FreeCADGui.ActiveDocument.resetEdit()
return True return True
if not FreeCADGui.Control.activeDialog(): if FreeCADGui.Control.activeDialog():
todo.delay(FreeCADGui.Control.showDialog,dummy()) FreeCADGui.Control.closeDialog()
todo.delay(FreeCADGui.Control.showDialog,dummy(extra))
self.setTitle(title) self.setTitle(title)
def redraw(self): def redraw(self):