diff --git a/cutelog/__main__.py b/cutelog/__main__.py index 06219fd3281c64d272a052a21bd4b28b4ca6085c..0574f08deaa7f4a4b09f987c1dd917836810a63f 100644 --- a/cutelog/__main__.py +++ b/cutelog/__main__.py @@ -20,6 +20,11 @@ def main(): from qtpy.QtGui import QIcon from qtpy.QtWidgets import QApplication + if sys.platform == 'win32': + import ctypes + appid = 'busimus.cutelog' + ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appid) + app = QApplication(sys.argv) app.setWindowIcon(QIcon(':/cutelog.png')) mw = MainWindow(ROOT_LOG, app) diff --git a/cutelog/listener.py b/cutelog/listener.py index 9d50c4370d371617b81428e5fe54bacb14c02744..e29f996c2aeeee1b62fce42eaf60fc0e83ea6cf8 100644 --- a/cutelog/listener.py +++ b/cutelog/listener.py @@ -165,6 +165,9 @@ class LogConnection(QThread): try: logDict = self.deserialize(data) + for k, v in logDict.items(): + if type(v) not in (str, int, type(None)): + logDict[k] = str(v) record = LogRecord(logDict) except Exception: self.log.error('Creating log record failed', exc_info=True) @@ -250,7 +253,7 @@ class BenchmarkConnection(LogConnection): level_index = c % len(test_levels) dd['levelname'] = test_levels[level_index][1] if dd['levelname'] == "CRITICAL": - dd['exc_text'] = 'exception test' + dd['exc_text'] = 'exception test\nmultiple lines\ntest 123' for i in range(random.randrange(6)): dd[str(i) + "f"] = random.randrange(256) diff --git a/cutelog/logger_tab.py b/cutelog/logger_tab.py index c5fc9fd8f953831f09202b6d0972f9732d15fbb7..5ec0ae24c8992ffb310458bfb243c0ced95daef4 100644 --- a/cutelog/logger_tab.py +++ b/cutelog/logger_tab.py @@ -13,8 +13,7 @@ from .level_edit_dialog import LevelEditDialog from .levels_preset_dialog import LevelsPresetDialog from .log_levels import NO_LEVEL, LevelFilter, LogLevel, get_default_level from .logger_table_header import HeaderEditDialog, LoggerTableHeader -from .text_view_dialog import TextViewDialog -from .utils import loadUi +from .utils import loadUi, show_textview_dialog INVALID_INDEX = QModelIndex() SearchRole = 256 @@ -432,8 +431,8 @@ class RecordFilter(QSortFilterProxyModel): class DetailTableModel(QAbstractTableModel): - def __init__(self): - super().__init__() + def __init__(self, parent): + super().__init__(parent) self.record = tuple() def columnCount(self, index): @@ -467,6 +466,13 @@ class DetailTableModel(QAbstractTableModel): self.record = tuple(record_dict.items()) self.reset() + def open_row_popup(self, index): + print(index) + print(index.row()) + row = self.record[index.row()] + text = str(row[1]) if row[1] is not None else row[1] + show_textview_dialog(self.parent(), 'Field "{}"'.format(row[0]), text) + class LoggerTab(QWidget): def __init__(self, parent, name, connection, log, main_window): @@ -477,7 +483,7 @@ class LoggerTab(QWidget): self.main_window = main_window self.level_filter = LevelFilter() self.filter_model_enabled = True - self.detail_model = DetailTableModel() + self.detail_model = DetailTableModel(self) self.namespace_tree_model = LogNamespaceTreeModel() self.popped_out = False self.autoscroll = True @@ -540,6 +546,7 @@ class LoggerTab(QWidget): self.loggerTable.selectionModel().selectionChanged.connect(self.update_detail) self.detailTable.setModel(self.detail_model) + self.detailTable.doubleClicked.connect(self.detail_model.open_row_popup) self.table_header_view = header = self.loggerTable.horizontalHeader() header.setStretchLastSection(True) @@ -844,11 +851,9 @@ class LoggerTab(QWidget): def open_text_view_dialog(self, index, exception=False): record = self.get_record(index) - d = TextViewDialog(self.main_window, record.exc_text if exception else record.message) - d.setWindowModality(Qt.NonModal) - d.setAttribute(Qt.WA_DeleteOnClose, True) - d.setWindowTitle('Exception traceback' if exception else 'View message') - d.open() + text = record.exc_text if exception else record.message + title = 'Exception traceback' if exception else 'View message' + show_textview_dialog(self.main_window, title, text) def enable_all_levels(self): for row in range(self.levelsTable.rowCount()): diff --git a/cutelog/settings_dialog.py b/cutelog/settings_dialog.py index b425a7f03d79962f5a7e46779f3343b86350784a..9e784e30451692c3cd6604362cb4ead2dd1378f1 100644 --- a/cutelog/settings_dialog.py +++ b/cutelog/settings_dialog.py @@ -10,7 +10,6 @@ from .utils import loadUi, show_info_dialog class SettingsDialog(QDialog): def __init__(self, parent): super().__init__(parent) - self.parent_widget = parent self.server_restart_needed = False self.time_format_validator = TimeFormatValidator(self) self.setupUi() @@ -116,7 +115,7 @@ class SettingsDialog(QDialog): def accept(self): self.save_to_config() if self.server_restart_needed: - show_info_dialog(self.parent_widget, 'Warning', + show_info_dialog(self.parent(), 'Warning', 'You need to restart the server for the changes to take effect') self.done(0) @@ -127,7 +126,7 @@ class SettingsDialog(QDialog): self.server_restart_needed = True def display_warning(self): - m = QMessageBox(self.parent_widget) + m = QMessageBox(self.parent()) m.setText('You need to restart the server for the changes to take effect') m.setWindowTitle('Warning') m.setIcon(QMessageBox.Information) diff --git a/cutelog/utils.py b/cutelog/utils.py index 3f06c32cc32cd386a15bedf8c484c45d51932ae9..0a132858db59ce7934b64ee155740cccd78eb7c4 100644 --- a/cutelog/utils.py +++ b/cutelog/utils.py @@ -1,6 +1,7 @@ import qtpy from qtpy.QtCore import QMetaObject, Qt from qtpy.QtWidgets import QDesktopWidget, QMessageBox +from .text_view_dialog import TextViewDialog def show_info_dialog(parent, title, text): @@ -26,6 +27,14 @@ def show_dialog(parent, title, text, icon): center_widget_on_screen(m) +def show_textview_dialog(parent, title, text, icon=QMessageBox.Information): + d = TextViewDialog(parent, text) + d.setWindowModality(Qt.NonModal) + d.setAttribute(Qt.WA_DeleteOnClose, True) + d.setWindowTitle(title) + d.open() + + def center_widget_on_screen(widget): rect = widget.frameGeometry() center = QDesktopWidget().availableGeometry().center() diff --git a/setup.py b/setup.py index 131121b2a276021999758a85f27dded0e8d30fb1..32d3230305618afcafd0b4097f0280602f94d611 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ from setuptools import setup from setuptools.command.install import install -VERSION = '2.0.3' +VERSION = '2.0.4' def build_qt_resources():