Added a settings dialog.

This commit is contained in:
Jeremy Mack Wright 2018-12-24 11:20:07 -05:00
parent 64a06fe357
commit e8cf3241de
4 changed files with 105 additions and 1 deletions

View File

@ -16,6 +16,7 @@ import module_locator
import Shared
from random import random
from contextlib import contextmanager
from SettingsDialog import SettingsDialog
from cadquery import cqgi
from Helpers import show
@ -460,3 +461,23 @@ class CadQueryValidateScript:
parameters = cqModel.metadata.parameters
Shared.populateParameterEditor(parameters)
class CadQuerySettings:
"""Opens a settings dialog, allowing the user to change the settings for this workbench"""
def GetResources(self):
return {"MenuText": "Settings",
"Accel": "",
"ToolTip": "Opens the settings dialog",
"Pixmap": ":/icons/preferences-general.svg"}
def IsActive(self):
return True
def Activated(self):
win = SettingsDialog()
win.exec_()
# if win.exec_() == QtGui.QDialog.Accepted:
# print("Settings finished")

View File

@ -40,7 +40,7 @@ if not has_run_before:
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetString("executeKeybinding", "F9")
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("executeOnSave", True)
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("showLineNumbers", True)
# FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("useExternalEditor", False)
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("allowReload", True)
# Make sure we don't overwrite someone's existing settings
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("runBefore", True)

View File

@ -36,6 +36,7 @@ class CadQueryWorkbench (Workbench):
'CadQuerySaveAsScript', 'CadQueryCloseScript'])
self.appendMenu(['CadQuery', 'Examples'], submenu)
self.appendMenu('CadQuery', ['Separator', 'CadQueryExecuteScript', 'CadQueryValidateScript', 'ToggleVariablesEditor', 'CadQueryClearOutput'])
self.appendMenu('CadQuery', ['Separator', 'CadQuerySettings'])
def Activated(self):
import os
@ -121,6 +122,7 @@ FreeCADGui.addCommand('CadQueryValidateScript', CadQueryValidateScript())
FreeCADGui.addCommand('CadQueryCloseScript', CadQueryCloseScript())
FreeCADGui.addCommand('ToggleVariablesEditor', ToggleParametersEditor())
FreeCADGui.addCommand('CadQueryClearOutput', CadQueryClearOutput())
FreeCADGui.addCommand('CadQuerySettings', CadQuerySettings())
# Step through and add an Examples submenu item for each example
dirs = CadQueryWorkbench.ListExamples()

81
SettingsDialog.py Normal file
View File

@ -0,0 +1,81 @@
import FreeCAD
from PySide import QtGui, QtCore
class SettingsDialog(QtGui.QDialog):
def __init__(self, parent=None):
super(SettingsDialog, self).__init__(parent)
self.resize(200, 150)
self.setWindowTitle('Settings')
self.initUI()
def initUI(self):
fontSize = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").GetInt("fontSize")
keybinding = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").GetString("executeKeybinding")
executeOnSave = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").GetBool("executeOnSave")
showLineNumbers = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").GetBool("showLineNumbers")
allowReload = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").GetBool("allowReload")
font_size = QtGui.QLabel('Font Size')
self.ui_font_size = QtGui.QSpinBox()
self.ui_font_size.setValue(fontSize)
key_binding = QtGui.QLabel('Execute Key-binding')
self.ui_key_binding = QtGui.QLineEdit()
self.ui_key_binding.setText(keybinding)
execute_on_save = QtGui.QLabel('Execute on Save')
self.execute_on_save = QtGui.QCheckBox()
self.execute_on_save.setChecked(executeOnSave)
show_line_numbers = QtGui.QLabel('Show Line Numbers')
self.show_line_numbers = QtGui.QCheckBox()
self.show_line_numbers.setChecked(showLineNumbers)
allow_reload = QtGui.QLabel('Allow Reload')
self.allow_reload = QtGui.QCheckBox()
self.allow_reload.setChecked(allowReload)
self.buttons = QtGui.QDialogButtonBox();
self.buttons.setOrientation(QtCore.Qt.Horizontal)
self.buttons.setStandardButtons(QtGui.QDialogButtonBox.Ok|QtGui.QDialogButtonBox.Cancel)
self.buttons.layout().setDirection(QtGui.QBoxLayout.LeftToRight)
self.buttons.accepted.connect(self.acceptSettings)
self.buttons.rejected.connect(self.reject)
grid = QtGui.QGridLayout()
grid.setContentsMargins(10, 10, 10, 10)
grid.addWidget(font_size, 0, 0)
grid.addWidget(self.ui_font_size, 0, 1)
grid.addWidget(key_binding, 1, 0)
grid.addWidget(self.ui_key_binding, 1, 1)
grid.addWidget(execute_on_save, 2, 0)
grid.addWidget(self.execute_on_save, 2, 1)
grid.addWidget(show_line_numbers, 3, 0)
grid.addWidget(self.show_line_numbers, 3, 1)
grid.addWidget(allow_reload, 4, 0)
grid.addWidget(self.allow_reload, 4, 1)
grid.addWidget(self.buttons, 5, 1)
self.setLayout(grid)
@QtCore.Slot(int)
def acceptSettings(self):
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetInt("fontSize", self.ui_font_size.value())
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetString("executeKeybinding", self.ui_key_binding.text())
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("executeOnSave", self.execute_on_save.checkState())
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("showLineNumbers", self.show_line_numbers.checkState())
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("allowReload", self.show_line_numbers.checkState())
self.accept()
# def getValues(self):
# return {
# 'max': self.ui_max.value(),
# 'min': self.ui_min.value(),
# 'count': self.ui_count.value(),
# }
# def setValues(self, settings):
# self.ui_max.setValue(settings['max'])
# self.ui_min.setValue(settings['min'])
# self.ui_count.setValue(settings['count'])