rbeesoft 1.0.1__py3-none-any.whl → 1.0.3__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.
File without changes
@@ -0,0 +1,121 @@
1
+ import os
2
+ import webbrowser
3
+
4
+ from PySide6.QtWidgets import (
5
+ QWidget,
6
+ QVBoxLayout,
7
+ QPushButton,
8
+ QLabel,
9
+ )
10
+ from PySide6.QtCore import Qt
11
+ from PySide6.QtGui import QPixmap
12
+
13
+ from rbeesoft.ui.constants import Constants
14
+
15
+ from rbeesoft.ui.utils import resource_path, set_opacity
16
+
17
+
18
+ class SplashScreen(QWidget):
19
+ def __init__(self, main_window, title, background_image_file_path=None):
20
+ super(SplashScreen, self).__init__()
21
+ self._main_window = main_window
22
+ self._title = title
23
+ self._background_image_file_path = background_image_file_path
24
+ self._background_label = None
25
+ self._background_pixmap = None
26
+ self._title_label = None
27
+ self._sub_text_label = None
28
+ self._start_app_button = None
29
+ self._donate_button = None
30
+ self._close_button = None
31
+ self.init_layout()
32
+
33
+ def main_window(self):
34
+ return self._main_window
35
+
36
+ def title(self):
37
+ return self._title
38
+
39
+ def background_image_file_path(self):
40
+ return self._background_image_file_path
41
+
42
+ def background_label(self):
43
+ if not self._background_label and self._background_image_file_path:
44
+ self._background_label = QLabel(self)
45
+ self._background_label.setPixmap(self.background_pixmap())
46
+ self._background_label.setGeometry(0, 0, self.width(), self.height())
47
+ self._background_label.lower()
48
+ return self._background_label
49
+
50
+ def background_pixmap(self):
51
+ if not self._background_pixmap and self._background_image_file_path:
52
+ self._background_pixmap = QPixmap(resource_path(os.path.join(
53
+ Constants.RBEESOFT_RESOURCES_IMAGES_DIR,
54
+ Constants.RBEESOFT_SPLASH_SCREEN_BACKGROUND_IMAGE,
55
+ ))).scaled(self.size(), Qt.IgnoreAspectRatio, Qt.SmoothTransformation)
56
+ self._background_pixmap = set_opacity(self._background_pixmap, Constants.RBEESOFT_SPLASH_SCREEN_BACKGROUND_IMAGE_OPACITY)
57
+ return self._background_pixmap
58
+
59
+ def title_label(self):
60
+ if not self._title_label:
61
+ self._title_label = QLabel(Constants.RBEESOFT_SPLASH_SCREEN_TITLE)
62
+ self._title_label.setStyleSheet(Constants.RBEESOFT_SPLASH_SCREEN_TITLE_STYLE_SHEET)
63
+ self._title_label.setAlignment(Qt.AlignCenter)
64
+ return self._title_label
65
+
66
+ def sub_text_label(self):
67
+ if not self._sub_text_label:
68
+ self._sub_text_label = QLabel(Constants.RBEESOFT_SPLASH_SCREEN_SUB_TEXT)
69
+ self._sub_text_label.setStyleSheet(Constants.RBEESOFT_SPLASH_SCREEN_SUB_TEXT_STYLE_SHEET)
70
+ self._sub_text_label.setAlignment(Qt.AlignCenter)
71
+ return self._sub_text_label
72
+
73
+ def start_app_button(self):
74
+ if not self._start_app_button:
75
+ self._start_app_button = QPushButton(Constants.RBEESOFT_SPLASH_SCREEN_START_APP_BUTTON_TEXT)
76
+ self._start_app_button.clicked.connect(self.handle_start_app_button)
77
+ return self._start_app_button
78
+
79
+ def donate_button(self):
80
+ if not self._donate_button:
81
+ self._donate_button = QPushButton(Constants.RBEESOFT_DONATE_BUTTON_TEXT)
82
+ self._donate_button.setStyleSheet(Constants.RBEESOFT_DONATE_BUTTON_STYLESHEET)
83
+ self._donate_button.clicked.connect(self.handle_donate_button)
84
+ return self._donate_button
85
+
86
+ def close_button(self):
87
+ if not self._close_button:
88
+ self._close_button = QPushButton(Constants.RBEESOFT_SPLASH_SCREEN_CLOSE_BUTTON_TEXT)
89
+ self._close_button.clicked.connect(self.handle_close_button)
90
+ return self._close_button
91
+
92
+ # LAYOUT
93
+
94
+ def init_layout(self):
95
+ layout = QVBoxLayout()
96
+ layout.addWidget(self.title_label())
97
+ layout.addWidget(self.sub_text_label())
98
+ layout.addWidget(self.start_app_button())
99
+ # layout.addWidget(self.donate_button())
100
+ layout.addWidget(self.close_button())
101
+ self.setLayout(layout)
102
+ self.setFixedSize(Constants.RBEESOFT_SPLASH_SCREEN_WINDOW_W, Constants.RBEESOFT_SPLASH_SCREEN_WINDOW_H)
103
+ self.setWindowFlags(Qt.FramelessWindowHint)
104
+
105
+ # EVENT HANDLERS
106
+
107
+ def handle_start_app_button(self):
108
+ self.close()
109
+ self.main_window().show()
110
+
111
+ def handle_donate_button(self):
112
+ webbrowser.open(Constants.RBEESOFT_DONATE_URL)
113
+
114
+ def handle_close_button(self):
115
+ self.close()
116
+
117
+ def resizeEvent(self, event):
118
+ super().resizeEvent(event)
119
+ scaled = self.background_pixmap().scaled(self.size(), Qt.KeepAspectRatioByExpanding, Qt.SmoothTransformation)
120
+ self.background_label().setPixmap(scaled)
121
+ self.background_label().setGeometry(0, 0, self.width(), self.height())
rbeesoft/ui/constants.py CHANGED
@@ -3,42 +3,43 @@ from PySide6.QtWidgets import QStyle
3
3
  from rbeesoft.ui.utils import is_macos
