Ignore:
Timestamp:
Oct 27, 2018 7:21:44 AM (6 years ago)
Author:
Piotr Rozyczko <piotr.rozyczko@…>
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
Message:

Initial version of the 4.x SVS project file converter. Works for
non-disperse, non-magnetic sets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/MainWindow/DataExplorer.py

    rd00475d rb1b71ad  
    225225        Called when the "Open Project" menu item chosen. 
    226226        """ 
     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 
    227245        kwargs = { 
    228246            'parent'    : self, 
    229247            'caption'   : 'Open Project', 
    230             'filter'    : 'Project (*.json);;All files (*.*)', 
     248            'filter'    : 'Project Files (*.json);;Old Project Files (*.svs);;All files (*.*)', 
    231249            'options'   : QtWidgets.QFileDialog.DontUseNativeDialog 
    232250        } 
    233251        filename = QtWidgets.QFileDialog.getOpenFileName(**kwargs)[0] 
    234252        if filename: 
     253            self.deleteAllItems() 
    235254            self.readProject(filename) 
    236255 
     
    374393        Read out datasets and fitpages from file 
    375394        """ 
    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) 
    378408 
    379409        for key, value in all_data.items(): 
     
    420450            if not value: continue 
    421451            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) 
    422456            assert isinstance(new_data, (Data1D, Data2D)) 
    423457            properties = value[1] 
     
    12021236        self.actionQuick3DPlot.triggered.connect(self.quickData3DPlot) 
    12031237        self.actionEditMask.triggered.connect(self.showEditDataMask) 
    1204         self.actionDelete.triggered.connect(self.deleteItem) 
     1238        self.actionDelete.triggered.connect(self.deleteSelectedItem) 
    12051239        self.actionFreezeResults.triggered.connect(self.freezeSelectedItems) 
    12061240 
     
    14151449                self.freezeItem(item_to_copy) 
    14161450 
    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): 
    14181467        """ 
    14191468        Delete the current item 
     
    14321481            return 
    14331482 
     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 
    14341496        # Every time a row is removed, the indices change, so we'll just remove 
    14351497        # 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  
    14441498        while len(indices) > 0: 
    14451499            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) 
    14481503            if item_to_delete and item_to_delete.isCheckable(): 
    1449                 row = row_index.row() 
     1504                #row = row_index.row() 
     1505                row = index.row() 
    14501506 
    14511507                # store the deleted item details so we can pass them on later 
Note: See TracChangeset for help on using the changeset viewer.