Skip to content

Commit

Permalink
Added support for enumerations to property-bag, relies on base api to…
Browse files Browse the repository at this point in the history
… get the enum values.
  • Loading branch information
mlampert committed Jan 27, 2021
1 parent b41282e commit ee27fc8
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 10 deletions.
31 changes: 26 additions & 5 deletions src/Mod/Path/Gui/Resources/panels/PropertyCreate.ui
Expand Up @@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>474</width>
<height>300</height>
<width>484</width>
<height>362</height>
</rect>
</property>
<property name="windowTitle">
Expand Down Expand Up @@ -77,14 +77,14 @@
</property>
</widget>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>ToolTip</string>
</property>
</widget>
</item>
<item row="4" column="1">
<item row="5" column="1">
<widget class="QTextEdit" name="propertyInfo">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ToolTip to be displayed when user hovers mouse over property.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
Expand All @@ -94,7 +94,7 @@
</property>
</widget>
</item>
<item row="5" column="1">
<item row="6" column="1">
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
Expand Down Expand Up @@ -132,12 +132,33 @@
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="enumLabel">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>Values</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QLineEdit" name="enumValues">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Comma separated list of enumeration values.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
</layout>
</widget>
<tabstops>
<tabstop>propertyName</tabstop>
<tabstop>propertyGroup</tabstop>
<tabstop>propertyType</tabstop>
<tabstop>enumValues</tabstop>
<tabstop>propertyInfo</tabstop>
<tabstop>createAnother</tabstop>
</tabstops>
Expand Down
2 changes: 1 addition & 1 deletion src/Mod/Path/PathScripts/PathPropertyBag.py
Expand Up @@ -36,7 +36,7 @@ def translate(context, text, disambig=None):
'Angle' : 'App::PropertyAngle',
'Bool' : 'App::PropertyBool',
'Distance' : 'App::PropertyDistance',
# 'Enumeration' : 'App::PropertyEnumeration',
'Enumeration' : 'App::PropertyEnumeration',
'File' : 'App::PropertyFile',
'Float' : 'App::PropertyFloat',
'Integer' : 'App::PropertyInteger',
Expand Down
23 changes: 22 additions & 1 deletion src/Mod/Path/PathScripts/PathPropertyBagGui.py
Expand Up @@ -148,12 +148,26 @@ def __init__(self, obj, grp, typ, another):
self.form.propertyGroup.currentTextChanged.connect(self.updateUI)
self.form.propertyGroup.currentIndexChanged.connect(self.updateUI)
self.form.propertyName.textChanged.connect(self.updateUI)
self.form.propertyType.currentIndexChanged.connect(self.updateUI)
self.form.enumValues.textChanged.connect(self.updateUI)

self.updateUI()

def updateUI(self):
typeSet = True
if self.propertyIsEnumeration():
self.form.enumLabel.setEnabled(True)
self.form.enumValues.setEnabled(True)
typeSet = self.form.enumValues.text().strip() != ''
else:
self.form.enumLabel.setEnabled(False)
self.form.enumValues.setEnabled(False)
if self.form.enumValues.text().strip():
self.form.enumValues.setText('')

ok = self.form.buttonBox.button(QtGui.QDialogButtonBox.Ok)
if self.form.propertyName.text() and self.form.propertyGroup.currentText():

if typeSet and self.propertyName() and self.propertyGroup():
ok.setEnabled(True)
else:
ok.setEnabled(False)
Expand All @@ -168,10 +182,15 @@ def propertyInfo(self):
return self.form.propertyInfo.toPlainText().strip()
def createAnother(self):
return self.form.createAnother.isChecked()
def propertyEnumerations(self):
return [s.strip() for s in self.form.enumValues.text().strip().split(',')]
def propertyIsEnumeration(self):
return self.propertyType() == 'App::PropertyEnumeration'

def exec_(self):
self.form.propertyName.setText('')
self.form.propertyInfo.setText('')
self.form.enumValues.setText('')
#self.form.propertyName.setFocus()
return self.form.exec_()

Expand Down Expand Up @@ -261,6 +280,8 @@ def propertyAdd(self):
grp = dialog.propertyGroup()
info = dialog.propertyInfo()
self.obj.Proxy.addCustomProperty(typ, name, grp, info)
if dialog.propertyIsEnumeration():
setattr(self.obj, name, dialog.propertyEnumerations())
index = 0
for i in range(self.model.rowCount()):
index = i
Expand Down
19 changes: 16 additions & 3 deletions src/Mod/Path/PathScripts/PathPropertyEditor.py
Expand Up @@ -78,12 +78,12 @@ def widget(self, parent):

def setEditorData(self, widget):
widget.clear()
widget.addItems(['false', 'true'])
widget.addItems([str(False), str(True)])
index = 1 if self.propertyValue() else 0
widget.setCurrentIndex(index)

def setModelData(self, widget):
self.setProperty(widget.currentText() == 'true')
self.setProperty(widget.currentText() == str(True))

class _PropertyEditorString(_PropertyEditor):
'''Editor for string values - uses a line edit.'''
Expand Down Expand Up @@ -190,11 +190,24 @@ def setEditorData(self, widget):
def setModelData(self, widget):
self.setProperty(widget.text())

class _PropertyEditorEnumeration(_PropertyEditor):

def widget(self, parent):
return QtGui.QComboBox(parent)

def setEditorData(self, widget):
widget.clear()
widget.addItems(self.obj.getEnumerationsOfProperty(self.prop))
widget.setCurrentText(self.propertyValue())

def setModelData(self, widget):
self.setProperty(widget.currentText())

_EditorFactory = {
'App::PropertyAngle' : _PropertyEditorAngle,
'App::PropertyBool' : _PropertyEditorBool,
'App::PropertyDistance' : _PropertyEditorLength,
#'App::PropertyEnumeration' : _PropertyEditorEnum,
'App::PropertyEnumeration' : _PropertyEditorEnumeration,
#'App::PropertyFile' : _PropertyEditorFile,
'App::PropertyFloat' : _PropertyEditorFloat,
'App::PropertyInteger' : _PropertyEditorInteger,
Expand Down

0 comments on commit ee27fc8

Please sign in to comment.