Moved FreeCADGui dependency from PathUtils into PathUtilsGui
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
94
src/Mod/Path/PathScripts/PathUtilsGui.py
Normal file
94
src/Mod/Path/PathScripts/PathUtilsGui.py
Normal 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()
|
||||
|
||||
@@ -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 ' ' ',')"
|
||||
|
||||
Reference in New Issue
Block a user