Changes in / [b1b71ad:186d678] in sasview


Ignore:
Location:
src/sas/qtgui
Files:
8 edited

Legend:

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

    rb1b71ad r722b7d6  
    545545        pass 
    546546 
    547     def sendData(self, event): 
     547    def sendData(self, event=None): 
    548548        """ 
    549549        Send selected item data to the current perspective and set the relevant notifiers 
     
    13711371        Mask Editor for 2D plots 
    13721372        """ 
     1373        msg = QtWidgets.QMessageBox() 
     1374        msg.setIcon(QtWidgets.QMessageBox.Information) 
     1375        msg.setText("Error: cannot apply mask.\n"+ 
     1376                    "Please select a 2D dataset.") 
     1377        msg.setStandardButtons(QtWidgets.QMessageBox.Ok) 
     1378 
    13731379        try: 
    13741380            if data is None or not isinstance(data, Data2D): 
     1381                # if data wasn't passed - try to get it from 
     1382                # the currently selected item 
    13751383                index = self.current_view.selectedIndexes()[0] 
    13761384                proxy = self.current_view.model() 
     
    13811389 
    13821390            if data is None or not isinstance(data, Data2D): 
    1383                 msg = QtWidgets.QMessageBox() 
    1384                 msg.setIcon(QtWidgets.QMessageBox.Information) 
    1385                 msg.setText("Error: cannot apply mask. \ 
    1386                                 Please select a 2D dataset.") 
    1387                 msg.setStandardButtons(QtWidgets.QMessageBox.Cancel) 
     1391                # If data is still not right, complain 
    13881392                msg.exec_() 
    13891393                return 
    13901394        except: 
    1391             msg = QtWidgets.QMessageBox() 
    1392             msg.setIcon(QtWidgets.QMessageBox.Information) 
    1393             msg.setText("Error: No dataset selected. \ 
    1394                             Please select a 2D dataset.") 
    1395             msg.setStandardButtons(QtWidgets.QMessageBox.Cancel) 
    13961395            msg.exec_() 
    13971396            return 
  • src/sas/qtgui/MainWindow/GuiManager.py

    rb1b71ad r0c83303  
    1010from PyQt5.QtGui import * 
    1111from PyQt5.QtCore import Qt, QLocale, QUrl 
     12 
     13import matplotlib as mpl 
     14mpl.use("Qt5Agg") 
    1215 
    1316from twisted.internet import reactor 
     
    868871        self.results_frame.setVisible(True) 
    869872        if output_data: 
    870             self.results_panel.onPlotResults(output_data) 
     873            self.results_panel.onPlotResults(output_data, optimizer=self.perspective().optimizer) 
    871874 
    872875    def actionAdd_Custom_Model(self): 
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    r75906a1 r0c83303  
    294294        self.has_magnet_error_column = False 
    295295 
     296        # Enablement of comboboxes 
     297        self.enabled_cbmodel = False 
     298        self.enabled_sfmodel = False 
     299 
    296300        # If the widget generated theory item, save it 
    297301        self.theory_item = None 
     
    460464        self.cbModel.setEnabled(False) 
    461465        self.lblModel.setEnabled(False) 
     466        self.enabled_cbmodel = False 
    462467 
    463468    def enableModelCombo(self): 
     
    465470        self.cbModel.setEnabled(True) 
    466471        self.lblModel.setEnabled(True) 
     472        self.enabled_cbmodel = True 
    467473 
    468474    def disableStructureCombo(self): 
     
    470476        self.cbStructureFactor.setEnabled(False) 
    471477        self.lblStructure.setEnabled(False) 
     478        self.enabled_sfmodel = False 
    472479 
    473480    def enableStructureCombo(self): 
     
    475482        self.cbStructureFactor.setEnabled(True) 
    476483        self.lblStructure.setEnabled(True) 
     484        self.enabled_sfmodel = True 
    477485 
    478486    def togglePoly(self, isChecked): 
     
    10091017        Checks if the current model has magnetic scattering implemented 
    10101018        """ 
    1011         current_model = self.cbModel.currentText() 
    1012         return self.is2D and current_model in self.MAGNETIC_MODELS 
     1019        has_params = False 
     1020        if self.kernel_module: 
     1021            has_mag_params = len(self.kernel_module.magnetic_params) > 0 
     1022        return self.is2D and has_mag_params 
    10131023 
    10141024    def onSelectModel(self): 
     
    10341044        if not model: 
    10351045            return 
     1046 
    10361047        self.chkMagnetism.setEnabled(self.canHaveMagnetism()) 
    10371048        self.chkMagnetism.setEnabled(self.canHaveMagnetism()) 
     
    11751186        self.SASModelToQModel(model, structure_factor) 
    11761187 
     1188        # Enable magnetism checkbox for selected models 
     1189        self.chkMagnetism.setEnabled(self.canHaveMagnetism()) 
     1190        self.tabFitting.setTabEnabled(TAB_MAGNETISM, self.chkMagnetism.isChecked() and self.canHaveMagnetism()) 
     1191 
     1192        # Update column widths 
    11771193        for column, width in self.lstParamHeaderSizes.items(): 
    11781194            self.lstParams.setColumnWidth(column, width) 
     
    15731589        if param_dict is None: 
    15741590            return 
    1575         if hasattr(res, 'convergence') and len(res.convergence)>0: 
    1576             self.communicate.resultPlotUpdateSignal.emit(result[0]) 
     1591        self.communicate.resultPlotUpdateSignal.emit(result[0]) 
    15771592 
    15781593        elapsed = result[1] 
     
    31103125        shell_par = None 
    31113126        for par in kernel_pars: 
    3112             if par.name == param_name: 
     3127            parname = par.name 
     3128            if '[' in parname: 
     3129                 parname = parname[:parname.index('[')] 
     3130            if parname == param_name: 
    31133131                shell_par = par 
    31143132                break 
    3115         if not shell_par: 
     3133        if shell_par is None: 
    31163134            logger.error("Could not find %s in kernel parameters.", param_name) 
     3135            return 
    31173136        default_shell_count = shell_par.default 
    31183137        shell_min = 0 
     
    31243143            # no info about limits 
    31253144            pass 
     3145        except Exception as ex: 
     3146            logging.error("Badly defined multiplicity: "+ str(ex)) 
     3147            return 
    31263148        # don't update the kernel here - this data is display only 
    31273149        self._model_model.blockSignals(True) 
     
    31303152        self._model_model.blockSignals(False) 
    31313153 
     3154        ## Respond to index change 
     3155        #func.currentTextChanged.connect(self.modifyShellsInList) 
     3156 
     3157        # Respond to button press 
     3158        button.clicked.connect(self.onShowSLDProfile) 
     3159 
     3160        # Available range of shells displayed in the combobox 
     3161        func.addItems([str(i) for i in range(shell_min, shell_max+1)]) 
     3162 
    31323163        # Respond to index change 
    31333164        func.currentTextChanged.connect(self.modifyShellsInList) 
    31343165 
    3135         # Respond to button press 
    3136         button.clicked.connect(self.onShowSLDProfile) 
    3137  
    3138         # Available range of shells displayed in the combobox 
    3139         func.addItems([str(i) for i in range(shell_min, shell_max+1)]) 
    3140  
    31413166        # Add default number of shells to the model 
    31423167        func.setCurrentText(str(default_shell_count)) 
     3168        self.modifyShellsInList(str(default_shell_count)) 
    31433169 
    31443170    def modifyShellsInList(self, text): 
     
    31883214        """ 
    31893215        # get profile data 
    3190         x, y = self.kernel_module.getProfile() 
     3216        try: 
     3217            x, y = self.kernel_module.getProfile() 
     3218        except TypeError: 
     3219            msg = "SLD profile calculation failed." 
     3220            logging.error(msg) 
     3221            return 
     3222 
    31913223        y *= 1.0e6 
    31923224        profile_data = Data1D(x=x, y=y) 
     
    32213253 
    32223254        self.cbCategory.setEnabled(enabled) 
    3223         self.cbModel.setEnabled(enabled) 
     3255 
     3256        if enabled: 
     3257            # worry about original enablement of model and SF 
     3258            self.cbModel.setEnabled(self.enabled_cbmodel) 
     3259            self.cbStructureFactor.setEnabled(self.enabled_sfmodel) 
     3260        else: 
     3261            self.cbModel.setEnabled(enabled) 
     3262            self.cbStructureFactor.setEnabled(enabled) 
     3263 
    32243264        self.cmdPlot.setEnabled(enabled) 
    32253265 
  • src/sas/qtgui/Perspectives/Fitting/SmearingWidget.py

    rf20ea3f r04e1c80  
    220220        self.txtSmearDown.setEnabled(True) 
    221221        self.txtSmearUp.setEnabled(True) 
    222         self.txtSmearDown.setText(str(0.0)) 
    223         self.txtSmearUp.setText(str(0.0)) 
     222        #self.txtSmearDown.setText(str(0.0)) 
     223        #self.txtSmearUp.setText(str(0.0)) 
    224224 
    225225    def setSlitLabels(self): 
     
    235235        self.txtSmearDown.setEnabled(True) 
    236236        self.txtSmearUp.setEnabled(True) 
    237         self.txtSmearDown.setText(str(0.0)) 
    238         self.txtSmearUp.setText(str(0.0)) 
     237        #self.txtSmearDown.setText(str(0.0)) 
     238        #self.txtSmearUp.setText(str(0.0)) 
    239239 
    240240    def setDQLabels(self): 
     
    330330        """ 
    331331        _, accuracy, d_height, d_width = self.state() 
     332 
    332333        # Check changes in slit width 
    333334        if d_width is None: 
     
    337338 
    338339        if isinstance(self.data, Data2D): 
     340            self.current_smearer = smear_selection(self.data, self.kernel_model) 
    339341            return 
    340342        # make sure once more if it is smearer 
  • src/sas/qtgui/Perspectives/Fitting/UnitTesting/FittingWidgetTest.py

    r2eeda93 rec4a143  
    185185 
    186186        # Observe no such luck 
    187         self.assertEqual(self.widget.cbCategory.currentIndex(), 7) 
     187        self.assertEqual(self.widget.cbCategory.currentIndex(), 6) 
    188188        self.assertEqual(self.widget.cbModel.count(), 29) 
    189189 
     
    219219        #  
    220220        # Now change the model 
     221<<<<<<< HEAD 
    221222        self.widget.cbModel.setCurrentIndex(4) 
     223======= 
     224        self.widget.cbModel.setCurrentIndex(2) 
     225>>>>>>> ESS_GUI 
    222226        self.assertEqual(self.widget.cbModel.currentText(),'dab') 
    223227 
  • src/sas/qtgui/Perspectives/Fitting/ViewDelegate.py

    r906e0c7 r722b7d6  
    1313        Overwrite generic constructor to allow for some globals 
    1414        """ 
    15         super(QtWidgets.QStyledItemDelegate, self).__init__() 
     15        super(ModelViewDelegate, self).__init__() 
    1616 
    1717        # Main parameter table view columns 
     
    125125        Overwrite generic constructor to allow for some globals 
    126126        """ 
    127         super(QtWidgets.QStyledItemDelegate, self).__init__() 
     127        super(PolyViewDelegate, self).__init__() 
    128128 
    129129        self.poly_parameter = 0 
     
    226226        Overwrite generic constructor to allow for some globals 
    227227        """ 
    228         super(QtWidgets.QStyledItemDelegate, self).__init__() 
     228        super(MagnetismViewDelegate, self).__init__() 
    229229 
    230230        self.mag_parameter = 0 
  • src/sas/qtgui/Plotting/Plotter2D.py

    r8fad50b rf5cec7c  
    99 
    1010 
    11 #import sys 
    12 #print("SYS.PATH = ", sys.path) 
    1311import matplotlib as mpl 
    14 mpl.use("Qt5Agg") 
    1512DEFAULT_CMAP = mpl.cm.jet 
    1613 
     
    116113        """ 
    117114        # Toggle the scale 
    118         zmin_temp = self.zmin if self.zmin else MIN_Z 
     115        zmin_temp = self.zmin 
    119116        zmax_temp = self.zmax 
    120117        # self.scale predefined in the baseclass 
     
    425422        if self.scale == 'log_{10}': 
    426423            try: 
    427                 if  self.zmin <= 0  and len(output[output > 0]) > 0: 
     424                if  self.zmin is None  and len(output[output > 0]) > 0: 
    428425                    zmin_temp = self.zmin 
    429426                    output[output > 0] = numpy.log10(output[output > 0]) 
     
    437434            except: 
    438435                #Too many problems in 2D plot with scale 
    439                 output[output > 0] = numpy.log10(output[output > 0]) 
    440436                pass 
    441437 
     
    453449            else: 
    454450                self.im = self.ax.imshow(output, interpolation='nearest', 
     451                                origin='lower', 
    455452                                vmin=zmin_temp, vmax=zmax_temp, 
    456453                                cmap=self.cmap, 
  • src/sas/qtgui/Utilities/ResultPanel.py

    r8748751 r0c83303  
    5555        sys.modules['bumps.gui.plot_view'] = PlotView 
    5656 
    57     def onPlotResults(self, results): 
     57    def onPlotResults(self, results, optimizer="Unknown"): 
    5858        # Clear up previous results 
    5959        for view in (self.convergenceView, self.correlationView, 
    6060                     self.uncertaintyView, self.traceView): 
    6161            view.close() 
     62        # close all tabs. REMEMBER TO USE REVERSED RANGE!!! 
     63        for index in reversed(range(self.count())): 
     64            self.removeTab(index) 
    6265 
    6366        result = results[0][0] 
    6467        filename = result.data.sas_data.filename 
    65         current_time = datetime.datetime.now().strftime("%I:%M%p, %B %d, %Y") 
    66         self.setWindowTitle(self.window_name + " - " + filename + " - " + current_time) 
    67         if hasattr(result, 'convergence'): 
     68        current_optimizer = optimizer 
     69        self.setWindowTitle(self.window_name + " - " + filename + " - " + current_optimizer) 
     70        if hasattr(result, 'convergence') and len(result.convergence) > 0: 
    6871            best, pop = result.convergence[:, 0], result.convergence[:, 1:] 
    6972            self.convergenceView.update(best, pop) 
     
    8992            for view in (self.correlationView, self.uncertaintyView, self.traceView): 
    9093                view.close() 
     94        # no tabs in the widget - possibly LM optimizer. Mark "closed" 
     95        if self.count()==0: 
     96            self.close() 
    9197 
    9298    def closeEvent(self, event): 
Note: See TracChangeset for help on using the changeset viewer.