Ignore:
Timestamp:
Dec 24, 2017 10:42:41 AM (6 years ago)
Author:
Piotr Rozyczko <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:
2109350
Parents:
378e808
Message:

Constraint validator - initial implementation + tests. SASVIEW-844

File:
1 edited

Legend:

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

    r378e808 r6b0c2f6  
    8484    Main widget for selecting form and structure factor models 
    8585    """ 
     86    constraintAddedSignal = QtCore.pyqtSignal(list) 
    8687    def __init__(self, parent=None, data=None, tab_id=1): 
    8788 
     
    456457        # Respond to change in parameters from the UI 
    457458        self._model_model.itemChanged.connect(self.onMainParamsChange) 
     459        self.constraintAddedSignal.connect(self.modifyViewOnConstraint) 
    458460        self._poly_model.itemChanged.connect(self.onPolyModelChange) 
    459461        self._magnet_model.itemChanged.connect(self.onMagnetModelChange) 
     
    510512 
    511513        # Define the callbacks 
    512         self.actionConstrain.triggered.connect(self.addConstraint) 
    513         self.actionMutualMultiConstrain.triggered.connect(self.showMultiConstrain) 
     514        self.actionConstrain.triggered.connect(self.addSimpleConstraint) 
     515        self.actionMutualMultiConstrain.triggered.connect(self.showMultiConstraint) 
    514516        self.actionSelect.triggered.connect(self.selectParameters) 
    515517        self.actionDeselect.triggered.connect(self.deselectParameters) 
    516518        return menu 
    517519 
    518     def showMultiConstrain(self): 
     520    def showMultiConstraint(self): 
    519521        """ 
    520522        Show the constraint widget and receive the expression 
    521523        """ 
    522524        from sas.qtgui.Perspectives.Fitting.MultiConstraint import MultiConstraint 
    523         params_list = [s.data() for s in self.lstParams.selectionModel().selectedRows()] 
     525        from .Constraints import Constraint 
     526        selected_rows = self.lstParams.selectionModel().selectedRows() 
     527 
     528        params_list = [s.data() for s in selected_rows] 
    524529        mc_widget = MultiConstraint(self, params=params_list) 
    525530        mc_widget.exec_() 
    526         constraint = mc_widget.txtConstraint.text() 
     531        constraint = Constraint() 
     532        c_text = mc_widget.txtConstraint.text() 
    527533        # Pass the constraint to the parser 
     534 
    528535        self.communicate.statusBarUpdateSignal.emit('Constraints added') 
     536        # Change the colour of the row 
    529537        pass 
    530538 
    531     def addConstraint(self): 
     539    def modifyViewOnConstraint(self, row): 
     540        """ 
     541        Add visual cues that the parameter is constrained 
     542        """ 
     543        value = self._model_model.item(row, 1).text() 
     544        # Set min/max to the value constrained 
     545        self._model_model.item(row,2).setText(value) 
     546        self._model_model.item(row,3).setText(value) 
     547        font = QtGui.QFont() 
     548        font.setItalic(True) 
     549        brush = QtGui.QBrush(QtGui.QColor('blue')) 
     550        self._model_model.blockSignals(True) 
     551        # Modify font and foreground of affected rows 
     552        for column in range(0, self._model_model.columnCount()): 
     553            self._model_model.item(row, column).setForeground(brush) 
     554            self._model_model.item(row, column).setFont(font) 
     555            self._model_model.item(row, column).setEditable(False) 
     556        self._model_model.blockSignals(False) 
     557 
     558    def addSimpleConstraint(self): 
    532559        """ 
    533560        Adds a constraint on a single parameter. 
    534561        """ 
     562        from .Constraints import Constraint 
     563        for row in self.selectedParameters(): 
     564            param = self._model_model.item(row, 0).text() 
     565            value = self._model_model.item(row, 1).text() 
     566            constraint = Constraint(param=param, value=value) 
     567            item = QtGui.QStandardItem() 
     568            item.setData(constraint) 
     569            self._model_model.item(row, 1).setChild(0, item) 
     570            #self.constraintAddedSignal.emit([row]) 
     571            self.modifyViewOnConstraint(row) 
    535572        self.communicate.statusBarUpdateSignal.emit('Constraint added') 
    536573        pass 
Note: See TracChangeset for help on using the changeset viewer.