4
4
 
5
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
6
+ class Constants:
7
+ # MAIN APPLICATION
8
+ RBEESOFT_WINDOW_TITLE = 'Rbeesoft'
9
+ RBEESOFT_NAME = 'rbeesoft'
10
+ RBEESOFT_BUNDLE_IDENTIFIER = 'com.rbeesoft'
11
+ RBEESOFT_WINDOW_W = 1024
12
+ RBEESOFT_WINDOW_H = 600
13
+ RBEESOFT_WINDOW_GEOMETRY_KEY = 'window/geometry'
14
+ RBEESOFT_WINDOW_STATE_KEY = 'window/state'
15
+ RBEESOFT_STATUS_READY = 'Ready'
16
+ RBEESOFT_DONATE_URL = 'https://rbeesoft.nl/wordpress/'
17
+ RBEESOFT_DONATE_BUTTON_TEXT = 'If you wish to support us, please consider a donation by clicking here!'
18
+ RBEESOFT_DONATE_BUTTON_STYLESHEET = 'background-color: blue; color: white; font-weight: bold;'
19
+ RBEESOFT_LAST_DIRECTORY_KEY = 'last_directory'
20
+ # https://www.pythonguis.com/faq/built-in-qicons-pyqt/#qt-standard-icons
21
+ RBEESOFT_ICON_EXIT = QStyle.SP_MessageBoxCritical
22
+ RBEESOFT_ICON_SETTINGS = QStyle.SP_VistaShield
22
23
 
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'
24
+ # RESOURCES
25
+ RBEESOFT_RESOURCES_DIR = 'rbeesoft/resources'
26
+ RBEESOFT_RESOURCES_IMAGES_DIR = 'rbeesoft/resources/images'
27
+ RBEESOFT_RESOURCES_IMAGES_ICONS_DIR = 'rbeesoft/resources/images/icons'
28
+ RBEESOFT_RESOURCES_ICON = 'rbeesoft.icns' if is_macos() else 'rbeesoft.ico'
28
29
 
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'
30
+ # MENUS
31
+ RBEESOFT_APP_MENU_TEXT = 'Application'
32
+ RBEESOFT_APP_MENU_OPEN_SETTINGS_PANEL_ACTION_TEXT = 'Settings...'
33
+ RBEESOFT_APP_MENU_EXIT_ACTION_TEXT = 'Exit'
33
34
 
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
- RBEESOFT_SETTINGS_PANEL_CANNOT_DISPLAY_MESSAGE = 'Cannot display (binary data)'
35
+ # PANELS
36
+ RBEESOFT_MAIN_PANEL_NAME = 'mainpanel'
37
+ RBEESOFT_MAIN_PANEL_NAME_TITLE_LABEL_STYLESHEET = 'color: black; font-weight: bold; font-size: 14pt;'
38
+ RBEESOFT_LOG_PANEL_TITLE = 'Output log'
39
+ RBEESOFT_LOG_PANEL_NAME = 'logpanel'
40
+ RBEESOFT_LOG_PANEL_CLEAR_LOGS_BUTTON = 'Clear logs'
41
+ RBEESOFT_SETTINGS_PANEL_TITLE = 'Settings'
42
+ RBEESOFT_SETTINGS_PANEL_NAME ='settingspanel'
43
+ RBEESOFT_SETTINGS_PANEL_NAME_COLUMN_NAME = 'NAME'
44
+ RBEESOFT_SETTINGS_PANEL_VALUE_COLUMN_NAME = 'VALUE'
45
+ RBEESOFT_SETTINGS_PANEL_CANNOT_DISPLAY_MESSAGE = 'Cannot display (binary data)'
rbeesoft/ui/mainwindow.py CHANGED
@@ -5,59 +5,27 @@ from PySide6.QtWidgets import (
5
5
  )
