Skip to content

Commit 30de3a7

Browse files
authored
Enable to override standard icon on Qt5 (#208)
* Enable to override on Qt5 * Fix Qt import error when without Qt * Fix icons_ui to show all standard icons on Qt5
1 parent 95593c3 commit 30de3a7

File tree

6 files changed

+122
-218
lines changed

6 files changed

+122
-218
lines changed

qdarktheme/_proxy_style.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
from __future__ import annotations
22

3-
import json
43
import platform
54

65
from qdarktheme._icon.icon_engine import SvgIconEngine
76
from qdarktheme._icon.svg import Svg
8-
from qdarktheme._resources import NEW_STANDARD_ICON_MAP
7+
from qdarktheme._resources.standard_icons import NEW_STANDARD_ICON_MAP
98
from qdarktheme.qtpy.QtGui import QIcon
109
from qdarktheme.qtpy.QtWidgets import QProxyStyle, QStyle, QStyleOption
1110

@@ -16,14 +15,12 @@ class QDarkThemeStyle(QProxyStyle):
1615
def __init__(self):
1716
"""Initialize style proxy."""
1817
super().__init__()
19-
self._new_standard_icon_map: dict[str, dict] = json.loads(NEW_STANDARD_ICON_MAP)
2018

2119
def standardIcon( # noqa: N802
2220
self, standard_icon: QStyle.StandardPixmap, option: QStyleOption | None, widget
2321
) -> QIcon:
2422
"""Implement QProxyStyle.standardIcon."""
25-
standard_icon_name = str(standard_icon).split(".")[-1]
26-
icon_info = self._new_standard_icon_map.get(standard_icon_name)
23+
icon_info = NEW_STANDARD_ICON_MAP.get(standard_icon)
2724
if icon_info is None:
2825
return super().standardIcon(standard_icon, option, widget)
2926

qdarktheme/_resources/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
from qdarktheme._resources._color_values import COLOR_VALUES
1111
from qdarktheme._resources._palette import mk_q_palette
12-
from qdarktheme._resources._standard_icons import NEW_STANDARD_ICON_MAP
1312
from qdarktheme._resources._svg import SVG_RESOURCES
1413
from qdarktheme._resources._template_stylesheet import TEMPLATE_STYLESHEET
1514

qdarktheme/_resources/_standard_icons.py

Lines changed: 0 additions & 206 deletions
This file was deleted.
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
"""Icon map that overrides standard icons."""
2+
from qdarktheme.qtpy.QtWidgets import QStyle
3+
4+
NEW_STANDARD_ICON_MAP = {
5+
QStyle.StandardPixmap.SP_ArrowBack: {"id": "arrow_upward", "rotate": 270},
6+
QStyle.StandardPixmap.SP_ArrowDown: {"id": "arrow_upward", "rotate": 180},
7+
QStyle.StandardPixmap.SP_ArrowForward: {"id": "arrow_upward", "rotate": 90},
8+
QStyle.StandardPixmap.SP_ArrowLeft: {"id": "arrow_upward", "rotate": 270},
9+
QStyle.StandardPixmap.SP_ArrowRight: {"id": "arrow_upward", "rotate": 90},
10+
QStyle.StandardPixmap.SP_ArrowUp: {"id": "arrow_upward"},
11+
QStyle.StandardPixmap.SP_BrowserReload: {"id": "refresh"},
12+
QStyle.StandardPixmap.SP_BrowserStop: {"id": "close"},
13+
QStyle.StandardPixmap.SP_CommandLink: {"id": "east"},
14+
QStyle.StandardPixmap.SP_DialogApplyButton: {"id": "check_circle"},
15+
QStyle.StandardPixmap.SP_DialogCancelButton: {"id": "cancel"},
16+
QStyle.StandardPixmap.SP_DialogCloseButton: {"id": "close"},
17+
QStyle.StandardPixmap.SP_DialogDiscardButton: {"id": "delete"},
18+
QStyle.StandardPixmap.SP_DialogHelpButton: {"id": "help"},
19+
QStyle.StandardPixmap.SP_DialogNoButton: {"id": "not_interested"},
20+
QStyle.StandardPixmap.SP_DialogOkButton: {"id": "check"},
21+
QStyle.StandardPixmap.SP_DialogOpenButton: {"id": "launch"},
22+
QStyle.StandardPixmap.SP_DialogResetButton: {"id": "cleaning_services"},
23+
QStyle.StandardPixmap.SP_DialogSaveButton: {"id": "save"},
24+
QStyle.StandardPixmap.SP_DialogYesButton: {"id": "circle"},
25+
QStyle.StandardPixmap.SP_DirHomeIcon: {"id": "home"},
26+
QStyle.StandardPixmap.SP_DockWidgetCloseButton: {"id": "close"},
27+
QStyle.StandardPixmap.SP_FileDialogBack: {"id": "arrow_upward", "rotate": 270},
28+
QStyle.StandardPixmap.SP_FileDialogContentsView: {"id": "search"},
29+
QStyle.StandardPixmap.SP_FileDialogDetailedView: {"id": "list"},
30+
QStyle.StandardPixmap.SP_FileDialogEnd: {"id": "drive_file_move_rtl"},
31+
QStyle.StandardPixmap.SP_FileDialogInfoView: {"id": "info"},
32+
QStyle.StandardPixmap.SP_FileDialogListView: {"id": "grid_view"},
33+
QStyle.StandardPixmap.SP_FileDialogNewFolder: {"id": "create_new_folder"},
34+
QStyle.StandardPixmap.SP_FileDialogStart: {"id": "drive_file_move"},
35+
QStyle.StandardPixmap.SP_FileDialogToParent: {"id": "arrow_upward"},
36+
QStyle.StandardPixmap.SP_MediaPause: {"id": "pause"},
37+
QStyle.StandardPixmap.SP_MediaPlay: {"id": "play_arrow"},
38+
QStyle.StandardPixmap.SP_MediaSeekBackward: {"id": "fast_rewind"},
39+
QStyle.StandardPixmap.SP_MediaSeekForward: {"id": "fast_forward"},
40+
QStyle.StandardPixmap.SP_MediaSkipBackward: {"id": "skip_previous"},
41+
QStyle.StandardPixmap.SP_MediaSkipForward: {"id": "skip_next"},
42+
QStyle.StandardPixmap.SP_MediaStop: {"id": "stop"},
43+
QStyle.StandardPixmap.SP_MediaVolume: {"id": "volume_up"},
44+
QStyle.StandardPixmap.SP_MediaVolumeMuted: {"id": "volume_mute"},
45+
QStyle.StandardPixmap.SP_MessageBoxQuestion: {"id": "help", "os": ["Darwin", "Linux"]},
46+
QStyle.StandardPixmap.SP_TitleBarCloseButton: {"id": "close"},
47+
QStyle.StandardPixmap.SP_TitleBarContextHelpButton: {"id": "question_mark"},
48+
QStyle.StandardPixmap.SP_TitleBarMaxButton: {"id": "fullscreen"},
49+
QStyle.StandardPixmap.SP_TitleBarMinButton: {"id": "minimize"},
50+
QStyle.StandardPixmap.SP_TitleBarNormalButton: {"id": "flip_to_front"},
51+
QStyle.StandardPixmap.SP_TitleBarShadeButton: {"id": "chevron_right", "rotate": "270"},
52+
QStyle.StandardPixmap.SP_TitleBarUnshadeButton: {"id": "chevron_right", "rotate": "90"},
53+
QStyle.StandardPixmap.SP_ToolBarHorizontalExtensionButton: {"id": "double_arrow"},
54+
QStyle.StandardPixmap.SP_ToolBarVerticalExtensionButton: {"id": "double_arrow", "rotate": 90},
55+
QStyle.StandardPixmap.SP_TrashIcon: {"id": "delete", "os": ["Windows"]},
56+
QStyle.StandardPixmap.SP_VistaShield: {"id": "security", "os": ["Darwin", "Linux"]},
57+
}
58+
59+
if hasattr(QStyle.StandardPixmap, "SP_DialogAbortButton"):
60+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogAbortButton] = {"id": "not_interested"} # type: ignore # noqa: E501
61+
62+
if hasattr(QStyle.StandardPixmap, "SP_DialogIgnoreButton"):
63+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogIgnoreButton] = {"id": "visibility_off"} # type: ignore # noqa: E501
64+
65+
if hasattr(QStyle.StandardPixmap, "SP_DialogNoToAllButton"):
66+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogNoToAllButton] = {"id": "close"} # type: ignore # noqa: E501
67+
68+
if hasattr(QStyle.StandardPixmap, "SP_DialogRetryButton"):
69+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogRetryButton] = {"id": "refresh"} # type: ignore # noqa: E501
70+
71+
if hasattr(QStyle.StandardPixmap, "SP_DialogSaveAllButton"):
72+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogSaveAllButton] = {"id": "save"} # type: ignore # noqa: E501
73+
74+
if hasattr(QStyle.StandardPixmap, "SP_DialogYesToAllButton"):
75+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_DialogYesToAllButton] = {"id": "done_all"} # type: ignore # noqa: E501
76+
77+
if hasattr(QStyle.StandardPixmap, "SP_LineEditClearButton"):
78+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_LineEditClearButton] = {"id": "close"} # type: ignore # noqa: E501
79+
80+
if hasattr(QStyle.StandardPixmap, "SP_TabCloseButton"):
81+
NEW_STANDARD_ICON_MAP[QStyle.StandardPixmap.SP_TabCloseButton] = {"id": "close"} # type: ignore # noqa: E501

qdarktheme/widget_gallery/_ui/icons_ui.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ def setup_ui(self, win: QWidget) -> None:
2222
standard_pixmap_names = sorted(
2323
attr for attr in dir(QStyle.StandardPixmap) if attr.startswith("SP_")
2424
)
25+
if len(standard_pixmap_names) == 0:
26+
standard_pixmap_names = sorted(attr for attr in dir(QStyle) if attr.startswith("SP_"))
2527

2628
for i, name in enumerate(standard_pixmap_names):
2729
button = QToolButton()

0 commit comments

Comments
 (0)