rbeesoft 1.0.9__py3-none-any.whl → 2.0.1__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.
Files changed (43) hide show
  1. rbeesoft/app/core/processes/dummyprocess.py +18 -0
  2. rbeesoft/app/core/processes/process.py +64 -0
  3. rbeesoft/app/core/processes/processrunner.py +34 -0
  4. rbeesoft/app/main.py +86 -0
  5. rbeesoft/app/ui/rbeesoftmainwindow.py +77 -0
  6. rbeesoft/app/ui/settings.py +61 -0
  7. rbeesoft/app/ui/widgets/centraldockwidget.py +51 -0
  8. rbeesoft/{ui/panels/logpanel.py → app/ui/widgets/logdockwidget.py} +18 -11
  9. rbeesoft/app/ui/widgets/pages/__init__.py +0 -0
  10. rbeesoft/app/ui/widgets/pages/page.py +24 -0
  11. rbeesoft/app/ui/widgets/pages/pagerouter.py +48 -0
  12. rbeesoft/common/__init__.py +0 -0
  13. rbeesoft/{core/utils → common}/logmanager.py +12 -2
  14. rbeesoft/webapp/__init__.py +0 -0
  15. rbeesoft-2.0.1.dist-info/METADATA +13 -0
  16. rbeesoft-2.0.1.dist-info/RECORD +25 -0
  17. {rbeesoft-1.0.9.dist-info → rbeesoft-2.0.1.dist-info}/WHEEL +1 -1
  18. rbeesoft/app.py +0 -23
  19. rbeesoft/core/utils/functions.py +0 -10
  20. rbeesoft/resources/VERSION +0 -1
  21. rbeesoft/resources/icons/rbeesoft.icns +0 -0
  22. rbeesoft/resources/icons/rbeesoft.ico +0 -0
  23. rbeesoft/resources/icons/spinner.gif +0 -0
  24. rbeesoft/ui/components/splashscreen.py +0 -121
  25. rbeesoft/ui/constants.py +0 -45
  26. rbeesoft/ui/mainwindow.py +0 -100
  27. rbeesoft/ui/panels/defaultpanel.py +0 -13
  28. rbeesoft/ui/panels/mainpanel.py +0 -81
  29. rbeesoft/ui/panels/settingspanel.py +0 -62
  30. rbeesoft/ui/panels/stackedpanel.py +0 -22
  31. rbeesoft/ui/settings.py +0 -32
  32. rbeesoft/ui/utils.py +0 -32
  33. rbeesoft-1.0.9.dist-info/LICENSE +0 -674
  34. rbeesoft-1.0.9.dist-info/METADATA +0 -18
  35. rbeesoft-1.0.9.dist-info/RECORD +0 -30
  36. rbeesoft-1.0.9.dist-info/entry_points.txt +0 -3
  37. /rbeesoft/{core → app}/__init__.py +0 -0
  38. /rbeesoft/{ui → app/core}/__init__.py +0 -0
  39. /rbeesoft/{ui/components → app/core/processes}/__init__.py +0 -0
  40. /rbeesoft/{ui/panels → app/ui}/__init__.py +0 -0
  41. /rbeesoft/{core/utils/___init__.py → app/ui/widgets/__init__.py} +0 -0
  42. /rbeesoft/{core/utils → common}/logmanagerlistener.py +0 -0
  43. /rbeesoft/{core → common}/singleton.py +0 -0
