77 NODE_PROP_QTEXTEDIT ,
88 NODE_PROP_QCOMBO ,
99 NODE_PROP_QCHECKBOX ,
10+ NODE_PROP_FILE ,
11+ NODE_PROP_FLOAT ,
12+ NODE_PROP_INT ,
1013 IN_PORT , OUT_PORT )
1114from NodeGraphQt .errors import PortRegistrationError
1215from NodeGraphQt .qgraphics .node_backdrop import BackdropNodeItem
1316from NodeGraphQt .qgraphics .node_base import NodeItem
1417from NodeGraphQt .widgets .node_widgets import (NodeComboBox ,
1518 NodeLineEdit ,
1619 NodeFloatEdit ,
17- NodeCheckBox )
20+ NodeIntEdit ,
21+ NodeCheckBox ,
22+ NodeFilePath )
1823
1924
2025class classproperty (object ):
@@ -293,8 +298,11 @@ def set_property(self, name, value):
293298 """
294299
295300 # prevent signals from causing a infinite loop.
296- if self .get_property (name ) == value :
297- return
301+ try :
302+ if self .get_property (name ) == value :
303+ return
304+ except :
305+ pass
298306
299307 if self .graph and name == 'name' :
300308 value = self .graph .get_unique_name (value )
@@ -507,7 +515,7 @@ def add_combo_menu(self, name, label='', items=None, tab=None):
507515 widget .value_changed .connect (lambda k , v : self .set_property (k , v ))
508516 self .view .add_widget (widget )
509517
510- def add_text_input (self , name , label = '' , text = '' , tab = None ):
518+ def add_text_input (self , name , label = '' , text = '' , tab = None , multi_line = False ):
511519 """
512520 Creates a custom property with the :meth:`NodeObject.create_property`
513521 function and embeds a :class:`PySide2.QtWidgets.QLineEdit` widget
@@ -522,14 +530,40 @@ def add_text_input(self, name, label='', text='', tab=None):
522530 label (str): label to be displayed.
523531 text (str): pre filled text.
524532 tab (str): name of the widget tab to display in.
533+ multi_line (bool): if create multi line property.
525534 """
535+ wid_type = NODE_PROP_QTEXTEDIT if multi_line else NODE_PROP_QLINEEDIT
536+
526537 self .create_property (
527- name , text , widget_type = NODE_PROP_QLINEEDIT , tab = tab )
538+ name , text , widget_type = wid_type , tab = tab )
528539 widget = NodeLineEdit (self .view , name , label , text )
529540 widget .value_changed .connect (lambda k , v : self .set_property (k , v ))
530541 self .view .add_widget (widget )
531542
532- def add_float_input (self , name , label = '' , value = 0.0 , tab = None ):
543+ def add_file_input (self , name , label = '' , text = '' , tab = None , ext = "*" ):
544+ """
545+ Creates a custom property with the :meth:`NodeObject.create_property`
546+ function and embeds a :class:`PySide2.QtWidgets.QLineEdit` widget
547+ into the node.
548+
549+ Note:
550+ The embedded widget is wired up to the :meth:`NodeObject.set_property`
551+ function use this function to to update the widget.
552+
553+ Args:
554+ name (str): name for the custom property.
555+ label (str): label to be displayed.
556+ text (str): pre filled text.
557+ tab (str): name of the widget tab to display in.
558+ ext (str): file ext
559+ """
560+ self .create_property (
561+ name , text , widget_type = NODE_PROP_FILE , tab = tab )
562+ widget = NodeFilePath (self .view , name , label , text ,ext )
563+ widget .value_changed .connect (lambda k , v : self .set_property (k , v ))
564+ self .view .add_widget (widget )
565+
566+ def add_float_input (self , name , label = '' , value = 0.0 , range = None , tab = None ):
533567 """
534568 Creates a custom property with the :meth:`NodeObject.create_property`
535569 function and embeds a :class:`PySide2.QtWidgets.QLineEdit` widget
@@ -543,14 +577,38 @@ def add_float_input(self, name, label='', value=0.0, tab=None):
543577 name (str): name for the custom property.
544578 label (str): label to be displayed.
545579 value (float): pre filled value.
580+ range (tuple): slider range
546581 tab (str): name of the widget tab to display in.
547582 """
548583 self .create_property (
549- name , value , widget_type = NODE_PROP_QLINEEDIT , tab = tab )
584+ name , value , widget_type = NODE_PROP_FLOAT , range = range , tab = tab )
550585 widget = NodeFloatEdit (self .view , name , label , value )
551586 widget .value_changed .connect (lambda k , v : self .set_property (k , v ))
552587 self .view .add_widget (widget )
553588
589+ def add_int_input (self , name , label = '' , value = 0 , range = None , tab = None ):
590+ """
591+ Creates a custom property with the :meth:`NodeObject.create_property`
592+ function and embeds a :class:`PySide2.QtWidgets.QLineEdit` widget
593+ into the node.
594+
595+ Note:
596+ The embedded widget is wired up to the :meth:`NodeObject.set_property`
597+ function use this function to to update the widget.
598+
599+ Args:
600+ name (str): name for the custom property.
601+ label (str): label to be displayed.
602+ value (int): pre filled value.
603+ range (tuple): slider range
604+ tab (str): name of the widget tab to display in.
605+ """
606+ self .create_property (
607+ name , value , widget_type = NODE_PROP_INT , range = range , tab = tab )
608+ widget = NodeIntEdit (self .view , name , label , value )
609+ widget .value_changed .connect (lambda k , v : self .set_property (k , v ))
610+ self .view .add_widget (widget )
611+
554612 def add_checkbox (self , name , label = '' , text = '' , state = False , tab = None ):
555613 """
556614 Creates a custom property with the :meth:`NodeObject.create_property`
0 commit comments