6
6
  from PySide6.QtGui import (
7
7
  QGuiApplication,
8
- QAction,
9
8
  QIcon,
10
9
  )
11
10
  from PySide6.QtCore import Qt, QByteArray
12
11
 
13
- import rbeesoft.ui.constants as constants
14
-
12
+ from rbeesoft.ui.constants import Constants
15
13
  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()
14
+ from rbeesoft.ui.utils import resource_path, version
23
15
 
24
16
 
25
17
  class MainWindow(QMainWindow):
26
18
  def __init__(self):
27
19
  super(MainWindow, self).__init__()
28
20
  self._settings = None
29
- self._main_panel = None
30
- self._settings_panel = None
31
- self._log_panel = None
32
21
  self.init_window()
33
22
 
34
23
  def init_window(self):
35
- self.setWindowTitle(f'{constants.RBEESOFT_WINDOW_TITLE} {version(constants.RBEESOFT_NAME)}')
24
+ self.setWindowTitle(f'{Constants.RBEESOFT_WINDOW_TITLE} {version(Constants.RBEESOFT_NAME)}')
36
25
  self.setWindowIcon(QIcon(resource_path(os.path.join(
37
- constants.RBEESOFT_RESOURCES_IMAGES_ICONS_DIR, constants.RBEESOFT_RESOURCES_ICON))))
26
+ Constants.RBEESOFT_RESOURCES_IMAGES_ICONS_DIR, Constants.RBEESOFT_RESOURCES_ICON))))
38
27
  if not self.load_geometry_and_state():
39
28
  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
29
 
62
30
  # GETTERS
63
31
 
@@ -66,35 +34,6 @@ class MainWindow(QMainWindow):
66
34
  self._settings = Settings()
67
35
  return self._settings
68
36
 
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
37
  def closeEvent(self, event):
99
38
  self.save_geometry_and_state()
100
39
  return super().closeEvent(event)
@@ -102,8 +41,8 @@ class MainWindow(QMainWindow):
102
41
  # MISCELLANEOUS
103
42
 
104
43
  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)
44
+ geometry = self.settings().get(Constants.RBEESOFT_WINDOW_GEOMETRY_KEY)
45
+ state = self.settings().get(Constants.RBEESOFT_WINDOW_STATE_KEY)
107
46
  if isinstance(geometry, QByteArray) and self.restoreGeometry(geometry):
108
47
  if isinstance(state, QByteArray):
109
48
  self.restoreState(state)
@@ -112,12 +51,12 @@ class MainWindow(QMainWindow):
112
51
 
113
52
  def save_geometry_and_state(self):
114
53
  self.settings().set(
115
- constants.RBEESOFT_WINDOW_GEOMETRY_KEY, self.saveGeometry())
54
+ Constants.RBEESOFT_WINDOW_GEOMETRY_KEY, self.saveGeometry())
116
55
  self.settings().set(
117
- constants.RBEESOFT_WINDOW_STATE_KEY, self.saveState())
56
+ Constants.RBEESOFT_WINDOW_STATE_KEY, self.saveState())
118
57
 
