Changeset b1b71ad in sasview for src/sas/qtgui/MainWindow/DataExplorer.py
- Timestamp:
- Oct 27, 2018 7:21:44 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 186d678
- Parents:
- d00475d
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/MainWindow/DataExplorer.py
rd00475d rb1b71ad 225 225 Called when the "Open Project" menu item chosen. 226 226 """ 227 # check if any items loaded and warn about data deletion 228 if self.model.rowCount() > 0: 229 msg = "This operation will set remove all data, plots and analyses from" 230 msg += " SasView before loading the project. Do you wish to continue?" 231 msgbox = QtWidgets.QMessageBox(self) 232 msgbox.setIcon(QtWidgets.QMessageBox.Warning) 233 msgbox.setText(msg) 234 msgbox.setWindowTitle("Project Load") 235 # custom buttons 236 button_yes = QtWidgets.QPushButton("Yes") 237 msgbox.addButton(button_yes, QtWidgets.QMessageBox.YesRole) 238 button_no = QtWidgets.QPushButton("No") 239 msgbox.addButton(button_no, QtWidgets.QMessageBox.RejectRole) 240 retval = msgbox.exec_() 241 if retval == QtWidgets.QMessageBox.RejectRole: 242 # cancel fit 243 return 244 227 245 kwargs = { 228 246 'parent' : self, 229 247 'caption' : 'Open Project', 230 'filter' : 'Project (*.json);;All files (*.*)',248 'filter' : 'Project Files (*.json);;Old Project Files (*.svs);;All files (*.*)', 231 249 'options' : QtWidgets.QFileDialog.DontUseNativeDialog 232 250 } 233 251 filename = QtWidgets.QFileDialog.getOpenFileName(**kwargs)[0] 234 252 if filename: 253 self.deleteAllItems() 235 254 self.readProject(filename) 236 255 … … 374 393 Read out datasets and fitpages from file 375 394 """ 376 with open(filename, 'r') as infile: 377 all_data = GuiUtils.readDataFromFile(infile) 395 # Find out the filetype based on extension 396 ext = os.path.splitext(filename)[1] 397 all_data = {} 398 if 'svs' in ext.lower(): 399 # backward compatibility mode. 400 datasets = GuiUtils.readProjectFromSVS(filename) 401 #[[item_1, state_1], [item_2, state_2],...] 402 403 # Convert fitpage properties and update the dict 404 all_data = GuiUtils.convertFromSVS(datasets) 405 else: 406 with open(filename, 'r') as infile: 407 all_data = GuiUtils.readDataFromFile(infile) 378 408 379 409 for key, value in all_data.items(): … … 420 450 if not value: continue 421 451 new_data = value[0] 452 from sas.sascalc.dataloader.data_info import Data1D as old_data1d 453 from sas.sascalc.dataloader.data_info import Data2D as old_data2d 454 if isinstance(new_data, (old_data1d, old_data2d)): 455 new_data = self.manager.create_gui_data(value[0], new_data.filename) 422 456 assert isinstance(new_data, (Data1D, Data2D)) 423 457 properties = value[1] … … 1202 1236 self.actionQuick3DPlot.triggered.connect(self.quickData3DPlot) 1203 1237 self.actionEditMask.triggered.connect(self.showEditDataMask) 1204 self.actionDelete.triggered.connect(self.delete Item)1238 self.actionDelete.triggered.connect(self.deleteSelectedItem) 1205 1239 self.actionFreezeResults.triggered.connect(self.freezeSelectedItems) 1206 1240 … … 1415 1449 self.freezeItem(item_to_copy) 1416 1450 1417 def deleteItem(self): 1451 def deleteAllItems(self): 1452 """ 1453 Deletes all datasets from both model and theory_model 1454 """ 1455 deleted_items = [self.model.item(row) for row in range(self.model.rowCount()) 1456 if self.model.item(row).isCheckable()] 1457 deleted_names = [item.text() for item in deleted_items] 1458 # Let others know we deleted data 1459 self.communicator.dataDeletedSignal.emit(deleted_items) 1460 # update stored_data 1461 self.manager.update_stored_data(deleted_names) 1462 1463 # Clear the model 1464 self.model.clear() 1465 1466 def deleteSelectedItem(self): 1418 1467 """ 1419 1468 Delete the current item … … 1432 1481 return 1433 1482 1483 indices = self.current_view.selectedIndexes() 1484 self.deleteIndices(indices) 1485 1486 def deleteIndices(self, indices): 1487 """ 1488 Delete model idices from the current view 1489 """ 1490 proxy = self.current_view.model() 1491 model = proxy.sourceModel() 1492 1493 deleted_items = [] 1494 deleted_names = [] 1495 1434 1496 # Every time a row is removed, the indices change, so we'll just remove 1435 1497 # rows and keep calling selectedIndexes until it returns an empty list. 1436 indices = self.current_view.selectedIndexes()1437 1438 proxy = self.current_view.model()1439 model = proxy.sourceModel()1440 1441 deleted_items = []1442 deleted_names = []1443 1444 1498 while len(indices) > 0: 1445 1499 index = indices[0] 1446 row_index = proxy.mapToSource(index) 1447 item_to_delete = model.itemFromIndex(row_index) 1500 #row_index = proxy.mapToSource(index) 1501 #item_to_delete = model.itemFromIndex(row_index) 1502 item_to_delete = model.itemFromIndex(index) 1448 1503 if item_to_delete and item_to_delete.isCheckable(): 1449 row = row_index.row() 1504 #row = row_index.row() 1505 row = index.row() 1450 1506 1451 1507 # store the deleted item details so we can pass them on later
Note: See TracChangeset
for help on using the changeset viewer.