rbeesoft 1.0.1__py3-none-any.whl → 1.0.2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
rbeesoft/app.py CHANGED
@@ -1,23 +1,23 @@
1
- import sys
2
-
3
- from PySide6 import QtWidgets
4
-
5
- import rbeesoft.ui.constants as constants
6
-
7
- from rbeesoft.ui.settings import Settings
8
- from rbeesoft.ui.mainwindow import MainWindow
9
-
10
-
11
- def main():
12
- settings = Settings()
13
- application_name = settings.get(constants.RBEESOFT_WINDOW_TITLE)
14
- QtWidgets.QApplication.setApplicationName(application_name)
15
- app = QtWidgets.QApplication(sys.argv)
16
- app.setApplicationName(application_name)
17
- main_window = MainWindow()
18
- main_window.show()
19
- sys.exit(app.exec())
20
-
21
-
22
- if __name__ == '__main__':
1
+ import sys
2
+
3
+ from PySide6 import QtWidgets
4
+
5
+ import rbeesoft.ui.constants as constants
6
+
7
+ from rbeesoft.ui.settings import Settings
8
+ from rbeesoft.ui.mainwindow import MainWindow
9
+
10
+
11
+ def main():
12
+ settings = Settings()
13
+ application_name = settings.get(constants.RBEESOFT_WINDOW_TITLE)
14
+ QtWidgets.QApplication.setApplicationName(application_name)
15
+ app = QtWidgets.QApplication(sys.argv)
16
+ app.setApplicationName(application_name)
17
+ main_window = MainWindow()
18
+ main_window.show()
19
+ sys.exit(app.exec())
20
+
21
+
22
+ if __name__ == '__main__':
23
23
  main()
@@ -1,9 +1,9 @@
1
- def singleton(cls):
2
- _instances = {}
3
-
4
- def instance(*args, **kwargs):
5
- if cls not in _instances:
6
- _instances[cls] = cls(*args, **kwargs)
7
- return _instances[cls]
8
-
1
+ def singleton(cls):
2
+ _instances = {}
3
+
4
+ def instance(*args, **kwargs):
5
+ if cls not in _instances:
6
+ _instances[cls] = cls(*args, **kwargs)
7
+ return _instances[cls]
8
+
9
9
  return instance
@@ -1,10 +1,10 @@
1
- import pendulum
2
-
3
-
4
- def create_name_with_timestamp(prefix: str='') -> str:
5
- tz = pendulum.local_timezone()
6
- timestamp = pendulum.now(tz).strftime('%Y%m%d%H%M%S%f')[:17]
7
- if prefix != '' and not prefix.endswith('-'):
8
- prefix = prefix + '-'
9
- name = f'{prefix}{timestamp}'
1
+ import pendulum
2
+
3
+
4
+ def create_name_with_timestamp(prefix: str='') -> str:
5
+ tz = pendulum.local_timezone()
6
+ timestamp = pendulum.now(tz).strftime('%Y%m%d%H%M%S%f')[:17]
7
+ if prefix != '' and not prefix.endswith('-'):
8
+ prefix = prefix + '-'
9
+ name = f'{prefix}{timestamp}'
10
10
  return name
