1010try :
1111 from PySide6 .QtCore import QEvent , QObject , Qt # type: ignore
1212 from PySide6 .QtWidgets import QFrame , QHBoxLayout , QVBoxLayout , QLineEdit , QMenu , QSizePolicy , QToolButton , QWidget # type: ignore
13- from PySide6 .QtGui import QAction # type: ignore
1413except ImportError :
1514 from PySide2 .QtCore import QEvent , QObject , Qt # type: ignore
1615 from PySide2 .QtWidgets import QFrame , QHBoxLayout , QVBoxLayout , QLineEdit , QMenu , QSizePolicy , QToolButton , QWidget # type: ignore
17- from PySide2 .QtGui import QAction # type: ignore
1816
1917from pxr import Usd , Sdf
2018
2119# TODO: support I8N
2220kSearchPlaceHolder = "Search..."
2321
24-
2522class IncludeExcludeWidget (QWidget ):
2623 def __init__ (
2724 self ,
@@ -34,15 +31,13 @@ def __init__(
3431 self ._prim : Usd .Prim = prim
3532 self ._updatingUI = False
3633
37- includeExcludeLayout = QVBoxLayout (self )
38-
39- includeExcludeLayout .setContentsMargins (0 , 0 , 0 , 0 )
34+ mainLayout = QVBoxLayout (self )
35+ mainLayout .setContentsMargins (0 , 0 , 0 , 0 )
4036
4137 self ._expressionMenu = ExpressionMenu (self ._collection , self )
4238 menuButton = MenuButton (self ._expressionMenu , self )
4339
4440 self ._filterWidget = QLineEdit ()
45- self ._filterWidget .setContentsMargins (0 , 0 , 0 , 0 )
4641 self ._filterWidget .setSizePolicy (
4742 QSizePolicy .Policy .Expanding , QSizePolicy .Policy .Fixed
4843 )
@@ -53,33 +48,30 @@ def __init__(
5348 separator .setFrameShape (QFrame .VLine )
5449
5550 headerWidget = QWidget (self )
56- headerWidget .setContentsMargins (0 , 0 , 0 , 0 )
5751 headerLayout = QHBoxLayout (headerWidget )
5852
59- headerLayout .setContentsMargins (0 , 2 , 2 , 0 )
60-
6153 if Host .instance ().canPick :
6254 addBtn = QToolButton (headerWidget )
63- addBtn .setToolTip ("Add prims to Include or Exclude" )
55+ addBtn .setToolTip ("Add Objects to the Include/ Exclude list " )
6456 addBtn .setIcon (Theme .instance ().icon ("add" ))
6557 addBtn .setPopupMode (QToolButton .InstantPopup )
6658 addBtnMenu = QMenu (addBtn )
67- addBtnMenu .addAction ("Add prims to Include" , self .onAddToIncludePrimClicked )
68- addBtnMenu .addAction ("Add prims to Exclude" , self .onAddToExcludePrimClicked )
59+ addBtnMenu .addAction ("Include Objects... " , self .onAddToIncludePrimClicked )
60+ addBtnMenu .addAction ("Exclude Objects... " , self .onAddToExcludePrimClicked )
6961 addBtn .setMenu (addBtnMenu )
7062 headerLayout .addWidget (addBtn )
7163
7264 self ._deleteBtn = QToolButton (headerWidget )
73- self ._deleteBtn .setToolTip ("Remove selected prims from Include or Exclude" )
65+ self ._deleteBtn .setToolTip ("Remove Selected Objects from Include/ Exclude list " )
7466 self ._deleteBtn .setIcon (Theme .instance ().icon ("delete" ))
7567 self ._deleteBtn .setPopupMode (QToolButton .InstantPopup )
7668 self ._deleteBtnMenu = QMenu (self ._deleteBtn )
77- self ._deleteBtnActionFromIncludes = QAction ( "Remove selected prims from Include" , self ._deleteBtnMenu )
78- self ._deleteBtnActionFromIncludes . triggered . connect ( self . onRemoveSelectionFromInclude )
79- self . _deleteBtnMenu . addAction ( self . _deleteBtnActionFromIncludes )
80- self ._deleteBtnActionFromExcludes = QAction ( "Remove selected prims from Exclude" , self ._deleteBtnMenu )
81- self ._deleteBtnActionFromExcludes . triggered . connect ( self . onRemoveSelectionFromExclude )
82- self . _deleteBtnMenu . addAction ( self . _deleteBtnActionFromExcludes )
69+ self ._deleteBtnActionFromIncludes = self ._deleteBtnMenu . addAction (
70+ "Remove Selected Objects from Include" , self .onRemoveSelectionFromInclude
71+ )
72+ self ._deleteBtnActionFromExcludes = self ._deleteBtnMenu . addAction (
73+ "Remove Selected Objects from Exclude" , self .onRemoveSelectionFromExclude
74+ )
8375 self ._deleteBtn .setMenu (self ._deleteBtnMenu )
8476 headerLayout .addWidget (self ._deleteBtn )
8577
@@ -88,7 +80,7 @@ def __init__(
8880 headerLayout .addWidget (self ._filterWidget )
8981 headerLayout .addWidget (separator )
9082 headerLayout .addWidget (menuButton )
91- includeExcludeLayout .addWidget (headerWidget )
83+ mainLayout .addWidget (headerWidget )
9284
9385 self ._include = StringList ([], "Include" , "Include all" , self )
9486 self ._include .cbIncludeAll .stateChanged .connect (self .onIncludeAllToggle )
@@ -97,29 +89,32 @@ def __init__(
9789 "USD_Light_Linking" ,
9890 "IncludeListHeight" ,
9991 self ,
100- defaultSize = 80 ,
92+ defaultSize = Theme . instance (). uiScaled ( 80 ) ,
10193 )
102- includeExcludeLayout .addWidget (self ._resizableInclude )
94+ self ._resizableInclude .minContentSize = Theme .instance ().uiScaled (44 )
95+ mainLayout .addWidget (self ._resizableInclude )
10396
10497 self ._exclude = StringList ([], "Exclude" , "" , self )
10598 self ._resizableExclude = Resizable (
10699 self ._exclude ,
107100 "USD_Light_Linking" ,
108101 "ExcludeListHeight" ,
109102 self ,
110- defaultSize = 80 ,
103+ defaultSize = Theme . instance (). uiScaled ( 80 ) ,
111104 )
112- includeExcludeLayout .addWidget (self ._resizableExclude )
105+ self ._resizableExclude .minContentSize = Theme .instance ().uiScaled (44 )
106+ mainLayout .addWidget (self ._resizableExclude )
113107
114108 self ._include .list .selectionChanged .connect (self .onListSelectionChanged )
115109 self ._exclude .list .selectionChanged .connect (self .onListSelectionChanged )
116110
117111 self ._filterWidget .textChanged .connect (self ._include .list ._model .setFilter )
118112 self ._filterWidget .textChanged .connect (self ._exclude .list ._model .setFilter )
119- EventFilter (self ._include .list , self )
120- EventFilter (self ._exclude .list , self )
121113
122- self .setLayout (includeExcludeLayout )
114+ if Host .instance ().canDrop :
115+ EventFilter (self ._include .list , self )
116+ EventFilter (self ._exclude .list , self )
117+
123118 self .updateUI ()
124119 self .onListSelectionChanged ()
125120
@@ -140,8 +135,8 @@ def update(self):
140135
141136 self ._include .list .items = includes
142137 self ._exclude .list .items = excludes
143- self ._include .list .update_placeholder ()
144- self ._exclude .list .update_placeholder ()
138+ self ._include .list .updatePlaceholder ()
139+ self ._exclude .list .updatePlaceholder ()
145140
146141 def getIncludedItems (self ):
147142 return self ._include .list .items ()
@@ -156,6 +151,7 @@ def setIncludeAll(self, value: bool):
156151 self ._include .cbIncludeAll .setChecked (value )
157152
158153 def updateUI (self ):
154+
159155 if self ._updatingUI :
160156 return
161157
@@ -180,22 +176,22 @@ def updateUI(self):
180176 self ._updatingUI = False
181177
182178 def onAddToIncludePrimClicked (self ):
183- prims : Sequence [Usd .Prim ] = Host .instance ().pick (self ._prim .GetStage ())
184- if prims is None :
179+ pickedItems : Sequence [Usd .Prim ] = Host .instance ().pick (self ._prim .GetStage (), dialogTitle = "Add Include Objects" )
180+ if pickedItems is None :
185181 return
186182 self ._updatingUI = True
187- for prim in prims :
188- self ._collection .GetIncludesRel ().AddTarget (prim .GetPath ())
183+ for item in pickedItems :
184+ self ._collection .GetIncludesRel ().AddTarget (item .GetPath ())
189185 self ._updatingUI = False
190186 self .updateUI ()
191187
192188 def onAddToExcludePrimClicked (self ):
193- prims : Sequence [Usd .Prim ] = Host .instance ().pick (self ._prim .GetStage ())
194- if prims is None :
189+ pickedItems : Sequence [Usd .Prim ] = Host .instance ().pick (self ._prim .GetStage (), dialogTitle = "Add Exclude Objects" )
190+ if pickedItems is None :
195191 return
196192 self ._updatingUI = True
197- for prim in prims :
198- self ._collection .GetExcludesRel ().AddTarget (prim .GetPath ())
193+ for item in pickedItems :
194+ self ._collection .GetExcludesRel ().AddTarget (item .GetPath ())
199195 self ._updatingUI = False
200196 self .updateUI ()
201197
@@ -206,7 +202,6 @@ def onRemoveSelectionFromInclude(self):
206202 self ._updatingUI = False
207203 self .updateUI ()
208204 self .onListSelectionChanged ()
209- self ._include .list .update_placeholder ()
210205
211206 def onRemoveSelectionFromExclude (self ):
212207 self ._updatingUI = True
@@ -215,7 +210,6 @@ def onRemoveSelectionFromExclude(self):
215210 self ._updatingUI = False
216211 self .updateUI ()
217212 self .onListSelectionChanged ()
218- self ._exclude .list .update_placeholder ()
219213
220214 def onListSelectionChanged (self ):
221215 includesSelected = self ._include .list .hasSelectedItems
@@ -233,16 +227,16 @@ def onListSelectionChanged(self):
233227
234228 if includesSelected and excludeSelected :
235229 self ._deleteBtn .setToolTip (
236- "Remove selected prims from Include or Exclude... "
230+ "Remove Selected Objects from Include/ Exclude list "
237231 )
238232 self ._deleteBtn .setPopupMode (QToolButton .InstantPopup )
239233 self ._deleteBtn .setStyleSheet ("" )
240234 else :
241235 if includesSelected :
242- self ._deleteBtn .setToolTip ("Remove selected prims from Include" )
236+ self ._deleteBtn .setToolTip ("Remove Selected Objects from Include" )
243237 self ._deleteBtn .pressed .connect (self .onRemoveSelectionFromInclude )
244238 elif excludeSelected :
245- self ._deleteBtn .setToolTip ("Remove selected prims from Exclude" )
239+ self ._deleteBtn .setToolTip ("Remove Selected Objects from Exclude" )
246240 self ._deleteBtn .pressed .connect (self .onRemoveSelectionFromExclude )
247241 self ._deleteBtn .setPopupMode (QToolButton .DelayedPopup )
248242 self ._deleteBtn .setStyleSheet (
0 commit comments