Changeset 8a001cd in sasview


Ignore:
Timestamp:
Jul 19, 2018 7:07:11 AM (5 weeks ago)
Author:
tcbennun
Branches:
ESS_GUI_beta_approx
Children:
78f18d1
Parents:
a5f3f60 (diff), e4335ae (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_beta_approx

Files:
12 edited

Legend:

Unmodified
Added
Removed
  • build_tools/conda_qt5_ubuntu.yml

    ra7d6a32 rdf44689  
    4242  - kiwisolver=1.0.1=py36_1 
    4343  - libffi=3.2.1=3 
    44   - libiconv=1.15=0 
    4544  - libpng=1.6.34=0 
    4645  - libsodium=1.0.16=0 
    4746  - libtiff=4.0.9=0 
    4847  - libxcb=1.13=0 
    49   - libxml2=2.9.8=0 
    5048  - libxslt=1.1.32=0 
    5149  - lxml=4.2.1=py36_0 
  • src/sas/logger_config.py

    rcee5c78 re4335ae  
    77 
    88import pkg_resources 
    9  
    109 
    1110''' 
     
    2928            logging.captureWarnings(True) 
    3029            logger = logging.getLogger(self.name) 
     30 
    3131        return logger 
    3232 
     
    3838        self._update_all_logs_to_debug(logger) 
    3939        logging.captureWarnings(True) 
     40 
    4041        return logger 
    4142 
     
    4950        ''' 
    5051        for handler in logger.handlers or logger.parent.handlers: 
    51             #handler.setLevel(logging.DEBUG) 
    52             handler.setLevel(logging.WARNING) 
     52            handler.setLevel(logging.DEBUG) 
    5353        for name, _ in logging.Logger.manager.loggerDict.items(): 
    54             #logging.getLogger(name).setLevel(logging.DEBUG) 
    55             logging.getLogger(name).setLevel(logging.WARNING) 
     54            logging.getLogger(name).setLevel(logging.DEBUG) 
    5655 
    5756    def _find_config_file(self, filename="logging.ini"): 
  • src/sas/logging.ini

    r7c105e8 re4335ae  
    1212#format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
    1313#format=%(asctime)s - %(levelname)s : %(name)s:%(pathname)s:%(lineno)4d: %(message)s 
    14 format=%(asctime)s - %(levelname)s : %(name)s:%(lineno)4d: %(message)s 
     14#format=%(asctime)s - %(levelname)s : %(name)s:%(lineno)4d: %(message)s 
     15format=%(asctime)s - %(levelname)s: %(message)s 
    1516datefmt=%H:%M:%S 
    1617 
  • src/sas/qtgui/MainWindow/GuiManager.py

    rf0a8f74 re4335ae  
    1313# General SAS imports 
    1414from sas.qtgui.Utilities.ConnectionProxy import ConnectionProxy 
    15 from sas.qtgui.Utilities.SasviewLogger import XStream 
     15from sas.qtgui.Utilities.SasviewLogger import setup_qt_logging 
    1616 
    1717import sas.qtgui.Utilities.LocalConfig as LocalConfig 
     
    8686 
    8787        # Fork off logging messages to the Log Window 
    88         XStream.stdout().messageWritten.connect(self.listWidget.insertPlainText) 
    89         XStream.stderr().messageWritten.connect(self.listWidget.insertPlainText) 
     88        handler = setup_qt_logging() 
     89        handler.messageWritten.connect(self.appendLog) 
    9090 
    9191        # Log the start of the session 
     
    269269        """ 
    270270        self.statusLabel.setText(text) 
     271 
     272    def appendLog(self, msg): 
     273        """Appends a message to the list widget in the Log Explorer. Use this 
     274        instead of listWidget.insertPlainText() to facilitate auto-scrolling""" 
     275        self.listWidget.append(msg.strip()) 
    271276 
    272277    def createGuiData(self, item, p_file=None): 
  • src/sas/qtgui/MainWindow/MainWindow.py

    ra3221b6 re4335ae  
    1010from sas.qtgui.UI import main_resources_rc 
    1111from .UI.MainWindowUI import Ui_MainWindow 
    12  
    13 # Initialize logging 
    14 import sas.qtgui.Utilities.SasviewLogger 
    1512 
    1613class MainSasViewWindow(QMainWindow, Ui_MainWindow): 
  • src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py

    r57be490 r02e7d3a  
    3535 
    3636        # Max index for adding new, non-clashing tab names 
    37         self.maxIndex = 0 
     37        self.maxIndex = 1 
    3838 
    3939        ## Index of the current tab 
     
    130130        self.addTab(tab, icon, tab_name) 
    131131        # Show the new tab 
    132         self.setCurrentIndex(self.maxIndex-1) 
     132        self.setCurrentWidget(tab); 
    133133        # Notify listeners 
    134134        self.tabsModifiedSignal.emit() 
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    r085e3c9 r8a001cd  
    108108        # Globals 
    109109        self.initializeGlobals() 
    110  
    111         # Set up desired logging level 
    112         logging.disable(LocalConfig.DISABLE_LOGGING) 
    113110 
    114111        # data index for the batch set 
  • src/sas/qtgui/Utilities/LocalConfig.py

    ra0ed202 re4335ae  
    136136USING_TWISTED = True 
    137137 
    138 # Logging levels to disable, if any 
    139 DISABLE_LOGGING = logging.DEBUG 
    140  
    141138# Time out for updating sasview 
    142139UPDATE_TIMEOUT = 2 
    143140 
    144141# Logging levels to disable, if any 
    145 DISABLE_LOGGING = logging.DEBUG 
     142DISABLE_LOGGING = logging.NOTSET 
    146143 
    147144def printEVT(message): 
  • src/sas/qtgui/Utilities/SasviewLogger.py

    r4992ff2 re4335ae  
    66 
    77 
    8 class XStream(QObject): 
    9     _stdout = None 
    10     _stderr = None 
     8class QtHandler(QObject, logging.Handler): 
     9    """ 
     10    Version of logging handler "emitting" the message to custom stdout() 
     11    """ 
    1112    messageWritten = pyqtSignal(str) 
    1213 
    13     def flush(self): 
    14         pass 
    15  
    16     def fileno(self): 
    17         return -1 
    18  
    19     def write(self, msg): 
    20         if(not self.signalsBlocked()): 
    21             self.messageWritten.emit(str(msg)) 
    22  
    23     @staticmethod 
    24     def stdout(): 
    25         if(not XStream._stdout): 
    26             XStream._stdout = XStream() 
    27             sys.stdout = XStream._stdout 
    28         return XStream._stdout 
    29  
    30     @staticmethod 
    31     def stderr(): 
    32         if(not XStream._stderr): 
    33             XStream._stderr = XStream() 
    34             sys.stderr = XStream._stderr 
    35         return XStream._stderr 
    36  
    37 class QtHandler(logging.Handler): 
    38     """ 
    39     Version of logging handler 
    40     "emitting" the message to custom stdout() 
    41     """ 
    4214    def __init__(self): 
     15        QObject.__init__(self) 
    4316        logging.Handler.__init__(self) 
    4417 
     
    4619        record = self.format(record) 
    4720        if record: 
    48             XStream.stdout().write('%s\n'%record) 
     21            self.messageWritten.emit('%s\n'%record) 
    4922 
    5023 
    51 # Define the default logger 
    52 logger = logging.getLogger() 
     24def setup_qt_logging(): 
     25    # Define the default logger 
     26    logger = logging.getLogger() 
    5327 
    54 # Add the file handler 
    55 logging.basicConfig(level=logging.INFO, 
    56                     format='%(asctime)s %(levelname)s %(message)s', 
    57                     filename=os.path.join(os.path.expanduser("~"), 
    58                                           'sasview.log')) 
    59 # Add the qt-signal logger 
    60 handler = QtHandler() 
    61 handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) 
    62 logger.addHandler(handler) 
     28    # Add the qt-signal logger 
     29    handler = QtHandler() 
     30    handler.setFormatter(logging.Formatter( 
     31        fmt="%(asctime)s - %(levelname)s: %(message)s", 
     32        datefmt="%H:%M:%S" 
     33    )) 
     34    logger.addHandler(handler) 
     35 
     36    return handler 
  • src/sas/qtgui/Utilities/UnitTesting/SasviewLoggerTest.py

    r53c771e re4335ae  
    1111 
    1212# Local 
    13 from sas.qtgui.Utilities.SasviewLogger import XStream 
    1413from sas.qtgui.Utilities.SasviewLogger import QtHandler 
    1514 
     
    2322        """ 
    2423        self.logger = logging.getLogger(__name__) 
    25         handler = QtHandler() 
    26         handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) 
    27         self.logger.addHandler(handler) 
     24        self.handler = QtHandler() 
     25        self.handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) 
     26        self.logger.addHandler(self.handler) 
    2827        self.logger.setLevel(logging.DEBUG) 
    2928 
     
    3534        Test redirection of all levels of logging 
    3635        """ 
    37         # Attach the listeners 
    38         XStream.stderr().messageWritten.connect( self.outHandlerGui.insertPlainText ) 
    39         XStream.stdout().messageWritten.connect( self.outHandlerGui.insertPlainText ) 
     36        # Attach the listener 
     37        self.handler.messageWritten.connect(self.outHandlerGui.insertPlainText) 
    4038 
    4139        # Send the signals 
     
    4442        self.logger.warning('warning message') 
    4543        self.logger.error('error message') 
    46         sys.stdout.write('with stdout') 
    47         sys.stderr.write('with stderr') 
    4844 
    4945        out=self.outHandlerGui.toPlainText() 
     
    5450        self.assertIn('WARNING: warning message', out) 
    5551        self.assertIn('ERROR: error message', out) 
    56         self.assertIn('with stdout', out) 
    57         self.assertIn('with stderr', out) 
    5852 
    5953if __name__ == "__main__": 
  • src/sas/qtgui/Perspectives/Fitting/UI/FittingWidgetUI.ui

    rd4dac80 r6052c02  
    77    <x>0</x> 
    88    <y>0</y> 
    9     <width>680</width> 
     9    <width>487</width> 
    1010    <height>605</height> 
    1111   </rect> 
     
    352352      </attribute> 
    353353     </widget> 
     354     <widget class="QWidget" name="tabStructure"> 
     355      <attribute name="title"> 
     356       <string>S(Q) Options</string> 
     357      </attribute> 
     358      <layout class="QGridLayout" name="gridLayout_7"> 
     359       <property name="leftMargin"> 
     360        <number>15</number> 
     361       </property> 
     362       <property name="topMargin"> 
     363        <number>15</number> 
     364       </property> 
     365       <property name="rightMargin"> 
     366        <number>15</number> 
     367       </property> 
     368       <property name="bottomMargin"> 
     369        <number>15</number> 
     370       </property> 
     371       <item row="0" column="0"> 
     372        <widget class="QTreeView" name="lstStructureOptions"/> 
     373       </item> 
     374      </layout> 
     375     </widget> 
    354376     <widget class="QWidget" name="tab_4"> 
    355377      <attribute name="title"> 
  • src/sas/qtgui/Perspectives/Fitting/ViewDelegate.py

    rfde5bcd r085e3c9  
    44 
    55import sas.qtgui.Utilities.GuiUtils as GuiUtils 
     6 
     7import logging 
     8logger = logging.getLogger(__name__) 
    69 
    710class ModelViewDelegate(QtWidgets.QStyledItemDelegate): 
     
    102105                return 
    103106        QtWidgets.QStyledItemDelegate.setModelData(self, editor, model, index) 
    104  
    105107 
    106108class PolyViewDelegate(QtWidgets.QStyledItemDelegate): 
     
    280282            # Just the default paint 
    281283            QtWidgets.QStyledItemDelegate.paint(self, painter, option, index) 
     284 
     285class StructureViewDelegate(QtWidgets.QStyledItemDelegate): 
     286    """ 
     287    Custom delegate for appearance and behaviour control of the structure 
     288    factor options view 
     289    """ 
     290    def __init__(self, parent=None): 
     291        """ 
     292        Override parent constructor 
     293        """ 
     294 
     295        super(StructureViewDelegate, self).__init__() 
     296 
     297        self.fittingWidget = parent 
     298 
     299    def paint(self, painter, option, index): 
     300        """ 
     301        Override generic painter 
     302        """ 
     303        # TODO override this with something useful ... ? 
     304        super(StructureViewDelegate, self).paint( 
     305            painter, option, index 
     306        ) 
     307 
     308    def createEditor(self, parent, option, index): 
     309        """ 
     310        Override generic createEditor -- certain elements have combo boxes 
     311        """ 
     312        print("gotta create me an editor") 
     313 
     314        model = self.fittingWidget.structureView.model() 
     315 
     316        if index.parent(): 
     317            # we only care about child items since we don't edit top-level 
     318            # items in this view anyway 
     319            print("the item has a parent") 
     320 
     321            if index.column() == 1: 
     322                print("the item's col. is 1") 
     323                # col. 1 contains elements that may be combo boxes 
     324 
     325                # navigate to the parameter name through the parent item (it'll 
     326                # be on the same row, but col. 0) 
     327                parent_item = model.itemFromIndex(index.parent()) 
     328                param_item = parent_item.child(index.row(), 0) 
     329 
     330                if param_item.text() == "mixture": 
     331                    print("gonna do a mixture combo box") 
     332                    # TODO: ONLY TEMPORARY EXAMPLE STUFF HERE RIGHT NOW 
     333                    cbox = QtWidgets.QComboBox(parent) 
     334                    cbox.addItems([ 
     335                        "P(Q)*S(Q)", 
     336                        "P(Q)+S(Q)", 
     337                        "custom" 
     338                    ]) 
     339                    return cbox 
     340 
     341                elif param_item.text() == "effective radius": 
     342                    print("gonna do an effective radius combo box") 
     343                    # TODO: ONLY TEMPORARY EXAMPLE STUFF HERE RIGHT NOW 
     344                    cbox = QtWidgets.QComboBox(parent) 
     345                    cbox.addItems([ 
     346                        "ER_mean_curvature", 
     347                        "ER_equivalent_sphere", 
     348                        "ER_maximum_radius", 
     349                        "ER_minimum_radius" 
     350                    ]) 
     351                    return cbox 
     352 
     353                elif param_item.text() == "volume fraction": 
     354                    print("gonna do a volume fraction combo box") 
     355                    # TODO: ONLY TEMPORARY EXAMPLE STUFF HERE RIGHT NOW 
     356                    cbox = QtWidgets.QComboBox(parent) 
     357                    cbox.addItems([ 
     358                        "VR_something", 
     359                        "VR_something_else", 
     360                        "VR_something_completely_different" 
     361                    ]) 
     362                    return cbox 
     363 
     364        # return default otherwise 
     365        print("let's do a normal thing instead") 
     366        return super(StructureViewDelegate, self).createEditor( 
     367            parent, option, index 
     368        ) 
Note: See TracChangeset for help on using the changeset viewer.