@@ -1,35 +1,35 @@
1
- import datetime
2
-
3
- from rbeesoft.core.singleton import singleton
4
-
5
-
6
- @singleton
7
- class LogManager:
8
- def __init__(self, suppress_print=False):
9
- self._suppress_print = suppress_print
10
- self._listeners = []
11
-
12
- def _log(self, level, message):
13
- timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
14
- message = f'[{timestamp}] {level} : {message}'
15
- if not self._suppress_print:
16
- print(message)
17
- self.notify_listeners(message)
18
- return message
19
-
20
- def info(self, message):
21
- return self._log('INFO', message)
22
-
23
- def warning(self, message):
24
- return self._log('WARNING', message)
25
-
26
- def error(self, message):
27
- return self._log('ERROR', message)
28
-
29
- def add_listener(self, listener):
30
- if listener not in self._listeners:
31
- self._listeners.append(listener)
32
-
33
- def notify_listeners(self, message):
34
- for listener in self._listeners:
35
- listener.new_message(message)
1
+ import datetime
2
+
3
+ from rbeesoft.core.singleton import singleton
4
+
5
+
6
+ @singleton
7
+ class LogManager:
8
+ def __init__(self, suppress_print=False):
9
+ self._suppress_print = suppress_print
10
+ self._listeners = []
11
+
12
+ def _log(self, level, message):
13
+ timestamp = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
14
+ message = f'[{timestamp}] {level} : {message}'
15
+ if not self._suppress_print:
16
+ print(message)
17
+ self.notify_listeners(message)
18
+ return message
19
+
20
+ def info(self, message):
21
+ return self._log('INFO', message)
22
+
23
+ def warning(self, message):
24
+ return self._log('WARNING', message)
25
+
26
+ def error(self, message):
27
+ return self._log('ERROR', message)
28
+
29
+ def add_listener(self, listener):
30
+ if listener not in self._listeners:
31
+ self._listeners.append(listener)
32
+
33
+ def notify_listeners(self, message):
34
+ for listener in self._listeners:
35
+ listener.new_message(message)
@@ -1,3 +1,3 @@
1
- class LogManagerListener:
2
- def new_message(self, message):
1
+ class LogManagerListener:
2
+ def new_message(self, message):
3
3
  raise NotImplementedError()
