[new] log widget for PyLoT
This commit is contained in:
parent
dd02527c1d
commit
9036a9054e
8
PyLoT.py
8
PyLoT.py
@ -86,7 +86,7 @@ from pylot.core.io.location import create_creation_info, create_event
|
||||
from pylot.core.util.widgets import FilterOptionsDialog, NewEventDlg, \
|
||||
PylotCanvas, WaveformWidgetPG, PropertiesDlg, HelpForm, createAction, PickDlg, \
|
||||
ComparisonWidget, TuneAutopicker, PylotParaBox, AutoPickDlg, CanvasWidget, AutoPickWidget, \
|
||||
CompareEventsWidget, ProgressBarWidget, AddMetadataWidget, SingleTextLineDialog
|
||||
CompareEventsWidget, ProgressBarWidget, AddMetadataWidget, SingleTextLineDialog, LogWidget
|
||||
from pylot.core.util.array_map import Array_map
|
||||
from pylot.core.util.structure import DATASTRUCTURE
|
||||
from pylot.core.util.thread import Thread, Worker
|
||||
@ -731,6 +731,11 @@ class MainWindow(QMainWindow):
|
||||
_widget.setLayout(self._main_layout)
|
||||
_widget.showFullScreen()
|
||||
|
||||
self.logwidget = LogWidget(parent=None)
|
||||
self.logwidget.show()
|
||||
sys.stdout = self.logwidget.stdout
|
||||
sys.stderr = self.logwidget.stderr
|
||||
|
||||
self.setCentralWidget(_widget)
|
||||
|
||||
def init_wfWidget(self):
|
||||
@ -778,7 +783,6 @@ class MainWindow(QMainWindow):
|
||||
if event.key() == QtCore.Qt.Key.Key_R:
|
||||
self.reset_gain()
|
||||
|
||||
|
||||
def keyReleaseEvent(self, event):
|
||||
if event.key() == QtCore.Qt.Key.Key_Control:
|
||||
self._ctrl = False
|
||||
|
@ -82,6 +82,57 @@ class QDoubleSpinBox(QtWidgets.QDoubleSpinBox):
|
||||
event.ignore()
|
||||
|
||||
|
||||
class TextLogWidget(QtWidgets.QTextEdit):
|
||||
highlight = Signal()
|
||||
|
||||
def __init__(self, parent, highlight_input=False):
|
||||
super(TextLogWidget, self).__init__(parent)
|
||||
self.highlight_input = highlight_input
|
||||
|
||||
def write(self, text):
|
||||
self.append(text)
|
||||
if self.highlight_input:
|
||||
self.highlight.emit()
|
||||
|
||||
|
||||
class LogWidget(QtWidgets.QWidget):
|
||||
def __init__(self, parent):
|
||||
super(LogWidget, self).__init__(parent, Qt.Window)
|
||||
self.current_active_error = False
|
||||
self.qmb = None
|
||||
self.setWindowTitle('PyLoT Log')
|
||||
self.setMinimumWidth(800)
|
||||
self.setMinimumHeight(600)
|
||||
|
||||
self.stdout = TextLogWidget(self)
|
||||
self.stderr = TextLogWidget(self, highlight_input=True)
|
||||
self.stderr.highlight.connect(self.active_error)
|
||||
|
||||
self.tabs = QTabWidget()
|
||||
self.tabs.addTab(self.stdout, 'Log')
|
||||
self.tabs.addTab(self.stderr, 'Errors')
|
||||
|
||||
self.layout = QtWidgets.QVBoxLayout()
|
||||
self.textfield = QtWidgets.QTextEdit()
|
||||
self.setLayout(self.layout)
|
||||
self.layout.addWidget(self.tabs)
|
||||
|
||||
def active_error(self):
|
||||
if self.current_active_error == False:
|
||||
self.current_active_error = True
|
||||
self.show()
|
||||
self.activateWindow()
|
||||
self.tabs.setCurrentWidget(self.stderr)
|
||||
self.qmb = QtWidgets.QMessageBox(QtWidgets.QMessageBox.Icon.Warning,
|
||||
'Error', 'Error occurred. Please check log!')
|
||||
self.qmb.buttonClicked.connect(self.reset_error)
|
||||
self.qmb.show()
|
||||
|
||||
def reset_error(self):
|
||||
# used to make sure that write errors is finished before raising new Message box etc.
|
||||
self.current_active_error = False
|
||||
|
||||
|
||||
def getDataType(parent):
|
||||
type = QInputDialog().getItem(parent, "Select phases type", "Type:",
|
||||
["manual", "automatic"])
|
||||
|
Loading…
Reference in New Issue
Block a user