1111 QGroupBox ,
1212 QComboBox ,
1313)
14- from qtpy .QtCore import Qt , QAbstractTableModel
14+ from qtpy .QtCore import Qt , QAbstractTableModel , QModelIndex
1515
1616from matplotlib .backends .backend_qtagg import FigureCanvas # pylint: disable=no-name-in-module
1717import matplotlib .pyplot as plt
@@ -101,6 +101,26 @@ def refine_rows(self):
101101 """Return a list of row number where "Refine" box is checked"""
102102 return sorted (k for k , v in self ._refine .items () if v )
103103
104+ def select_all (self ):
105+ """Select all refine/recenter checkboxes"""
106+ self ._refine = {n : True for n in range (self .rowCount (0 ))}
107+ self ._recenter = {n : True for n in range (self .rowCount (0 ))}
108+ self .dataChanged .emit (QModelIndex (), QModelIndex ()) # force view to redraw
109+
110+ def deselect_all (self ):
111+ """Deselect all refine/recenter checkboxes"""
112+ self ._refine = {}
113+ self ._recenter = {}
114+ self .dataChanged .emit (QModelIndex (), QModelIndex ()) # force view to redraw
115+
116+ def round_hkl (self ):
117+ """Round all HKL values to integer"""
118+ for row in range (self .rowCount (0 )):
119+ for index in range (1 , 4 ):
120+ self ._data_model .set_cell_data (row , index , round (self ._data_model .get_cell (row , index )), False )
121+
122+ self .dataChanged .emit (QModelIndex (), QModelIndex ()) # force view to redraw
123+
104124
105125class RefineUBView (QWidget ):
106126 """The view for the Refine UB widget"""
@@ -143,18 +163,29 @@ def _setup_ui(self):
143163
144164 peaks_layout = QVBoxLayout ()
145165
146- btn_layout = QHBoxLayout ()
166+ btn_layout = QGridLayout ()
147167 self .populate_peaks = QPushButton ("Populate Peaks" )
148168 self .populate_peaks .setCheckable (True )
149- self .populate_peaks .clicked .connect (self .populate_peaks_call )
169+ self .populate_peaks .clicked .connect (self ._populate_peaks_call )
150170 self .predict_peaks = QPushButton ("Predict peaks" )
151- self .predict_peaks .clicked .connect (self .predict_peaks_call )
171+ self .predict_peaks .clicked .connect (self ._predict_peaks_call )
152172 self .recenter_peaks = QPushButton ("Recenter" )
153- self .recenter_peaks .clicked .connect (self .recenter_peaks_call )
173+ self .recenter_peaks .clicked .connect (self ._recenter_peaks_call )
174+
175+ self .select_all = QPushButton ("Select All" )
176+ self .select_all .clicked .connect (self ._select_all_call )
177+ self .deselect_all = QPushButton ("Deselect All" )
178+ self .deselect_all .clicked .connect (self ._deselect_all_call )
179+ self .round_hkl = QPushButton ("Round HKL" )
180+ self .round_hkl .clicked .connect (self ._round_hkl_call )
181+
182+ btn_layout .addWidget (self .populate_peaks , 0 , 0 )
183+ btn_layout .addWidget (self .predict_peaks , 0 , 1 )
184+ btn_layout .addWidget (self .recenter_peaks , 0 , 2 )
185+ btn_layout .addWidget (self .select_all , 1 , 0 )
186+ btn_layout .addWidget (self .deselect_all , 1 , 1 )
187+ btn_layout .addWidget (self .round_hkl , 1 , 2 )
154188
155- btn_layout .addWidget (self .populate_peaks )
156- btn_layout .addWidget (self .predict_peaks )
157- btn_layout .addWidget (self .recenter_peaks )
158189 peaks_layout .addLayout (btn_layout )
159190 peaks_layout .addWidget (self .peaks_table .view )
160191 self .peaks_table .view .selectionModel ().currentRowChanged .connect (self ._on_row_selected )
@@ -240,7 +271,7 @@ def connect_populate_peaks(self, callback):
240271 """connect the "populate peaks" button callback"""
241272 self .populate_peaks_callback = callback
242273
243- def populate_peaks_call (self , checked ):
274+ def _populate_peaks_call (self , checked ):
244275 """call when "populate peaks" button pressed"""
245276 if self .populate_peaks_callback :
246277 self .populate_peaks_callback (checked )
@@ -249,7 +280,7 @@ def connect_predict_peaks(self, callback):
249280 """connect the "predict peaks" button callback"""
250281 self .predict_peaks_callback = callback
251282
252- def predict_peaks_call (self ):
283+ def _predict_peaks_call (self ):
253284 """call when "predict peaks" button pressed"""
254285 if self .predict_peaks_callback :
255286 self .predict_peaks_callback ()
@@ -258,11 +289,23 @@ def connect_recenter_peaks(self, callback):
258289 """connect the recenter button callback"""
259290 self .recenter_peaks_callback = callback
260291
261- def recenter_peaks_call (self ):
292+ def _recenter_peaks_call (self ):
262293 """call when recenter button pressed"""
263294 if self .recenter_peaks_callback :
264295 self .recenter_peaks_callback ()
265296
297+ def _select_all_call (self ):
298+ """call when select all button pressed"""
299+ self .peaks_table .view .model ().select_all ()
300+
301+ def _deselect_all_call (self ):
302+ """call when deselect all button pressed"""
303+ self .peaks_table .view .model ().deselect_all ()
304+
305+ def _round_hkl_call (self ):
306+ """call when round HKL button pressed"""
307+ self .peaks_table .view .model ().round_hkl ()
308+
266309 def connect_refine (self , callback ):
267310 """connect the refine button callback"""
268311 self .refine_callback = callback
0 commit comments