rbeesoft/ui/constants.py CHANGED
@@ -1,44 +1,44 @@
1
- from PySide6.QtWidgets import QStyle
2
-
3
- from rbeesoft.ui.utils import is_macos
4
-
5
-
6
- # MAIN APPLICATION
7
- RBEESOFT_WINDOW_TITLE = 'Rbeesoft'
8
- RBEESOFT_NAME = 'rbeesoft'
9
- RBEESOFT_BUNDLE_IDENTIFIER = 'com.rbeesoft'
10
- RBEESOFT_WINDOW_W = 1024
11
- RBEESOFT_WINDOW_H = 600
12
- RBEESOFT_WINDOW_GEOMETRY_KEY = 'window/geometry'
13
- RBEESOFT_WINDOW_STATE_KEY = 'window/state'
14
- RBEESOFT_STATUS_READY = 'Ready'
15
- RBEESOFT_DONATE_URL = 'https://rbeesoft.nl/wordpress/'
16
- RBEESOFT_DONATE_BUTTON_TEXT = 'If you wish to support us, please consider a donation by clicking here!'
17
- RBEESOFT_DONATE_BUTTON_STYLESHEET = 'background-color: blue; color: white; font-weight: bold;'
18
- RBEESOFT_LAST_DIRECTORY_KEY = 'last_directory'
19
- # https://www.pythonguis.com/faq/built-in-qicons-pyqt/#qt-standard-icons
20
- RBEESOFT_ICON_EXIT = QStyle.SP_MessageBoxCritical
21
- RBEESOFT_ICON_SETTINGS = QStyle.SP_VistaShield
22
-
23
- # RESOURCES
24
- RBEESOFT_RESOURCES_DIR = 'rbeesoft/resources'
25
- RBEESOFT_RESOURCES_IMAGES_DIR = 'rbeesoft/resources/images'
26
- RBEESOFT_RESOURCES_IMAGES_ICONS_DIR = 'rbeesoft/resources/images/icons'
27
- RBEESOFT_RESOURCES_ICON = 'rbeesoft.icns' if is_macos() else 'rbeesoft.ico'
28
-
29
- # MENUS
30
- RBEESOFT_APP_MENU_TEXT = 'Application'
31
- RBEESOFT_APP_MENU_OPEN_SETTINGS_PANEL_ACTION_TEXT = 'Settings...'
32
- RBEESOFT_APP_MENU_EXIT_ACTION_TEXT = 'Exit'
33
-
34
- # PANELS
35
- RBEESOFT_MAIN_PANEL_NAME = 'mainpanel'
36
- RBEESOFT_MAIN_PANEL_NAME_TITLE_LABEL_STYLESHEET = 'color: black; font-weight: bold; font-size: 14pt;'
37
- RBEESOFT_LOG_PANEL_TITLE = 'Output log'
38
- RBEESOFT_LOG_PANEL_NAME = 'logpanel'
39
- RBEESOFT_LOG_PANEL_CLEAR_LOGS_BUTTON = 'Clear logs'
40
- RBEESOFT_SETTINGS_PANEL_TITLE = 'Settings'
41
- RBEESOFT_SETTINGS_PANEL_NAME ='settingspanel'
42
- RBEESOFT_SETTINGS_PANEL_NAME_COLUMN_NAME = 'NAME'
43
- RBEESOFT_SETTINGS_PANEL_VALUE_COLUMN_NAME = 'VALUE'
1
+ from PySide6.QtWidgets import QStyle
2
+
3
+ from rbeesoft.ui.utils import is_macos
4
+
5
+
6
+ # MAIN APPLICATION
7
+ RBEESOFT_WINDOW_TITLE = 'Rbeesoft'
8
+ RBEESOFT_NAME = 'rbeesoft'
9
+ RBEESOFT_BUNDLE_IDENTIFIER = 'com.rbeesoft'
10
+ RBEESOFT_WINDOW_W = 1024
11
+ RBEESOFT_WINDOW_H = 600
12
+ RBEESOFT_WINDOW_GEOMETRY_KEY = 'window/geometry'
13
+ RBEESOFT_WINDOW_STATE_KEY = 'window/state'
14
+ RBEESOFT_STATUS_READY = 'Ready'
15
+ RBEESOFT_DONATE_URL = 'https://rbeesoft.nl/wordpress/'
16
+ RBEESOFT_DONATE_BUTTON_TEXT = 'If you wish to support us, please consider a donation by clicking here!'
17
+ RBEESOFT_DONATE_BUTTON_STYLESHEET = 'background-color: blue; color: white; font-weight: bold;'
18
+ RBEESOFT_LAST_DIRECTORY_KEY = 'last_directory'
19
+ # https://www.pythonguis.com/faq/built-in-qicons-pyqt/#qt-standard-icons
20
+ RBEESOFT_ICON_EXIT = QStyle.SP_MessageBoxCritical
21
+ RBEESOFT_ICON_SETTINGS = QStyle.SP_VistaShield
22
+
23
+ # RESOURCES
24
+ RBEESOFT_RESOURCES_DIR = 'rbeesoft/resources'
25
+ RBEESOFT_RESOURCES_IMAGES_DIR = 'rbeesoft/resources/images'
26
+ RBEESOFT_RESOURCES_IMAGES_ICONS_DIR = 'rbeesoft/resources/images/icons'
27
+ RBEESOFT_RESOURCES_ICON = 'rbeesoft.icns' if is_macos() else 'rbeesoft.ico'
28
+
29
+ # MENUS
30
+ RBEESOFT_APP_MENU_TEXT = 'Application'
31
+ RBEESOFT_APP_MENU_OPEN_SETTINGS_PANEL_ACTION_TEXT = 'Settings...'
32
+ RBEESOFT_APP_MENU_EXIT_ACTION_TEXT = 'Exit'
33
+
34
+ # PANELS
35
+ RBEESOFT_MAIN_PANEL_NAME = 'mainpanel'
36
+ RBEESOFT_MAIN_PANEL_NAME_TITLE_LABEL_STYLESHEET = 'color: black; font-weight: bold; font-size: 14pt;'
37
+ RBEESOFT_LOG_PANEL_TITLE = 'Output log'
38
+ RBEESOFT_LOG_PANEL_NAME = 'logpanel'
39
+ RBEESOFT_LOG_PANEL_CLEAR_LOGS_BUTTON = 'Clear logs'
40
+ RBEESOFT_SETTINGS_PANEL_TITLE = 'Settings'
41
+ RBEESOFT_SETTINGS_PANEL_NAME ='settingspanel'
42
+ RBEESOFT_SETTINGS_PANEL_NAME_COLUMN_NAME = 'NAME'
43
+ RBEESOFT_SETTINGS_PANEL_VALUE_COLUMN_NAME = 'VALUE'
44
44
  RBEESOFT_SETTINGS_PANEL_CANNOT_DISPLAY_MESSAGE = 'Cannot display (binary data)'
