Ignore:
Timestamp:
Jun 15, 2016 5:57:34 AM (8 years ago)
Author:
Piotr Rozyczko <piotr.rozyczko@…>
Branches:
ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
Children:
1042dba
Parents:
5032ea68
Message:

Prototype DE↔perspective api based on QStandardItem.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py

    r5032ea68 ra281ab8  
    1212from sas.sasgui.guiframe.dataFitting import Data1D 
    1313from sas.qtgui.GuiUtils import Communicate 
     14from sas.qtgui.GuiUtils import updateModelItem 
    1415 
    1516# local 
     
    3536        self._model.appendRow(item) 
    3637 
    37 # class InvariantWindow(InvariantUI): 
    3838class InvariantWindow(tabbedInvariantUI): 
    3939    # The controller which is responsible for managing signal slots connections 
     
    5353        self._manager = manager 
    5454        self._reactor = self._manager.reactor() 
     55        self._model_item = QtGui.QStandardItem() 
    5556 
    5657        self._helpView = QtWebKit.QWebView() 
     
    119120        self._high_power_value  = float(self.model.item(WIDGETS.W_HIGHQ_POWER_VALUE).text()) 
    120121 
    121     def calculate(self): 
     122    def calculateInvariant(self): 
    122123        """ 
    123124        Use twisted to thread the calculations away. 
     
    151152        """ 
    152153        """ 
    153         self._plotter.show() 
     154        if self._low_extrapolate or self._high_extrapolate: 
     155            self._plotter.show() 
    154156        self.model = model 
    155157        self.mapper.toFirst() 
     
    160162        self.pushButton.setStyleSheet(self.style) 
    161163 
    162         # Send the new data to DE for keeping in the model 
    163         self.communicate.updateModelFromPerspectiveSignal.emit(self._data) 
     164        # Send the modified model item to DE for keeping in the model 
     165        self.communicate.updateModelFromPerspectiveSignal.emit(self._model_item) 
    164166 
    165167 
     
    255257 
    256258            # Plot the chart 
     259            title = "Low-Q extrapolation" 
    257260            self._plotter.data(extrapolated_data) 
    258             self._plotter.title("Low-Q extrapolation") 
     261            self._plotter.title(title) 
    259262            self._plotter.plot() 
    260263 
     264            # Add the plot to the model item 
     265            variant_item = QtCore.QVariant(self._plotter) 
     266            updateModelItem(self._model_item, variant_item, title) 
    261267 
    262268        if self._high_extrapolate: 
     
    271277            # find how to add this plot to the existing plot for low_extrapolate 
    272278            # Plot the chart 
     279            title = "High-Q extrapolation" 
    273280            self._plotter.data(high_out_data) 
    274             self._plotter.title("High-Q extrapolation") 
     281            self._plotter.title(title) 
    275282            self._plotter.plot() 
     283 
     284            # Add the plot to the model item 
     285            variant_item = QtCore.QVariant(self._plotter) 
     286            updateModelItem(self._model_item, variant_item, title) 
    276287 
    277288 
     
    326337 
    327338    def setupSlots(self): 
    328         self.pushButton.clicked.connect(self.calculate) 
     339        self.pushButton.clicked.connect(self.calculateInvariant) 
    329340        self.pushButton_2.clicked.connect(self.status) 
    330341        self.pushButton_3.clicked.connect(self.help) 
     
    489500        self.mapper.toFirst() 
    490501 
    491     def setData(self, data_list=None): 
     502    def setData(self, data_item): 
     503        """ 
     504        Obtain a QStandardItem object and dissect it to get Data1D/2D 
     505        Pass it over to the calculator 
     506        """ 
     507        if not isinstance(data_item, list): 
     508            msg = "Incorrect type passed to the Invariant Perspective" 
     509            raise AttributeError, msg 
     510 
     511        if not isinstance(data_item[0], QtGui.QStandardItem): 
     512            msg = "Incorrect type passed to the Invariant Perspective" 
     513            raise AttributeError, msg 
     514 
     515        self._model_item = data_item[0] 
     516 
     517        # Extract data on 1st child - this is the Data1D/2D component 
     518        data = self._model_item.child(0).data().toPyObject() 
     519 
     520        self.calculate(data_list=[data]) 
     521         
     522    def calculate(self, data_list=None): 
    492523        """ 
    493524        receive a list of data and compute invariant 
     525 
     526        TODO: pass warnings/messages to log 
    494527        """ 
    495528        msg = "" 
     
    520553                    #wx.PostEvent(self.parent, StatusEvent(status=msg, info='error')) 
    521554                    return 
    522                 msg += "Invariant panel does not allow multiple data!\n" 
    523                 msg += "Please select one.\n" 
     555 
     556                # TODO: add msgbox for data choice 
     557                #msg += "Invariant panel does not allow multiple data!\n" 
     558                #msg += "Please select one.\n" 
    524559                #if len(data_list) > 1: 
    525560                    #from invariant_widgets import DataDialog 
     
    545580                    self._data = data 
    546581                    self._path = "unique path" 
    547                     self.calculate() 
     582                    self.calculateInvariant() 
    548583                except: 
    549584                    msg = "Invariant Set_data: " + str(sys.exc_value) 
Note: See TracChangeset for help on using the changeset viewer.