Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft: re-organization of the trackers code #3092

Merged
merged 4 commits into from Mar 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/Mod/Draft/CMakeLists.txt
Expand Up @@ -10,7 +10,6 @@ SET(Draft_SRCS_base
Draft.py
DraftTools.py
DraftGui.py
DraftTrackers.py
DraftVecUtils.py
DraftGeomUtils.py
DraftLayer.py
Expand Down Expand Up @@ -85,6 +84,7 @@ SET(Draft_GUI_tools
draftguitools/gui_arrays.py
draftguitools/gui_snaps.py
draftguitools/gui_snapper.py
draftguitools/gui_trackers.py
draftguitools/README.md
)

Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Draft/DraftEdit.py
Expand Up @@ -35,7 +35,7 @@
# Do not import GUI-related modules if GUI is not there
import FreeCADGui as Gui
import DraftTools
from DraftTrackers import editTracker, wireTracker, arcTracker, bsplineTracker, bezcurveTracker
from draftguitools.gui_trackers import editTracker, wireTracker, arcTracker, bsplineTracker, bezcurveTracker
from pivy import coin
from PySide import QtCore, QtGui
from PySide.QtCore import QT_TRANSLATE_NOOP
Expand Down
6 changes: 3 additions & 3 deletions src/Mod/Draft/DraftFillet.py
Expand Up @@ -15,7 +15,7 @@
from PySide.QtCore import QT_TRANSLATE_NOOP
from PySide import QtCore
import DraftTools
import DraftTrackers
import draftguitools.gui_trackers as trackers
from DraftGui import translate
else:
def QT_TRANSLATE_NOOP(context, text):
Expand Down Expand Up @@ -221,8 +221,8 @@ def Activated(self, name=translate("draft", "Fillet")):
QtCore.QObject.connect(self.ui.check_chamfer,
QtCore.SIGNAL("stateChanged(int)"),
self.set_chamfer)
self.linetrack = DraftTrackers.lineTracker(dotted=True)
self.arctrack = DraftTrackers.arcTracker()
self.linetrack = trackers.lineTracker(dotted=True)
self.arctrack = trackers.arcTracker()
# self.call = self.view.addEventCallback("SoEvent", self.action)
FCC.PrintMessage(translate("draft", "Enter radius") + "\n")

Expand Down
78 changes: 38 additions & 40 deletions src/Mod/Draft/DraftTools.py
Expand Up @@ -42,8 +42,7 @@
from DraftGui import todo, translate, utf8_decode
import draftguitools.gui_snapper as gui_snapper
import DraftGui
import DraftTrackers
from DraftTrackers import *
import draftguitools.gui_trackers as trackers
from pivy import coin

if not hasattr(FreeCADGui, "Snapper"):
Expand Down Expand Up @@ -271,7 +270,7 @@ def Activated(self, name="None", noplanesetup=False, is_subtool=False):
self.ui.setTitle(name)
self.planetrack = None
if Draft.getParam("showPlaneTracker",False):
self.planetrack = PlaneTracker()
self.planetrack = trackers.PlaneTracker()
if hasattr(FreeCADGui,"Snapper"):
FreeCADGui.Snapper.setTrackers()

Expand Down Expand Up @@ -596,7 +595,7 @@ def GetResources(self):
def Activated(self):
Line.Activated(self,name=translate("draft","BSpline"))
if self.doc:
self.bsplinetrack = bsplineTracker()
self.bsplinetrack = trackers.bsplineTracker()

def action(self,arg):
"""scene event handler"""
Expand Down Expand Up @@ -697,7 +696,7 @@ def GetResources(self):
def Activated(self):
Line.Activated(self,name=translate("draft","BezCurve"))
if self.doc:
self.bezcurvetrack = bezcurveTracker()
self.bezcurvetrack = trackers.bezcurveTracker()

def action(self,arg):
"""scene event handler"""
Expand Down Expand Up @@ -816,7 +815,7 @@ def GetResources(self):
def Activated(self):
Line.Activated(self,name=translate("draft","CubicBezCurve"))
if self.doc:
self.bezcurvetrack = bezcurveTracker()
self.bezcurvetrack = trackers.bezcurveTracker()

def action(self,arg):
"""scene event handler"""
Expand Down Expand Up @@ -1045,7 +1044,7 @@ def Activated(self):
self.fillstate = self.ui.hasFill.isChecked()
self.ui.hasFill.setChecked(True)
self.call = self.view.addEventCallback("SoEvent",self.action)
self.rect = rectangleTracker()
self.rect = trackers.rectangleTracker()
FreeCAD.Console.PrintMessage(translate("draft", "Pick first point")+"\n")

def finish(self,closed=False,cont=False):
Expand Down Expand Up @@ -1172,8 +1171,8 @@ def Activated(self):
else: self.ui.circleUi()
self.altdown = False
self.ui.sourceCmd = self
self.linetrack = lineTracker(dotted=True)
self.arctrack = arcTracker()
self.linetrack = trackers.lineTracker(dotted=True)
self.arctrack = trackers.arcTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick center point")+"\n")

Expand Down Expand Up @@ -1510,7 +1509,7 @@ def Activated(self):
self.ui.numFacesLabel.show()
self.altdown = False
self.ui.sourceCmd = self
self.arctrack = arcTracker()
self.arctrack = trackers.arcTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick center point")+"\n")

Expand Down Expand Up @@ -1688,7 +1687,7 @@ def Activated(self):
self.ui.pointUi(name)
self.ui.extUi()
self.call = self.view.addEventCallback("SoEvent",self.action)
self.rect = rectangleTracker()
self.rect = trackers.rectangleTracker()
FreeCAD.Console.PrintMessage(translate("draft", "Pick first point")+"\n")

def finish(self,closed=False,cont=False):
Expand Down Expand Up @@ -1890,8 +1889,8 @@ def Activated(self):
self.finish()
elif self.hasMeasures():
Creator.Activated(self,name)
self.dimtrack = dimTracker()
self.arctrack = arcTracker()
self.dimtrack = trackers.dimTracker()
self.arctrack = trackers.arcTracker()
self.createOnMeasures()
self.finish()
else:
Expand All @@ -1902,8 +1901,8 @@ def Activated(self):
self.ui.selectButton.show()
self.altdown = False
self.call = self.view.addEventCallback("SoEvent",self.action)
self.dimtrack = dimTracker()
self.arctrack = arcTracker()
self.dimtrack = trackers.dimTracker()
self.arctrack = trackers.arcTracker()
self.link = None
self.edges = []
self.pts = []
Expand Down Expand Up @@ -2460,15 +2459,15 @@ def handle_mouse_click_event(self, arg):
def set_ghosts(self):
if self.ui.isSubelementMode.isChecked():
return self.set_subelement_ghosts()
self.ghosts = [ghostTracker(self.selected_objects)]
self.ghosts = [trackers.ghostTracker(self.selected_objects)]

def set_subelement_ghosts(self):
import Part
for object in self.selected_subelements:
for subelement in object.SubObjects:
if isinstance(subelement, Part.Vertex) \
or isinstance(subelement, Part.Edge):
self.ghosts.append(ghostTracker(subelement))
self.ghosts.append(trackers.ghostTracker(subelement))

def move(self):
if self.ui.isSubelementMode.isChecked():
Expand Down Expand Up @@ -2616,7 +2615,7 @@ def proceed(self):
self.ui.rotateSetCenterUi()
self.ui.modUi()
self.ui.setTitle(translate("draft","Rotate"))
self.arctrack = arcTracker()
self.arctrack = trackers.arcTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick rotation center")+"\n")

Expand Down Expand Up @@ -2730,15 +2729,15 @@ def set_rotation_angle(self, arg):
def set_ghosts(self):
if self.ui.isSubelementMode.isChecked():
return self.set_subelement_ghosts()
self.ghosts = [ghostTracker(self.selected_objects)]
self.ghosts = [trackers.ghostTracker(self.selected_objects)]

def set_subelement_ghosts(self):
import Part
for object in self.selected_subelements:
for subelement in object.SubObjects:
if isinstance(subelement, Part.Vertex) \
or isinstance(subelement, Part.Edge):
self.ghosts.append(ghostTracker(subelement))
self.ghosts.append(trackers.ghostTracker(subelement))

def finish(self, closed=False, cont=False):
"""finishes the arc"""
Expand Down Expand Up @@ -2892,19 +2891,19 @@ def proceed(self):
self.npts = None
self.constrainSeg = None
self.ui.offsetUi()
self.linetrack = lineTracker()
self.linetrack = trackers.lineTracker()
self.faces = False
self.shape = self.sel.Shape
self.mode = None
if Draft.getType(self.sel) in ["Circle","Arc"]:
self.ghost = arcTracker()
self.ghost = trackers.arcTracker()
self.mode = "Circle"
self.center = self.shape.Edges[0].Curve.Center
self.ghost.setCenter(self.center)
self.ghost.setStartAngle(math.radians(self.sel.FirstAngle))
self.ghost.setEndAngle(math.radians(self.sel.LastAngle))
elif Draft.getType(self.sel) == "BSpline":
self.ghost = bsplineTracker(points=self.sel.Points)
self.ghost = trackers.bsplineTracker(points=self.sel.Points)
self.mode = "BSpline"
elif Draft.getType(self.sel) == "BezCurve":
FreeCAD.Console.PrintWarning(translate("draft", "Sorry, offset of Bezier curves is currently still not supported")+"\n")
Expand All @@ -2914,15 +2913,15 @@ def proceed(self):
if len(self.sel.Shape.Edges) == 1:
import Part
if isinstance(self.sel.Shape.Edges[0].Curve,Part.Circle):
self.ghost = arcTracker()
self.ghost = trackers.arcTracker()
self.mode = "Circle"
self.center = self.shape.Edges[0].Curve.Center
self.ghost.setCenter(self.center)
if len(self.sel.Shape.Vertexes) > 1:
self.ghost.setStartAngle(self.sel.Shape.Edges[0].FirstParameter)
self.ghost.setEndAngle(self.sel.Shape.Edges[0].LastParameter)
if not self.ghost:
self.ghost = wireTracker(self.shape)
self.ghost = trackers.wireTracker(self.shape)
self.mode = "Wire"
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick distance")+"\n")
Expand Down Expand Up @@ -3102,7 +3101,7 @@ def proceed(self):
self.ui.pointUi("Stretch")
self.ui.extUi()
self.call = self.view.addEventCallback("SoEvent",self.action)
self.rectracker = rectangleTracker(dotted=True,scolor=(0.0,0.0,1.0),swidth=2)
self.rectracker = trackers.rectangleTracker(dotted=True,scolor=(0.0,0.0,1.0),swidth=2)
self.nodetracker = []
self.displacement = None
FreeCAD.Console.PrintMessage(translate("draft", "Pick first point of selection rectangle")+"\n")
Expand Down Expand Up @@ -3195,7 +3194,7 @@ def addPoint(self,point):
self.ops.append([o])
nodes.append(p)
for n in nodes:
nt = editTracker(n,inactive=True)
nt = trackers.editTracker(n,inactive=True)
nt.on()
self.nodetracker.append(nt)
self.step = 3
Expand Down Expand Up @@ -3538,7 +3537,7 @@ def proceed(self):
return
self.obj = sel[0]
self.ui.trimUi()
self.linetrack = lineTracker()
self.linetrack = trackers.lineTracker()

import DraftGeomUtils

Expand All @@ -3548,10 +3547,10 @@ def proceed(self):
if len(self.obj.Shape.Faces) == 1:
# simple extrude mode, the object itself is extruded
self.extrudeMode = True
self.ghost = [ghostTracker([self.obj])]
self.ghost = [trackers.ghostTracker([self.obj])]
self.normal = self.obj.Shape.Faces[0].normalAt(.5,.5)
for v in self.obj.Shape.Vertexes:
self.ghost.append(lineTracker())
self.ghost.append(trackers.lineTracker())
elif len(self.obj.Shape.Faces) > 1:
# face extrude mode, a new object is created
ss = FreeCADGui.Selection.getSelectionEx()[0]
Expand All @@ -3560,10 +3559,10 @@ def proceed(self):
self.obj = self.doc.addObject("Part::Feature","Face")
self.obj.Shape = ss.SubObjects[0]
self.extrudeMode = True
self.ghost = [ghostTracker([self.obj])]
self.ghost = [trackers.ghostTracker([self.obj])]
self.normal = self.obj.Shape.Faces[0].normalAt(.5,.5)
for v in self.obj.Shape.Vertexes:
self.ghost.append(lineTracker())
self.ghost.append(trackers.lineTracker())
else:
# normal wire trimex mode
self.color = self.obj.ViewObject.LineColor
Expand All @@ -3583,9 +3582,9 @@ def proceed(self):
sw = self.width
for e in self.edges:
if DraftGeomUtils.geomType(e) == "Line":
self.ghost.append(lineTracker(scolor=sc,swidth=sw))
self.ghost.append(trackers.lineTracker(scolor=sc,swidth=sw))
else:
self.ghost.append(arcTracker(scolor=sc,swidth=sw))
self.ghost.append(trackers.arcTracker(scolor=sc,swidth=sw))
if not self.ghost: self.finish()
for g in self.ghost: g.on()
self.activePoint = 0
Expand Down Expand Up @@ -3967,15 +3966,15 @@ def proceed(self):
def set_ghosts(self):
if self.ui.isSubelementMode.isChecked():
return self.set_subelement_ghosts()
self.ghosts = [ghostTracker(self.selected_objects)]
self.ghosts = [trackers.ghostTracker(self.selected_objects)]

def set_subelement_ghosts(self):
import Part
for object in self.selected_subelements:
for subelement in object.SubObjects:
if isinstance(subelement, Part.Vertex) \
or isinstance(subelement, Part.Edge):
self.ghosts.append(ghostTracker(subelement))
self.ghosts.append(trackers.ghostTracker(subelement))

def pickRef(self):
self.pickmode = True
Expand Down Expand Up @@ -4972,7 +4971,7 @@ def proceed(self):
self.ui.modUi()
self.ui.xValue.setFocus()
self.ui.xValue.selectAll()
#self.ghost = ghostTracker(self.sel) TODO: solve this (see below)
# self.ghost = trackers.ghostTracker(self.sel) TODO: solve this (see below)
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick start point of mirror line")+"\n")
self.ui.isCopy.hide()
Expand Down Expand Up @@ -5199,7 +5198,7 @@ def Activated(self):
self.ui.labelUi(self.name,callback=self.setmode)
self.ui.xValue.setFocus()
self.ui.xValue.selectAll()
self.ghost = DraftTrackers.lineTracker()
self.ghost = trackers.lineTracker()
self.call = self.view.addEventCallback("SoEvent",self.action)
FreeCAD.Console.PrintMessage(translate("draft", "Pick target point")+"\n")
self.ui.isCopy.hide()
Expand Down Expand Up @@ -5363,10 +5362,9 @@ def IsActive(self):

def Activated(self):

import DraftTrackers
self.points = []
self.normal = None
self.tracker = DraftTrackers.arcTracker()
self.tracker = trackers.arcTracker()
self.tracker.autoinvert = False
if hasattr(FreeCAD,"DraftWorkingPlane"):
FreeCAD.DraftWorkingPlane.setup()
Expand Down