rbeesoft/ui/mainwindow.py CHANGED
@@ -1,127 +1,127 @@
1
- import os
2
-
3
- from PySide6.QtWidgets import (
4
- QMainWindow,
5
- )
6
- from PySide6.QtGui import (
7
- QGuiApplication,
8
- QAction,
9
- QIcon,
10
- )
11
- from PySide6.QtCore import Qt, QByteArray
12
-
13
- import rbeesoft.ui.constants as constants
14
-
15
- from rbeesoft.ui.settings import Settings
16
- from rbeesoft.ui.panels.mainpanel import MainPanel
17
- from rbeesoft.ui.panels.logpanel import LogPanel
18
- from rbeesoft.ui.panels.settingspanel import SettingsPanel
19
- from rbeesoft.ui.utils import resource_path, version, is_macos
20
- from rbeesoft.core.utils.logmanager import LogManager
21
-
22
- LOG = LogManager()
23
-
24
-
25
- class MainWindow(QMainWindow):
26
- def __init__(self):
27
- super(MainWindow, self).__init__()
28
- self._settings = None
29
- self._main_panel = None
30
- self._settings_panel = None
31
- self._log_panel = None
32
- self.init_window()
33
-
34
- def init_window(self):
35
- self.setWindowTitle(f'{constants.RBEESOFT_WINDOW_TITLE} {version(constants.RBEESOFT_NAME)}')
36
- self.setWindowIcon(QIcon(resource_path(os.path.join(
37
- constants.RBEESOFT_RESOURCES_IMAGES_ICONS_DIR, constants.RBEESOFT_RESOURCES_ICON))))
38
- if not self.load_geometry_and_state():
39
- self.set_default_size_and_position()
40
- self.init_menus()
41
- self.init_status_bar()
42
- self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.main_panel())
43
- self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.log_panel())
44
-
45
- def init_menus(self):
46
- self.init_app_menu()
47
- if is_macos():
48
- self.menuBar().setNativeMenuBar(False)
49
-
50
- def init_app_menu(self):
51
- open_settings_action = QAction(constants.RBEESOFT_APP_MENU_OPEN_SETTINGS_PANEL_ACTION_TEXT, self)
52
- open_settings_action.triggered.connect(self.handle_open_settings_panel_action)
53
- exit_action = QAction(constants.RBEESOFT_APP_MENU_EXIT_ACTION_TEXT, self)
54
- exit_action.triggered.connect(self.close)
55
- app_menu = self.menuBar().addMenu(constants.RBEESOFT_APP_MENU_TEXT)
56
- app_menu.addAction(open_settings_action)
57
- app_menu.addAction(exit_action)
58
-
59
- def init_status_bar(self):
60
- self.set_status(constants.RBEESOFT_STATUS_READY)
61
-
62
- # GETTERS
63
-
64
- def settings(self):
65
- if not self._settings:
66
- self._settings = Settings()
67
- return self._settings
68
-
69
- def main_panel(self):
70
- if not self._main_panel:
71
- self._main_panel = MainPanel(self)
72
- self._main_panel.add_panel(
73
- self.settings_panel(), constants.RBEESOFT_SETTINGS_PANEL_NAME)
74
- self._main_panel.select_panel(constants.RBEESOFT_SETTINGS_PANEL_NAME)
75
- return self._main_panel
76
-
77
- def settings_panel(self):
78
- if not self._settings_panel:
79
- self._settings_panel = SettingsPanel()
80
- return self._settings_panel
81
-
82
- def log_panel(self):
83
- if not self._log_panel:
84
- self._log_panel = LogPanel()
85
- LOG.add_listener(self._log_panel)
86
- return self._log_panel
87
-
88
- # SETTERS
89
-
90
- def set_status(self, message):
91
- self.statusBar().showMessage(message)
92
-
93
- # EVENT HANDLERS
94
-
95
- def handle_open_settings_panel_action(self):
96
- self.main_panel().select_panel(constants.RBEESOFT_SETTINGS_PANEL_NAME)
97
-
98
- def closeEvent(self, event):
99
- self.save_geometry_and_state()
100
- return super().closeEvent(event)
101
-
102
- # MISCELLANEOUS
103
-
104
- def load_geometry_and_state(self):
105
- geometry = self.settings().get(constants.RBEESOFT_WINDOW_GEOMETRY_KEY)
106
- state = self.settings().get(constants.RBEESOFT_WINDOW_STATE_KEY)
107
- if isinstance(geometry, QByteArray) and self.restoreGeometry(geometry):
108
- if isinstance(state, QByteArray):
109
- self.restoreState(state)
110
- return True
111
- return False
112
-
113
- def save_geometry_and_state(self):
114
- self.settings().set(
115
- constants.RBEESOFT_WINDOW_GEOMETRY_KEY, self.saveGeometry())
116
- self.settings().set(
117
- constants.RBEESOFT_WINDOW_STATE_KEY, self.saveState())
118
-
119
- def set_default_size_and_position(self):
120
- self.resize(constants.RBEESOFT_WINDOW_W, constants.RBEESOFT_WINDOW_H)
121
- self.center_window()
122
-
123
- def center_window(self):
124
- screen = QGuiApplication.primaryScreen().geometry()
125
- x = (screen.width() - self.geometry().width()) / 2
126
- y = (screen.height() - self.geometry().height()) / 2
1
+ import os
2
+
3
+ from PySide6.QtWidgets import (
4
+ QMainWindow,
5
+ )
6
+ from PySide6.QtGui import (
7
+ QGuiApplication,
8
+ QAction,
9
+ QIcon,
10
+ )
11
+ from PySide6.QtCore import Qt, QByteArray
12
+
13
+ import rbeesoft.ui.constants as constants
14
+
15
+ from rbeesoft.ui.settings import Settings
16
+ from rbeesoft.ui.panels.mainpanel import MainPanel
17
+ from rbeesoft.ui.panels.logpanel import LogPanel
18
+ from rbeesoft.ui.panels.settingspanel import SettingsPanel
19
+ from rbeesoft.ui.utils import resource_path, version, is_macos
20
+ from rbeesoft.core.utils.logmanager import LogManager
21
+
22
+ LOG = LogManager()
23
+
24
+
25
+ class MainWindow(QMainWindow):
26
+ def __init__(self):
27
+ super(MainWindow, self).__init__()
28
+ self._settings = None
29
+ self._main_panel = None
30
+ self._settings_panel = None
31
+ self._log_panel = None
32
+ self.init_window()
33
+
34
+ def init_window(self):
35
+ self.setWindowTitle(f'{constants.RBEESOFT_WINDOW_TITLE} {version(constants.RBEESOFT_NAME)}')
36
+ self.setWindowIcon(QIcon(resource_path(os.path.join(
37
+ constants.RBEESOFT_RESOURCES_IMAGES_ICONS_DIR, constants.RBEESOFT_RESOURCES_ICON))))
38
+ if not self.load_geometry_and_state():
39
+ self.set_default_size_and_position()
40
+ self.init_menus()
41
+ self.init_status_bar()
42
+ self.addDockWidget(Qt.DockWidgetArea.TopDockWidgetArea, self.main_panel())
43
+ self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.log_panel())
44
+
45
+ def init_menus(self):
46
+ self.init_app_menu()
47
+ if is_macos():
48
+ self.menuBar().setNativeMenuBar(False)
49
+
50
+ def init_app_menu(self):
51
+ open_settings_action = QAction(constants.RBEESOFT_APP_MENU_OPEN_SETTINGS_PANEL_ACTION_TEXT, self)
52
+ open_settings_action.triggered.connect(self.handle_open_settings_panel_action)
53
+ exit_action = QAction(constants.RBEESOFT_APP_MENU_EXIT_ACTION_TEXT, self)
54
+ exit_action.triggered.connect(self.close)
55
+ app_menu = self.menuBar().addMenu(constants.RBEESOFT_APP_MENU_TEXT)
56
+ app_menu.addAction(open_settings_action)
57
+ app_menu.addAction(exit_action)
58
+
59
+ def init_status_bar(self):
60
+ self.set_status(constants.RBEESOFT_STATUS_READY)
61
+
62
+ # GETTERS
63
+
64
+ def settings(self):
65
+ if not self._settings:
66
+ self._settings = Settings()
67
+ return self._settings
68
+
69
+ def main_panel(self):
70
+ if not self._main_panel:
71
+ self._main_panel = MainPanel(self)
72
+ self._main_panel.add_panel(
73
+ self.settings_panel(), constants.RBEESOFT_SETTINGS_PANEL_NAME)
74
+ self._main_panel.select_panel(constants.RBEESOFT_SETTINGS_PANEL_NAME)
75
+ return self._main_panel
76
+
77
+ def settings_panel(self):
78
+ if not self._settings_panel:
79
+ self._settings_panel = SettingsPanel()
80
+ return self._settings_panel
81
+
82
+ def log_panel(self):
83
+ if not self._log_panel:
84
+ self._log_panel = LogPanel()
85
+ LOG.add_listener(self._log_panel)
86
+ return self._log_panel
87
+
88
+ # SETTERS
89
+
90
+ def set_status(self, message):
91
+ self.statusBar().showMessage(message)
92
+
93
+ # EVENT HANDLERS
94
+
95
+ def handle_open_settings_panel_action(self):
96
+ self.main_panel().select_panel(constants.RBEESOFT_SETTINGS_PANEL_NAME)
97
+
98
+ def closeEvent(self, event):
99
+ self.save_geometry_and_state()
100
+ return super().closeEvent(event)
101
+
102
+ # MISCELLANEOUS
103
+
104
+ def load_geometry_and_state(self):
105
+ geometry = self.settings().get(constants.RBEESOFT_WINDOW_GEOMETRY_KEY)
106
+ state = self.settings().get(constants.RBEESOFT_WINDOW_STATE_KEY)
107
+ if isinstance(geometry, QByteArray) and self.restoreGeometry(geometry):
108
+ if isinstance(state, QByteArray):
109
+ self.restoreState(state)
110
+ return True
111
+ return False
112
+
113
+ def save_geometry_and_state(self):
114
+ self.settings().set(
115
+ constants.RBEESOFT_WINDOW_GEOMETRY_KEY, self.saveGeometry())
116
+ self.settings().set(
117
+ constants.RBEESOFT_WINDOW_STATE_KEY, self.saveState())
118
+
119
+ def set_default_size_and_position(self):
120
+ self.resize(constants.RBEESOFT_WINDOW_W, constants.RBEESOFT_WINDOW_H)
121
+ self.center_window()
122
+
123
+ def center_window(self):
124
+ screen = QGuiApplication.primaryScreen().geometry()
125
+ x = (screen.width() - self.geometry().width()) / 2
126
+ y = (screen.height() - self.geometry().height()) / 2
127
127
  self.move(int(x), int(y))