119
58
  def set_default_size_and_position(self):
120
- self.resize(constants.RBEESOFT_WINDOW_W, constants.RBEESOFT_WINDOW_H)
59
+ self.resize(Constants.RBEESOFT_WINDOW_W, Constants.RBEESOFT_WINDOW_H)
121
60
  self.center_window()
122
61
 
123
62
  def center_window(self):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: rbeesoft
3
- Version: 1.0.1
3
+ Version: 1.0.3
4
4
  Summary: A package repository with template components and functions
5
5
  License: MIT
6
6
  Author: Ralph Brecheisen
@@ -11,8 +11,10 @@ rbeesoft/resources/icons/rbeesoft.ico,sha256=sArRZs01WPlCQaLqQ-s79DjaspOvx_VC9ua
11
11
  rbeesoft/resources/icons/spinner.gif,sha256=rvaac6GUZauHSPFSOLWr0RmLfjmtZih2Q8knQ2WP3Po,16240
12
12
  rbeesoft/resources/VERSION,sha256=klIfw8vZZL3J9YSpkbif3apXVO0cyW1tQkRTOGacEwU,5
13
13
  rbeesoft/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- rbeesoft/ui/constants.py,sha256=xDnpQWSWLDl2OEAgEkzwpEyu2viBDB8S1P91gkiGfrQ,1866
15
- rbeesoft/ui/mainwindow.py,sha256=MZU5T78LKpGMabGnD4QzyrqLlbtvfljwTQ9FkuUgwQw,4555
14
+ rbeesoft/ui/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ rbeesoft/ui/components/splashscreen.py,sha256=yEsB4LRho84O2JwVwPX6BoQZ3IK3iwFWrL6G7sRn0JE,4872
16
+ rbeesoft/ui/constants.py,sha256=joQSsHIXiy21l6SRZz-kjp9kFVCNZjlg4bzHwdt1oIs,2028
17
+ rbeesoft/ui/mainwindow.py,sha256=Adio-6DBkGeXO36iGRqIOZzCnGO3Y-wHt-QBI_Ay4EE,2233
16
18
  rbeesoft/ui/panels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
19
  rbeesoft/ui/panels/defaultpanel.py,sha256=eZpieFy9S1NStsCT7DhLHlmZchD-cZ3EJKkH9uTxat8,290
18
20
  rbeesoft/ui/panels/logpanel.py,sha256=btmS1-6ibSXrMDOQg_Q6EKhfrw6Xt-Ik-oFHuqlHmus,1637
@@ -21,8 +23,8 @@ rbeesoft/ui/panels/settingspanel.py,sha256=WhsyefX7zZaOK4sznjuJElsxRxt4ADGtoNpcS
21
23
  rbeesoft/ui/panels/stackedpanel.py,sha256=dK1YWuHUzxRhVb5gP0Lu9rAiW4XagjcHmGF__5Lpufk,657
22
24
  rbeesoft/ui/settings.py,sha256=jE7dcyhNU3BfT2NUdWO-t1qT4ZsRWX-smPr0BaoqQQk,1006
23
25
  rbeesoft/ui/utils.py,sha256=udZZs8iy2T6k9e7ADGzhYQ1caig-Zpm0AKy6woxRcqc,797
24
- rbeesoft-1.0.1.dist-info/entry_points.txt,sha256=TxyAieXCBttKeq8DjKk6o15iqnWpjj9FOtGknE5wKI0,46
25
- rbeesoft-1.0.1.dist-info/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
26
- rbeesoft-1.0.1.dist-info/METADATA,sha256=b_vnPPtHimE31dpjMRb8c-NVSPEvlLxtfEmJM4Vcoek,588
27
- rbeesoft-1.0.1.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
28
- rbeesoft-1.0.1.dist-info/RECORD,,
26
+ rbeesoft-1.0.3.dist-info/entry_points.txt,sha256=TxyAieXCBttKeq8DjKk6o15iqnWpjj9FOtGknE5wKI0,46
27
+ rbeesoft-1.0.3.dist-info/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
28
+ rbeesoft-1.0.3.dist-info/METADATA,sha256=4MYXhgwGiRBeUXIlliKv-q-h1wKvvPLcH5UM1fIKwvk,588
29
+ rbeesoft-1.0.3.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
30
+ rbeesoft-1.0.3.dist-info/RECORD,,