Skip to content

Commit

Permalink
Add Load/Save/Refresh to add OpenSCAD Elements
Browse files Browse the repository at this point in the history
  • Loading branch information
KeithSloan committed Apr 27, 2021
1 parent 8bdf4a7 commit d850ed8
Showing 1 changed file with 26 additions and 15 deletions.
41 changes: 26 additions & 15 deletions src/Mod/OpenSCAD/OpenSCADCommands.py
Expand Up @@ -327,7 +327,17 @@ def GetResources(self):
class AddSCADWidget(QtGui.QWidget):
def __init__(self,*args):
QtGui.QWidget.__init__(self,*args)
# Main text area
self.textEdit=QtGui.QTextEdit()
self.textEdit.setAcceptRichText(False)
#print(self.textEdit.maximumHeight())
#print(self.textEdit.maximumViewportSize())
# Message Area
self.textMsg=QtGui.QPlainTextEdit()
self.textMsg.setReadOnly(True)
h = int(2.5 * self.textMsg.fontMetrics().height())
self.textMsg.setMaximumHeight(h)
self.textMsg.resize(self.textMsg.width(),h)
self.buttonadd = QtGui.QPushButton(translate('OpenSCAD','Add'))
self.buttonclear = QtGui.QPushButton(translate('OpenSCAD','Clear'))
self.buttonload = QtGui.QPushButton(translate('OpenSCAD','Load'))
Expand All @@ -344,13 +354,17 @@ def __init__(self,*args):
layout.addLayout(layouth)
layout.addWidget(self.checkboxmesh)
layout.addWidget(self.textEdit)
layout.addWidget(self.textMsg)
self.setLayout(layout)
self.setWindowTitle(translate('OpenSCAD','Add OpenSCAD Element'))
self.textEdit.setText(u'cube();')
self.buttonclear.clicked.connect(self.textEdit.clear)

def retranslateUi(self, widget=None):
self.buttonadd.setText(translate('OpenSCAD','Add'))
self.buttonload.setText(translate('OpenSCAD','Load'))
self.buttonsave.setText(translate('OpenSCAD','Save'))
self.buttonrefresh.setText(translate('OpenSCAD','Refesh'))
self.buttonclear.setText(translate('OpenSCAD','Clear'))
self.checkboxmesh.setText(translate('OpenSCAD','as Mesh'))
self.setWindowTitle(translate('OpenSCAD','Add OpenSCAD Element'))
Expand All @@ -362,6 +376,7 @@ def __init__(self):
self.form.buttonload.clicked.connect(self.loadelement)
self.form.buttonsave.clicked.connect(self.saveelement)
self.form.buttonrefresh.clicked.connect(self.refreshelement)

def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Close)

Expand Down Expand Up @@ -394,43 +409,34 @@ def addelement(self):
pass

except OpenSCADUtils.OpenSCADError as e:
self.form.textMsg.setPlainText(e.value)
FreeCAD.Console.PrintError(e.value)

def refreshelement(self):
print('Refresh Element')
self.form.textMsg.setPlainText('')
doc=FreeCAD.activeDocument()
if doc :
for obj in doc.Objects :
doc.removeObject(obj.Name)
self.addelement()

def loadelement(self):
print('Load Element')
print('Load Element')
filename, filter = QtGui.QFileDialog.getOpenFileName(parent=self.form, caption='Open file', dir='.', filter='OpenSCAD Files (*.scad)',selectedFilter='',option=0)

if filename:
print('filename :'+filename)
fp = open(filename,'r')
with fp:
data = fp.read()
self.form.textEdit.setText(data)
with open(filename,'r') as fp :
data = fp.read()
self.form.textEdit.setText(data)

def saveelement(self) :
print('Save Element')
filename, filter = QtGui.QFileDialog.getSaveFileName(parent=self.form, caption='Open file', dir='.', filter='OpenSCAD Files (*.scad)',selectedFilter='',option=0)

if filename:
print('filename :'+filename)
Text = self.form.textEdit.toPlainText()
fp = open(filename,'w')
with fp:
with open(filename,'w') as fp :
fp.write(Text)

class OpenSCADMeshBooleanWidget(QtGui.QWidget):
def __init__(self,*args):
QtGui.QWidget.__init__(self,*args)
#self.textEdit=QtGui.QTextEdit()
class OpenSCADMeshBooleanWidget(QtGui.QWidget):
def __init__(self,*args):
QtGui.QWidget.__init__(self,*args)
Expand Down Expand Up @@ -471,6 +477,7 @@ class OpenSCADMeshBooleanTask:
def __init__(self):
self.form = OpenSCADMeshBooleanWidget()
self.form.buttonadd.clicked.connect(self.doboolean)

def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Close)

Expand Down Expand Up @@ -500,9 +507,11 @@ def doboolean(self):
class AddOpenSCADElement:
def IsActive(self):
return not FreeCADGui.Control.activeDialog()

def Activated(self):
panel = AddSCADTask()
FreeCADGui.Control.showDialog(panel)

def GetResources(self):
return {'Pixmap' : 'OpenSCAD_AddOpenSCADElement',
'MenuText': QtCore.QT_TRANSLATE_NOOP('OpenSCAD_AddOpenSCADElement', 'Add OpenSCAD Element...'),
Expand All @@ -513,9 +522,11 @@ class OpenSCADMeshBoolean:
def IsActive(self):
return not FreeCADGui.Control.activeDialog() and \
len(FreeCADGui.Selection.getSelection()) >= 1

def Activated(self):
panel = OpenSCADMeshBooleanTask()
FreeCADGui.Control.showDialog(panel)

def GetResources(self):
return {'Pixmap' : 'OpenSCAD_MeshBooleans',
'MenuText': QtCore.QT_TRANSLATE_NOOP('OpenSCAD_MeshBoolean','Mesh Boolean...'),
Expand Down

0 comments on commit d850ed8

Please sign in to comment.