@@ -1,13 +1,13 @@
1
- from PySide6.QtWidgets import QWidget
2
-
3
-
4
- class DefaultPanel(QWidget):
5
- def __init__(self):
6
- super(DefaultPanel, self).__init__()
7
- self._title = None
8
-
9
- def title(self):
10
- return self._title
11
-
12
- def set_title(self, title):
1
+ from PySide6.QtWidgets import QWidget
2
+
3
+
4
+ class DefaultPanel(QWidget):
5
+ def __init__(self):
6
+ super(DefaultPanel, self).__init__()
7
+ self._title = None
8
+
9
+ def title(self):
10
+ return self._title
11
+
12
+ def set_title(self, title):
13
13
  self._title = title
@@ -1,53 +1,53 @@
1
- from PySide6.QtWidgets import (
2
- QWidget,
3
- QDockWidget,
4
- QTextEdit,
5
- QPushButton,
6
- QVBoxLayout,
7
- QLabel,
8
- )
9
-
10
- import rbeesoft.ui.constants as constants
11
-
12
- from rbeesoft.core.utils.logmanagerlistener import LogManagerListener
13
-
14
-
15
- class LogPanel(QDockWidget, LogManagerListener):
16
- def __init__(self):
17
- super(LogPanel, self).__init__()
18
- self._title_label = None
19
- self._text_edit = None
20
- self.init_layout()
21
-
22
- def title_label(self):
23
- if not self._title_label:
24
- self._title_label = QLabel(constants.RBEESOFT_LOG_PANEL_TITLE)
25
- return self._title_label
26
-
27
- def text_edit(self):
28
- if not self._text_edit:
29
- self._text_edit = QTextEdit()
30
- return self._text_edit
31
-
32
- def init_layout(self):
33
- clear_logs_button = QPushButton(constants.RBEESOFT_LOG_PANEL_CLEAR_LOGS_BUTTON)
34
- clear_logs_button.clicked.connect(self.handle_clear_logs_button)
35
- layout = QVBoxLayout()
36
- # layout.addWidget(self.title_label())
37
- layout.addWidget(self.text_edit())
38
- layout.addWidget(clear_logs_button)
39
- container = QWidget()
40
- container.setLayout(layout)
41
- self.setObjectName(constants.RBEESOFT_LOG_PANEL_NAME)
42
- self.setWindowTitle(self.title_label().text())
43
- self.setWidget(container)
44
-
45
- def add_line(self, line):
46
- self.text_edit().insertPlainText(line + '\n')
47
-
48
- def handle_clear_logs_button(self):
49
- self.text_edit().clear()
50
-
51
- # implements(LogManagerListener)
52
- def new_message(self, message):
1
+ from PySide6.QtWidgets import (
2
+ QWidget,
3
+ QDockWidget,
4
+ QTextEdit,
5
+ QPushButton,
6
+ QVBoxLayout,
7
+ QLabel,
8
+ )
9
+
10
+ import rbeesoft.ui.constants as constants
11
+
12
+ from rbeesoft.core.utils.logmanagerlistener import LogManagerListener
13
+
14
+
15
+ class LogPanel(QDockWidget, LogManagerListener):
16
+ def __init__(self):
17
+ super(LogPanel, self).__init__()
18
+ self._title_label = None
19
+ self._text_edit = None
20
+ self.init_layout()
21
+
22
+ def title_label(self):
23
+ if not self._title_label:
24
+ self._title_label = QLabel(constants.RBEESOFT_LOG_PANEL_TITLE)
25
+ return self._title_label
26
+
27
+ def text_edit(self):
28
+ if not self._text_edit:
29
+ self._text_edit = QTextEdit()
30
+ return self._text_edit
31
+
32
+ def init_layout(self):
33
+ clear_logs_button = QPushButton(constants.RBEESOFT_LOG_PANEL_CLEAR_LOGS_BUTTON)
34
+ clear_logs_button.clicked.connect(self.handle_clear_logs_button)
35
+ layout = QVBoxLayout()
36
+ # layout.addWidget(self.title_label())
37
+ layout.addWidget(self.text_edit())
38
+ layout.addWidget(clear_logs_button)
39
+ container = QWidget()
40
+ container.setLayout(layout)
41
+ self.setObjectName(constants.RBEESOFT_LOG_PANEL_NAME)
42
+ self.setWindowTitle(self.title_label().text())
43
+ self.setWidget(container)
44
+
45
+ def add_line(self, line):
46
+ self.text_edit().insertPlainText(line + '\n')
47
+
48
+ def handle_clear_logs_button(self):
49
+ self.text_edit().clear()
50
+
51
+ # implements(LogManagerListener)
52
+ def new_message(self, message):
53
53
  self.add_line(message)