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 import Shared
from random import random from random import random
from contextlib import contextmanager from contextlib import contextmanager
from SettingsDialog import SettingsDialog
from cadquery import cqgi from cadquery import cqgi
from Helpers import show from Helpers import show
@ -460,3 +461,23 @@ class CadQueryValidateScript:
parameters = cqModel.metadata.parameters parameters = cqModel.metadata.parameters
Shared.populateParameterEditor(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").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("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("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 # Make sure we don't overwrite someone's existing settings
FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("runBefore", True) FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/cadquery-freecad-module").SetBool("runBefore", True)

View File

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