Changes in / [570e091:a3c94b54] in sasview
- Files:
-
- 2 deleted
- 33 edited
Legend:
- Unmodified
- Added
- Removed
-
docs/sphinx-docs/build_sphinx.py
re90988c rdf72475 220 220 print("=== Build HTML Docs from ReST Files ===") 221 221 subprocess.call(["sphinx-build", 222 "-b", " qthelp", # Builder name. TODO: accept as arg to setup.py.222 "-b", "html", # Builder name. TODO: accept as arg to setup.py. 223 223 "-d", joinpath(SPHINX_BUILD, "doctrees"), 224 224 SPHINX_SOURCE, -
src/sas/qtgui/Calculators/DataOperationUtilityPanel.py
re90988c rd6b8a1d 110 110 documentation tree (after /doc/ ....". 111 111 """ 112 location = "/user/sasgui/perspectives/calculator/data_operator_help.html" 113 self.manager.showHelp(location) 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 114 121 115 122 def onClose(self): -
src/sas/qtgui/Calculators/DensityPanel.py
re90988c rd4881f6a 146 146 147 147 def displayHelp(self): 148 location = "/user/sasgui/perspectives/calculator/density_calculator_help.html" 149 self.manager.showHelp(location) 148 try: 149 location = HELP_DIRECTORY_LOCATION + \ 150 "/user/sasgui/perspectives/calculator/density_calculator_help.html" 150 151 151 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 -
src/sas/qtgui/Calculators/GenericScatteringCalculator.py
re90988c r53c771e 382 382 documentation tree (after /doc/ ....". 383 383 """ 384 location = "/user/sasgui/perspectives/calculator/sas_calculator_help.html" 385 self.manager.showHelp(location) 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 386 392 387 393 def onReset(self): -
src/sas/qtgui/Calculators/KiessigPanel.py
re90988c rfbfc488 38 38 documentation tree (after /doc/ ....". 39 39 """ 40 location = "/user/sasgui/perspectives/calculator/kiessig_calculator_help.html" 41 self.manager.showHelp(location) 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 42 49 43 50 def onCompute(self): -
src/sas/qtgui/Calculators/ResolutionCalculatorPanel.py
re90988c rd6b8a1d 366 366 documentation tree (after /doc/ ....". 367 367 """ 368 location = "/user/sasgui/perspectives/calculator/resolution_calculator_help.html" 369 self.manager.showHelp(location) 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 370 377 371 378 def onReset(self): -
src/sas/qtgui/Calculators/SldPanel.py
re90988c rd4881f6a 213 213 214 214 def displayHelp(self): 215 location = "/user/sasgui/perspectives/calculator/sld_calculator_help.html" 216 self.manager.showHelp(location) 217 218 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 -
src/sas/qtgui/Calculators/SlitSizeCalculator.py
re90988c r53c771e 47 47 documentation tree (after /doc/ ....". 48 48 """ 49 location = "/user/sasgui/perspectives/calculator/slit_calculator_help.html" 50 self._parent.showHelp(location) 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 51 58 52 59 def onBrowse(self): -
src/sas/qtgui/Calculators/UnitTesting/DataOperationUtilityTest.py
re90988c r53c771e 4 4 import logging 5 5 import unittest 6 import webbrowser7 8 6 from PyQt5 import QtGui, QtWidgets 9 7 from PyQt5 import QtCore … … 121 119 def testHelp(self): 122 120 """ Assure help file is shown """ 123 self.widget.manager.showHelp = MagicMock()121 # this should not rise 124 122 self.widget.onHelp() 125 self.assertTrue(self.widget.manager.showHelp.called_once())126 args = self.widget.manager.showHelp.call_args127 self.assertIn('data_operator_help.html', args[0][0])128 123 129 124 def testOnReset(self): -
src/sas/qtgui/Calculators/UnitTesting/DensityCalculatorTest.py
re90988c r53c771e 121 121 def testHelp(self): 122 122 """ Assure help file is shown """ 123 self.widget.manager = QtWidgets.QWidget() 124 self.widget.manager.showHelp = MagicMock()123 124 # this should not rise 125 125 self.widget.displayHelp() 126 self.assertTrue(self.widget.manager.showHelp.called_once())127 args = self.widget.manager.showHelp.call_args128 self.assertIn('density_calculator_help.html', args[0][0])129 126 130 127 if __name__ == "__main__": -
src/sas/qtgui/Calculators/UnitTesting/GenericScatteringCalculatorTest.py
re90988c r53c771e 104 104 def testHelpButton(self): 105 105 """ Assure help file is shown """ 106 self.widget.manager.showHelp = MagicMock()107 106 self.widget.onHelp() 108 self.assertTrue(self.widget.manager.showHelp.called_once())109 args = self.widget.manager.showHelp.call_args110 self.assertIn('sas_calculator_help.html', args[0][0])111 107 112 108 def testValidator(self): -
src/sas/qtgui/Calculators/UnitTesting/KiessigCalculatorTest.py
re90988c r53c771e 5 5 from PyQt5.QtCore import Qt 6 6 7 # TEMP 8 #import sas.qtgui.path_prepare 7 9 import path_prepare 8 from unittest.mock import MagicMock 10 9 11 10 12 from sas.qtgui.Calculators.KiessigPanel import KiessigPanel … … 33 35 def testHelp(self): 34 36 """ Assure help file is shown """ 35 self.widget.manager = QtWidgets.QWidget() 36 self.widget.manager.showHelp = MagicMock()37 38 # this should not rise 37 39 self.widget.onHelp() 38 self.assertTrue(self.widget.manager.showHelp.called_once())39 args = self.widget.manager.showHelp.call_args40 self.assertIn('kiessig_calculator_help.html', args[0][0])41 40 42 41 def testComplexEntryNumbers(self): -
src/sas/qtgui/Calculators/UnitTesting/ResolutionCalculatorPanelTest.py
re90988c r53c771e 240 240 """ Assure help file is shown """ 241 241 # this should not rise 242 self.widget.manager = QtWidgets.QWidget()243 self.widget.manager.showHelp = MagicMock()244 242 self.widget.onHelp() 245 self.assertTrue(self.widget.manager.showHelp.called_once())246 args = self.widget.manager.showHelp.call_args247 self.assertIn('resolution_calculator_help.html', args[0][0])248 243 249 244 def testOnReset(self): -
src/sas/qtgui/Calculators/UnitTesting/SLDCalculatorTest.py
re90988c r53c771e 142 142 def testHelp(self): 143 143 """ Assure help file is shown """ 144 self.widget.manager = QtWidgets.QWidget() 145 self.widget.manager.showHelp = MagicMock()144 145 # this should not rise 146 146 self.widget.displayHelp() 147 self.assertTrue(self.widget.manager.showHelp.called_once())148 args = self.widget.manager.showHelp.call_args149 self.assertIn('sld_calculator_help.html', args[0][0])150 147 151 148 if __name__ == "__main__": -
src/sas/qtgui/Calculators/UnitTesting/SlitSizeCalculatorTest.py
re90988c r53c771e 37 37 def testHelp(self): 38 38 """ Assure help file is shown """ 39 self.widget._parent = QtWidgets.QWidget() 40 self.widget._parent.showHelp = MagicMock()39 40 # this should not rise 41 41 self.widget.onHelp() 42 self.assertTrue(self.widget._parent.showHelp.called_once())43 args = self.widget._parent.showHelp.call_args44 self.assertIn('slit_calculator_help.html', args[0][0])45 42 46 43 def testBrowseButton(self): -
src/sas/qtgui/GUITests.py
r0595bb7 r6b0c2f6 61 61 from Perspectives.Invariant.UnitTesting import InvariantPerspectiveTest 62 62 63 63 64 def suite(): 64 65 suites = ( … … 116 117 unittest.makeSuite(InvariantPerspectiveTest.InvariantPerspectiveTest, 'test'), 117 118 unittest.makeSuite(InvariantDetailsTest.InvariantDetailsTest, 'test'), 118 # Inversion119 unittest.makeSuite(InversionPerspectiveTest.InversionTest, 'test'),120 119 ) 121 120 return unittest.TestSuite(suites) -
src/sas/qtgui/MainWindow/DataExplorer.py
re90988c rcb4d219 8 8 from PyQt5 import QtGui 9 9 from PyQt5 import QtWidgets 10 from PyQt5 import QtWebKitWidgets 10 11 11 12 from twisted.internet import threads … … 69 70 self.cmdHelp_2.clicked.connect(self.displayHelp) 70 71 72 # Display HTML content 73 self._helpView = QtWebKitWidgets.QWebView() 74 71 75 # Fill in the perspectives combo 72 76 self.initPerspectives() … … 137 141 Show the "Loading data" section of help 138 142 """ 139 tree_location = "/user/sasgui/guiframe/data_explorer_help.html" 140 self.parent.showHelp(tree_location) 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() 141 147 142 148 def enableGraphCombo(self, combo_text): -
src/sas/qtgui/MainWindow/GuiManager.py
re90988c rd1955d67 86 86 # Set up the status bar 87 87 self.statusBarSetup() 88 88 # Show the Welcome panel 89 self.welcomePanel = WelcomePanel() 90 self._workspace.workspace.addSubWindow(self.welcomePanel) 91 92 # Current help file 93 self._helpView = QWebView() 89 94 # Needs URL like path, so no path.join() here 90 95 self._helpLocation = GuiUtils.HELP_DIRECTORY_LOCATION + "/index.html" … … 94 99 "_downloads", 95 100 "Tutorial.pdf")) 96 97 101 def addWidgets(self): 98 102 """ … … 127 131 self.ackWidget = Acknowledgements() 128 132 self.aboutWidget = AboutBox() 129 self.welcomePanel = WelcomePanel()130 133 131 134 # Add calculators - floating for usability … … 162 165 """ 163 166 pass 164 165 def showHelp(self, url):166 """167 Open a local url in the default browser168 """169 location = GuiUtils.HELP_DIRECTORY_LOCATION + url170 try:171 webbrowser.open('file://' + os.path.realpath(location))172 except webbrowser.Error as ex:173 logging.warning("Cannot display help. %s" % ex)174 167 175 168 def workspace(self): … … 341 334 msg += " Please try again later." 342 335 self.communicate.statusBarUpdateSignal.emit(msg) 343 344 def showWelcomeMessage(self):345 """ Show the Welcome panel """346 self._workspace.workspace.addSubWindow(self.welcomePanel)347 self.welcomePanel.show()348 336 349 337 def addCallbacks(self): … … 726 714 TODO: use QNetworkAccessManager to assure _helpLocation is valid 727 715 """ 728 self.showHelp(self._helpLocation) 716 self._helpView.load(QUrl(self._helpLocation)) 717 self._helpView.show() 729 718 730 719 def actionTutorial(self): -
src/sas/qtgui/MainWindow/MainWindow.py
r8353d90 r53c771e 1 1 # UNLESS EXEPTIONALLY REQUIRED TRY TO AVOID IMPORTING ANY MODULES HERE 2 2 # ESPECIALLY ANYTHING IN SAS, SASMODELS NAMESPACE 3 from PyQt5.QtWidgets import QMainWindow 4 from PyQt5.QtWidgets import QMdiArea 5 from PyQt5.QtWidgets import QSplashScreen 6 from PyQt5.QtWidgets import QApplication 7 from PyQt5.QtGui import QPixmap 3 #from PyQt4 import QtGui 4 from PyQt5.QtWidgets import * 5 from PyQt5.QtGui import * 8 6 9 7 # Local UI … … 73 71 # Show the main SV window 74 72 mainwindow = MainSasViewWindow() 75 mainwindow.show Maximized()73 mainwindow.show() 76 74 77 75 # no more splash screen 78 76 splash.finish(mainwindow) 79 80 # Time for the welcome window81 mainwindow.guiManager.showWelcomeMessage()82 77 83 78 # No need to .exec_ - the reactor takes care of it. -
src/sas/qtgui/MainWindow/UnitTesting/GuiManagerTest.py
- Property mode changed from 100644 to 100755
r8353d90 r53c771e 19 19 from sas.qtgui.MainWindow.AboutBox import AboutBox 20 20 from sas.qtgui.MainWindow.WelcomePanel import WelcomePanel 21 from sas.qtgui.Utilities.IPythonWidget import IPythonWidget21 #from sas.qtgui.Utilities.IPythonWidget import IPythonWidget 22 22 23 23 from sas.qtgui.MainWindow.GuiManager import Acknowledgements, GuiManager -
src/sas/qtgui/MainWindow/UnitTesting/MainWindowTest.py
r8353d90 r53c771e 15 15 from sas.qtgui.MainWindow.MainWindow import SplashScreen 16 16 from sas.qtgui.MainWindow.GuiManager import GuiManager 17 from sas.qtgui.Perspectives.Fitting import FittingPerspective18 17 19 18 if not QtWidgets.QApplication.instance(): … … 41 40 self.assertIsInstance(splash, QtWidgets.QSplashScreen) 42 41 43 def testWidgets(self):44 """ Test enablement/disablement of widgets """45 # Open the main window46 tmp_main = MainSasViewWindow(None)47 tmp_main.showMaximized()48 # See that only one subwindow is up49 self.assertEqual(len(tmp_main.workspace.subWindowList()), 1)50 # and that the subwindow is the fitting perspective51 self.assertIsInstance(tmp_main.workspace.subWindowList()[0].widget(),52 FittingPerspective.FittingWindow)53 # Show the message widget54 tmp_main.guiManager.showWelcomeMessage()55 # Assure it is visible and a part of the MdiArea56 self.assertTrue(tmp_main.guiManager.welcomePanel.isVisible())57 self.assertEqual(len(tmp_main.workspace.subWindowList()), 2)58 59 tmp_main.close()60 61 42 def testExit(self): 62 43 """ -
src/sas/qtgui/Perspectives/Corfunc/CorfuncPerspective.py
re90988c rcb4d219 5 5 6 6 # global 7 from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg \8 as FigureCanvas9 from matplotlib.figure import Figure10 from numpy.linalg.linalg import LinAlgError11 12 7 from PyQt5 import QtCore 13 8 from PyQt5 import QtGui, QtWidgets … … 22 17 from .UI.CorfuncPanel import Ui_CorfuncDialog 23 18 from .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 24 24 25 25 … … 136 136 self.cmdCalculateBg.clicked.connect(self.calculate_background) 137 137 self.cmdCalculateBg.setEnabled(False) 138 self.cmdHelp.clicked.connect(self.showHelp)139 138 140 139 self.model.itemChanged.connect(self.model_changed) … … 307 306 308 307 # pylint: disable=invalid-name 309 def showHelp(self):310 """311 Opens a webpage with help on the perspective312 """313 """ Display help when clicking on Help button """314 treeLocation = "/user/sasgui/perspectives/corfunc/corfunc_help.html"315 self.parent.showHelp(treeLocation)316 317 308 @staticmethod 318 309 def allowBatch(): … … 377 368 self.setClosable(value=False) 378 369 # Tell the MdiArea to close the container 379 if self.parent: 380 self.parentWidget().close() 370 self.parentWidget().close() 381 371 event.accept() 382 372 else: -
src/sas/qtgui/Perspectives/Fitting/FittingOptions.py
re90988c rd6b8a1d 3 3 import os 4 4 import types 5 import webbrowser6 5 7 6 from PyQt5 import QtCore 8 7 from PyQt5 import QtGui 9 8 from PyQt5 import QtWidgets 9 from PyQt5 import QtWebKitWidgets 10 10 11 11 from sas.qtgui.UI import images_rc … … 73 73 # OK has to be initialized to True, after initial validator setup 74 74 self.buttonBox.button(QtWidgets.QDialogButtonBox.Ok).setEnabled(True) 75 76 # Display HTML content 77 self.helpView = QtWebKitWidgets.QWebView() 75 78 76 79 def assignValidators(self): … … 157 160 Show the "Fitting options" section of help 158 161 """ 159 tree_location = GuiUtils.HELP_DIRECTORY_LOCATION 160 tree_location += "/user/sasgui/perspectives/fitting/" 162 tree_location = GuiUtils.HELP_DIRECTORY_LOCATION + "/user/sasgui/perspectives/fitting/" 161 163 162 164 # Actual file anchor will depend on the combo box index … … 165 167 helpfile = "optimizer.html#fit-" + self.current_fitter_id 166 168 help_location = tree_location + helpfile 167 webbrowser.open('file://' + os.path.realpath(help_location)) 169 self.helpView.load(QtCore.QUrl(help_location)) 170 self.helpView.show() 168 171 169 172 def widgetFromOption(self, option_id, current_fitter=None): -
src/sas/qtgui/Perspectives/Fitting/FittingPerspective.py
re90988c r7c487846 13 13 from sas.qtgui.Perspectives.Fitting.FittingOptions import FittingOptions 14 14 from sas.qtgui.Perspectives.Fitting.GPUOptions import GPUOptions 15 #from sas.qtgui.Perspectives.Fitting import ModelUtilities 15 16 16 17 class FittingWindow(QtWidgets.QTabWidget): -
src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
rd3c0b95 ra3c94b54 8 8 from twisted.internet import threads 9 9 import numpy as np 10 import webbrowser11 10 12 11 from PyQt5 import QtCore 13 12 from PyQt5 import QtGui 14 13 from 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 15 19 16 20 from sasmodels import product … … 126 130 127 131 # Display HTML content 128 #self.setupHelp()132 self.helpView = QtWebKitWidgets.QWebView() 129 133 130 134 # New font to display angstrom symbol … … 941 945 Show the "Fitting" section of help 942 946 """ 943 tree_location = "/user/sasgui/perspectives/fitting/"947 tree_location = GuiUtils.HELP_DIRECTORY_LOCATION + "/user/sasgui/perspectives/fitting/" 944 948 945 949 # Actual file will depend on the current tab … … 951 955 helpfile = "residuals_help.html" 952 956 elif tab_id == 2: 953 helpfile = " resolution.html"957 helpfile = "sm_help.html" 954 958 elif tab_id == 3: 955 helpfile = "pd /polydispersity.html"959 helpfile = "pd_help.html" 956 960 elif tab_id == 4: 957 helpfile = "mag netism/magnetism.html"961 helpfile = "mag_help.html" 958 962 help_location = tree_location + helpfile 959 963 960 self.showHelp(help_location) 961 962 def showHelp(self, url): 963 """ 964 Calls parent's method for opening an HTML page 965 """ 966 self.parent.showHelp(url) 964 content = QtCore.QUrl(help_location) 965 self.helpView.load(QtCore.QUrl(help_location)) 966 self.helpView.show() 967 967 968 968 def onDisplayMagneticAngles(self): -
src/sas/qtgui/Perspectives/Fitting/GPUOptions.py
re90988c rc7ebb37 8 8 9 9 import sas.qtgui.Utilities.GuiUtils as GuiUtils 10 from PyQt5 import QtGui, QtCore, QtW idgets10 from PyQt5 import QtGui, QtCore, QtWebKit, QtWidgets 11 11 from sas.qtgui.Perspectives.Fitting.UI.GPUOptionsUI import Ui_GPUOptions 12 12 from sas.qtgui.Perspectives.Fitting.UI.GPUTestResultsUI import Ui_GPUTestResults … … 172 172 help_location += "/user/sasgui/perspectives/fitting/gpu_setup.html" 173 173 help_location += "#device-selection" 174 # Display the page in default browser174 # Test the system browser solution 175 175 webbrowser.open('file://' + os.path.realpath(help_location)) 176 176 -
src/sas/qtgui/Perspectives/Fitting/MultiConstraint.py
re147ce2 ra3c94b54 2 2 Widget for parameter constraints. 3 3 """ 4 import os5 4 from numpy import * 6 5 … … 8 7 from PyQt5 import QtGui 9 8 from PyQt5 import QtWidgets 10 import webbrowser11 9 12 10 import sas.qtgui.Utilities.GuiUtils as GuiUtils … … 130 128 """ 131 129 try: 132 help_location = GuiUtils.HELP_DIRECTORY_LOCATION + \130 location = GuiUtils.HELP_DIRECTORY_LOCATION + \ 133 131 "/user/sasgui/perspectives/fitting/fitting_help.html#simultaneous-fits-with-constraints" 134 webbrowser.open('file://' + os.path.realpath(help_location)) 132 133 self.manager._helpView.load(QtCore.QUrl(location)) 134 self.manager._helpView.show() 135 135 except AttributeError: 136 136 # No manager defined - testing and standalone runs -
src/sas/qtgui/Perspectives/Invariant/InvariantPerspective.py
re90988c rd1955d67 8 8 from PyQt5 import QtCore 9 9 from PyQt5 import QtGui, QtWidgets 10 from PyQt5 import QtWebKit 10 11 11 12 from twisted.internet import threads … … 62 63 self._model_item = QtGui.QStandardItem() 63 64 65 #self._helpView = QtWebKit.QWebView() 64 66 self.detailsDialog = DetailsDialog(self) 65 67 self.detailsDialog.cmdOK.clicked.connect(self.enabling) … … 80 82 # no reason to have this widget resizable 81 83 self.resize(self.minimumSizeHint()) 84 #self.setFixedSize(self.sizeHint()) 82 85 83 86 self.communicate = self._manager.communicator() … … 225 228 226 229 self.model = model 227 self.mapper.toFirst()228 230 self._data = GuiUtils.dataFromItem(self._model_item) 229 231 230 232 # Send the modified model item to DE for keeping in the model 231 233 # Currently -unused 232 # 234 #self.communicate.updateModelFromPerspectiveSignal.emit(self._model_item) 233 235 234 236 plot_data = GuiUtils.plotsFromCheckedItems(self._manager.filesWidget.model) … … 363 365 if self._high_extrapolate: 364 366 # for presentation in InvariantDetails 365 qmax_plot = Q_MAXIMUM_PLOT * max(temp_data.x) 367 qmax_plot = Q_MAXIMUM_PLOT * max(temp_data.x) # self._data.x) 366 368 367 369 if qmax_plot > Q_MAXIMUM: … … 429 431 def onHelp(self): 430 432 """ Display help when clicking on Help button """ 431 treeLocation = "/user/sasgui/perspectives/invariant/invariant_help.html" 432 self.parent.showHelp(treeLocation) 433 treeLocation = GuiUtils.HELP_DIRECTORY_LOCATION + \ 434 "/user/sasgui/perspectives/invariant/invariant_help.html" 435 webbrowser.open('file://' + treeLocation) 433 436 434 437 def setupSlots(self): -
src/sas/qtgui/Perspectives/Invariant/UI/TabbedInvariantUI.ui
r9387fe3 rd1955d67 142 142 <widget class="QLineEdit" name="txtTotalQMin"> 143 143 <property name="enabled"> 144 <bool> true</bool>144 <bool>false</bool> 145 145 </property> 146 146 </widget> … … 156 156 <widget class="QLineEdit" name="txtTotalQMax"> 157 157 <property name="enabled"> 158 <bool> true</bool>158 <bool>false</bool> 159 159 </property> 160 160 </widget> … … 192 192 <widget class="QLineEdit" name="txtVolFract"> 193 193 <property name="enabled"> 194 <bool> true</bool>194 <bool>false</bool> 195 195 </property> 196 196 <property name="autoFillBackground"> … … 221 221 <widget class="QLineEdit" name="txtVolFractErr"> 222 222 <property name="enabled"> 223 <bool> true</bool>223 <bool>false</bool> 224 224 </property> 225 225 <property name="frame"> … … 244 244 <widget class="QLineEdit" name="txtSpecSurf"> 245 245 <property name="enabled"> 246 <bool> true</bool>246 <bool>false</bool> 247 247 </property> 248 248 <property name="frame"> … … 267 267 <widget class="QLineEdit" name="txtSpecSurfErr"> 268 268 <property name="enabled"> 269 <bool> true</bool>269 <bool>false</bool> 270 270 </property> 271 271 <property name="frame"> … … 305 305 <widget class="QLineEdit" name="txtInvariantTot"> 306 306 <property name="enabled"> 307 <bool> true</bool>307 <bool>false</bool> 308 308 </property> 309 309 <property name="toolTip"> … … 331 331 <widget class="QLineEdit" name="txtInvariantTotErr"> 332 332 <property name="enabled"> 333 <bool> true</bool>333 <bool>false</bool> 334 334 </property> 335 335 <property name="frame"> … … 467 467 <widget class="QLineEdit" name="txtExtrapolQMin"> 468 468 <property name="enabled"> 469 <bool> true</bool>469 <bool>false</bool> 470 470 </property> 471 471 <property name="toolTip"> 472 472 <string>The minimum extrapolated q value.</string> 473 </property>474 <property name="readOnly">475 <bool>true</bool>476 473 </property> 477 474 </widget> … … 487 484 <widget class="QLineEdit" name="txtExtrapolQMax"> 488 485 <property name="enabled"> 489 <bool>true</bool> 490 </property> 491 <property name="readOnly"> 492 <bool>true</bool> 486 <bool>false</bool> 493 487 </property> 494 488 </widget> -
src/sas/qtgui/Perspectives/Inversion/InversionPerspective.py
re90988c r19fce84 25 25 return 0.0 26 26 27 NUMBER_OF_TERMS = 1028 REGULARIZATION = 0.000129 BACKGROUND_INPUT = 0.030 MAX_DIST = 140.031 27 32 28 # TODO: Modify plot references, don't just send new … … 51 47 self._manager = parent 52 48 self._model_item = QtGui.QStandardItem() 49 #self._helpView = QtWebKit.QWebView() 50 53 51 self.communicate = GuiUtils.Communicate() 54 52 … … 229 227 item = QtGui.QStandardItem("") 230 228 self.model.setItem(WIDGETS.W_FILENAME, item) 231 item = QtGui.QStandardItem( str(BACKGROUND_INPUT))229 item = QtGui.QStandardItem('0.0') 232 230 self.model.setItem(WIDGETS.W_BACKGROUND_INPUT, item) 233 231 item = QtGui.QStandardItem("") … … 239 237 item = QtGui.QStandardItem("") 240 238 self.model.setItem(WIDGETS.W_SLIT_HEIGHT, item) 241 item = QtGui.QStandardItem( str(NUMBER_OF_TERMS))239 item = QtGui.QStandardItem("10") 242 240 self.model.setItem(WIDGETS.W_NO_TERMS, item) 243 item = QtGui.QStandardItem( str(REGULARIZATION))241 item = QtGui.QStandardItem("0.0001") 244 242 self.model.setItem(WIDGETS.W_REGULARIZATION, item) 245 item = QtGui.QStandardItem( str(MAX_DIST))243 item = QtGui.QStandardItem("140.0") 246 244 self.model.setItem(WIDGETS.W_MAX_DIST, item) 247 245 item = QtGui.QStandardItem("") … … 372 370 Open the P(r) Inversion help browser 373 371 """ 374 tree_location = "/user/sasgui/perspectives/pr/pr_help.html" 372 tree_location = (GuiUtils.HELP_DIRECTORY_LOCATION + 373 "user/sasgui/perspectives/pr/pr_help.html") 375 374 376 375 # Actual file anchor will depend on the combo box index 377 376 # Note that we can be clusmy here, since bad current_fitter_id 378 377 # will just make the page displayed from the top 379 self._manager.showHelp(tree_location) 378 #self._helpView.load(QtCore.QUrl(tree_location)) 379 #self._helpView.show() 380 380 381 381 def toggleBgd(self): … … 439 439 def getNFunc(self): 440 440 """Get the n_func value from the GUI object""" 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 441 return int(self.noOfTermsInput.text()) 448 442 449 443 def setCurrentData(self, data_ref): -
src/sas/qtgui/Plotting/SlicerParameters.py
re90988c rd6b8a1d 7 7 from PyQt5 import QtGui 8 8 from PyQt5 import QtWidgets 9 from PyQt5 import QtWebKitWidgets 9 10 10 11 import sas.qtgui.Utilities.GuiUtils as GuiUtils … … 86 87 Display generic data averaging help 87 88 """ 88 location = "/user/sasgui/guiframe/graph_help.html#d-data-averaging" 89 self.parent.showHelp(location) 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() 90 94 91 95 -
src/sas/qtgui/Utilities/GuiUtils.py
r6cb305a rcb4d219 58 58 # clean all these module variables and put them into a config class 59 59 # that can be passed by sasview.py. 60 # 61 # 60 #logging.info(sys.executable) 61 #logging.info(str(sys.argv)) 62 62 from sas import sasview as sasview 63 63 app_path = os.path.dirname(sasview.__file__) 64 # 64 #logging.info("Using application path: %s", app_path) 65 65 return app_path 66 66 … … 249 249 if plot_item.isCheckable(): 250 250 plot_data = plot_item.child(0).data() 251 if plot_data.id is not None and \ 252 (plot_data.name == update_data.name or plot_data.id == update_data.id): 253 # if plot_data.id is not None and plot_data.id == update_data.id: 251 if plot_data.id is not None and plot_data.id == update_data.id: 254 252 # replace data section in item 255 253 plot_item.child(0).setData(update_data) … … 345 343 for index in range(model_item.rowCount()): 346 344 item = model_item.item(index) 347 if item.text() == filename and item.isCheckable() \ 348 and item.checkState() == QtCore.Qt.Checked: 345 if item.text() == filename and item.isCheckable() and item.checkState() == QtCore.Qt.Checked: 349 346 # Going 1 level deeper only 350 347 for index_2 in range(item.rowCount()): … … 363 360 364 361 # Iterate over model looking for named items 365 item = list([i for i in [model_item.item(index) 366 for index in range(model_item.rowCount())] 367 if str(i.text()) == filename]) 362 item = list([i for i in [model_item.item(index) for index in range(model_item.rowCount())] if str(i.text()) == filename]) 368 363 return item[0] if len(item)>0 else None 369 364 … … 401 396 for index in range(model_item.rowCount()): 402 397 item = model_item.item(index) 403 398 if item.isCheckable() and item.checkState() == QtCore.Qt.Checked: 399 # TODO: assure item type is correct (either data1/2D or Plotter) 400 plot_data.append((item, item.child(0).data())) 404 401 # Going 1 level deeper only 405 402 for index_2 in range(item.rowCount()): … … 408 405 # TODO: assure item type is correct (either data1/2D or Plotter) 409 406 plot_data.append((item_2, item_2.child(0).data())) 410 411 if item.isCheckable() and item.checkState() == QtCore.Qt.Checked:412 # TODO: assure item type is correct (either data1/2D or Plotter)413 plot_data.append((item, item.child(0).data()))414 407 415 408 return plot_data -
src/sas/qtgui/Utilities/UnitTesting/GuiUtilsTest.py
r6cb305a r0261bc1 100 100 Test the QModelItem checkbox update method 101 101 """ 102 # test_item = QtGui.QStandardItem()103 # test_list = ['aa','11']104 # update_data = test_list105 # name = "Black Sabbath"106 107 # # update the item108 # updateModelItemWithPlot(test_item, update_data, name)109 110 102 test_item = QtGui.QStandardItem() 111 update_data = Data1D(x=[1.0, 2.0, 3.0], y=[10.0, 11.0, 12.0]) 103 test_list = ['aa','11'] 104 update_data = test_list 112 105 name = "Black Sabbath" 113 update_data.id = '[0]data0' 114 update_data.name = 'data0' 106 115 107 # update the item 116 108 updateModelItemWithPlot(test_item, update_data, name) 117 109 118 110 # Make sure test_item got all data added 119 111 self.assertEqual(test_item.child(0).text(), name) 120 112 self.assertTrue(test_item.child(0).isCheckable()) 121 data_from_item = test_item.child(0).child(0).data() 122 self.assertIsInstance(data_from_item, Data1D) 123 self.assertSequenceEqual(list(data_from_item.x), [1.0, 2.0, 3.0]) 124 self.assertSequenceEqual(list(data_from_item.y), [10.0, 11.0, 12.0]) 125 self.assertEqual(test_item.rowCount(), 1) 126 127 # add another dataset (different from the first one) 128 update_data1 = Data1D(x=[1.1, 2.1, 3.1], y=[10.1, 11.1, 12.1]) 129 update_data1.id = '[0]data1' 130 update_data1.name = 'data1' 131 name1 = "Black Sabbath1" 132 # update the item and check number of rows 133 updateModelItemWithPlot(test_item, update_data1, name1) 134 135 self.assertEqual(test_item.rowCount(), 2) 136 137 # add another dataset (with the same name as the first one) 138 # check that number of rows was not changed but data have been updated 139 update_data2 = Data1D(x=[4.0, 5.0, 6.0], y=[13.0, 14.0, 15.0]) 140 update_data2.id = '[1]data0' 141 update_data2.name = 'data0' 142 name2 = "Black Sabbath2" 143 updateModelItemWithPlot(test_item, update_data2, name2) 144 self.assertEqual(test_item.rowCount(), 2) 145 146 data_from_item = test_item.child(0).child(0).data() 147 self.assertSequenceEqual(list(data_from_item.x), [4.0, 5.0, 6.0]) 148 self.assertSequenceEqual(list(data_from_item.y), [13.0, 14.0, 15.0]) 113 list_from_item = test_item.child(0).child(0).data() 114 self.assertIsInstance(list_from_item, list) 115 self.assertEqual(str(list_from_item[0]), test_list[0]) 116 self.assertEqual(str(list_from_item[1]), test_list[1]) 149 117 150 118 … … 194 162 # Make sure only the checked data is present 195 163 # FRIDAY IN 196 self.assertIn(test_list0, plot_list[ 1])164 self.assertIn(test_list0, plot_list[0]) 197 165 # SATURDAY IN 198 self.assertIn(test_list1, plot_list[ 0])166 self.assertIn(test_list1, plot_list[1]) 199 167 # MONDAY NOT IN 200 168 self.assertNotIn(test_list2, plot_list[0])
Note: See TracChangeset
for help on using the changeset viewer.