Changeset 0fe7e5b in sasview


Ignore:
Timestamp:
Aug 21, 2018 6:29:41 AM (3 months ago)
Author:
Torin Cooper-Bennun <torin.cooper-bennun@…>
Branches:
ESS_GUI, ESS_GUI_Pr_fixes, ESS_GUI_iss879, ESS_GUI_project_save
Children:
c0de493
Parents:
e11106e
Message:

remove redundant intermediate plots when a new model is selected that does not plot them

Location:
src/sas/qtgui
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    re11106e r0fe7e5b  
    22272227        """ 
    22282228        fitted_data = self.logic.new1DPlot(return_data, self.tab_id) 
    2229         self.calculateResiduals(fitted_data) 
     2229        residuals = self.calculateResiduals(fitted_data) 
    22302230        self.model_data = fitted_data 
     2231 
     2232        new_plots = [fitted_data, residuals] 
    22312233 
    22322234        # Create plots for intermediate product data 
     
    22352237            pq_data.symbol = "Line" 
    22362238            self.createNewIndex(pq_data) 
     2239            new_plots.append(pq_data) 
    22372240        if sq_data is not None: 
    22382241            sq_data.symbol = "Line" 
    22392242            self.createNewIndex(sq_data) 
     2243            new_plots.append(sq_data) 
     2244 
     2245        if self.data_is_loaded: 
     2246            GuiUtils.deleteRedundantPlots(self.all_data[self.data_index], new_plots) 
    22402247 
    22412248    def complete2D(self, return_data): 
     
    22732280        residuals_plot.id = "Residual " + residuals_plot.id 
    22742281        self.createNewIndex(residuals_plot) 
     2282        return residuals_plot 
    22752283 
    22762284    def onCategoriesChanged(self): 
  • src/sas/qtgui/Utilities/GuiUtils.py

    r3933ee9 r0fe7e5b  
    292292    # Append the new row to the main item 
    293293    item.appendRow(checkbox_item) 
     294 
     295def deleteRedundantPlots(item, new_plots): 
     296    """ 
     297    Checks all plots that are children of the given item; if any have an ID or name not included in new_plots, 
     298    it is deleted. Useful for e.g. switching from P(Q)S(Q) to P(Q); this would remove the old S(Q) plot. 
     299 
     300    Ensure that new_plots contains ALL the relevant plots(!!!) 
     301    """ 
     302    assert isinstance(item, QtGui.QStandardItem) 
     303 
     304    names = [p.name for p in new_plots if p.name is not None] 
     305    ids = [p.id for p in new_plots if p.id is not None] 
     306 
     307    items_to_delete = [] 
     308 
     309    for index in range(item.rowCount()): 
     310        plot_item = item.child(index) 
     311        if plot_item.isCheckable(): 
     312            plot_data = plot_item.child(0).data() 
     313            if (plot_data.id is not None) and (plot_data.id not in ids) and (plot_data.name not in names): 
     314                items_to_delete.append(plot_item) 
     315 
     316    for plot_item in items_to_delete: 
     317        item.removeRow(plot_item.row()) 
    294318 
    295319class HashableStandardItem(QtGui.QStandardItem): 
Note: See TracChangeset for help on using the changeset viewer.