Moved FreeCADGui dependency from PathUtils into PathUtilsGui

This commit is contained in:
markus
2019-05-28 18:51:19 -07:00
committed by Markus Lampert
parent 5415b35202
commit fb62e3940e
6 changed files with 110 additions and 54 deletions

View File

@@ -104,6 +104,7 @@ SET(PathScripts_SRCS
PathScripts/PathToolLibraryManager.py
PathScripts/PathUtil.py
PathScripts/PathUtils.py
PathScripts/PathUtilsGui.py
PathScripts/PathSimulatorGui.py
PathScripts/PostUtils.py
PathScripts/PathAdaptiveGui.py

View File

@@ -75,6 +75,7 @@ def Startup():
pass
from PathScripts import PathToolController
from PathScripts import PathToolLibraryManager
from PathScripts import PathUtilsGui
Processed = True
else:
PathLog.debug('Skipping PathGui initialisation')

View File

@@ -107,7 +107,7 @@ class _Extension(object):
return switch
def _setColour(r, g, b):
def _setColour(self, r, g, b):
self.material.diffuseColor = (r, g, b)
def isValid(self):

View File

@@ -23,7 +23,6 @@
# ***************************************************************************
'''PathUtils -common functions used in PathScripts for filterig, sorting, and generating gcode toolpath data '''
import FreeCAD
import FreeCADGui
import Part
import Path
import PathScripts
@@ -36,7 +35,6 @@ import sys
from DraftGeomUtils import geomType
from FreeCAD import Vector
from PathScripts import PathJob
from PathScripts import PathJobCmd
from PathScripts import PathLog
from PySide import QtCore
from PySide import QtGui
@@ -51,6 +49,8 @@ else:
def translate(context, text, disambig=None):
return QtCore.QCoreApplication.translate(context, text, disambig)
UserInput = None
def waiting_effects(function):
def new_function(*args, **kwargs):
if not FreeCAD.GuiUp:
@@ -425,14 +425,8 @@ def findToolController(obj, name=None):
PathLog.track('name: {}'.format(name))
c = None
if FreeCAD.GuiUp:
# First check if a user has selected a tool controller in the tree. Return the first one and remove all from selection
for sel in FreeCADGui.Selection.getSelectionEx():
if hasattr(sel.Object, 'Proxy'):
if isinstance(sel.Object.Proxy, PathScripts.PathToolController.ToolController):
if c is None:
c = sel.Object
FreeCADGui.Selection.removeSelection(sel.Object)
if UserInput:
c = UserInput.selectedToolController()
if c is not None:
return c
@@ -449,16 +443,8 @@ def findToolController(obj, name=None):
tc = None
elif name is not None: # More than one, make the user choose.
tc = [i for i in controllers if i.Label == name][0]
else:
# form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/DlgTCChooser.ui")
form = FreeCADGui.PySideUic.loadUi(":/panels/DlgTCChooser.ui")
mylist = [i.Label for i in controllers]
form.uiToolController.addItems(mylist)
r = form.exec_()
if not r:
tc = None
else:
tc = [i for i in controllers if i.Label == form.uiToolController.currentText()][0]
elif UserInput:
tc = UserInput.chooseToolController(controllers)
return tc
@@ -495,41 +481,12 @@ def addToJob(obj, jobname=None):
return None
else:
jobs = GetJobs()
if len(jobs) == 0:
job = PathJobCmd.CommandJobCreate().Activated()
if len(jobs) == 0 and UserInput:
job = UserInput.createJob()
elif len(jobs) == 1:
job = jobs[0]
else:
selected = FreeCADGui.Selection.getSelection()
if 1 == len(selected) and selected[0] in jobs:
job = selected[0]
else:
modelSelected = []
for job in jobs:
if all([o in job.Model.Group for o in selected]):
modelSelected.append(job)
if 1 == len(modelSelected):
job = modelSelected[0]
else:
modelObjectSelected = []
for job in jobs:
if all([o in job.Proxy.baseObjects(job) for o in selected]):
modelObjectSelected.append(job)
if 1 == len(modelObjectSelected):
job = modelObjectSelected[0]
else:
# form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/DlgJobChooser.ui")
form = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobChooser.ui")
if modelObjectSelected:
mylist = [j.Label for j in modelObjectSelected]
else:
mylist = [j.Label for j in jobs]
form.cboProject.addItems(mylist)
r = form.exec_()
if r is False or r == 0:
return None
else:
job = [j for j in jobs if j.Label == form.cboProject.currentText()][0]
elif UserInput:
job = UserInput.chooseJob(jobs)
if obj and job:
job.Proxy.addOperation(obj)

View File

@@ -0,0 +1,94 @@
# -*- coding: utf-8 -*-
# ***************************************************************************
# * *
# * Copyright (c) 2019 sliptonic <shopinthewoods@gmail.com> *
# * *
# * This program is free software; you can redistribute it and/or modify *
# * it under the terms of the GNU Lesser General Public License (LGPL) *
# * as published by the Free Software Foundation; either version 2 of *
# * the License, or (at your option) any later version. *
# * for detail see the LICENCE text file. *
# * *
# * This program is distributed in the hope that it will be useful, *
# * but WITHOUT ANY WARRANTY; without even the implied warranty of *
# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
# * GNU Library General Public License for more details. *
# * *
# * You should have received a copy of the GNU Library General Public *
# * License along with this program; if not, write to the Free Software *
# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
# * USA *
# * *
# ***************************************************************************
import FreeCAD
import FreeCADGui
import PathScripts
import PathScripts.PathJobCmd as PathJobCmd
import PathScripts.PathUtils as PathUtils
class PathUtilsUserInput(object):
def selectedToolController(self):
tc = None
# check if a user has selected a tool controller in the tree.
# Return the first one and remove all from selection
for sel in FreeCADGui.Selection.getSelectionEx():
if hasattr(sel.Object, 'Proxy'):
if isinstance(sel.Object.Proxy, PathScripts.PathToolController.ToolController):
if tc is None:
tc = sel.Object
FreeCADGui.Selection.removeSelection(sel.Object)
return tc
def chooseToolController(self, controllers):
# form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/DlgTCChooser.ui")
form = FreeCADGui.PySideUic.loadUi(":/panels/DlgTCChooser.ui")
mylist = [i.Label for i in controllers]
form.uiToolController.addItems(mylist)
r = form.exec_()
if not r:
return None
return [i for i in controllers if i.Label == form.uiToolController.currentText()][0]
def chooseJob(self, jobs):
job = None
selected = FreeCADGui.Selection.getSelection()
if 1 == len(selected) and selected[0] in jobs:
job = selected[0]
else:
modelSelected = []
for job in jobs:
if all([o in job.Model.Group for o in selected]):
modelSelected.append(job)
if 1 == len(modelSelected):
job = modelSelected[0]
else:
modelObjectSelected = []
for job in jobs:
if all([o in job.Proxy.baseObjects(job) for o in selected]):
modelObjectSelected.append(job)
if 1 == len(modelObjectSelected):
job = modelObjectSelected[0]
else:
# form = FreeCADGui.PySideUic.loadUi(FreeCAD.getHomePath() + "Mod/Path/DlgJobChooser.ui")
form = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobChooser.ui")
if modelObjectSelected:
mylist = [j.Label for j in modelObjectSelected]
else:
mylist = [j.Label for j in jobs]
form.cboProject.addItems(mylist)
r = form.exec_()
if r is False or r == 0:
return None
else:
job = [j for j in jobs if j.Label == form.cboProject.currentText()][0]
return job
def createJob(self):
return PathJobCmd.CommandJobCreate().Activated()
PathUtils.UserInput = PathUtilsUserInput()

View File

@@ -53,10 +53,13 @@ EXTERNAL_MODULES+=' Mesh'
EXTERNAL_MODULES+=' MeshPart'
EXTERNAL_MODULES+=' Part'
EXTERNAL_MODULES+=' Path'
EXTERNAL_MODULES+=' PySide'
EXTERNAL_MODULES+=' PySide.QtCore'
EXTERNAL_MODULES+=' PySide.QtGui'
EXTERNAL_MODULES+=' TechDraw'
EXTERNAL_MODULES+=' area'
EXTERNAL_MODULES+=' importlib'
EXTERNAL_MODULES+=' pivy'
ARGS+=" --errors-only"
ARGS+=" --ignored-modules=$(echo ${EXTERNAL_MODULES} | tr ' ' ',')"