Changes in src/sas/qtgui/MainWindow/DataExplorer.py [2b8286c:9ce69ec] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/MainWindow/DataExplorer.py
r2b8286c r9ce69ec 574 574 new_plots = [] 575 575 for item, plot in plots.items(): 576 if self.updatePlot(plot) and filename != plot.name: 576 if self.updatePlot(plot): 577 # Don't create plots which are already displayed 577 578 continue 578 579 # Don't plot intermediate results, e.g. P(Q), S(Q) … … 582 583 continue 583 584 # Don't include plots from different fitpages, but always include the original data 584 if fitpage_name in plot.name or filename == plot.name:585 # 'sophisticated' test to generate standalone plot for residuals586 if 'esiduals' in plot.title:585 if fitpage_name in plot.name or filename in plot.name or filename == plot.filename: 586 # Residuals get their own plot 587 if plot.plot_role == Data1D.ROLE_RESIDUAL: 587 588 plot.yscale='linear' 588 589 self.plotData([(item, plot)]) … … 597 598 Forces display of charts for the given data set 598 599 """ 599 plot_to_show = data_list[0] 600 # passed plot is used ONLY to figure out its title, 601 # so all the charts related by it can be pulled from 602 # the data explorer indices. 603 filename = plot_to_show.filename 604 self.displayFile(filename=filename, is_data=plot_to_show.is_data, id=id) 600 # data_list = [QStandardItem, Data1D/Data2D] 601 plot_to_show = data_list[1] 602 plot_item = data_list[0] 603 604 # plots to show 605 new_plots = [] 606 607 # Check if this is merely a plot update 608 if self.updatePlot(plot_to_show): 609 return 610 611 # Residuals get their own plot 612 if plot_to_show.plot_role == Data1D.ROLE_RESIDUAL: 613 plot_to_show.yscale='linear' 614 self.plotData([(plot_item, plot_to_show)]) 615 elif plot_to_show.plot_role == Data1D.ROLE_DELETABLE: 616 # No plot 617 return 618 else: 619 # Plots with main data points on the same chart 620 # Get the main data plot 621 main_data = GuiUtils.dataFromItem(plot_item.parent()) 622 if main_data is None: 623 # Try the current item 624 main_data = GuiUtils.dataFromItem(plot_item) 625 if main_data is not None: 626 new_plots.append((plot_item, main_data)) 627 new_plots.append((plot_item, plot_to_show)) 628 629 if new_plots: 630 self.plotData(new_plots) 605 631 606 632 def addDataPlot2D(self, plot_set, item): … … 686 712 687 713 # Update the active chart list 688 #self.active_plots[new_plot.data.id] = new_plot714 self.active_plots[new_plot.data.name] = new_plot 689 715 690 716 def appendPlot(self): … … 700 726 # old plot data 701 727 plot_id = str(self.cbgraph.currentText()) 702 703 assert plot_id in PlotHelper.currentPlots(), "No such plot: %s"%(plot_id) 728 try: 729 assert plot_id in PlotHelper.currentPlots(), "No such plot: %s"%(plot_id) 730 except: 731 return 704 732 705 733 old_plot = PlotHelper.plotById(plot_id) … … 729 757 data_id = data.name 730 758 if data_id in ids_keys: 731 self.active_plots[data_id].replacePlot(data_id, data) 759 # We have data, let's replace data that needs replacing 760 if data.plot_role != Data1D.ROLE_DATA: 761 self.active_plots[data_id].replacePlot(data_id, data) 732 762 return True 733 763 elif data_id in ids_vals: 734 list(self.active_plots.values())[ids_vals.index(data_id)].replacePlot(data_id, data) 764 if data.plot_role != Data1D.ROLE_DATA: 765 list(self.active_plots.values())[ids_vals.index(data_id)].replacePlot(data_id, data) 735 766 return True 736 767 return False … … 946 977 self.context_menu.addAction(self.actionQuick3DPlot) 947 978 self.context_menu.addAction(self.actionEditMask) 979 #self.context_menu.addSeparator() 980 #self.context_menu.addAction(self.actionFreezeResults) 948 981 self.context_menu.addSeparator() 949 982 self.context_menu.addAction(self.actionDelete) … … 957 990 self.actionEditMask.triggered.connect(self.showEditDataMask) 958 991 self.actionDelete.triggered.connect(self.deleteItem) 992 self.actionFreezeResults.triggered.connect(self.freezeSelectedItems) 959 993 960 994 def onCustomContextMenu(self, position): … … 977 1011 self.actionQuick3DPlot.setEnabled(is_2D) 978 1012 self.actionEditMask.setEnabled(is_2D) 1013 1014 # Freezing 1015 # check that the selection has inner items 1016 freeze_enabled = False 1017 if model_item.parent() is not None: 1018 freeze_enabled = True 1019 self.actionFreezeResults.setEnabled(freeze_enabled) 1020 979 1021 # Fire up the menu 980 1022 self.context_menu.exec_(self.current_view.mapToGlobal(position)) … … 1112 1154 mask_editor.exec_() 1113 1155 1156 def freezeItem(self, item=None): 1157 """ 1158 Freeze given item 1159 """ 1160 if item is None: 1161 return 1162 self.model.beginResetModel() 1163 new_item = self.cloneTheory(item) 1164 self.model.appendRow(new_item) 1165 self.model.endResetModel() 1166 1167 def freezeSelectedItems(self): 1168 """ 1169 Freeze selected items 1170 """ 1171 indices = self.treeView.selectedIndexes() 1172 1173 proxy = self.treeView.model() 1174 model = proxy.sourceModel() 1175 1176 for index in indices: 1177 row_index = proxy.mapToSource(index) 1178 item_to_copy = model.itemFromIndex(row_index) 1179 if item_to_copy and item_to_copy.isCheckable(): 1180 self.freezeItem(item_to_copy) 1181 1114 1182 def deleteItem(self): 1115 1183 """ … … 1272 1340 1273 1341 # Caption for the theories 1274 checkbox_item.setChild(2, QtGui.QStandardItem(" THEORIES"))1342 checkbox_item.setChild(2, QtGui.QStandardItem("FIT RESULTS")) 1275 1343 1276 1344 # New row in the model
Note: See TracChangeset
for help on using the changeset viewer.