@@ -1,121 +0,0 @@
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 DELETED
@@ -1,45 +0,0 @@
1
- from PySide6.QtWidgets import QStyle
2
-
3
- from rbeesoft.ui.utils import is_macos
4
-
5
-
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
23
-
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'
29
-
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'
34
-
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 DELETED
@@ -1,100 +0,0 @@
1
- import os
2
-
3
- from PySide6.QtWidgets import (
4
- QMainWindow,
5
- )
6
- from PySide6.QtGui import (
7
- QGuiApplication,
8
- QAction,
9
- )
10
- from PySide6.QtCore import Qt, QByteArray
11
-
12
- from rbeesoft.ui.constants import Constants
13
- from rbeesoft.ui.settings import Settings
14
-
15
-
16
- class MainWindow(QMainWindow):
17
- def __init__(self, title, app_name, version, icon):
18
- super(MainWindow, self).__init__()
19
- self._title = title
20
- self._app_name = app_name
21
- self._version = version
22
- self._icon = icon
23
- self._settings = None
24
- self.init_window()
25
-
26
- # GET
27
-
28
- def title(self):
29
- return self._title
30
-
31
- def app_name(self):
32
- return self._app_name
33
-
34
- def version(self):
35
- return self._version
36
-
37
- def icon(self):
38
- return self._icon
39
-
40
- def settings(self):
41
- if not self._settings:
42
- self._settings = Settings()
43
- return self._settings
44
-
45
- # SET
46
-
47
- def set_status(self, message):
48
- self.statusBar().showMessage(message)
49
-
50
- # INITIALIZATION
51
-
52
- def init_window(self):
53
- self.setWindowTitle(f'{self.title()} {self.version()}')
54
- if self.icon():
55
- self.setWindowIcon(self.icon())
56
- if not self.load_geometry_and_state():
57
- self.set_default_size_and_position()
58
- self.init_app_menu()
59
-
60
- def init_app_menu(self):
61
- exit_action = QAction(Constants.RBEESOFT_APP_MENU_EXIT_ACTION_TEXT, self)
62
- exit_action.triggered.connect(self.close)
63
- app_menu = self.menuBar().addMenu(Constants.RBEESOFT_APP_MENU_TEXT)
64
- app_menu.addAction(exit_action)
65
-
66
- def init_status_bar(self):
67
- self.set_status(Constants.RBEESOFT_STATUS_READY)
68
-
69
- # EVENT HANDLERS
70
-
71
- def closeEvent(self, event):
72
- self.save_geometry_and_state()
73
- return super().closeEvent(event)
74
-
75
- # MISCELLANEOUS
76
-
77
- def load_geometry_and_state(self):
78
- geometry = self.settings().get(Constants.RBEESOFT_WINDOW_GEOMETRY_KEY)
79
- state = self.settings().get(Constants.RBEESOFT_WINDOW_STATE_KEY)
80
- if isinstance(geometry, QByteArray) and self.restoreGeometry(geometry):
81
- if isinstance(state, QByteArray):
82
- self.restoreState(state)
83
- return True
84
- return False
85
-
86
- def save_geometry_and_state(self):
87
- self.settings().set(
88
- Constants.RBEESOFT_WINDOW_GEOMETRY_KEY, self.saveGeometry())
89
- self.settings().set(
90
- Constants.RBEESOFT_WINDOW_STATE_KEY, self.saveState())
91
-
92
- def set_default_size_and_position(self):
93
- self.resize(Constants.RBEESOFT_WINDOW_W, Constants.RBEESOFT_WINDOW_H)
94
- self.center_window()
95
-
96
- def center_window(self):
97
- screen = QGuiApplication.primaryScreen().geometry()
98
- x = (screen.width() - self.geometry().width()) / 2
99
- y = (screen.height() - self.geometry().height()) / 2
100
- self.move(int(x), int(y))
@@ -1,13 +0,0 @@
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
- self._title = title
@@ -1,81 +0,0 @@
1
- import webbrowser
2
-
3
- from PySide6.QtWidgets import (
4
- QWidget,
5
- QLabel,
6
- QPushButton,
7
- QVBoxLayout,
8
- QDockWidget,
9
- )
10
-
11
- from rbeesoft.ui.constants import Constants
12
-
13
- from rbeesoft.ui.settings import Settings
14
- from rbeesoft.ui.panels.stackedpanel import StackedPanel
15
- from rbeesoft.core.utils.logmanager import LogManager
16
-
17
- LOG = LogManager()
18
-
19
-
20
- class MainPanel(QDockWidget):
21
- def __init__(self, parent):
22
- super(MainPanel, self).__init__(parent)
23
- self._settings = None
24
- self._title_label = None
25
- self._donate_button = None
26
- self._stacked_panel = None
27
- self._panels = {}
28
- self.init_layout()
29
-
30
- def init_layout(self):
31
- layout = QVBoxLayout()
32
- layout.addWidget(self.title_label())
33
- # layout.addWidget(self.donate_button())
34
- layout.addWidget(self.stacked_panel())
35
- container = QWidget()
36
- container.setLayout(layout)
37
- self.setObjectName(Constants.RBEESOFT_MAIN_PANEL_NAME)
38
- self.setWidget(container)
39
-
40
- # GETTERS
41
-
42
- def settings(self):
43
- if not self._settings:
44
- self._settings = Settings()
45
- return self._settings
46
-
47
- def title_label(self):
48
- if not self._title_label:
49
- self._title_label = QLabel('')
50
- self._title_label.setStyleSheet(Constants.RBEESOFT_MAIN_PANEL_NAME_TITLE_LABEL_STYLESHEET)
51
- return self._title_label
52
-
53
- def donate_button(self):
54
- if not self._donate_button:
55
- self._donate_button = QPushButton(Constants.RBEESOFT_DONATE_BUTTON_TEXT)
56
- self._donate_button.setStyleSheet(Constants.RBEESOFT_DONATE_BUTTON_STYLESHEET)
57
- self._donate_button.clicked.connect(self.handle_donate_button)
58
- return self._donate_button
59
-
60
- def stacked_panel(self):
61
- if not self._stacked_panel:
62
- self._stacked_panel = StackedPanel()
63
- return self._stacked_panel
64
-
65
- def panels(self):
66
- return self._panels
67
-
68
- # ADDING PANELS
69
-
70
- def add_panel(self, panel, name):
71
- self.panels()[name] = panel.title()
72
- self.stacked_panel().add_panel(panel, name)
73
-
74
- def select_panel(self, name):
75
- self.title_label().setText(self.panels().get(name))
76
- self.stacked_panel().switch_to(name)
77
-
78
- # EVENT HANDLERS
79
-
80
- def handle_donate_button(self):
81
- webbrowser.open(Constants.RBEESOFT_DONATE_URL)
@@ -1,62 +0,0 @@
1
- from PySide6.QtWidgets import (
2
- QTableWidget,
3
- QTableWidgetItem,
4
- QHeaderView,
5
- QVBoxLayout,
6
- QSizePolicy,
7
- )
8
- from PySide6.QtCore import Qt
9
-
10
- from rbeesoft.ui.constants import Constants
11
-
12
- from rbeesoft.ui.settings import Settings
13
- from rbeesoft.ui.panels.defaultpanel import DefaultPanel
14
-
15
-
16
- class SettingsPanel(DefaultPanel):
17
- def __init__(self):
18
- super(SettingsPanel, self).__init__()
19
- self.set_title(Constants.RBEESOFT_SETTINGS_PANEL_TITLE)
20
- self._title_label = None
21
- self._settings = None
22
- self._settings_table_widget = None
23
- self.init_layout()
24
-
25
- def settings(self):
26
- if not self._settings:
27
- self._settings = Settings()
28
- return self._settings
29
-
30
- def settings_table_widget(self):
31
- if not self._settings_table_widget:
32
- self._settings_table_widget = QTableWidget()
33
- self._settings_table_widget.setSortingEnabled(True)
34
- self._settings_table_widget.horizontalHeader().setVisible(True)
35
- self._settings_table_widget.verticalHeader().setVisible(False)
36
- self._settings_table_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
37
- self._settings_table_widget.setRowCount(len(self.settings().allKeys()))
38
- self._settings_table_widget.setColumnCount(2)
39
- self._settings_table_widget.setAlternatingRowColors(True)
40
- row_index = 0
41
- for key in self.settings().allKeys():
42
- self._settings_table_widget.setItem(row_index, 0, QTableWidgetItem(key))
43
- value = self.settings().get(key)
44
- if isinstance(value, str) or isinstance(value, int) or isinstance(value, bool) or isinstance(value, float):
45
- self._settings_table_widget.setItem(row_index, 1, QTableWidgetItem(str(value)))
46
- else:
47
- self._settings_table_widget.setItem(row_index, 1, QTableWidgetItem(Constants.RBEESOFT_SETTINGS_PANEL_CANNOT_DISPLAY_MESSAGE))
48
- row_index += 1
49
- self._settings_table_widget.resizeColumnsToContents()
50
- self._settings_table_widget.sortItems(0, Qt.AscendingOrder)
51
- self._settings_table_widget.setHorizontalHeaderLabels([
52
- Constants.RBEESOFT_SETTINGS_PANEL_NAME_COLUMN_NAME, Constants.RBEESOFT_SETTINGS_PANEL_VALUE_COLUMN_NAME])
53
- self._settings_table_widget.horizontalHeader().setSectionResizeMode(QHeaderView.Interactive)
54
- self._settings_table_widget.horizontalHeader().setSectionResizeMode(1, QHeaderView.Stretch)
55
- self._settings_table_widget.horizontalHeader().setDefaultAlignment(Qt.AlignLeft | Qt.AlignVCenter)
56
- return self._settings_table_widget
57
-
58
- def init_layout(self):
59
- layout = QVBoxLayout()
60
- layout.addWidget(self.settings_table_widget())
61
- self.setLayout(layout)
62
- self.setObjectName(Constants.RBEESOFT_SETTINGS_PANEL_NAME)
@@ -1,22 +0,0 @@
1
- from PySide6.QtWidgets import QStackedWidget
2
-
3
-
4
- class StackedPanel(QStackedWidget):
5
- def __init__(self):
6
- super(StackedPanel, self).__init__()
7
- self._current_panel_name = None
8
- self._panels = {}
9
-
10
- def add_panel(self, panel, name):
11
- if name not in self._panels.keys():
12
- self._panels[name] = panel
13
- self._current_panel_name = name
14
- self.addWidget(panel)
15
-
16
- def current_panel_name(self):
17
- return self._current_panel_name
18
-
19
- def switch_to(self, name):
20
- panel = self._panels[name]
21
- self._current_panel_name = name
22
- self.setCurrentWidget(panel)
rbeesoft/ui/settings.py DELETED
@@ -1,32 +0,0 @@
1
- from PySide6.QtCore import QSettings
2
-
3
- from rbeesoft.ui.constants import Constants
4
-
5
-
6
- class Settings(QSettings):
7
- def __init__(self):
8
- super(Settings, self).__init__(
9
- QSettings.IniFormat,
10
- QSettings.UserScope,
11
- Constants.RBEESOFT_BUNDLE_IDENTIFIER,
12
- Constants.RBEESOFT_NAME,
13
- )
14
-
15
- def prepend_bundle_identifier_and_name(self, name):
16
- return '{}.{}.{}'.format(
17
- Constants.RBEESOFT_BUNDLE_IDENTIFIER,
18
- Constants.RBEESOFT_NAME,
19
- name,
20
- )
21
-
22
- def get(self, name, default=None):
23
- if not name.startswith(Constants.RBEESOFT_BUNDLE_IDENTIFIER):
24
- name = self.prepend_bundle_identifier_and_name(name)
25
- value = self.value(name)
26
- if value is None or value == '':
27
- return default
28
- return value
29
-
30
- def set(self, name, value):
31
- name = self.prepend_bundle_identifier_and_name(name)
32
- self.setValue(name, value)
rbeesoft/ui/utils.py DELETED
@@ -1,32 +0,0 @@
1
- import os
2
- import sys
3
-
4
- from PySide6.QtGui import QPixmap, QPainter, QColor
5
-
6
-
7
- def resource_path(relative_path):
8
- base_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..'))
9
- return os.path.join(base_path, relative_path)
10
-
11
-
12
- def version(version_file_path):
13
- with open(version_file_path, 'r') as f:
14
- return f.readline().strip()
15
-
16
-
17
- def is_macos():
18
- return sys.platform.startswith('darwin')
19
-
20
-
21
- def icon(parent, icon_type):
22
- return parent.style().standardIcon(icon_type)
23
-
24
-
25
- def set_opacity(pixmap, opacity):
26
- result = QPixmap(pixmap.size())
27
- result.fill(QColor(0, 0, 0, 0))
28
- painter = QPainter(result)
29
- painter.setOpacity(opacity)
30
- painter.drawPixmap(0, 0, pixmap)
31
- painter.end()
32
- return result