Code cleanup and minor bug fixes.
This commit is contained in:
parent
765c9d168d
commit
544faacaf2
|
@ -10,7 +10,7 @@ import module_locator
|
||||||
import Settings
|
import Settings
|
||||||
import Shared
|
import Shared
|
||||||
|
|
||||||
#Distinguish python built-in open function from the one declared here
|
# Distinguish python built-in open function from the one declared here
|
||||||
if open.__module__ == '__builtin__':
|
if open.__module__ == '__builtin__':
|
||||||
pythonopen = open
|
pythonopen = open
|
||||||
|
|
||||||
|
@ -26,12 +26,12 @@ class CadQueryClearOutput:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#Grab our code editor so we can interact with it
|
# Grab our main window so we can interact with it
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
|
|
||||||
reportView = mw.findChild(QtGui.QDockWidget, "Report view")
|
reportView = mw.findChild(QtGui.QDockWidget, "Report view")
|
||||||
|
|
||||||
#Clear the view because it gets overwhelmed sometimes and won't scroll to the bottom
|
# Clear the view because it gets overwhelmed sometimes and won't scroll to the bottom
|
||||||
reportView.widget().clear()
|
reportView.widget().clear()
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,21 +44,18 @@ class CadQueryCloseScript:
|
||||||
|
|
||||||
def IsActive(self):
|
def IsActive(self):
|
||||||
return True
|
return True
|
||||||
# if FreeCAD.ActiveDocument is None:
|
|
||||||
# return False
|
|
||||||
# else:
|
|
||||||
# return True
|
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#Grab our code editor so we can interact with it
|
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
cqCodePane = mw.findChild(QtGui.QPlainTextEdit, "cqCodePane")
|
|
||||||
|
|
||||||
#If there's nothing open in the code pane, we don't need to close it
|
# Grab our code editor so we can interact with it
|
||||||
|
cqCodePane = Shared.getActiveCodePane()
|
||||||
|
|
||||||
|
# If there's nothing open in the code pane, we don't need to close it
|
||||||
if cqCodePane is None or len(cqCodePane.file.path) == 0:
|
if cqCodePane is None or len(cqCodePane.file.path) == 0:
|
||||||
return
|
return
|
||||||
|
|
||||||
#Check to see if we need to save the script
|
# Check to see if we need to save the script
|
||||||
if cqCodePane.dirty:
|
if cqCodePane.dirty:
|
||||||
reply = QtGui.QMessageBox.question(cqCodePane, "Save CadQuery Script", "Save script before closing?",
|
reply = QtGui.QMessageBox.question(cqCodePane, "Save CadQuery Script", "Save script before closing?",
|
||||||
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | QtGui.QMessageBox.Cancel)
|
QtGui.QMessageBox.Yes | QtGui.QMessageBox.No | QtGui.QMessageBox.Cancel)
|
||||||
|
@ -67,28 +64,28 @@ class CadQueryCloseScript:
|
||||||
return
|
return
|
||||||
|
|
||||||
if reply == QtGui.QMessageBox.Yes:
|
if reply == QtGui.QMessageBox.Yes:
|
||||||
#If we've got a file name already save it there, otherwise give a save-as dialog
|
# If we've got a file name already save it there, otherwise give a save-as dialog
|
||||||
if len(cqCodePane.file.path) == 0:
|
if len(cqCodePane.file.path) == 0:
|
||||||
filename = QtGui.QFileDialog.getSaveFileName(mw, mw.tr("Save CadQuery Script As"), "/home/",
|
filename = QtGui.QFileDialog.getSaveFileName(mw, mw.tr("Save CadQuery Script As"), "/home/",
|
||||||
mw.tr("CadQuery Files (*.py)"))
|
mw.tr("CadQuery Files (*.py)"))
|
||||||
else:
|
else:
|
||||||
filename = cqCodePane.file.path
|
filename = cqCodePane.file.path
|
||||||
|
|
||||||
#Make sure we got a valid file name
|
# Make sure we got a valid file name
|
||||||
if filename is not None:
|
if filename is not None:
|
||||||
ExportCQ.save(filename)
|
ExportCQ.save(filename)
|
||||||
|
|
||||||
#Close the matching 3D view if it's open
|
# Close the matching 3D view if it's open
|
||||||
if cqCodePane.file.path is not None:
|
if cqCodePane.file.path is not None:
|
||||||
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
FreeCAD.closeDocument(docname)
|
FreeCAD.closeDocument(docname)
|
||||||
except:
|
except:
|
||||||
#Assume that the document has already been closed
|
# Assume that the document has already been closed
|
||||||
pass
|
pass
|
||||||
|
|
||||||
#Clear our script and whatever was rendered by it out
|
# Clear our script and whatever was rendered by it out
|
||||||
cqCodePane.file.close()
|
cqCodePane.file.close()
|
||||||
|
|
||||||
class CadQueryExecuteExample:
|
class CadQueryExecuteExample:
|
||||||
|
@ -103,29 +100,19 @@ class CadQueryExecuteExample:
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
FreeCAD.Console.PrintMessage(self.exFile + "\r\n")
|
FreeCAD.Console.PrintMessage(self.exFile + "\r\n")
|
||||||
|
|
||||||
#So we can open the "Open File" dialog
|
# So we can open the "Open File" dialog
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
|
|
||||||
#Start off defaulting to the Examples directory
|
# Start off defaulting to the Examples directory
|
||||||
module_base_path = module_locator.module_path()
|
module_base_path = module_locator.module_path()
|
||||||
exs_dir_path = os.path.join(module_base_path, 'Examples')
|
exs_dir_path = os.path.join(module_base_path, 'Examples')
|
||||||
|
|
||||||
#Append this script's directory to sys.path
|
# Append this script's directory to sys.path
|
||||||
sys.path.append(os.path.dirname(exs_dir_path))
|
sys.path.append(os.path.dirname(exs_dir_path))
|
||||||
|
|
||||||
#We've created a library that FreeCAD can use as well to open CQ files
|
# We've created a library that FreeCAD can use as well to open CQ files
|
||||||
ImportCQ.open(os.path.join(exs_dir_path, self.exFile))
|
ImportCQ.open(os.path.join(exs_dir_path, self.exFile))
|
||||||
|
|
||||||
# docname = os.path.splitext(os.path.basename(self.exFile))[0]
|
|
||||||
# FreeCAD.newDocument(docname)
|
|
||||||
|
|
||||||
#Execute the script
|
|
||||||
#CadQueryExecuteScript().Activated()
|
|
||||||
|
|
||||||
#Get a nice view of our model
|
|
||||||
#FreeCADGui.activeDocument().activeView().viewAxometric()
|
|
||||||
#FreeCADGui.SendMsgToActiveView("ViewFit")
|
|
||||||
|
|
||||||
|
|
||||||
class CadQueryExecuteScript:
|
class CadQueryExecuteScript:
|
||||||
"""CadQuery's command to execute a script file"""
|
"""CadQuery's command to execute a script file"""
|
||||||
|
@ -140,19 +127,17 @@ class CadQueryExecuteScript:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#Grab our code editor so we can interact with it
|
# Grab our code editor so we can interact with it
|
||||||
cqCodePane = Shared.getActiveCodePane()
|
cqCodePane = Shared.getActiveCodePane()
|
||||||
|
|
||||||
#Clear the old render before re-rendering
|
# Clear the old render before re-rendering
|
||||||
Shared.clearActiveDocument()
|
Shared.clearActiveDocument()
|
||||||
|
|
||||||
#Save our code to a tempfile and render it
|
# Save our code to a tempfile and render it
|
||||||
tempFile = tempfile.NamedTemporaryFile(delete=False)
|
tempFile = tempfile.NamedTemporaryFile(delete=False)
|
||||||
tempFile.write(cqCodePane.toPlainText().encode('utf-8'))
|
tempFile.write(cqCodePane.toPlainText().encode('utf-8'))
|
||||||
tempFile.close()
|
tempFile.close()
|
||||||
|
|
||||||
#mdi = mw.findChild(QtGui.QMdiArea)
|
|
||||||
#docname = mdi.currentSubWindow().getWindowTitle()
|
|
||||||
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
||||||
|
|
||||||
# Make sure we replace any troublesome characters
|
# Make sure we replace any troublesome characters
|
||||||
|
@ -166,7 +151,7 @@ class CadQueryExecuteScript:
|
||||||
except:
|
except:
|
||||||
FreeCAD.newDocument(docname)
|
FreeCAD.newDocument(docname)
|
||||||
|
|
||||||
#We import this way because using execfile() causes non-standard script execution in some situations
|
# We import this way because using execfile() causes non-standard script execution in some situations
|
||||||
imp.load_source('temp_module', tempFile.name)
|
imp.load_source('temp_module', tempFile.name)
|
||||||
|
|
||||||
msg = QtGui.QApplication.translate(
|
msg = QtGui.QApplication.translate(
|
||||||
|
@ -189,13 +174,13 @@ class CadQueryNewScript:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#We need to close any file that's already open in the editor window
|
# We need to close any file that's already open in the editor window
|
||||||
CadQueryCloseScript().Activated()
|
CadQueryCloseScript().Activated()
|
||||||
|
|
||||||
module_base_path = module_locator.module_path()
|
module_base_path = module_locator.module_path()
|
||||||
templ_dir_path = os.path.join(module_base_path, 'Templates')
|
templ_dir_path = os.path.join(module_base_path, 'Templates')
|
||||||
|
|
||||||
#Use the library that FreeCAD can use as well to open CQ files
|
# Use the library that FreeCAD can use as well to open CQ files
|
||||||
ImportCQ.open(os.path.join(templ_dir_path, 'script_template.py'))
|
ImportCQ.open(os.path.join(templ_dir_path, 'script_template.py'))
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,12 +198,12 @@ class CadQueryOpenScript:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#So we can open the "Open File" dialog
|
# So we can open the "Open File" dialog
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
|
|
||||||
#Try to keep track of the previous path used to open as a convenience to the user
|
# Try to keep track of the previous path used to open as a convenience to the user
|
||||||
if self.previousPath is None:
|
if self.previousPath is None:
|
||||||
#Start off defaulting to the Examples directory
|
# Start off defaulting to the Examples directory
|
||||||
module_base_path = module_locator.module_path()
|
module_base_path = module_locator.module_path()
|
||||||
exs_dir_path = os.path.join(module_base_path, 'Examples')
|
exs_dir_path = os.path.join(module_base_path, 'Examples')
|
||||||
|
|
||||||
|
@ -227,29 +212,19 @@ class CadQueryOpenScript:
|
||||||
filename = QtGui.QFileDialog.getOpenFileName(mw, mw.tr("Open CadQuery Script"), self.previousPath,
|
filename = QtGui.QFileDialog.getOpenFileName(mw, mw.tr("Open CadQuery Script"), self.previousPath,
|
||||||
mw.tr("CadQuery Files (*.py)"))
|
mw.tr("CadQuery Files (*.py)"))
|
||||||
|
|
||||||
#Make sure the user didn't click cancel
|
# Make sure the user didn't click cancel
|
||||||
if filename[0]:
|
if filename[0]:
|
||||||
#We need to close any file that's already open in the editor window
|
# We need to close any file that's already open in the editor window
|
||||||
CadQueryCloseScript().Activated()
|
CadQueryCloseScript().Activated()
|
||||||
|
|
||||||
self.previousPath = filename[0]
|
self.previousPath = filename[0]
|
||||||
|
|
||||||
#Append this script's directory to sys.path
|
# Append this script's directory to sys.path
|
||||||
sys.path.append(os.path.dirname(filename[0]))
|
sys.path.append(os.path.dirname(filename[0]))
|
||||||
|
|
||||||
#We've created a library that FreeCAD can use as well to open CQ files
|
# We've created a library that FreeCAD can use as well to open CQ files
|
||||||
ImportCQ.open(filename[0])
|
ImportCQ.open(filename[0])
|
||||||
|
|
||||||
# docname = os.path.splitext(os.path.basename(filename[0]))[0]
|
|
||||||
# FreeCAD.newDocument(docname)
|
|
||||||
|
|
||||||
#Execute the script
|
|
||||||
# CadQueryExecuteScript().Activated()
|
|
||||||
|
|
||||||
#Get a nice view of our model
|
|
||||||
# FreeCADGui.activeDocument().activeView().viewAxometric()
|
|
||||||
# FreeCADGui.SendMsgToActiveView("ViewFit")
|
|
||||||
|
|
||||||
|
|
||||||
class CadQuerySaveScript:
|
class CadQuerySaveScript:
|
||||||
"""CadQuery's command to save a script file"""
|
"""CadQuery's command to save a script file"""
|
||||||
|
@ -264,10 +239,15 @@ class CadQuerySaveScript:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#Grab our code editor so we can interact with it
|
# Grab our code editor so we can interact with it
|
||||||
cqCodePane = Shared.getActiveCodePane()
|
cqCodePane = Shared.getActiveCodePane()
|
||||||
|
|
||||||
#If the code pane doesn't have a filename, we need to present the save as dialog
|
# If there are no windows open there is nothing to save
|
||||||
|
if cqCodePane == None:
|
||||||
|
FreeCAD.Console.PrintError("Nothing to save.\r\n")
|
||||||
|
return
|
||||||
|
|
||||||
|
# If the code pane doesn't have a filename, we need to present the save as dialog
|
||||||
if len(cqCodePane.file.path) == 0 or os.path.basename(cqCodePane.file.path) == 'script_template.py' \
|
if len(cqCodePane.file.path) == 0 or os.path.basename(cqCodePane.file.path) == 'script_template.py' \
|
||||||
or os.path.split(cqCodePane.file.path)[-2].endswith('Examples'):
|
or os.path.split(cqCodePane.file.path)[-2].endswith('Examples'):
|
||||||
FreeCAD.Console.PrintError("You cannot save over a blank file, example file or template file.\r\n")
|
FreeCAD.Console.PrintError("You cannot save over a blank file, example file or template file.\r\n")
|
||||||
|
@ -276,10 +256,10 @@ class CadQuerySaveScript:
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
#Rely on our export library to help us save the file
|
# Rely on our export library to help us save the file
|
||||||
ExportCQ.save()
|
ExportCQ.save()
|
||||||
|
|
||||||
#Execute the script if the user has asked for it
|
# Execute the script if the user has asked for it
|
||||||
if Settings.execute_on_save:
|
if Settings.execute_on_save:
|
||||||
CadQueryExecuteScript().Activated()
|
CadQueryExecuteScript().Activated()
|
||||||
|
|
||||||
|
@ -297,11 +277,15 @@ class CadQuerySaveAsScript:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
#So we can open the save-as dialog
|
# So we can open the save-as dialog
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
cqCodePane = Shared.getActiveCodePane()
|
cqCodePane = Shared.getActiveCodePane()
|
||||||
|
|
||||||
#Try to keep track of the previous path used to open as a convenience to the user
|
if cqCodePane == None:
|
||||||
|
FreeCAD.Console.PrintError("Nothing to save.\r\n")
|
||||||
|
return
|
||||||
|
|
||||||
|
# Try to keep track of the previous path used to open as a convenience to the user
|
||||||
if self.previousPath is None:
|
if self.previousPath is None:
|
||||||
self.previousPath = "/home/"
|
self.previousPath = "/home/"
|
||||||
|
|
||||||
|
@ -310,19 +294,19 @@ class CadQuerySaveAsScript:
|
||||||
|
|
||||||
self.previousPath = filename[0]
|
self.previousPath = filename[0]
|
||||||
|
|
||||||
#Make sure the user didn't click cancel
|
# Make sure the user didn't click cancel
|
||||||
if filename[0]:
|
if filename[0]:
|
||||||
#Close the 3D view for the original script if it's open
|
# Close the 3D view for the original script if it's open
|
||||||
try:
|
try:
|
||||||
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
docname = os.path.splitext(os.path.basename(cqCodePane.file.path))[0]
|
||||||
FreeCAD.closeDocument(docname)
|
FreeCAD.closeDocument(docname)
|
||||||
except:
|
except:
|
||||||
#Assume that there was no 3D view to close
|
# Assume that there was no 3D view to close
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Change the name of our script window's tab
|
# Change the name of our script window's tab
|
||||||
Shared.setActiveWindowTitle(os.path.basename(filename[0]))
|
Shared.setActiveWindowTitle(os.path.basename(filename[0]))
|
||||||
|
|
||||||
#Save the file before closing the original and the re-rendering the new one
|
# Save the file before closing the original and the re-rendering the new one
|
||||||
ExportCQ.save(filename[0])
|
ExportCQ.save(filename[0])
|
||||||
CadQueryExecuteScript().Activated()
|
CadQueryExecuteScript().Activated()
|
||||||
|
|
|
@ -45,7 +45,6 @@ def open(filename):
|
||||||
# Set up so that we can import from our embedded packages
|
# Set up so that we can import from our embedded packages
|
||||||
module_base_path = module_locator.module_path()
|
module_base_path = module_locator.module_path()
|
||||||
libs_dir_path = os.path.join(module_base_path, 'Libs')
|
libs_dir_path = os.path.join(module_base_path, 'Libs')
|
||||||
sys.path.insert(0, libs_dir_path)
|
|
||||||
|
|
||||||
from pyqode.core.modes import FileWatcherMode
|
from pyqode.core.modes import FileWatcherMode
|
||||||
from pyqode.core.modes import RightMarginMode
|
from pyqode.core.modes import RightMarginMode
|
||||||
|
@ -59,7 +58,6 @@ def open(filename):
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
|
|
||||||
# Grab just the file name from the path/file that's being executed
|
# Grab just the file name from the path/file that's being executed
|
||||||
# docname = os.path.splitext(os.path.basename(filename))[0]
|
|
||||||
docname = os.path.basename(filename)
|
docname = os.path.basename(filename)
|
||||||
|
|
||||||
# Set up the text area for our CQ code
|
# Set up the text area for our CQ code
|
||||||
|
|
|
@ -3,3 +3,31 @@
|
||||||
|
|
||||||
#TODO: The FreeCAD devs like to put as much init code as possible in here so that the module can be used without the
|
#TODO: The FreeCAD devs like to put as much init code as possible in here so that the module can be used without the
|
||||||
#TODO: GUI if desired
|
#TODO: GUI if desired
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import module_locator
|
||||||
|
|
||||||
|
# Set up so that we can import from our embedded packages
|
||||||
|
module_base_path = module_locator.module_path()
|
||||||
|
libs_dir_path = os.path.join(module_base_path, 'Libs')
|
||||||
|
sys.path.insert(0, libs_dir_path)
|
||||||
|
|
||||||
|
# Tack on our CadQuery library git subtree
|
||||||
|
cq_lib_path = os.path.join(libs_dir_path, 'cadquery-lib')
|
||||||
|
sys.path.insert(1, cq_lib_path)
|
||||||
|
|
||||||
|
# Make sure we get the right libs under the FreeCAD installation
|
||||||
|
fc_base_path = os.path.dirname(os.path.dirname(module_base_path))
|
||||||
|
fc_lib_path = os.path.join(fc_base_path, 'lib')
|
||||||
|
fc_bin_path = os.path.join(fc_base_path, 'bin')
|
||||||
|
|
||||||
|
# Make sure that the directories exist before we add them to sys.path
|
||||||
|
# This could cause problems or solve them by overriding what CQ is setting for the paths
|
||||||
|
if os.path.exists(fc_lib_path):
|
||||||
|
sys.path.insert(1, fc_lib_path)
|
||||||
|
if os.path.exists(fc_bin_path):
|
||||||
|
sys.path.insert(1, fc_bin_path)
|
||||||
|
|
||||||
|
# Need to set this for PyQode
|
||||||
|
os.environ['QT_API'] = 'pyside'
|
|
@ -15,11 +15,6 @@ class CadQueryWorkbench (Workbench):
|
||||||
closedWidgets = []
|
closedWidgets = []
|
||||||
|
|
||||||
def Initialize(self):
|
def Initialize(self):
|
||||||
import os
|
|
||||||
|
|
||||||
#Need to set this for PyQode
|
|
||||||
os.environ['QT_API'] = 'pyside'
|
|
||||||
|
|
||||||
#Turn off logging for now
|
#Turn off logging for now
|
||||||
#import logging
|
#import logging
|
||||||
#logging.basicConfig(filename='C:\\Users\\Jeremy\\Documents\\', level=logging.DEBUG)
|
#logging.basicConfig(filename='C:\\Users\\Jeremy\\Documents\\', level=logging.DEBUG)
|
||||||
|
@ -39,31 +34,11 @@ class CadQueryWorkbench (Workbench):
|
||||||
self.appendMenu('CadQuery', ['Separator', 'CadQueryExecuteScript', 'CadQueryClearOutput'])
|
self.appendMenu('CadQuery', ['Separator', 'CadQueryExecuteScript', 'CadQueryClearOutput'])
|
||||||
|
|
||||||
def Activated(self):
|
def Activated(self):
|
||||||
import os, sys
|
import os
|
||||||
import module_locator
|
import module_locator
|
||||||
from Gui import Command, ImportCQ
|
from Gui import ImportCQ
|
||||||
import Settings
|
|
||||||
|
|
||||||
#Set up so that we can import from our embedded packages
|
|
||||||
module_base_path = module_locator.module_path()
|
module_base_path = module_locator.module_path()
|
||||||
libs_dir_path = os.path.join(module_base_path, 'Libs')
|
|
||||||
sys.path.insert(0, libs_dir_path)
|
|
||||||
|
|
||||||
# Tack on our CadQuery library git subtree
|
|
||||||
cq_lib_path = os.path.join(libs_dir_path, 'cadquery-lib')
|
|
||||||
sys.path.insert(1, cq_lib_path)
|
|
||||||
|
|
||||||
#Make sure we get the right libs under the FreeCAD installation
|
|
||||||
fc_base_path = os.path.dirname(os.path.dirname(module_base_path))
|
|
||||||
fc_lib_path = os.path.join(fc_base_path, 'lib')
|
|
||||||
fc_bin_path = os.path.join(fc_base_path, 'bin')
|
|
||||||
|
|
||||||
#Make sure that the directories exist before we add them to sys.path
|
|
||||||
#This could cause problems or solve them by overriding what CQ is setting for the paths
|
|
||||||
if os.path.exists(fc_lib_path):
|
|
||||||
sys.path.insert(1, fc_lib_path)
|
|
||||||
if os.path.exists(fc_bin_path):
|
|
||||||
sys.path.insert(1, fc_bin_path)
|
|
||||||
|
|
||||||
import cadquery
|
import cadquery
|
||||||
from PySide import QtGui, QtCore
|
from PySide import QtGui, QtCore
|
||||||
|
@ -71,7 +46,7 @@ class CadQueryWorkbench (Workbench):
|
||||||
msg = QtGui.QApplication.translate(
|
msg = QtGui.QApplication.translate(
|
||||||
"cqCodeWidget",
|
"cqCodeWidget",
|
||||||
"CadQuery " + cadquery.__version__ + "\r\n"
|
"CadQuery " + cadquery.__version__ + "\r\n"
|
||||||
"CadQuery is a parametric scripting language "
|
"CadQuery is a parametric scripting API "
|
||||||
"for creating and traversing CAD models\r\n"
|
"for creating and traversing CAD models\r\n"
|
||||||
"Author: David Cowden\r\n"
|
"Author: David Cowden\r\n"
|
||||||
"License: Apache-2.0\r\n"
|
"License: Apache-2.0\r\n"
|
||||||
|
@ -104,30 +79,7 @@ class CadQueryWorkbench (Workbench):
|
||||||
Gui.Command.CadQueryExecuteScript().Activated()
|
Gui.Command.CadQueryExecuteScript().Activated()
|
||||||
|
|
||||||
def Deactivated(self):
|
def Deactivated(self):
|
||||||
import Gui.Command
|
pass
|
||||||
from PySide import QtGui
|
|
||||||
|
|
||||||
# msg = QtGui.QApplication.translate(
|
|
||||||
# "cqCodeWidget",
|
|
||||||
# "\r\nCadQuery Workbench Deactivated\r\n",
|
|
||||||
# None,
|
|
||||||
# QtGui.QApplication.UnicodeUTF8)
|
|
||||||
#
|
|
||||||
# #Put the UI back the way we found it
|
|
||||||
# FreeCAD.Console.PrintMessage(msg)
|
|
||||||
|
|
||||||
# # Getting the main window will allow us to start setting things up the way we want
|
|
||||||
# mw = FreeCADGui.getMainWindow()
|
|
||||||
#
|
|
||||||
# cqCodePane = mw.findChild(QtGui.QPlainTextEdit, "cqCodePane")
|
|
||||||
# cqCodePane.close()
|
|
||||||
# cqCodePane.setParent(None)
|
|
||||||
#
|
|
||||||
# dockWidgets = mw.findChildren(QtGui.QDockWidget)
|
|
||||||
#
|
|
||||||
# for widget in dockWidgets:
|
|
||||||
# if widget.objectName() == "cqCodeView":
|
|
||||||
# mw.removeDockWidget(widget)
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def ListExamples():
|
def ListExamples():
|
||||||
|
|
|
@ -25,14 +25,13 @@ def clearActiveDocument():
|
||||||
def getActiveCodePane():
|
def getActiveCodePane():
|
||||||
"""Gets the currently active code pane, even if its 3D view is selected."""
|
"""Gets the currently active code pane, even if its 3D view is selected."""
|
||||||
|
|
||||||
# TODO: Make sure that the code pane is selected, even if the associated 3D view currently has focus
|
|
||||||
|
|
||||||
# Grab our code editor so we can interact with it
|
# Grab our code editor so we can interact with it
|
||||||
mw = FreeCADGui.getMainWindow()
|
mw = FreeCADGui.getMainWindow()
|
||||||
mdi = mw.findChild(QtGui.QMdiArea)
|
mdi = mw.findChild(QtGui.QMdiArea)
|
||||||
|
|
||||||
# If our current subwindow doesn't contain a script, we need to find the one that does
|
# If our current subwindow doesn't contain a script, we need to find the one that does
|
||||||
mdiWin = mdi.currentSubWindow()
|
mdiWin = mdi.currentSubWindow()
|
||||||
|
if mdiWin == None: return None # We need to warn the caller that there is no code pane
|
||||||
if mdiWin == 0 or ".py" not in mdiWin.windowTitle():
|
if mdiWin == 0 or ".py" not in mdiWin.windowTitle():
|
||||||
subList = mdi.subWindowList()
|
subList = mdi.subWindowList()
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user