Skip to content

Commit b09d51a

Browse files
committed
add NODE_PROP_FILE file ext filter
1 parent ffae935 commit b09d51a

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

NodeGraphQt/base/model.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ def __init__(self):
9292
}
9393

9494
def add_property(self, name, value, items=None, range=None,
95-
widget_type=NODE_PROP, tab='Properties'):
95+
widget_type=NODE_PROP, tab='Properties', ext=None):
9696
"""
9797
add custom property.
9898
@@ -103,6 +103,7 @@ def add_property(self, name, value, items=None, range=None,
103103
range (tuple)): min, max values used by NODE_PROP_SLIDER.
104104
widget_type (int): widget type flag.
105105
tab (str): widget tab name.
106+
ext (str) file ext for NODE_PROP_FILE
106107
"""
107108
tab = tab or 'Properties'
108109

@@ -122,6 +123,8 @@ def add_property(self, name, value, items=None, range=None,
122123
self._TEMP_property_attrs[name]['items'] = items
123124
if range:
124125
self._TEMP_property_attrs[name]['range'] = range
126+
if ext:
127+
self._TEMP_property_attrs[name]['ext'] = ext
125128
else:
126129
attrs = {self.type_: {name: {
127130
'widget_type': widget_type,
@@ -131,6 +134,8 @@ def add_property(self, name, value, items=None, range=None,
131134
attrs[self.type_][name]['items'] = items
132135
if range:
133136
attrs[self.type_][name]['range'] = range
137+
if ext:
138+
attrs[self.type_][name]['ext'] = ext
134139
self._graph_model.set_node_common_properties(attrs)
135140

136141
def set_property(self, name, value):

NodeGraphQt/base/node.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ def set_selected(self, selected=True):
234234
self.set_property('selected', selected)
235235

236236
def create_property(self, name, value, items=None, range=None,
237-
widget_type=NODE_PROP, tab=None):
237+
widget_type=NODE_PROP, tab=None, ext=None):
238238
"""
239239
Creates a custom property to the node.
240240
@@ -247,7 +247,13 @@ def create_property(self, name, value, items=None, range=None,
247247
- :attr:`NodeGraphQt.constants.NODE_PROP_QCHECKBOX`
248248
- :attr:`NodeGraphQt.constants.NODE_PROP_QSPINBOX`
249249
- :attr:`NodeGraphQt.constants.NODE_PROP_COLORPICKER`
250-
- :attr:`NodeGraphQt.constants.NODE_PROP_SLIDER`
250+
- :attr:`NodeGraphQt.constants.NODE_PROP_FILE`
251+
- :attr:`NodeGraphQt.constants.NODE_PROP_VECTOR2`
252+
- :attr:`NodeGraphQt.constants.NODE_PROP_VECTOR3`
253+
- :attr:`NodeGraphQt.constants.NODE_PROP_VECTOR4`
254+
- :attr:`NodeGraphQt.constants.NODE_PROP_FLOAT`
255+
- :attr:`NodeGraphQt.constants.NODE_PROP_INT`
256+
- :attr:`NodeGraphQt.constants.NODE_PROP_BUTTON`
251257
252258
See Also:
253259
:class:`NodeGraphQt.PropertiesBinWidget`
@@ -259,8 +265,9 @@ def create_property(self, name, value, items=None, range=None,
259265
range (tuple)): ``(min, max)`` values used by ``NODE_PROP_SLIDER``
260266
widget_type (int): widget flag to display in the ``PropertiesBinWidget``
261267
tab (str): name of the widget tab to display in the properties bin.
268+
ext (str): file ext of ``NODE_PROP_FILE``
262269
"""
263-
self.model.add_property(name, value, items, range, widget_type, tab)
270+
self.model.add_property(name, value, items, range, widget_type, tab, ext)
264271

265272
def properties(self):
266273
"""
@@ -557,9 +564,12 @@ def add_file_input(self, name, label='', text='', tab=None, ext="*"):
557564
tab (str): name of the widget tab to display in.
558565
ext (str): file ext
559566
"""
560-
self.create_property(
561-
name, text, widget_type=NODE_PROP_FILE, tab=tab)
562-
widget = NodeFilePath(self.view, name, label, text,ext)
567+
self.model.add_property(name, text, None, None, NODE_PROP_FILE, tab, ext)
568+
# use create_property will cause strange error
569+
# self.create_property(
570+
# name, text, widget_type=NODE_PROP_FILE, tab=tab, ext=None)
571+
572+
widget = NodeFilePath(self.view, name, label, text, ext)
563573
widget.value_changed.connect(lambda k, v: self.set_property(k, v))
564574
self.view.add_widget(widget)
565575

NodeGraphQt/widgets/properties.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,9 +310,13 @@ def __init__(self, parent=None):
310310

311311
self._ledit.setStyleSheet("QLineEdit{border:1px solid}")
312312
_button.setStyleSheet("QPushButton{border:1px solid}")
313+
self._ext = "*"
314+
315+
def set_ext(self, ext):
316+
self._ext = ext
313317

314318
def _on_select_file(self):
315-
file_path = file_dialog.getOpenFileName(self)
319+
file_path = file_dialog.getOpenFileName(self, ext_filter=self._ext)
316320
file = file_path[0] or None
317321
if file:
318322
self.set_value(file)
@@ -868,6 +872,8 @@ def _read_node(self, node):
868872
prop_range = common_props[prop_name]['range']
869873
widget.set_min(prop_range[0])
870874
widget.set_max(prop_range[1])
875+
if 'ext' in common_props[prop_name].keys():
876+
widget.set_ext(common_props[prop_name]['ext'])
871877

872878
prop_window.add_widget(prop_name, widget, value,
873879
prop_name.replace('_', ' '))

0 commit comments

Comments
 (0)