Changeset e90988c in sasview


Ignore:
Timestamp:
Dec 14, 2017 7:51:02 AM (6 years ago)
Author:
Piotr Rozyczko <rozyczko@…>
Branches:
ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
Children:
7fd20fc, 626c7c5
Parents:
8353d90
Message:

Show help pages in default browser. Fixed some help links and modified unit tests. SASVIEW-800

Files:
25 edited

Legend:

Unmodified
Added
Removed
  • docs/sphinx-docs/build_sphinx.py

    rdf72475 re90988c  
    220220    print("=== Build HTML Docs from ReST Files ===") 
    221221    subprocess.call(["sphinx-build", 
    222                      "-b", "html", # Builder name. TODO: accept as arg to setup.py. 
     222                     "-b", "qthelp", # Builder name. TODO: accept as arg to setup.py. 
    223223                     "-d", joinpath(SPHINX_BUILD, "doctrees"), 
    224224                     SPHINX_SOURCE, 
  • src/sas/qtgui/Calculators/DataOperationUtilityPanel.py

    rd6b8a1d re90988c  
    110110        documentation tree (after /doc/ ....". 
    111111        """ 
    112         try: 
    113             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    114                        "/user/sasgui/perspectives/calculator/data_operator_help.html" 
    115             self.manager._helpView.load(QtCore.QUrl(location)) 
    116             self.manager._helpView.show() 
    117  
    118         except AttributeError: 
    119             # No manager defined - testing and standalone runs 
    120             pass 
     112        location = "/user/sasgui/perspectives/calculator/data_operator_help.html" 
     113        self.manager.showHelp(location) 
    121114 
    122115    def onClose(self): 
  • src/sas/qtgui/Calculators/DensityPanel.py

    rd4881f6a re90988c  
    146146 
    147147    def displayHelp(self): 
    148         try: 
    149             location = HELP_DIRECTORY_LOCATION + \ 
    150                 "/user/sasgui/perspectives/calculator/density_calculator_help.html" 
     148        location =  "/user/sasgui/perspectives/calculator/density_calculator_help.html" 
     149        self.manager.showHelp(location) 
    151150 
    152             self.manager._helpView.load(QtCore.QUrl(location)) 
    153             self.manager._helpView.show() 
    154         except AttributeError: 
    155             # No manager defined - testing and standalone runs 
    156             pass 
     151 
  • src/sas/qtgui/Calculators/GenericScatteringCalculator.py

    r53c771e re90988c  
    382382        documentation tree (after /doc/ ....". 
    383383        """ 
    384         try: 
    385             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    386                        "/user/sasgui/perspectives/calculator/sas_calculator_help.html" 
    387             self.manager._helpView.load(QtCore.QUrl(location)) 
    388             self.manager._helpView.show() 
    389         except AttributeError: 
    390             # No manager defined - testing and standalone runs 
    391             pass 
     384        location = "/user/sasgui/perspectives/calculator/sas_calculator_help.html" 
     385        self.manager.showHelp(location) 
    392386 
    393387    def onReset(self): 
  • src/sas/qtgui/Calculators/KiessigPanel.py

    rfbfc488 re90988c  
    3838        documentation tree (after /doc/ ....". 
    3939        """ 
    40         try: 
    41             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    42                 "/user/sasgui/perspectives/calculator/kiessig_calculator_help.html" 
    43  
    44             self.manager._helpView.load(QtCore.QUrl(location)) 
    45             self.manager._helpView.show() 
    46         except AttributeError: 
    47             # No manager defined - testing and standalone runs 
    48             pass 
     40        location = "/user/sasgui/perspectives/calculator/kiessig_calculator_help.html" 
     41        self.manager.showHelp(location) 
    4942 
    5043    def onCompute(self): 
  • src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py

    rd6b8a1d re90988c  
    366366        documentation tree (after /doc/ ....". 
    367367        """ 
    368         try: 
    369             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    370                        "/user/sasgui/perspectives/calculator/resolution_calculator_help.html" 
    371             self.manager._helpView.load(QtCore.QUrl(location)) 
    372             self.manager._helpView.show() 
    373  
    374         except AttributeError: 
    375             # No manager defined - testing and standalone runs 
    376             pass 
     368        location = "/user/sasgui/perspectives/calculator/resolution_calculator_help.html" 
     369        self.manager.showHelp(location) 
    377370 
    378371    def onReset(self): 
  • src/sas/qtgui/Calculators/SldPanel.py

    rd4881f6a re90988c  
    213213 
    214214    def displayHelp(self): 
    215         try: 
    216             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    217                 "/user/sasgui/perspectives/calculator/sld_calculator_help.html" 
    218             self.manager._helpView.load(QtCore.QUrl(location)) 
    219             self.manager._helpView.show() 
    220         except AttributeError: 
    221             # No manager defined - testing and standalone runs 
    222             pass 
    223  
     215        location = "/user/sasgui/perspectives/calculator/sld_calculator_help.html" 
     216        self.manager.showHelp(location) 
     217 
     218 
  • src/sas/qtgui/Calculators/SlitSizeCalculator.py

    r53c771e re90988c  
    4747        documentation tree (after /doc/ ....". 
    4848        """ 
    49         try: 
    50             location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    51                 "/user/sasgui/perspectives/calculator/slit_calculator_help.html" 
    52  
    53             self._parent._helpView.load(QtCore.QUrl(location)) 
    54             self._parent._helpView.show() 
    55         except AttributeError: 
    56             # No manager defined - testing and standalone runs 
    57             pass 
     49        location = "/user/sasgui/perspectives/calculator/slit_calculator_help.html" 
     50        self._parent.showHelp(location) 
    5851 
    5952    def onBrowse(self): 
  • src/sas/qtgui/Calculators/UnitTesting/DataOperationUtilityTest.py

    r53c771e re90988c  
    44import logging 
    55import unittest 
     6import webbrowser 
     7 
    68from PyQt5 import QtGui, QtWidgets 
    79from PyQt5 import QtCore 
     
    119121    def testHelp(self): 
    120122        """ Assure help file is shown """ 
    121         # this should not rise 
     123        self.widget.manager.showHelp = MagicMock() 
    122124        self.widget.onHelp() 
     125        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     126        args = self.widget.manager.showHelp.call_args 
     127        self.assertIn('data_operator_help.html', args[0][0]) 
    123128 
    124129    def testOnReset(self): 
  • src/sas/qtgui/Calculators/UnitTesting/DensityCalculatorTest.py

    r53c771e re90988c  
    121121    def testHelp(self): 
    122122        """ Assure help file is shown """ 
    123  
    124         # this should not rise 
     123        self.widget.manager = QtWidgets.QWidget() 
     124        self.widget.manager.showHelp = MagicMock() 
    125125        self.widget.displayHelp() 
     126        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     127        args = self.widget.manager.showHelp.call_args 
     128        self.assertIn('density_calculator_help.html', args[0][0]) 
    126129 
    127130if __name__ == "__main__": 
  • src/sas/qtgui/Calculators/UnitTesting/GenericScatteringCalculatorTest.py

    r53c771e re90988c  
    104104    def testHelpButton(self): 
    105105        """ Assure help file is shown """ 
     106        self.widget.manager.showHelp = MagicMock() 
    106107        self.widget.onHelp() 
     108        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     109        args = self.widget.manager.showHelp.call_args 
     110        self.assertIn('sas_calculator_help.html', args[0][0]) 
    107111 
    108112    def testValidator(self): 
  • src/sas/qtgui/Calculators/UnitTesting/KiessigCalculatorTest.py

    r53c771e re90988c  
    55from PyQt5.QtCore import Qt 
    66 
    7 # TEMP 
    8 #import sas.qtgui.path_prepare 
    97import path_prepare 
    10  
     8from unittest.mock import MagicMock 
    119 
    1210from sas.qtgui.Calculators.KiessigPanel import KiessigPanel 
     
    3533    def testHelp(self): 
    3634        """ Assure help file is shown """ 
    37  
    38         # this should not rise 
     35        self.widget.manager = QtWidgets.QWidget() 
     36        self.widget.manager.showHelp = MagicMock() 
    3937        self.widget.onHelp() 
     38        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     39        args = self.widget.manager.showHelp.call_args 
     40        self.assertIn('kiessig_calculator_help.html', args[0][0]) 
    4041 
    4142    def testComplexEntryNumbers(self): 
  • src/sas/qtgui/Calculators/UnitTesting/ResolutionCalculatorPanelTest.py

    r53c771e re90988c  
    240240        """ Assure help file is shown """ 
    241241        # this should not rise 
     242        self.widget.manager = QtWidgets.QWidget() 
     243        self.widget.manager.showHelp = MagicMock() 
    242244        self.widget.onHelp() 
     245        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     246        args = self.widget.manager.showHelp.call_args 
     247        self.assertIn('resolution_calculator_help.html', args[0][0]) 
    243248 
    244249    def testOnReset(self): 
  • src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py

    r53c771e re90988c  
    142142    def testHelp(self): 
    143143        """ Assure help file is shown """ 
    144  
    145         # this should not rise 
     144        self.widget.manager = QtWidgets.QWidget() 
     145        self.widget.manager.showHelp = MagicMock() 
    146146        self.widget.displayHelp() 
     147        self.assertTrue(self.widget.manager.showHelp.called_once()) 
     148        args = self.widget.manager.showHelp.call_args 
     149        self.assertIn('sld_calculator_help.html', args[0][0]) 
    147150 
    148151if __name__ == "__main__": 
  • src/sas/qtgui/Calculators/UnitTesting/SlitSizeCalculatorTest.py

    r53c771e re90988c  
    3737    def testHelp(self): 
    3838        """ Assure help file is shown """ 
    39  
    40         # this should not rise 
     39        self.widget._parent = QtWidgets.QWidget() 
     40        self.widget._parent.showHelp = MagicMock() 
    4141        self.widget.onHelp() 
     42        self.assertTrue(self.widget._parent.showHelp.called_once()) 
     43        args = self.widget._parent.showHelp.call_args 
     44        self.assertIn('slit_calculator_help.html', args[0][0]) 
    4245 
    4346    def testBrowseButton(self): 
  • src/sas/qtgui/MainWindow/DataExplorer.py

    rcb4d219 re90988c  
    88from PyQt5 import QtGui 
    99from PyQt5 import QtWidgets 
    10 from PyQt5 import QtWebKitWidgets 
    1110 
    1211from twisted.internet import threads 
     
    7069        self.cmdHelp_2.clicked.connect(self.displayHelp) 
    7170 
    72         # Display HTML content 
    73         self._helpView = QtWebKitWidgets.QWebView() 
    74  
    7571        # Fill in the perspectives combo 
    7672        self.initPerspectives() 
     
    141137        Show the "Loading data" section of help 
    142138        """ 
    143         tree_location = GuiUtils.HELP_DIRECTORY_LOCATION +\ 
    144             "/user/sasgui/guiframe/data_explorer_help.html" 
    145         self._helpView.load(QtCore.QUrl(tree_location)) 
    146         self._helpView.show() 
     139        tree_location = "/user/sasgui/guiframe/data_explorer_help.html" 
     140        self.parent.showHelp(tree_location) 
    147141 
    148142    def enableGraphCombo(self, combo_text): 
  • src/sas/qtgui/MainWindow/GuiManager.py

    r8353d90 re90988c  
    8787        self.statusBarSetup() 
    8888 
    89         # Current help file 
    90         self._helpView = QWebView() 
    9189        # Needs URL like path, so no path.join() here 
    9290        self._helpLocation = GuiUtils.HELP_DIRECTORY_LOCATION + "/index.html" 
     
    164162        """ 
    165163        pass 
     164 
     165    def showHelp(self, url): 
     166        """ 
     167        Open a local url in the default browser 
     168        """ 
     169        location = GuiUtils.HELP_DIRECTORY_LOCATION + url 
     170        try: 
     171            webbrowser.open('file://' + os.path.realpath(location)) 
     172        except webbrowser.Error as ex: 
     173            logging.warning("Cannot display help. %s" % ex) 
    166174 
    167175    def workspace(self): 
     
    718726        TODO: use QNetworkAccessManager to assure _helpLocation is valid 
    719727        """ 
    720         self._helpView.load(QUrl(self._helpLocation)) 
    721         self._helpView.show() 
     728        self.showHelp(self._helpLocation) 
    722729 
    723730    def actionTutorial(self): 
  • src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py

    r50bfab0 re90988c  
    55 
    66# global 
     7from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg \ 
     8    as FigureCanvas 
     9from matplotlib.figure import Figure 
     10from numpy.linalg.linalg import LinAlgError 
     11 
    712from PyQt5 import QtCore 
    813from PyQt5 import QtGui, QtWidgets 
     
    1722from .UI.CorfuncPanel import Ui_CorfuncDialog 
    1823from .CorfuncUtils import WIDGETS as W 
    19  
    20 from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg \ 
    21     as FigureCanvas 
    22 from matplotlib.figure import Figure 
    23 from numpy.linalg.linalg import LinAlgError 
    2424 
    2525 
     
    136136        self.cmdCalculateBg.clicked.connect(self.calculate_background) 
    137137        self.cmdCalculateBg.setEnabled(False) 
     138        self.cmdHelp.clicked.connect(self.showHelp) 
    138139 
    139140        self.model.itemChanged.connect(self.model_changed) 
     
    306307 
    307308    # pylint: disable=invalid-name 
     309    def showHelp(self): 
     310        """ 
     311        Opens a webpage with help on the perspective 
     312        """ 
     313        """ Display help when clicking on Help button """ 
     314        treeLocation = "/user/sasgui/perspectives/corfunc/corfunc_help.html" 
     315        self.parent.showHelp(treeLocation) 
     316 
    308317    @staticmethod 
    309318    def allowBatch(): 
  • src/sas/qtgui/Perspectives/Fitting/FittingOptions.py

    rd6b8a1d re90988c  
    33import os 
    44import types 
     5import webbrowser 
    56 
    67from PyQt5 import QtCore 
    78from PyQt5 import QtGui 
    89from PyQt5 import QtWidgets 
    9 from PyQt5 import QtWebKitWidgets 
    1010 
    1111from sas.qtgui.UI import images_rc 
     
    7373        # OK has to be initialized to True, after initial validator setup 
    7474        self.buttonBox.button(QtWidgets.QDialogButtonBox.Ok).setEnabled(True) 
    75  
    76         # Display HTML content 
    77         self.helpView = QtWebKitWidgets.QWebView() 
    7875 
    7976    def assignValidators(self): 
     
    160157        Show the "Fitting options" section of help 
    161158        """ 
    162         tree_location = GuiUtils.HELP_DIRECTORY_LOCATION + "/user/sasgui/perspectives/fitting/" 
     159        tree_location = GuiUtils.HELP_DIRECTORY_LOCATION 
     160        tree_location += "/user/sasgui/perspectives/fitting/" 
    163161 
    164162        # Actual file anchor will depend on the combo box index 
     
    167165        helpfile = "optimizer.html#fit-" + self.current_fitter_id  
    168166        help_location = tree_location + helpfile 
    169         self.helpView.load(QtCore.QUrl(help_location)) 
    170         self.helpView.show() 
     167        webbrowser.open('file://' + os.path.realpath(help_location)) 
    171168 
    172169    def widgetFromOption(self, option_id, current_fitter=None): 
  • src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py

    r7c487846 re90988c  
    1313from sas.qtgui.Perspectives.Fitting.FittingOptions import FittingOptions 
    1414from sas.qtgui.Perspectives.Fitting.GPUOptions import GPUOptions 
    15 #from sas.qtgui.Perspectives.Fitting import ModelUtilities 
    1615 
    1716class FittingWindow(QtWidgets.QTabWidget): 
  • src/sas/qtgui/Perspectives/Fitting/FittingWidget.py

    r0261bc1 re90988c  
    88from twisted.internet import threads 
    99import numpy as np 
     10import webbrowser 
    1011 
    1112from PyQt5 import QtCore 
    1213from PyQt5 import QtGui 
    1314from PyQt5 import QtWidgets 
    14 from PyQt5 import QtWebKitWidgets 
    15 # Officially QtWebEngineWidgets are the way to display HTML in Qt5, 
    16 # but this module isn't ported to PyQt5 yet... 
    17 # let's wait. In the meantime no Help. 
    18 #from PyQt5 import QtWebEngineWidgets 
    1915 
    2016from sasmodels import product 
     
    127123 
    128124        # Display HTML content 
    129         self.helpView = QtWebKitWidgets.QWebView() 
     125        #self.setupHelp() 
    130126 
    131127        # New font to display angstrom symbol 
     
    662658        Show the "Fitting" section of help 
    663659        """ 
    664         tree_location = GuiUtils.HELP_DIRECTORY_LOCATION + "/user/sasgui/perspectives/fitting/" 
     660        tree_location = "/user/sasgui/perspectives/fitting/" 
    665661 
    666662        # Actual file will depend on the current tab 
     
    672668            helpfile = "residuals_help.html" 
    673669        elif tab_id == 2: 
    674             helpfile = "sm_help.html" 
     670            helpfile = "resolution.html" 
    675671        elif tab_id == 3: 
    676             helpfile = "pd_help.html" 
     672            helpfile = "pd/polydispersity.html" 
    677673        elif tab_id == 4: 
    678             helpfile = "mag_help.html" 
     674            helpfile = "magnetism/magnetism.html" 
    679675        help_location = tree_location + helpfile 
    680676 
    681         content = QtCore.QUrl(help_location) 
    682         self.helpView.load(QtCore.QUrl(help_location)) 
    683         self.helpView.show() 
     677        self.showHelp(help_location) 
     678 
     679    def showHelp(self, url): 
     680        """ 
     681        Calls parent's method for opening an HTML page 
     682        """ 
     683        self.parent.showHelp(url) 
    684684 
    685685    def onDisplayMagneticAngles(self): 
  • src/sas/qtgui/Perspectives/Fitting/GPUOptions.py

    rc7ebb37 re90988c  
    88 
    99import sas.qtgui.Utilities.GuiUtils as GuiUtils 
    10 from PyQt5 import QtGui, QtCore, QtWebKit, QtWidgets 
     10from PyQt5 import QtGui, QtCore, QtWidgets 
    1111from sas.qtgui.Perspectives.Fitting.UI.GPUOptionsUI import Ui_GPUOptions 
    1212from sas.qtgui.Perspectives.Fitting.UI.GPUTestResultsUI import Ui_GPUTestResults 
     
    172172        help_location += "/user/sasgui/perspectives/fitting/gpu_setup.html" 
    173173        help_location += "#device-selection" 
    174         # Test the system browser solution 
     174        # Display the page in default browser 
    175175        webbrowser.open('file://' + os.path.realpath(help_location)) 
    176176 
  • src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py

    r9387fe3 re90988c  
    88from PyQt5 import QtCore 
    99from PyQt5 import QtGui, QtWidgets 
    10 from PyQt5 import QtWebKit 
    1110 
    1211from twisted.internet import threads 
     
    6362        self._model_item = QtGui.QStandardItem() 
    6463 
    65         #self._helpView = QtWebKit.QWebView() 
    6664        self.detailsDialog = DetailsDialog(self) 
    6765        self.detailsDialog.cmdOK.clicked.connect(self.enabling) 
     
    431429    def onHelp(self): 
    432430        """ Display help when clicking on Help button """ 
    433         treeLocation = GuiUtils.HELP_DIRECTORY_LOCATION + \ 
    434             "/user/sasgui/perspectives/invariant/invariant_help.html" 
    435         webbrowser.open('file://' + treeLocation) 
     431        treeLocation = "/user/sasgui/perspectives/invariant/invariant_help.html" 
     432        self.parent.showHelp(treeLocation) 
    436433 
    437434    def setupSlots(self): 
  • src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py

    r50bfab0 re90988c  
    5151        self._manager = parent 
    5252        self._model_item = QtGui.QStandardItem() 
    53         #self._helpView = QtWebKit.QWebView() 
    54  
    5553        self.communicate = GuiUtils.Communicate() 
    5654 
     
    374372        Open the P(r) Inversion help browser 
    375373        """ 
    376         tree_location = (GuiUtils.HELP_DIRECTORY_LOCATION + 
    377                          "user/sasgui/perspectives/pr/pr_help.html") 
     374        tree_location = "/user/sasgui/perspectives/pr/pr_help.html" 
    378375 
    379376        # Actual file anchor will depend on the combo box index 
    380377        # Note that we can be clusmy here, since bad current_fitter_id 
    381378        # will just make the page displayed from the top 
    382         #self._helpView.load(QtCore.QUrl(tree_location)) 
    383         #self._helpView.show() 
     379        self._manager.showHelp(tree_location) 
    384380 
    385381    def toggleBgd(self): 
  • src/sas/qtgui/Plotting/SlicerParameters.py

    rd6b8a1d re90988c  
    77from PyQt5 import QtGui 
    88from PyQt5 import QtWidgets 
    9 from PyQt5 import QtWebKitWidgets 
    109 
    1110import sas.qtgui.Utilities.GuiUtils as GuiUtils 
     
    8786        Display generic data averaging help 
    8887        """ 
    89         location = "docs/sphinx-docs/build/html" + \ 
    90             "/user/sasgui/guiframe/graph_help.html#d-data-averaging" 
    91         self.helpView = QtWebKitWidgets.QWebView() 
    92         self.helpView.load(QtCore.QUrl(location)) 
    93         self.helpView.show() 
     88        location = "/user/sasgui/guiframe/graph_help.html#d-data-averaging" 
     89        self.parent.showHelp(location) 
    9490 
    9591 
Note: See TracChangeset for help on using the changeset viewer.