1+ #!/usr/bin/python
2+ # -*- coding: utf-8 -*-
13from NodeGraphQt import QtWidgets , QtCore
4+ from NodeGraphQt .constants import DRAG_DROP_ID
5+
6+
7+ TYPE_NODE = QtWidgets .QTreeWidgetItem .UserType + 1
8+ TYPE_CATEGORY = QtWidgets .QTreeWidgetItem .UserType + 2
29
310
411class BaseListWidgetItem (QtWidgets .QListWidgetItem ):
@@ -11,10 +18,17 @@ class NodeListWidget(QtWidgets.QTreeWidget):
1118
1219 def __init__ (self , parent = None ):
1320 super (NodeListWidget , self ).__init__ (parent )
21+ self .setDragDropMode (QtWidgets .QAbstractItemView .DragOnly )
1422 self .setHeaderHidden (True )
1523 self ._factory = None
1624 self ._custom_labels = {}
1725
26+ def mimeData (self , items ):
27+ node_ids = ',' .join (i .toolTip (0 ) for i in items )
28+ mime_data = super (NodeListWidget , self ).mimeData (items )
29+ mime_data .setText ('<${}>:{}' .format (DRAG_DROP_ID , node_ids ))
30+ return mime_data
31+
1832 def _build_tree (self ):
1933 """
2034 Populate the node tree.
@@ -33,22 +47,27 @@ def _build_tree(self):
3347 label = self ._custom_labels [category ]
3448 else :
3549 label = '- {}' .format (category )
36- item = QtWidgets .QTreeWidgetItem (self , [label ])
37- item .setFirstColumnSpanned (True )
38- item .setFlags (QtCore .Qt .ItemIsEnabled )
39- self .addTopLevelItem (item )
40- item .setExpanded (True )
41- category_items [category ] = item
50+ cat_item = QtWidgets .QTreeWidgetItem (
51+ self , [label ], type = TYPE_CATEGORY
52+ )
53+ cat_item .setFirstColumnSpanned (True )
54+ cat_item .setFlags (QtCore .Qt .ItemIsEnabled )
55+ self .addTopLevelItem (cat_item )
56+ cat_item .setExpanded (True )
57+ category_items [category ] = cat_item
4258
4359 for node_id , node_name in node_types .items ():
4460 category = '.' .join (node_id .split ('.' )[:- 1 ])
4561 category_item = category_items [category ]
4662
47- item = QtWidgets .QTreeWidgetItem (category_item , [node_name ])
63+ item = QtWidgets .QTreeWidgetItem (
64+ category_item , [node_name ], type = TYPE_NODE
65+ )
4866 item .setToolTip (0 , node_id )
4967
5068 category_item .addChild (item )
5169
70+
5271 def set_node_factory (self , factory ):
5372 """
5473 Set current node factory.
0 commit comments