@@ -51,48 +51,44 @@ def __init__(self, options, selectedoptions=None):
51
51
self .buttonBox .addButton (self .btnToggleSelection ,
52
52
QDialogButtonBox .ActionRole )
53
53
54
- self .btnSelectAll .clicked .connect (self .selectAll )
55
- self .btnClearSelection .clicked .connect (self .lstLayers . clearSelection )
54
+ self .btnSelectAll .clicked .connect (lambda : self .selectAll ( True ) )
55
+ self .btnClearSelection .clicked .connect (lambda : self .selectAll ( False ) )
56
56
self .btnToggleSelection .clicked .connect (self .toggleSelection )
57
57
58
58
self .populateList ()
59
59
60
60
def populateList (self ):
61
- self .lstLayers .clear ()
62
- self .lstLayers .addItems (self .options )
63
- selModel = self .lstLayers .selectionModel ()
64
- self .lstLayers .blockSignals (True )
65
- for i in xrange (self .lstLayers .count ()):
66
- item = self .lstLayers .item (i )
67
- if self .lstLayers .indexFromItem (item ).row () in self .selectedoptions :
68
- selModel .select (self .lstLayers .indexFromItem (item ),
69
- QItemSelectionModel .Select )
70
- self .lstLayers .blockSignals (False )
61
+ model = QStandardItemModel ()
62
+ for i , option in enumerate (self .options ):
63
+ item = QStandardItem (option )
64
+ item .setCheckState (Qt .Checked if i in self .selectedoptions else Qt .Unchecked )
65
+ item .setCheckable (True )
66
+ model .appendRow (item )
67
+
68
+ self .lstLayers .setModel (model )
71
69
72
70
def accept (self ):
73
71
self .selectedoptions = []
74
- for i in self .lstLayers .selectedItems ():
75
- self .selectedoptions .append (self .lstLayers .indexFromItem (i ).row ())
72
+ model = self .lstLayers .model ()
73
+ for i in xrange (model .rowCount ()):
74
+ item = model .item (i )
75
+ if item .checkState () == Qt .Checked :
76
+ self .selectedoptions .append (i )
76
77
QDialog .accept (self )
77
78
78
79
def reject (self ):
79
80
self .selectedoptions = None
80
81
QDialog .reject (self )
81
82
82
- def selectAll (self ):
83
- selModel = self .lstLayers .selectionModel ()
84
- self .lstLayers .blockSignals (True )
85
- for i in xrange (self .lstLayers .count ()):
86
- item = self .lstLayers .item (i )
87
- selModel .select (self .lstLayers .indexFromItem (item ),
88
- QItemSelectionModel .Select )
89
- self .lstLayers .blockSignals (False )
90
-
91
- def toggleSelection (self ):
92
- selModel = self .lstLayers .selectionModel ()
93
- self .lstLayers .blockSignals (True )
94
- for i in xrange (self .lstLayers .count ()):
95
- item = self .lstLayers .item (i )
96
- selModel .select (self .lstLayers .indexFromItem (item ),
97
- QItemSelectionModel .Toggle )
98
- self .lstLayers .blockSignals (False )
83
+ def selectAll (self , value ):
84
+ model = self .lstLayers .model ()
85
+ for i in xrange (model .rowCount ()):
86
+ item = model .item (i )
87
+ item .setCheckState (Qt .Checked if value else Qt .Unchecked )
88
+
89
+ def toggleSelection (self ):
90
+ model = self .lstLayers .model ()
91
+ for i in xrange (model .rowCount ()):
92
+ item = model .item (i )
93
+ checked = item .checkState () == Qt .Checked
94
+ item .setCheckState (Qt .Unchecked if checked else Qt .Checked )
0 commit comments