Ignore:
Timestamp:
Mar 16, 2018 2:05:42 PM (7 years ago)
Author:
krzywon
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:
47bf906
Parents:
477c473 (diff), e4c475b7 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'ESS_GUI' into ESS_GUI_Pr

Location:
src/sas/qtgui/Perspectives/Inversion
Files:
9 added
7 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/Perspectives/Inversion/InversionLogic.py

    r5fba4c4 rd744767  
    7373            except: 
    7474                err[i] = 1.0 
    75                 print("Error getting error", value, x[i]) 
     75                print(("Error getting error", value, x[i])) 
    7676 
    7777        new_plot = Data1D(x, y) 
     
    9999                except: 
    100100                    err[i] = 1.0 
    101                     print("Error getting error", value, x[i]) 
     101                    print(("Error getting error", value, x[i])) 
    102102 
    103103            new_plot = Data1D(x, y) 
     
    143143            except: 
    144144                err[i] = 1.0 
    145                 print("Error getting error", value, x[i]) 
     145                print(("Error getting error", value, x[i])) 
    146146 
    147147        plot.x = x 
     
    160160                except: 
    161161                    err[i] = 1.0 
    162                     print("Error getting error", value, x[i]) 
     162                    print(("Error getting error", value, x[i])) 
    163163 
    164164            plot.x = x 
     
    272272                msg = "Unable to find min/max/length of \n data named %s" % \ 
    273273                            self.data.filename 
    274                 raise ValueError, msg 
     274                raise ValueError(msg) 
    275275 
    276276        else: 
     
    282282                msg = "Unable to find min/max of \n data named %s" % \ 
    283283                            self.data.filename 
    284                 raise ValueError, msg 
     284                raise ValueError(msg) 
    285285            qmax = np.sqrt(x * x + y * y) 
    286286        return qmin, qmax 
  • src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py

    r477c473 re90988c  
    44import numpy as np 
    55 
    6 from PyQt4 import QtGui, QtCore, QtWebKit 
    7 from twisted.internet import reactor 
     6from PyQt5 import QtGui, QtCore, QtWidgets 
    87 
    98# sas-global 
     
    1110 
    1211# pr inversion GUI elements 
    13 from InversionUtils import WIDGETS 
    14 import UI.TabbedInversionUI 
    15 from UI.TabbedInversionUI import Ui_PrInversion 
    16 from InversionLogic import InversionLogic 
     12from .InversionUtils import WIDGETS 
     13from .UI.TabbedInversionUI import Ui_PrInversion 
     14from .InversionLogic import InversionLogic 
    1715 
    1816# pr inversion calculation elements 
     
    2725        return 0.0 
    2826 
     27NUMBER_OF_TERMS = 10 
     28REGULARIZATION = 0.0001 
     29BACKGROUND_INPUT = 0.0 
     30MAX_DIST = 140.0 
    2931 
    3032# TODO: Modify plot references, don't just send new 
    3133# TODO: Update help with batch capabilities 
    3234# TODO: Method to export results in some meaningful way 
    33 class InversionWindow(QtGui.QTabWidget, Ui_PrInversion): 
     35class InversionWindow(QtWidgets.QDialog, Ui_PrInversion): 
    3436    """ 
    3537    The main window for the P(r) Inversion perspective. 
     
    3739 
    3840    name = "Inversion" 
     41    estimateSignal = QtCore.pyqtSignal(tuple) 
     42    estimateNTSignal = QtCore.pyqtSignal(tuple) 
     43    calculateSignal = QtCore.pyqtSignal(tuple) 
    3944 
    4045    def __init__(self, parent=None, data=None): 
     
    4651        self._manager = parent 
    4752        self._model_item = QtGui.QStandardItem() 
    48         self._helpView = QtWebKit.QWebView() 
    49  
    5053        self.communicate = GuiUtils.Communicate() 
    5154 
    5255        self.logic = InversionLogic() 
    5356 
     57        # Reference to Dmax window 
    5458        self.dmaxWindow = None 
    5559 
     
    7882                self._data_list[datum] = self._calculator.clone() 
    7983 
     84        # dict of models for quick update after calculation 
     85        # {item:model} 
     86        self._models = {} 
     87 
     88        self.calculateAllButton.setEnabled(False) 
     89        self.calculateThisButton.setEnabled(False) 
     90 
    8091        # plots for current data 
    8192        self.pr_plot = None 
     
    8697 
    8798        self.model = QtGui.QStandardItemModel(self) 
    88         self.mapper = QtGui.QDataWidgetMapper(self) 
     99        self.mapper = QtWidgets.QDataWidgetMapper(self) 
     100 
     101        # Add validators 
     102        self.setupValidators() 
    89103        # Link user interactions with methods 
    90104        self.setupLinks() 
     
    119133            # reset the closability flag 
    120134            self.setClosable(value=False) 
     135            # Tell the MdiArea to close the container 
     136            self.parentWidget().close() 
    121137            event.accept() 
    122138        else: 
     
    140156        self.noOfTermsSuggestionButton.clicked.connect(self.acceptNoTerms) 
    141157        self.explorerButton.clicked.connect(self.openExplorerWindow) 
    142         self.backgroundInput.textChanged.connect( 
    143             lambda: self._calculator.set_est_bck(int(is_float( 
    144                 str(self.backgroundInput.text()))))) 
    145         self.minQInput.textChanged.connect( 
    146             lambda: self._calculator.set_qmin(is_float( 
    147                 str(self.minQInput.text())))) 
    148         self.regularizationConstantInput.textChanged.connect( 
    149             lambda: self._calculator.set_alpha(is_float( 
    150                 str(self.regularizationConstantInput.text())))) 
    151         self.maxDistanceInput.textChanged.connect( 
    152             lambda: self._calculator.set_dmax(is_float( 
    153                 str(self.maxDistanceInput.text())))) 
    154         self.maxQInput.textChanged.connect( 
    155             lambda: self._calculator.set_qmax(is_float( 
    156                 str(self.maxQInput.text())))) 
    157         self.slitHeightInput.textChanged.connect( 
    158             lambda: self._calculator.set_slit_height(is_float( 
    159                 str(self.slitHeightInput.text())))) 
    160         self.slitWidthInput.textChanged.connect( 
    161             lambda: self._calculator.set_slit_width(is_float( 
    162                 str(self.slitHeightInput.text())))) 
     158 
     159        self.backgroundInput.editingFinished.connect( 
     160            lambda: self._calculator.set_est_bck(int(is_float(self.backgroundInput.text())))) 
     161        self.minQInput.editingFinished.connect( 
     162            lambda: self._calculator.set_qmin(is_float(self.minQInput.text()))) 
     163        self.regularizationConstantInput.editingFinished.connect( 
     164            lambda: self._calculator.set_alpha(is_float(self.regularizationConstantInput.text()))) 
     165        self.maxDistanceInput.editingFinished.connect( 
     166            lambda: self._calculator.set_dmax(is_float(self.maxDistanceInput.text()))) 
     167        self.maxQInput.editingFinished.connect( 
     168            lambda: self._calculator.set_qmax(is_float(self.maxQInput.text()))) 
     169        self.slitHeightInput.editingFinished.connect( 
     170            lambda: self._calculator.set_slit_height(is_float(self.slitHeightInput.text()))) 
     171        self.slitWidthInput.editingFinished.connect( 
     172            lambda: self._calculator.set_slit_width(is_float(self.slitHeightInput.text()))) 
     173 
    163174        self.model.itemChanged.connect(self.model_changed) 
     175        self.estimateNTSignal.connect(self._estimateNTUpdate) 
     176        self.estimateSignal.connect(self._estimateUpdate) 
     177        self.calculateSignal.connect(self._calculateUpdate) 
    164178 
    165179    def setupMapper(self): 
     
    184198 
    185199        # Parameter Items 
    186         self.mapper.addMapping(self.regularizationConstantInput, 
    187                                WIDGETS.W_REGULARIZATION) 
    188         self.mapper.addMapping(self.regConstantSuggestionButton, 
    189                                WIDGETS.W_REGULARIZATION_SUGGEST) 
     200        self.mapper.addMapping(self.regularizationConstantInput, WIDGETS.W_REGULARIZATION) 
     201        self.mapper.addMapping(self.regConstantSuggestionButton, WIDGETS.W_REGULARIZATION_SUGGEST) 
    190202        self.mapper.addMapping(self.explorerButton, WIDGETS.W_EXPLORE) 
    191203        self.mapper.addMapping(self.maxDistanceInput, WIDGETS.W_MAX_DIST) 
    192204        self.mapper.addMapping(self.noOfTermsInput, WIDGETS.W_NO_TERMS) 
    193         self.mapper.addMapping(self.noOfTermsSuggestionButton, 
    194                                WIDGETS.W_NO_TERMS_SUGGEST) 
     205        self.mapper.addMapping(self.noOfTermsSuggestionButton, WIDGETS.W_NO_TERMS_SUGGEST) 
    195206 
    196207        # Output 
     
    202213        self.mapper.addMapping(self.oscillationValue, WIDGETS.W_OSCILLATION) 
    203214        self.mapper.addMapping(self.posFractionValue, WIDGETS.W_POS_FRACTION) 
    204         self.mapper.addMapping(self.sigmaPosFractionValue, 
    205                                WIDGETS.W_SIGMA_POS_FRACTION) 
     215        self.mapper.addMapping(self.sigmaPosFractionValue, WIDGETS.W_SIGMA_POS_FRACTION) 
    206216 
    207217        # Main Buttons 
    208218        self.mapper.addMapping(self.removeButton, WIDGETS.W_REMOVE) 
    209219        self.mapper.addMapping(self.calculateAllButton, WIDGETS.W_CALCULATE_ALL) 
    210         self.mapper.addMapping(self.calculateThisButton, 
    211                                WIDGETS.W_CALCULATE_VISIBLE) 
     220        self.mapper.addMapping(self.calculateThisButton, WIDGETS.W_CALCULATE_VISIBLE) 
    212221        self.mapper.addMapping(self.helpButton, WIDGETS.W_HELP) 
    213222 
     
    220229        item = QtGui.QStandardItem("") 
    221230        self.model.setItem(WIDGETS.W_FILENAME, item) 
    222         item = QtGui.QStandardItem('0.0') 
     231        item = QtGui.QStandardItem(str(BACKGROUND_INPUT)) 
    223232        self.model.setItem(WIDGETS.W_BACKGROUND_INPUT, item) 
    224233        item = QtGui.QStandardItem("") 
     
    230239        item = QtGui.QStandardItem("") 
    231240        self.model.setItem(WIDGETS.W_SLIT_HEIGHT, item) 
    232         item = QtGui.QStandardItem("10") 
     241        item = QtGui.QStandardItem(str(NUMBER_OF_TERMS)) 
    233242        self.model.setItem(WIDGETS.W_NO_TERMS, item) 
    234         item = QtGui.QStandardItem("0.0001") 
     243        item = QtGui.QStandardItem(str(REGULARIZATION)) 
    235244        self.model.setItem(WIDGETS.W_REGULARIZATION, item) 
    236         item = QtGui.QStandardItem("140.0") 
     245        item = QtGui.QStandardItem(str(MAX_DIST)) 
    237246        self.model.setItem(WIDGETS.W_MAX_DIST, item) 
    238247        item = QtGui.QStandardItem("") 
     
    255264    def setupWindow(self): 
    256265        """Initialize base window state on init""" 
    257         self.setTabPosition(0) 
    258266        self.enableButtons() 
    259267        self.estimateBgd.setChecked(True) 
    260268 
     269    def setupValidators(self): 
     270        """Apply validators to editable line edits""" 
     271        self.noOfTermsInput.setValidator(QtGui.QIntValidator()) 
     272        self.regularizationConstantInput.setValidator(GuiUtils.DoubleValidator()) 
     273        self.maxDistanceInput.setValidator(GuiUtils.DoubleValidator()) 
     274        self.minQInput.setValidator(GuiUtils.DoubleValidator()) 
     275        self.maxQInput.setValidator(GuiUtils.DoubleValidator()) 
     276        self.slitHeightInput.setValidator(GuiUtils.DoubleValidator()) 
     277        self.slitWidthInput.setValidator(GuiUtils.DoubleValidator()) 
     278 
    261279    ###################################################################### 
    262280    # Methods for updating GUI 
     
    266284        Enable buttons when data is present, else disable them 
    267285        """ 
     286        self.calculateAllButton.setEnabled(self.logic.data_is_loaded) 
     287        self.calculateThisButton.setEnabled(self.logic.data_is_loaded) 
    268288        self.removeButton.setEnabled(self.logic.data_is_loaded) 
    269289        self.explorerButton.setEnabled(self.logic.data_is_loaded) 
    270         self.calculateAllButton.setEnabled(self.logic.data_is_loaded) 
    271         self.calculateThisButton.setEnabled(self.logic.data_is_loaded) 
    272290 
    273291    def populateDataComboBox(self, filename, data_ref): 
     
    277295        :param data_ref: QStandardItem reference for data set to be added 
    278296        """ 
    279         qt_item = QtCore.QString.fromUtf8(filename) 
    280         ref = QtCore.QVariant(data_ref) 
    281         self.dataList.addItem(qt_item, ref) 
     297        self.dataList.addItem(filename, data_ref) 
    282298 
    283299    def acceptNoTerms(self): 
     
    292308 
    293309    def displayChange(self): 
    294         variant_ref = self.dataList.itemData(self.dataList.currentIndex()) 
    295         self.setCurrentData(variant_ref.toPyObject()) 
     310        ref_item = self.dataList.itemData(self.dataList.currentIndex()) 
     311        self._model_item = ref_item 
     312        self.setCurrentData(ref_item) 
     313        self.setCurrentModel(ref_item) 
    296314 
    297315    def removeData(self): 
     
    304322        self.dataList.removeItem(self.dataList.currentIndex()) 
    305323        self.dataList.setCurrentIndex(0) 
     324        # Last file removed 
     325        if not self._data_list: 
     326            self._data = None 
     327            self.pr_plot = None 
     328            self._data_set = None 
     329            self.calculateThisButton.setEnabled(False) 
     330            self.calculateAllButton.setEnabled(False) 
     331            self.explorerButton.setEnabled(False) 
    306332 
    307333    ###################################################################### 
    308334    # GUI Interaction Events 
     335 
     336    def setCurrentModel(self, ref_item): 
     337        '''update the current model with stored values''' 
     338        if ref_item in self._models: 
     339            self.model = self._models[ref_item] 
    309340 
    310341    def update_calculator(self): 
     
    322353            self.setClosable(True) 
    323354            self.close() 
    324             InversionWindow.__init__(self.parent(), self._data_list.keys()) 
     355            InversionWindow.__init__(self.parent(), list(self._data_list.keys())) 
    325356            exit(0) 
    326357        # TODO: Only send plot first time - otherwise, update in complete 
    327358        if self.pr_plot is not None: 
    328359            title = self.pr_plot.name 
    329             GuiUtils.updateModelItemWithPlot( 
    330                 self._data, QtCore.QVariant(self.pr_plot), title) 
     360            GuiUtils.updateModelItemWithPlot(self._data, self.pr_plot, title) 
    331361        if self.data_plot is not None: 
    332362            title = self.data_plot.name 
    333             GuiUtils.updateModelItemWithPlot( 
    334                 self._data, QtCore.QVariant(self.data_plot), title) 
     363            GuiUtils.updateModelItemWithPlot(self._data, self.data_plot, title) 
    335364        if self.dmaxWindow is not None: 
    336             self.dmaxWindow.pr_state = self._calculator 
    337             self.dmaxWindow.nfunc = self.getNFunc() 
     365             self.dmaxWindow.pr_state = self._calculator 
     366             self.dmaxWindow.nfunc = self.getNFunc() 
    338367 
    339368        self.mapper.toFirst() 
     
    343372        Open the P(r) Inversion help browser 
    344373        """ 
    345         tree_location = (GuiUtils.HELP_DIRECTORY_LOCATION + 
    346                          "user/sasgui/perspectives/pr/pr_help.html") 
     374        tree_location = "/user/sasgui/perspectives/pr/pr_help.html" 
    347375 
    348376        # Actual file anchor will depend on the combo box index 
    349377        # Note that we can be clusmy here, since bad current_fitter_id 
    350378        # will just make the page displayed from the top 
    351         self._helpView.load(QtCore.QUrl(tree_location)) 
    352         self._helpView.show() 
     379        self._manager.showHelp(tree_location) 
    353380 
    354381    def toggleBgd(self): 
     
    366393        Open the Explorer window to see correlations between params and results 
    367394        """ 
    368         from dmax import DmaxWindow 
     395        from .DMaxExplorerWidget import DmaxWindow 
    369396        self.dmaxWindow = DmaxWindow(self._calculator, self.getNFunc(), self) 
    370397        self.dmaxWindow.show() 
     
    383410        if not isinstance(data_item, list): 
    384411            msg = "Incorrect type passed to the P(r) Perspective" 
    385             raise AttributeError, msg 
     412            raise AttributeError 
    386413 
    387414        for data in data_item: 
     415            if data in self._data_list.keys(): 
     416                # Don't add data if it's already in 
     417                return 
    388418            # Create initial internal mappings 
    389419            self._data_list[data] = self._calculator.clone() 
     
    391421            self.data_plot_list[data] = self.data_plot 
    392422            self.pr_plot_list[data] = self.pr_plot 
    393             ref_var = QtCore.QVariant(data) 
    394             self.populateDataComboBox(self._data_set.filename, ref_var) 
     423            self.populateDataComboBox(self._data_set.filename, data) 
    395424            self.setCurrentData(data) 
    396425 
     
    401430            # Estimate q range 
    402431            qmin, qmax = self.logic.computeDataRange() 
    403             self.model.setItem(WIDGETS.W_QMIN, QtGui.QStandardItem( 
    404                 "{:.4g}".format(qmin))) 
    405             self.model.setItem(WIDGETS.W_QMAX, QtGui.QStandardItem( 
    406                 "{:.4g}".format(qmax))) 
     432            self.model.setItem(WIDGETS.W_QMIN, QtGui.QStandardItem("{:.4g}".format(qmin))) 
     433            self.model.setItem(WIDGETS.W_QMAX, QtGui.QStandardItem("{:.4g}".format(qmax))) 
     434            self._models[data] = self.model 
     435            self.model_item = data 
    407436 
    408437        self.enableButtons() 
     
    410439    def getNFunc(self): 
    411440        """Get the n_func value from the GUI object""" 
    412         return int(UI.TabbedInversionUI._fromUtf8(self.noOfTermsInput.text())) 
     441        try: 
     442            nfunc = int(self.noOfTermsInput.text()) 
     443        except ValueError: 
     444            logging.error("Incorrect number of terms specified: %s" %self.noOfTermsInput.text()) 
     445            self.noOfTermsInput.setText(str(NUMBER_OF_TERMS)) 
     446            nfunc = NUMBER_OF_TERMS 
     447        return nfunc 
    413448 
    414449    def setCurrentData(self, data_ref): 
    415450        """Get the current data and display as necessary""" 
    416451 
     452        if data_ref is None: 
     453            return 
     454 
    417455        if not isinstance(data_ref, QtGui.QStandardItem): 
    418456            msg = "Incorrect type passed to the P(r) Perspective" 
    419             raise AttributeError, msg 
     457            raise AttributeError 
    420458 
    421459        # Data references 
     
    428466    ###################################################################### 
    429467    # Thread Creators 
    430  
    431468    def startThreadAll(self): 
    432         for data_ref, pr in self._data_list.items(): 
     469        for data_ref, pr in list(self._data_list.items()): 
    433470            self._data_set = GuiUtils.dataFromItem(data_ref) 
    434471            self._calculator = pr 
     
    439476            Start a calculation thread 
    440477        """ 
    441         from Thread import CalcPr 
     478        from .Thread import CalcPr 
    442479 
    443480        # Set data before running the calculations 
     
    451488        self.calc_thread = CalcPr(pr, nfunc, 
    452489                                  error_func=self._threadError, 
    453                                   completefn=self._completed, updatefn=None) 
     490                                  completefn=self._calculateCompleted, 
     491                                  updatefn=None) 
    454492        self.calc_thread.queue() 
    455493        self.calc_thread.ready(2.5) 
     
    457495    def performEstimateNT(self): 
    458496        """ 
    459             Perform parameter estimation 
    460         """ 
    461         from Thread import EstimateNT 
     497        Perform parameter estimation 
     498        """ 
     499        from .Thread import EstimateNT 
    462500 
    463501        # If a thread is already started, stop it 
     
    471509        pr.slit_width = 0.0 
    472510        nfunc = self.getNFunc() 
     511 
    473512        self.estimation_thread = EstimateNT(pr, nfunc, 
    474513                                            error_func=self._threadError, 
     
    482521            Perform parameter estimation 
    483522        """ 
    484         from Thread import EstimatePr 
     523        from .Thread import EstimatePr 
    485524 
    486525        self.startThread() 
     
    503542 
    504543    def _estimateCompleted(self, alpha, message, elapsed): 
     544        ''' Send a signal to the main thread for model update''' 
     545        self.estimateSignal.emit((alpha, message, elapsed)) 
     546 
     547    def _estimateUpdate(self, output_tuple): 
    505548        """ 
    506549        Parameter estimation completed, 
     
    510553        :param elapsed: computation time 
    511554        """ 
     555        alpha, message, elapsed = output_tuple 
    512556        # Save useful info 
    513         self.model.setItem(WIDGETS.W_COMP_TIME, 
    514                            QtGui.QStandardItem(str(elapsed))) 
    515         self.regConstantSuggestionButton.setText(QtCore.QString(str(alpha))) 
     557        self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.4g}".format(elapsed))) 
     558        self.regConstantSuggestionButton.setText("{:-3.2g}".format(alpha)) 
    516559        self.regConstantSuggestionButton.setEnabled(True) 
    517560        if message: 
     
    520563 
    521564    def _estimateNTCompleted(self, nterms, alpha, message, elapsed): 
     565        ''' Send a signal to the main thread for model update''' 
     566        self.estimateNTSignal.emit((nterms, alpha, message, elapsed)) 
     567 
     568    def _estimateNTUpdate(self, output_tuple): 
    522569        """ 
    523570        Parameter estimation completed, 
     
    527574        :param nterms: estimated number of terms 
    528575        :param elapsed: computation time 
    529  
    530         """ 
     576        """ 
     577        nterms, alpha, message, elapsed = output_tuple 
    531578        # Save useful info 
    532         self.noOfTermsSuggestionButton.setText(QtCore.QString( 
    533             "{:n}".format(nterms))) 
     579        self.noOfTermsSuggestionButton.setText("{:n}".format(nterms)) 
    534580        self.noOfTermsSuggestionButton.setEnabled(True) 
    535         self.regConstantSuggestionButton.setText(QtCore.QString( 
    536             "{:.3g}".format(alpha))) 
     581        self.regConstantSuggestionButton.setText("{:.3g}".format(alpha)) 
    537582        self.regConstantSuggestionButton.setEnabled(True) 
    538         self.model.setItem(WIDGETS.W_COMP_TIME, 
    539                            QtGui.QStandardItem(str(elapsed))) 
     583        self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.2g}".format(elapsed))) 
    540584        if message: 
    541585            logging.info(message) 
    542586 
    543     def _completed(self, out, cov, pr, elapsed): 
     587    def _calculateCompleted(self, out, cov, pr, elapsed): 
     588        ''' Send a signal to the main thread for model update''' 
     589        self.calculateSignal.emit((out, cov, pr, elapsed)) 
     590 
     591    def _calculateUpdate(self, output_tuple): 
    544592        """ 
    545593        Method called with the results when the inversion is done 
     
    549597        :param pr: Invertor instance 
    550598        :param elapsed: time spent computing 
    551  
    552         """ 
     599        """ 
     600        out, cov, pr, elapsed = output_tuple 
    553601        # Save useful info 
    554602        cov = np.ascontiguousarray(cov) 
     
    558606 
    559607        # Show result on control panel 
    560  
    561         self.model.setItem(WIDGETS.W_RG, QtGui.QStandardItem(str(pr.rg(out)))) 
    562         self.model.setItem(WIDGETS.W_I_ZERO, 
    563                            QtGui.QStandardItem(str(pr.iq0(out)))) 
     608        self.model.setItem(WIDGETS.W_RG, QtGui.QStandardItem("{:.3g}".format(pr.rg(out)))) 
     609        self.model.setItem(WIDGETS.W_I_ZERO, QtGui.QStandardItem("{:.3g}".format(pr.iq0(out)))) 
    564610        self.model.setItem(WIDGETS.W_BACKGROUND_INPUT, 
    565611                           QtGui.QStandardItem("{:.3f}".format(pr.est_bck))) 
    566         self.model.setItem(WIDGETS.W_BACKGROUND_OUTPUT, QtGui.QStandardItem( 
    567             str("{:.3g}".format(pr.background)))) 
    568         self.model.setItem(WIDGETS.W_CHI_SQUARED, 
    569                            QtGui.QStandardItem(str(pr.chi2[0]))) 
    570         self.model.setItem(WIDGETS.W_COMP_TIME, 
    571                            QtGui.QStandardItem(str(elapsed))) 
    572         self.model.setItem(WIDGETS.W_OSCILLATION, 
    573                            QtGui.QStandardItem(str(pr.oscillations(out)))) 
    574         self.model.setItem(WIDGETS.W_POS_FRACTION, 
    575                            QtGui.QStandardItem(str(pr.get_positive(out)))) 
     612        self.model.setItem(WIDGETS.W_BACKGROUND_OUTPUT, QtGui.QStandardItem("{:.3g}".format(pr.background))) 
     613        self.model.setItem(WIDGETS.W_CHI_SQUARED, QtGui.QStandardItem("{:.3g}".format(pr.chi2[0]))) 
     614        self.model.setItem(WIDGETS.W_COMP_TIME, QtGui.QStandardItem("{:.2g}".format(elapsed))) 
     615        self.model.setItem(WIDGETS.W_OSCILLATION, QtGui.QStandardItem("{:.3g}".format(pr.oscillations(out)))) 
     616        self.model.setItem(WIDGETS.W_POS_FRACTION, QtGui.QStandardItem("{:.3g}".format(pr.get_positive(out)))) 
    576617        self.model.setItem(WIDGETS.W_SIGMA_POS_FRACTION, 
    577                            QtGui.QStandardItem(str(pr.get_pos_err(out, cov)))) 
     618                           QtGui.QStandardItem("{:.3g}".format(pr.get_pos_err(out, cov)))) 
    578619 
    579620        # Save Pr invertor 
     
    581622        # Append data to data list 
    582623        self._data_list[self._data] = self._calculator.clone() 
     624 
     625        # Update model dict 
     626        self._models[self.model_item] = self.model 
    583627 
    584628        # Create new P(r) and fit plots 
  • src/sas/qtgui/Perspectives/Inversion/InversionUtils.py

    rbcf1215 rd744767  
    1 def enum(*sequential, **named): 
    2     enums = dict(zip(sequential, range(len(sequential))), **named) 
    3     return type('Enum', (), enums) 
     1from sas.qtgui.Utilities.GuiUtils import enum 
    42 
    53WIDGETS = enum( 'W_FILENAME',               #0 
  • src/sas/qtgui/Perspectives/Inversion/Thread.py

    re7651ff rd744767  
    3333        except: 
    3434            if self.error_func is not None: 
    35                 self.error_func("CalcPr.compute: %s" % sys.exc_value) 
     35                self.error_func("CalcPr.compute: %s" % sys.exc_info()[1]) 
    3636 
    3737 
     
    6262        except: 
    6363            if self.error_func is not None: 
    64                 self.error_func("EstimatePr.compute: %s" % sys.exc_value) 
     64                self.error_func("EstimatePr.compute: %s" % sys.exc_info()[1]) 
    6565 
    6666 
     
    102102        except: 
    103103            if self.error_func is not None: 
    104                 self.error_func("EstimatePr2.compute: %s" % sys.exc_value) 
     104                self.error_func("EstimatePr2.compute: %s" % sys.exc_info()[1]) 
  • src/sas/qtgui/Perspectives/Inversion/UI/TabbedInversionUI.ui

    rbcf1215 rd744767  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>458</width> 
    10     <height>679</height> 
     9    <width>390</width> 
     10    <height>409</height> 
    1111   </rect> 
    1212  </property> 
    1313  <property name="sizePolicy"> 
    14    <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> 
     14   <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 
    1515    <horstretch>0</horstretch> 
    1616    <verstretch>0</verstretch> 
     
    1919  <property name="minimumSize"> 
    2020   <size> 
    21     <width>458</width> 
    22     <height>679</height> 
     21    <width>0</width> 
     22    <height>0</height> 
    2323   </size> 
    2424  </property> 
     
    3333  </property> 
    3434  <layout class="QGridLayout" name="gridLayout_7"> 
    35    <item row="4" column="0"> 
    36     <layout class="QHBoxLayout" name="horizontalLayout_8"> 
    37      <property name="sizeConstraint"> 
    38       <enum>QLayout::SetDefaultConstraint</enum> 
    39      </property> 
    40      <item> 
    41       <widget class="QPushButton" name="removeButton"> 
    42        <property name="text"> 
    43         <string>Remove</string> 
    44        </property> 
    45       </widget> 
    46      </item> 
    47      <item> 
    48       <widget class="QPushButton" name="calculateThisButton"> 
    49        <property name="text"> 
    50         <string>Calculate</string> 
    51        </property> 
    52       </widget> 
    53      </item> 
    54      <item> 
    55       <widget class="QPushButton" name="calculateAllButton"> 
    56        <property name="sizePolicy"> 
    57         <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 
    58          <horstretch>0</horstretch> 
    59          <verstretch>0</verstretch> 
    60         </sizepolicy> 
    61        </property> 
    62        <property name="text"> 
    63         <string>Calculate All</string> 
    64        </property> 
    65       </widget> 
    66      </item> 
    67      <item> 
    68       <spacer name="horizontalSpacer"> 
    69        <property name="orientation"> 
    70         <enum>Qt::Horizontal</enum> 
    71        </property> 
    72        <property name="sizeType"> 
    73         <enum>QSizePolicy::Expanding</enum> 
    74        </property> 
    75        <property name="sizeHint" stdset="0"> 
    76         <size> 
    77          <width>40</width> 
    78          <height>20</height> 
    79         </size> 
    80        </property> 
    81       </spacer> 
    82      </item> 
    83      <item> 
    84       <widget class="QPushButton" name="helpButton"> 
    85        <property name="sizePolicy"> 
    86         <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 
    87          <horstretch>0</horstretch> 
    88          <verstretch>0</verstretch> 
    89         </sizepolicy> 
    90        </property> 
    91        <property name="text"> 
    92         <string>Help</string> 
    93        </property> 
    94       </widget> 
    95      </item> 
    96     </layout> 
    97    </item> 
    98    <item row="3" column="0"> 
    99     <spacer name="verticalSpacer"> 
    100      <property name="orientation"> 
    101       <enum>Qt::Vertical</enum> 
    102      </property> 
    103      <property name="sizeHint" stdset="0"> 
    104       <size> 
    105        <width>20</width> 
    106        <height>2</height> 
    107       </size> 
    108      </property> 
    109     </spacer> 
    110    </item> 
    111    <item row="1" column="0" rowspan="2"> 
     35   <item row="0" column="0"> 
    11236    <widget class="QTabWidget" name="PrTabWidget"> 
    11337     <property name="sizePolicy"> 
    114       <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> 
     38      <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 
    11539       <horstretch>0</horstretch> 
    11640       <verstretch>0</verstretch> 
     
    12852     <widget class="QWidget" name="tabMain"> 
    12953      <attribute name="title"> 
    130        <string>P(r) Parameters</string> 
     54       <string>Parameters</string> 
    13155      </attribute> 
    132       <layout class="QVBoxLayout" name="verticalLayout_6" stretch="0,1,1,0,0"> 
    133        <item> 
     56      <layout class="QGridLayout" name="gridLayout_6"> 
     57       <item row="0" column="0"> 
    13458        <widget class="QGroupBox" name="dataSourceGroupBox"> 
     59         <property name="sizePolicy"> 
     60          <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 
     61           <horstretch>0</horstretch> 
     62           <verstretch>0</verstretch> 
     63          </sizepolicy> 
     64         </property> 
    13565         <property name="title"> 
    13666          <string>I(q) data source</string> 
    13767         </property> 
    13868         <layout class="QGridLayout" name="gridLayout_2"> 
     69          <item row="0" column="0"> 
     70           <layout class="QHBoxLayout" name="horizontalLayout_2"> 
     71            <item> 
     72             <widget class="QLabel" name="label"> 
     73              <property name="text"> 
     74               <string>Data File Name:</string> 
     75              </property> 
     76             </widget> 
     77            </item> 
     78            <item> 
     79             <widget class="QComboBox" name="dataList"> 
     80              <property name="sizePolicy"> 
     81               <sizepolicy hsizetype="MinimumExpanding" vsizetype="Fixed"> 
     82                <horstretch>0</horstretch> 
     83                <verstretch>0</verstretch> 
     84               </sizepolicy> 
     85              </property> 
     86             </widget> 
     87            </item> 
     88            <item> 
     89             <widget class="QPushButton" name="removeButton"> 
     90              <property name="enabled"> 
     91               <bool>false</bool> 
     92              </property> 
     93              <property name="sizePolicy"> 
     94               <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 
     95                <horstretch>0</horstretch> 
     96                <verstretch>0</verstretch> 
     97               </sizepolicy> 
     98              </property> 
     99              <property name="text"> 
     100               <string>Remove</string> 
     101              </property> 
     102             </widget> 
     103            </item> 
     104           </layout> 
     105          </item> 
     106         </layout> 
     107        </widget> 
     108       </item> 
     109       <item row="1" column="0"> 
     110        <widget class="QGroupBox" name="paramGroupBox"> 
     111         <property name="sizePolicy"> 
     112          <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 
     113           <horstretch>0</horstretch> 
     114           <verstretch>0</verstretch> 
     115          </sizepolicy> 
     116         </property> 
     117         <property name="toolTip"> 
     118          <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; 
     119&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; 
     120p, li { white-space: pre-wrap; } 
     121&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt; 
     122&lt;pre style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&gt;&lt;span style=&quot; font-family:'Courier New'; font-size:9pt; color:#000000;&quot;&gt;P(r) is found by fitting a set of base functions to I(Q). The minimization involves a regularization term to ensure a smooth P(r). The regularization constant gives the size of that term. The suggested value is the value above which the output P(r) will have only one peak.&lt;/span&gt;&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     123         </property> 
     124         <property name="title"> 
     125          <string>Parameters</string> 
     126         </property> 
     127         <layout class="QGridLayout" name="gridLayout"> 
     128          <item row="0" column="0"> 
     129           <widget class="QLabel" name="label_12"> 
     130            <property name="sizePolicy"> 
     131             <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 
     132              <horstretch>0</horstretch> 
     133              <verstretch>0</verstretch> 
     134             </sizepolicy> 
     135            </property> 
     136            <property name="text"> 
     137             <string>Number of terms</string> 
     138            </property> 
     139           </widget> 
     140          </item> 
     141          <item row="0" column="1"> 
     142           <widget class="QLineEdit" name="noOfTermsInput"> 
     143            <property name="sizePolicy"> 
     144             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     145              <horstretch>0</horstretch> 
     146              <verstretch>0</verstretch> 
     147             </sizepolicy> 
     148            </property> 
     149            <property name="minimumSize"> 
     150             <size> 
     151              <width>40</width> 
     152              <height>0</height> 
     153             </size> 
     154            </property> 
     155           </widget> 
     156          </item> 
     157          <item row="0" column="2"> 
     158           <widget class="QPushButton" name="noOfTermsSuggestionButton"> 
     159            <property name="enabled"> 
     160             <bool>false</bool> 
     161            </property> 
     162            <property name="text"> 
     163             <string/> 
     164            </property> 
     165           </widget> 
     166          </item> 
    139167          <item row="1" column="0"> 
     168           <widget class="QLabel" name="label_13"> 
     169            <property name="sizePolicy"> 
     170             <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 
     171              <horstretch>0</horstretch> 
     172              <verstretch>0</verstretch> 
     173             </sizepolicy> 
     174            </property> 
     175            <property name="minimumSize"> 
     176             <size> 
     177              <width>80</width> 
     178              <height>0</height> 
     179             </size> 
     180            </property> 
     181            <property name="text"> 
     182             <string>Reg. constant</string> 
     183            </property> 
     184           </widget> 
     185          </item> 
     186          <item row="1" column="1"> 
     187           <widget class="QLineEdit" name="regularizationConstantInput"> 
     188            <property name="sizePolicy"> 
     189             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     190              <horstretch>0</horstretch> 
     191              <verstretch>0</verstretch> 
     192             </sizepolicy> 
     193            </property> 
     194            <property name="minimumSize"> 
     195             <size> 
     196              <width>40</width> 
     197              <height>0</height> 
     198             </size> 
     199            </property> 
     200           </widget> 
     201          </item> 
     202          <item row="1" column="2"> 
     203           <widget class="QPushButton" name="regConstantSuggestionButton"> 
     204            <property name="enabled"> 
     205             <bool>false</bool> 
     206            </property> 
     207            <property name="text"> 
     208             <string/> 
     209            </property> 
     210           </widget> 
     211          </item> 
     212          <item row="2" column="0"> 
     213           <widget class="QLabel" name="label_14"> 
     214            <property name="sizePolicy"> 
     215             <sizepolicy hsizetype="Fixed" vsizetype="Preferred"> 
     216              <horstretch>0</horstretch> 
     217              <verstretch>0</verstretch> 
     218             </sizepolicy> 
     219            </property> 
     220            <property name="text"> 
     221             <string>Max distance [à
     222]</string> 
     223            </property> 
     224           </widget> 
     225          </item> 
     226          <item row="2" column="1"> 
     227           <widget class="QLineEdit" name="maxDistanceInput"> 
     228            <property name="sizePolicy"> 
     229             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     230              <horstretch>0</horstretch> 
     231              <verstretch>0</verstretch> 
     232             </sizepolicy> 
     233            </property> 
     234            <property name="minimumSize"> 
     235             <size> 
     236              <width>40</width> 
     237              <height>0</height> 
     238             </size> 
     239            </property> 
     240           </widget> 
     241          </item> 
     242          <item row="2" column="2"> 
     243           <widget class="QPushButton" name="explorerButton"> 
     244            <property name="sizePolicy"> 
     245             <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 
     246              <horstretch>0</horstretch> 
     247              <verstretch>0</verstretch> 
     248             </sizepolicy> 
     249            </property> 
     250            <property name="minimumSize"> 
     251             <size> 
     252              <width>50</width> 
     253              <height>0</height> 
     254             </size> 
     255            </property> 
     256            <property name="toolTip"> 
     257             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Open the D&lt;span style=&quot; vertical-align:sub;&quot;&gt;max&lt;/span&gt; explorer window.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     258            </property> 
     259            <property name="layoutDirection"> 
     260             <enum>Qt::LeftToRight</enum> 
     261            </property> 
     262            <property name="text"> 
     263             <string>Explore</string> 
     264            </property> 
     265           </widget> 
     266          </item> 
     267         </layout> 
     268         <zorder>noOfTermsInput</zorder> 
     269         <zorder>noOfTermsSuggestionButton</zorder> 
     270         <zorder>regularizationConstantInput</zorder> 
     271         <zorder>regConstantSuggestionButton</zorder> 
     272         <zorder>maxDistanceInput</zorder> 
     273         <zorder>explorerButton</zorder> 
     274         <zorder>label_13</zorder> 
     275         <zorder>label_12</zorder> 
     276         <zorder>label_14</zorder> 
     277        </widget> 
     278       </item> 
     279       <item row="2" column="0"> 
     280        <widget class="QGroupBox" name="outputsGroupBox"> 
     281         <property name="title"> 
     282          <string>Outputs</string> 
     283         </property> 
     284         <layout class="QGridLayout" name="gridLayout_4"> 
     285          <item row="0" column="0"> 
     286           <widget class="QLabel" name="label_15"> 
     287            <property name="text"> 
     288             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;R&lt;span style=&quot; vertical-align:sub;&quot;&gt;g&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     289            </property> 
     290           </widget> 
     291          </item> 
     292          <item row="0" column="1"> 
     293           <widget class="QLineEdit" name="rgValue"> 
     294            <property name="enabled"> 
     295             <bool>true</bool> 
     296            </property> 
     297            <property name="sizePolicy"> 
     298             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     299              <horstretch>0</horstretch> 
     300              <verstretch>0</verstretch> 
     301             </sizepolicy> 
     302            </property> 
     303            <property name="readOnly"> 
     304             <bool>true</bool> 
     305            </property> 
     306           </widget> 
     307          </item> 
     308          <item row="0" column="2"> 
     309           <widget class="QLabel" name="label_24"> 
     310            <property name="text"> 
     311             <string>à
     312</string> 
     313            </property> 
     314           </widget> 
     315          </item> 
     316          <item row="0" column="3"> 
     317           <widget class="QLabel" name="label_22"> 
     318            <property name="text"> 
     319             <string>      </string> 
     320            </property> 
     321           </widget> 
     322          </item> 
     323          <item row="0" column="4"> 
     324           <widget class="QLabel" name="label_19"> 
     325            <property name="text"> 
     326             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;χ&lt;span style=&quot; vertical-align:super;&quot;&gt;2&lt;/span&gt;/dof&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     327            </property> 
     328           </widget> 
     329          </item> 
     330          <item row="0" column="5"> 
     331           <widget class="QLineEdit" name="chiDofValue"> 
     332            <property name="enabled"> 
     333             <bool>true</bool> 
     334            </property> 
     335            <property name="sizePolicy"> 
     336             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     337              <horstretch>0</horstretch> 
     338              <verstretch>0</verstretch> 
     339             </sizepolicy> 
     340            </property> 
     341            <property name="readOnly"> 
     342             <bool>true</bool> 
     343            </property> 
     344           </widget> 
     345          </item> 
     346          <item row="1" column="0"> 
     347           <widget class="QLabel" name="label_16"> 
     348            <property name="text"> 
     349             <string>I(Q=0)</string> 
     350            </property> 
     351           </widget> 
     352          </item> 
     353          <item row="1" column="1"> 
     354           <widget class="QLineEdit" name="iQ0Value"> 
     355            <property name="enabled"> 
     356             <bool>true</bool> 
     357            </property> 
     358            <property name="sizePolicy"> 
     359             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     360              <horstretch>0</horstretch> 
     361              <verstretch>0</verstretch> 
     362             </sizepolicy> 
     363            </property> 
     364            <property name="readOnly"> 
     365             <bool>true</bool> 
     366            </property> 
     367           </widget> 
     368          </item> 
     369          <item row="1" column="2"> 
     370           <widget class="QLabel" name="label_25"> 
     371            <property name="text"> 
     372             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     373&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     374            </property> 
     375           </widget> 
     376          </item> 
     377          <item row="1" column="4"> 
     378           <widget class="QLabel" name="label_20"> 
     379            <property name="text"> 
     380             <string>Oscillations</string> 
     381            </property> 
     382           </widget> 
     383          </item> 
     384          <item row="1" column="5"> 
     385           <widget class="QLineEdit" name="oscillationValue"> 
     386            <property name="enabled"> 
     387             <bool>true</bool> 
     388            </property> 
     389            <property name="sizePolicy"> 
     390             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     391              <horstretch>0</horstretch> 
     392              <verstretch>0</verstretch> 
     393             </sizepolicy> 
     394            </property> 
     395            <property name="readOnly"> 
     396             <bool>true</bool> 
     397            </property> 
     398           </widget> 
     399          </item> 
     400          <item row="2" column="0"> 
     401           <widget class="QLabel" name="label_17"> 
     402            <property name="text"> 
     403             <string>Background</string> 
     404            </property> 
     405           </widget> 
     406          </item> 
     407          <item row="2" column="1"> 
     408           <widget class="QLineEdit" name="backgroundValue"> 
     409            <property name="enabled"> 
     410             <bool>true</bool> 
     411            </property> 
     412            <property name="sizePolicy"> 
     413             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     414              <horstretch>0</horstretch> 
     415              <verstretch>0</verstretch> 
     416             </sizepolicy> 
     417            </property> 
     418            <property name="readOnly"> 
     419             <bool>true</bool> 
     420            </property> 
     421           </widget> 
     422          </item> 
     423          <item row="2" column="2"> 
     424           <widget class="QLabel" name="label_26"> 
     425            <property name="text"> 
     426             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     427&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     428            </property> 
     429           </widget> 
     430          </item> 
     431          <item row="2" column="4"> 
     432           <widget class="QLabel" name="label_21"> 
     433            <property name="text"> 
     434             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;P&lt;span style=&quot; vertical-align:super;&quot;&gt;+&lt;/span&gt; Fraction&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     435            </property> 
     436           </widget> 
     437          </item> 
     438          <item row="2" column="5"> 
     439           <widget class="QLineEdit" name="posFractionValue"> 
     440            <property name="enabled"> 
     441             <bool>true</bool> 
     442            </property> 
     443            <property name="sizePolicy"> 
     444             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     445              <horstretch>0</horstretch> 
     446              <verstretch>0</verstretch> 
     447             </sizepolicy> 
     448            </property> 
     449            <property name="readOnly"> 
     450             <bool>true</bool> 
     451            </property> 
     452           </widget> 
     453          </item> 
     454          <item row="3" column="0"> 
     455           <widget class="QLabel" name="label_18"> 
     456            <property name="text"> 
     457             <string>Calc. Time</string> 
     458            </property> 
     459           </widget> 
     460          </item> 
     461          <item row="3" column="1"> 
     462           <widget class="QLineEdit" name="computationTimeValue"> 
     463            <property name="enabled"> 
     464             <bool>true</bool> 
     465            </property> 
     466            <property name="sizePolicy"> 
     467             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     468              <horstretch>0</horstretch> 
     469              <verstretch>0</verstretch> 
     470             </sizepolicy> 
     471            </property> 
     472            <property name="readOnly"> 
     473             <bool>true</bool> 
     474            </property> 
     475           </widget> 
     476          </item> 
     477          <item row="3" column="2"> 
     478           <widget class="QLabel" name="label_27"> 
     479            <property name="text"> 
     480             <string>secs</string> 
     481            </property> 
     482           </widget> 
     483          </item> 
     484          <item row="3" column="4"> 
     485           <widget class="QLabel" name="label_29"> 
     486            <property name="text"> 
     487             <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;P&lt;span style=&quot; vertical-align:super;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot; vertical-align:sub;&quot;&gt;1-σ&lt;/span&gt; fraction&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     488            </property> 
     489           </widget> 
     490          </item> 
     491          <item row="3" column="5"> 
     492           <widget class="QLineEdit" name="sigmaPosFractionValue"> 
     493            <property name="enabled"> 
     494             <bool>true</bool> 
     495            </property> 
     496            <property name="sizePolicy"> 
     497             <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     498              <horstretch>0</horstretch> 
     499              <verstretch>0</verstretch> 
     500             </sizepolicy> 
     501            </property> 
     502            <property name="readOnly"> 
     503             <bool>true</bool> 
     504            </property> 
     505           </widget> 
     506          </item> 
     507         </layout> 
     508        </widget> 
     509       </item> 
     510      </layout> 
     511     </widget> 
     512     <widget class="QWidget" name="tabOptions"> 
     513      <attribute name="title"> 
     514       <string>Options</string> 
     515      </attribute> 
     516      <layout class="QGridLayout" name="gridLayout_9"> 
     517       <item row="0" column="0"> 
     518        <widget class="QGroupBox" name="groupBox"> 
     519         <property name="title"> 
     520          <string>Options</string> 
     521         </property> 
     522         <layout class="QGridLayout" name="gridLayout_8"> 
     523          <item row="0" column="0"> 
    140524           <layout class="QHBoxLayout" name="horizontalLayout_3" stretch="2,1,0,2,2"> 
    141525            <item> 
     
    180564           </layout> 
    181565          </item> 
    182           <item row="0" column="0"> 
    183            <layout class="QHBoxLayout" name="horizontalLayout_2" stretch="1,3"> 
    184             <item> 
    185              <widget class="QLabel" name="label"> 
    186               <property name="text"> 
    187                <string>Data File Name:</string> 
    188               </property> 
    189              </widget> 
    190             </item> 
    191             <item> 
    192              <widget class="QComboBox" name="dataList"/> 
    193             </item> 
    194            </layout> 
     566          <item row="1" column="0"> 
     567           <widget class="QGroupBox" name="qRangeGroupBox"> 
     568            <property name="title"> 
     569             <string>Total Q range</string> 
     570            </property> 
     571            <layout class="QGridLayout" name="gridLayout_3"> 
     572             <item row="0" column="0"> 
     573              <layout class="QHBoxLayout" name="horizontalLayout_4"> 
     574               <item> 
     575                <widget class="QLabel" name="label_7"> 
     576                 <property name="text"> 
     577                  <string>Min:</string> 
     578                 </property> 
     579                </widget> 
     580               </item> 
     581               <item> 
     582                <widget class="QLineEdit" name="minQInput"> 
     583                 <property name="enabled"> 
     584                  <bool>true</bool> 
     585                 </property> 
     586                 <property name="sizePolicy"> 
     587                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     588                   <horstretch>0</horstretch> 
     589                   <verstretch>0</verstretch> 
     590                  </sizepolicy> 
     591                 </property> 
     592                </widget> 
     593               </item> 
     594               <item> 
     595                <widget class="QLabel" name="label_11"> 
     596                 <property name="text"> 
     597                  <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     598&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     599                 </property> 
     600                </widget> 
     601               </item> 
     602               <item> 
     603                <widget class="QLabel" name="label_8"> 
     604                 <property name="text"> 
     605                  <string>Max:</string> 
     606                 </property> 
     607                </widget> 
     608               </item> 
     609               <item> 
     610                <widget class="QLineEdit" name="maxQInput"> 
     611                 <property name="enabled"> 
     612                  <bool>true</bool> 
     613                 </property> 
     614                 <property name="sizePolicy"> 
     615                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     616                   <horstretch>0</horstretch> 
     617                   <verstretch>0</verstretch> 
     618                  </sizepolicy> 
     619                 </property> 
     620                </widget> 
     621               </item> 
     622               <item> 
     623                <widget class="QLabel" name="label_9"> 
     624                 <property name="text"> 
     625                  <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     626&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     627                 </property> 
     628                </widget> 
     629               </item> 
     630              </layout> 
     631             </item> 
     632            </layout> 
     633           </widget> 
     634          </item> 
     635          <item row="2" column="0"> 
     636           <widget class="QGroupBox" name="slitParamsGroupBox"> 
     637            <property name="title"> 
     638             <string>Slit Parameters</string> 
     639            </property> 
     640            <layout class="QGridLayout" name="gridLayout_5"> 
     641             <item row="0" column="0"> 
     642              <layout class="QHBoxLayout" name="horizontalLayout"> 
     643               <item> 
     644                <widget class="QLabel" name="label_3"> 
     645                 <property name="text"> 
     646                  <string>Height</string> 
     647                 </property> 
     648                </widget> 
     649               </item> 
     650               <item> 
     651                <widget class="QLineEdit" name="slitHeightInput"> 
     652                 <property name="enabled"> 
     653                  <bool>true</bool> 
     654                 </property> 
     655                 <property name="sizePolicy"> 
     656                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     657                   <horstretch>0</horstretch> 
     658                   <verstretch>0</verstretch> 
     659                  </sizepolicy> 
     660                 </property> 
     661                </widget> 
     662               </item> 
     663               <item> 
     664                <widget class="QLabel" name="label_6"> 
     665                 <property name="text"> 
     666                  <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     667&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     668                 </property> 
     669                </widget> 
     670               </item> 
     671               <item> 
     672                <widget class="QLabel" name="label_4"> 
     673                 <property name="text"> 
     674                  <string>Width</string> 
     675                 </property> 
     676                </widget> 
     677               </item> 
     678               <item> 
     679                <widget class="QLineEdit" name="slitWidthInput"> 
     680                 <property name="enabled"> 
     681                  <bool>true</bool> 
     682                 </property> 
     683                 <property name="sizePolicy"> 
     684                  <sizepolicy hsizetype="Preferred" vsizetype="Fixed"> 
     685                   <horstretch>0</horstretch> 
     686                   <verstretch>0</verstretch> 
     687                  </sizepolicy> 
     688                 </property> 
     689                </widget> 
     690               </item> 
     691               <item> 
     692                <widget class="QLabel" name="label_2"> 
     693                 <property name="text"> 
     694                  <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
     695&lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
     696                 </property> 
     697                </widget> 
     698               </item> 
     699              </layout> 
     700             </item> 
     701            </layout> 
     702           </widget> 
    195703          </item> 
    196704         </layout> 
    197705        </widget> 
    198706       </item> 
    199        <item> 
    200         <widget class="QGroupBox" name="qRangeGroupBox"> 
    201          <property name="title"> 
    202           <string>Total Q range</string> 
    203          </property> 
    204          <layout class="QGridLayout" name="gridLayout_3"> 
    205           <item row="0" column="0"> 
    206            <layout class="QHBoxLayout" name="horizontalLayout_4"> 
    207             <item> 
    208              <widget class="QLabel" name="label_7"> 
    209               <property name="text"> 
    210                <string>Min:</string> 
    211               </property> 
    212              </widget> 
    213             </item> 
    214             <item> 
    215              <widget class="QLineEdit" name="minQInput"> 
    216               <property name="enabled"> 
    217                <bool>true</bool> 
    218               </property> 
    219              </widget> 
    220             </item> 
    221             <item> 
    222              <widget class="QLabel" name="label_11"> 
    223               <property name="text"> 
    224                <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
    225 &lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    226               </property> 
    227              </widget> 
    228             </item> 
    229             <item> 
    230              <widget class="QLabel" name="label_8"> 
    231               <property name="text"> 
    232                <string>Max:</string> 
    233               </property> 
    234              </widget> 
    235             </item> 
    236             <item> 
    237              <widget class="QLineEdit" name="maxQInput"> 
    238               <property name="enabled"> 
    239                <bool>true</bool> 
    240               </property> 
    241              </widget> 
    242             </item> 
    243             <item> 
    244              <widget class="QLabel" name="label_9"> 
    245               <property name="text"> 
    246                <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
    247 &lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    248               </property> 
    249              </widget> 
    250             </item> 
    251            </layout> 
    252           </item> 
    253          </layout> 
    254         </widget> 
    255        </item> 
    256        <item> 
    257         <widget class="QGroupBox" name="slitParamsGroupBox"> 
    258          <property name="title"> 
    259           <string>Slit Parameters</string> 
    260          </property> 
    261          <layout class="QGridLayout" name="gridLayout"> 
    262           <item row="0" column="0"> 
    263            <layout class="QHBoxLayout" name="horizontalLayout"> 
    264             <item> 
    265              <widget class="QLabel" name="label_3"> 
    266               <property name="text"> 
    267                <string>Height</string> 
    268               </property> 
    269              </widget> 
    270             </item> 
    271             <item> 
    272              <widget class="QLineEdit" name="slitHeightInput"> 
    273               <property name="enabled"> 
    274                <bool>true</bool> 
    275               </property> 
    276              </widget> 
    277             </item> 
    278             <item> 
    279              <widget class="QLabel" name="label_6"> 
    280               <property name="text"> 
    281                <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
    282 &lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    283               </property> 
    284              </widget> 
    285             </item> 
    286             <item> 
    287              <widget class="QLabel" name="label_4"> 
    288               <property name="text"> 
    289                <string>Width</string> 
    290               </property> 
    291              </widget> 
    292             </item> 
    293             <item> 
    294              <widget class="QLineEdit" name="slitWidthInput"> 
    295               <property name="enabled"> 
    296                <bool>true</bool> 
    297               </property> 
    298              </widget> 
    299             </item> 
    300             <item> 
    301              <widget class="QLabel" name="label_2"> 
    302               <property name="text"> 
    303                <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;à
    304 &lt;span style=&quot; vertical-align:super;&quot;&gt;-1&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    305               </property> 
    306              </widget> 
    307             </item> 
    308            </layout> 
    309           </item> 
    310          </layout> 
    311         </widget> 
    312        </item> 
    313        <item> 
    314         <widget class="QGroupBox" name="paramGroupBox"> 
    315          <property name="sizePolicy"> 
    316           <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> 
    317            <horstretch>0</horstretch> 
    318            <verstretch>0</verstretch> 
    319           </sizepolicy> 
    320          </property> 
    321          <property name="toolTip"> 
    322           <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt; 
    323 &lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt; 
    324 p, li { white-space: pre-wrap; } 
    325 &lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:8pt; font-weight:400; font-style:normal;&quot;&gt; 
    326 &lt;pre style=&quot; margin-top:12px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&gt;&lt;span style=&quot; font-family:'Courier New'; font-size:9pt; color:#000000;&quot;&gt;P(r) is found by fitting a set of base functions to I(Q). The minimization involves a regularization term to ensure a smooth P(r). The regularization constant gives the size of that term. The suggested value is the value above which the output P(r) will have only one peak.&lt;/span&gt;&lt;/pre&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    327          </property> 
    328          <property name="title"> 
    329           <string>Parameters</string> 
    330          </property> 
    331          <layout class="QGridLayout" name="gridLayout_8"> 
    332           <item row="1" column="0"> 
    333            <widget class="QLabel" name="label_13"> 
    334             <property name="text"> 
    335              <string>Regularization constant</string> 
    336             </property> 
    337            </widget> 
    338           </item> 
    339           <item row="0" column="2"> 
    340            <widget class="QPushButton" name="noOfTermsSuggestionButton"> 
    341             <property name="enabled"> 
    342              <bool>false</bool> 
    343             </property> 
    344             <property name="text"> 
    345              <string/> 
    346             </property> 
    347            </widget> 
    348           </item> 
    349           <item row="2" column="2"> 
    350            <widget class="QPushButton" name="explorerButton"> 
    351             <property name="sizePolicy"> 
    352              <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> 
    353               <horstretch>0</horstretch> 
    354               <verstretch>0</verstretch> 
    355              </sizepolicy> 
    356             </property> 
    357             <property name="toolTip"> 
    358              <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Open the D&lt;span style=&quot; vertical-align:sub;&quot;&gt;max&lt;/span&gt; explorer window.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string> 
    359             </property> 
    360             <property name="layoutDirection"> 
    361              <enum>Qt::LeftToRight</enum> 
    362             </property> 
    363             <property name="text"> 
    364              <string>Explore</string> 
    365             </property> 
    366            </widget> 
    367           </item> 
    368           <item row="0" column="1"> 
    369            <widget class="QLineEdit" name="noOfTermsInput"/> 
    370           </item> 
    371           <item row="2" column="1"> 
    372            <widget class="QLineEdit" name="maxDistanceInput"/> 
    373           </item> 
    374           <item row="0" column="0"> 
    375            <widget class="QLabel" name="label_12"> 
    376             <property name="text"> 
    377              <string>Number of Terms</string> 
    378             </property> 
    379            </widget> 
    380           </item> 
    381           <item row="1" column="2"> 
    382            <widget class="QPushButton" name="regConstantSuggestionButton"> 
    383             <property name="enabled"> 
    384              <bool>false</bool> 
    385             </property> 
    386             <property name="text"> 
    387              <string/> 
    388             </property> 
    389            </widget> 
    390           </item> 
    391           <item row="2" column="0"> 
    392            <widget class="QLabel" name="label_14"> 
    393             <property name="text"> 
    394              <string>Max distance [à
    395 ]</string> 
    396             </property> 
    397            </widget> 
    398           </item> 
    399           <item row="1" column="1"> 
    400            <widget class="QLineEdit" name="regularizationConstantInput"/> 
    401           </item> 
    402          </layout> 
    403         </widget> 
    404        </item> 
    405        <item> 
    406         <widget class="QGroupBox" name="outputsGroupBox"> 
    407          <property name="title"> 
    408           <string>Outputs</string> 
    409          </property> 
    410          <layout class="QGridLayout" name="gridLayout_4"> 
    411           <item row="0" column="1"> 
    412            <widget class="QLabel" name="label_23"> 
    413             <property name="text"> 
    414              <string>Calculated Value</string> 
    415             </property> 
    416             <property name="alignment"> 
    417              <set>Qt::AlignCenter</set> 
    418             </property> 
    419            </widget> 
    420           </item> 
    421           <item row="0" column="2"> 
    422            <widget class="QLabel" name="label_28"> 
    423             <property name="text"> 
    424              <string>Units</string> 
    425             </property> 
    426            </widget> 
    427           </item> 
    428           <item row="6" column="1"> 
    429            <widget class="QLineEdit" name="oscillationValue"> 
    430             <property name="enabled"> 
    431              <bool>false</bool> 
    432             </property> 
    433            </widget> 
    434           </item> 
    435           <item row="3" column="0"> 
    436            <widget class="QLabel" name="label_17"> 
    437             <property name="text"> 
    438              <string>Background</string> 
    439             </property> 
    440            </widget> 
    441           </item> 
    442           <item row="7" column="1"> 
    443            <widget class="QLineEdit" name="posFractionValue"> 
    444             <property name="enabled"> 
    445              <bool>false</bool> 
    446             </property> 
    447            </widget> 
    448           </item> 
    449           <item row="2" column="2"> 
    450            <widget class="QLabel" name="label_25"> 
    451             <property name="text"> 
    452              <string>à
    453 -1</string> 
    454             </property> 
    455            </widget> 
    456           </item> 
    457           <item row="3" column="1"> 
    458            <widget class="QLineEdit" name="backgroundValue"> 
    459             <property name="enabled"> 
    460              <bool>false</bool> 
    461             </property> 
    462            </widget> 
    463           </item> 
    464           <item row="1" column="0"> 
    465            <widget class="QLabel" name="label_15"> 
    466             <property name="text"> 
    467              <string>Rg</string> 
    468             </property> 
    469            </widget> 
    470           </item> 
    471           <item row="1" column="2"> 
    472            <widget class="QLabel" name="label_24"> 
    473             <property name="text"> 
    474              <string>à
    475 </string> 
    476             </property> 
    477            </widget> 
    478           </item> 
    479           <item row="6" column="0"> 
    480            <widget class="QLabel" name="label_20"> 
    481             <property name="text"> 
    482              <string>Oscillations</string> 
    483             </property> 
    484            </widget> 
    485           </item> 
    486           <item row="4" column="0"> 
    487            <widget class="QLabel" name="label_18"> 
    488             <property name="text"> 
    489              <string>Computation Time</string> 
    490             </property> 
    491            </widget> 
    492           </item> 
    493           <item row="4" column="2"> 
    494            <widget class="QLabel" name="label_27"> 
    495             <property name="text"> 
    496              <string>secs</string> 
    497             </property> 
    498            </widget> 
    499           </item> 
    500           <item row="2" column="0"> 
    501            <widget class="QLabel" name="label_16"> 
    502             <property name="text"> 
    503              <string>I(Q=0)</string> 
    504             </property> 
    505            </widget> 
    506           </item> 
    507           <item row="3" column="2"> 
    508            <widget class="QLabel" name="label_26"> 
    509             <property name="text"> 
    510              <string>à
    511 -1</string> 
    512             </property> 
    513            </widget> 
    514           </item> 
    515           <item row="0" column="0"> 
    516            <widget class="QLabel" name="label_22"> 
    517             <property name="text"> 
    518              <string>Parameter</string> 
    519             </property> 
    520            </widget> 
    521           </item> 
    522           <item row="8" column="0"> 
    523            <widget class="QLabel" name="label_29"> 
    524             <property name="text"> 
    525              <string>1-sigma positive fraction</string> 
    526             </property> 
    527            </widget> 
    528           </item> 
    529           <item row="2" column="1"> 
    530            <widget class="QLineEdit" name="iQ0Value"> 
    531             <property name="enabled"> 
    532              <bool>false</bool> 
    533             </property> 
    534            </widget> 
    535           </item> 
    536           <item row="5" column="0"> 
    537            <widget class="QLabel" name="label_19"> 
    538             <property name="text"> 
    539              <string>Chi^2/dof</string> 
    540             </property> 
    541            </widget> 
    542           </item> 
    543           <item row="1" column="1"> 
    544            <widget class="QLineEdit" name="rgValue"> 
    545             <property name="enabled"> 
    546              <bool>false</bool> 
    547             </property> 
    548            </widget> 
    549           </item> 
    550           <item row="5" column="1"> 
    551            <widget class="QLineEdit" name="chiDofValue"> 
    552             <property name="enabled"> 
    553              <bool>false</bool> 
    554             </property> 
    555            </widget> 
    556           </item> 
    557           <item row="4" column="1"> 
    558            <widget class="QLineEdit" name="computationTimeValue"> 
    559             <property name="enabled"> 
    560              <bool>false</bool> 
    561             </property> 
    562            </widget> 
    563           </item> 
    564           <item row="7" column="0"> 
    565            <widget class="QLabel" name="label_21"> 
    566             <property name="text"> 
    567              <string>Positive Fraction</string> 
    568             </property> 
    569            </widget> 
    570           </item> 
    571           <item row="8" column="1"> 
    572            <widget class="QLineEdit" name="sigmaPosFractionValue"> 
    573             <property name="enabled"> 
    574              <bool>false</bool> 
    575             </property> 
    576            </widget> 
    577           </item> 
    578          </layout> 
    579         </widget> 
     707       <item row="1" column="0"> 
     708        <spacer name="verticalSpacer"> 
     709         <property name="orientation"> 
     710          <enum>Qt::Vertical</enum> 
     711         </property> 
     712         <property name="sizeHint" stdset="0"> 
     713          <size> 
     714           <width>20</width> 
     715           <height>255</height> 
     716          </size> 
     717         </property> 
     718        </spacer> 
    580719       </item> 
    581720      </layout> 
    582721     </widget> 
    583722    </widget> 
     723   </item> 
     724   <item row="1" column="0"> 
     725    <layout class="QHBoxLayout" name="horizontalLayout_8"> 
     726     <property name="sizeConstraint"> 
     727      <enum>QLayout::SetDefaultConstraint</enum> 
     728     </property> 
     729     <item> 
     730      <widget class="QPushButton" name="calculateThisButton"> 
     731       <property name="enabled"> 
     732        <bool>true</bool> 
     733       </property> 
     734       <property name="text"> 
     735        <string>Calculate</string> 
     736       </property> 
     737      </widget> 
     738     </item> 
     739     <item> 
     740      <widget class="QPushButton" name="calculateAllButton"> 
     741       <property name="enabled"> 
     742        <bool>true</bool> 
     743       </property> 
     744       <property name="sizePolicy"> 
     745        <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 
     746         <horstretch>0</horstretch> 
     747         <verstretch>0</verstretch> 
     748        </sizepolicy> 
     749       </property> 
     750       <property name="text"> 
     751        <string>Calculate All</string> 
     752       </property> 
     753      </widget> 
     754     </item> 
     755     <item> 
     756      <spacer name="horizontalSpacer"> 
     757       <property name="orientation"> 
     758        <enum>Qt::Horizontal</enum> 
     759       </property> 
     760       <property name="sizeType"> 
     761        <enum>QSizePolicy::Expanding</enum> 
     762       </property> 
     763       <property name="sizeHint" stdset="0"> 
     764        <size> 
     765         <width>40</width> 
     766         <height>20</height> 
     767        </size> 
     768       </property> 
     769      </spacer> 
     770     </item> 
     771     <item> 
     772      <widget class="QPushButton" name="helpButton"> 
     773       <property name="sizePolicy"> 
     774        <sizepolicy hsizetype="Minimum" vsizetype="Fixed"> 
     775         <horstretch>0</horstretch> 
     776         <verstretch>0</verstretch> 
     777        </sizepolicy> 
     778       </property> 
     779       <property name="text"> 
     780        <string>Help</string> 
     781       </property> 
     782      </widget> 
     783     </item> 
     784    </layout> 
    584785   </item> 
    585786  </layout> 
  • src/sas/qtgui/Perspectives/Inversion/UI/__init__.py

    • Property mode changed from 100755 to 100644
  • src/sas/qtgui/Perspectives/Inversion/__init__.py

    • Property mode changed from 100755 to 100644
Note: See TracChangeset for help on using the changeset viewer.