Changeset 158a0c7 in sasview for src/sas/qtgui
- Timestamp:
- Jul 13, 2018 2:24:30 AM (6 years ago)
- Children:
- 41d6187
- Parents:
- 5dba493 (diff), ecbfddd (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. - Location:
- src/sas/qtgui
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/GUITests.py
r57be490 rd0528c4 3 3 from PyQt5 import QtGui 4 4 from PyQt5 import QtWidgets 5 6 """ 7 Unit tests for the QT GUI 8 ========================= 9 10 In order to run the tests, first install SasView and sasmodels to site-packages 11 by running ``python setup.py install`` in both repositories. 12 13 The tests can be run with ``python GUITests.py``, or to get more verbose 14 console output (recommended), use ``python GUITests.py -v``. 15 """ 5 16 6 17 # Prepare the general QApplication instance -
src/sas/qtgui/MainWindow/DataExplorer.py
rd9150d8 r6ff103a 496 496 # Now query the model item for available plots 497 497 plots = GuiUtils.plotsFromFilename(filename, model) 498 item = GuiUtils.itemFromFilename(filename, model)499 498 500 499 new_plots = [] 501 for plot in plots:500 for item, plot in plots.items(): 502 501 plot_id = plot.id 503 502 if plot_id in list(self.active_plots.keys()): -
src/sas/qtgui/Utilities/GuiUtils.py
re20870bc r6ff103a 415 415 assert isinstance(filename, str) 416 416 417 plot_data = []417 plot_data = {} 418 418 # Iterate over model looking for named items 419 419 for index in range(model_item.rowCount()): … … 421 421 if str(item.text()) == filename: 422 422 # TODO: assure item type is correct (either data1/2D or Plotter) 423 plot_data .append(item.child(0).data())423 plot_data[item] = item.child(0).data() 424 424 # Going 1 level deeper only 425 425 for index_2 in range(item.rowCount()): … … 427 427 if item_2 and item_2.isCheckable(): 428 428 # TODO: assure item type is correct (either data1/2D or Plotter) 429 plot_data .append(item_2.child(0).data())429 plot_data[item_2] = item_2.child(0).data() 430 430 431 431 return plot_data -
src/sas/qtgui/convertUI.py
rc03692f r67642f7 13 13 os.system(execute) 14 14 15 def file_in_newer(file_in, file_out): 16 """ 17 Check whether file_in is newer than file_out, if file_out exists. 18 19 Returns True if file_in is newer, or if file_out doesn't exist; False 20 otherwise. 21 """ 22 try: 23 out_stat = os.stat(file_out) 24 except OSError: 25 # file_out does not exist 26 return True 27 28 in_stat = os.stat(file_in) 29 30 # simple comparison of modification time 31 return in_stat.st_mtime >= out_stat.st_mtime 32 15 33 # look for .ui files 16 34 for root, dirs, files in os.walk("."): … … 19 37 file_in = os.path.join(root, file) 20 38 file_out = os.path.splitext(file_in)[0]+'.py' 21 pyuic(file_in, file_out) 39 if file_in_newer(file_in, file_out): 40 print("Generating " + file_out + " ...") 41 pyuic(file_in, file_out) 22 42 23 43 # RC file in UI directory … … 27 47 out_file = 'main_resources_rc.py' 28 48 29 pyrrc(os.path.join(ui_root, rc_file), os.path.join(ui_root, out_file)) 49 in_file = os.path.join(ui_root, rc_file) 50 out_file = os.path.join(ui_root, out_file) 51 52 if file_in_newer(in_file, out_file): 53 print("Generating " + out_file + " ...") 54 pyrrc(in_file, out_file) 30 55 31 56 # Images … … 34 59 rc_file = 'images.qrc' 35 60 out_file = 'images_rc.py' 36 pyrrc(os.path.join(images_root, rc_file), os.path.join(out_root, out_file)) 61 62 in_file = os.path.join(images_root, rc_file) 63 out_file = os.path.join(ui_root, out_file) 64 65 if file_in_newer(in_file, out_file): 66 print("Generating " + out_file + " ...") 67 pyrrc(in_file, out_file) 68 -
src/sas/qtgui/MainWindow/MainWindow.py
ra3221b6 r5dba493 10 10 from sas.qtgui.UI import main_resources_rc 11 11 from .UI.MainWindowUI import Ui_MainWindow 12 13 # Initialize logging14 import sas.qtgui.Utilities.SasviewLogger15 12 16 13 class MainSasViewWindow(QMainWindow, Ui_MainWindow): -
src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
re20870bc r5dba493 106 106 # Globals 107 107 self.initializeGlobals() 108 109 # Set up desired logging level110 logging.disable(LocalConfig.DISABLE_LOGGING)111 108 112 109 # data index for the batch set -
src/sas/qtgui/Utilities/LocalConfig.py
ra0ed202 r5dba493 136 136 USING_TWISTED = True 137 137 138 # Logging levels to disable, if any139 DISABLE_LOGGING = logging.DEBUG140 141 138 # Time out for updating sasview 142 139 UPDATE_TIMEOUT = 2 143 140 144 141 # Logging levels to disable, if any 145 DISABLE_LOGGING = logging. DEBUG142 DISABLE_LOGGING = logging.NOTSET 146 143 147 144 def printEVT(message): -
src/sas/qtgui/Utilities/SasviewLogger.py
r4992ff2 r5dba493 7 7 8 8 class XStream(QObject): 9 """ 10 Imitates, loosely, an `io.TextIOWrapper` class in order to intercept 11 messages going to stdout and stderr. 12 13 To intercept messages to stdout, use: 14 15 .. code-block:: python 16 XStream.stdout().messageWritten.mySignalHandler() 17 18 All messages to stdout will now also be emitted to your handler. Use 19 `XStream.stderr()` in the same way to intercept stderr messages. 20 21 An additional function, `XStream.write_log()`, emits a message only to the 22 messageWritten signal, and not the stdout or stderr streams. It is intended 23 for separation of log handling between console and Qt, as reflected in the 24 name. 25 """ 9 26 _stdout = None 10 27 _stderr = None 11 28 messageWritten = pyqtSignal(str) 29 30 _real_stream = None 12 31 13 32 def flush(self): … … 18 37 19 38 def write(self, msg): 39 """ 40 'msg' is emitted in the messageWritten signal, and is also written to 41 the original stream. This means stdout/stderr messages have been 42 redirected to a custom location (e.g. in-widget), but also reach 43 console output. 44 45 :param msg: message to write 46 :return: None 47 """ 48 if(not self.signalsBlocked()): 49 self.messageWritten.emit(str(msg)) 50 self._real_stream.write(msg) 51 52 def write_log(self, msg): 53 """ 54 'msg' is only emitted in the messageWritten signal, not in the original 55 stdout/stderr stream, for the purposes of logging. Use in, e.g. a 56 custom logging handler's emit() function. 57 58 :param msg: message to write 59 :return: None 60 """ 20 61 if(not self.signalsBlocked()): 21 62 self.messageWritten.emit(str(msg)) … … 23 64 @staticmethod 24 65 def stdout(): 66 """ 67 Creates imitation of sys.stdout. 68 :return: An XStream instance that interfaces exactly like sys.stdout, 69 but, has redirection capabilities through the 70 messageWritten(str) signal. 71 """ 25 72 if(not XStream._stdout): 26 73 XStream._stdout = XStream() 74 XStream._stdout._real_stream = sys.stdout 27 75 sys.stdout = XStream._stdout 28 76 return XStream._stdout … … 30 78 @staticmethod 31 79 def stderr(): 80 """ 81 Creates imitation of sys.stderr. 82 :return: An XStream instance that interfaces exactly like sys.stderr, 83 but, has redirection capabilities through the 84 messageWritten(str) signal. 85 """ 32 86 if(not XStream._stderr): 33 87 XStream._stderr = XStream() 88 XStream._stderr._real_stream = sys.stderr 34 89 sys.stderr = XStream._stderr 35 90 return XStream._stderr 36 91 92 37 93 class QtHandler(logging.Handler): 38 94 """ 39 Version of logging handler 40 "emitting" the message to custom stdout() 95 Version of logging handler "emitting" the message to custom stdout() 41 96 """ 42 97 def __init__(self): … … 46 101 record = self.format(record) 47 102 if record: 48 XStream.stdout().write ('%s\n'%record)103 XStream.stdout().write_log('%s\n'%record) 49 104 50 105 … … 52 107 logger = logging.getLogger() 53 108 54 # Add the file handler55 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 109 # Add the qt-signal logger 60 110 handler = QtHandler() 61 handler.setFormatter(logging.Formatter("%(levelname)s: %(message)s")) 111 handler.setFormatter(logging.Formatter( 112 fmt="%(asctime)s - %(levelname)s: %(message)s", 113 datefmt="%H:%M:%S" 114 )) 62 115 logger.addHandler(handler)
Note: See TracChangeset
for help on using the changeset viewer.