Skip to content

Commit 0919bbb

Browse files
committed
refactor(utilities): integrate refresh_widget_style across multiple widgets
- Replaced direct style sheet manipulations with refresh_widget_style calls in various widget files. - This change enhances consistency in widget styling and improves maintainability.
1 parent d6b9ee4 commit 0919bbb

File tree

13 files changed

+69
-53
lines changed

13 files changed

+69
-53
lines changed

src/core/widgets/komorebi/stack.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
from core.event_enums import KomorebiEvent
1313
from core.event_service import EventService
14-
from core.utils.utilities import add_shadow
14+
from core.utils.utilities import add_shadow, refresh_widget_style
1515
from core.utils.widgets.komorebi.client import KomorebiClient
1616
from core.utils.win32.app_icons import get_window_icon
1717
from core.utils.win32.utilities import get_monitor_hwnd
@@ -88,7 +88,7 @@ def update_visible_buttons(self):
8888
new_class = " ".join([cls for cls in current_class.split() if not cls.startswith("button-")])
8989
new_class = f"{new_class} button-{index + 1}"
9090
button.setProperty("class", new_class)
91-
button.setStyleSheet("")
91+
refresh_widget_style(button)
9292

9393
def update_and_redraw(self, status: WindowStatus):
9494
self.status = status
@@ -97,7 +97,7 @@ def update_and_redraw(self, status: WindowStatus):
9797
self.text_label.setText(self.active_label)
9898
else:
9999
self.text_label.setText(self.default_label)
100-
self.setStyleSheet("")
100+
refresh_widget_style(self)
101101

102102
if self.parent_widget._show_icons == "focused":
103103
if self.status == WINDOW_STATUS_ACTIVE:
@@ -506,14 +506,12 @@ def _add_or_update_buttons(self) -> None:
506506
def _get_window_label(self, window_index):
507507
window = self._komorebi_windows[window_index]
508508
w_index = window_index if self._label_zero_index else window_index + 1
509-
509+
510510
# Apply rewrite filter to title and process name
511511
title = self._rewrite_filter(window["title"])
512512
process_name = self._rewrite_filter(window["exe"])
513-
514-
default_label = self._label_window.format(
515-
index=w_index, title=title, process=process_name, hwnd=window["hwnd"]
516-
)
513+
514+
default_label = self._label_window.format(index=w_index, title=title, process=process_name, hwnd=window["hwnd"])
517515
active_label = self._label_window_active.format(
518516
index=w_index, title=title, process=process_name, hwnd=window["hwnd"]
519517
)

src/core/widgets/yasb/battery.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from PyQt6.QtCore import QTimer
88
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel
99

10-
from core.utils.utilities import add_shadow, build_widget_label
10+
from core.utils.utilities import add_shadow, build_widget_label, refresh_widget_style
1111
from core.utils.widgets.animation_manager import AnimationManager
1212
from core.validation.widgets.yasb.battery import VALIDATION_SCHEMA
1313
from core.widgets.base import BaseWidget
@@ -139,7 +139,7 @@ def _charging_blink(self):
139139
new_classes = f"{current_classes} blink".strip()
140140

141141
label.setProperty("class", new_classes)
142-
label.setStyleSheet("")
142+
refresh_widget_style(label)
143143

144144
def _update_label(self):
145145
active_widgets = self._widgets_alt if self._show_alt_label else self._widgets
@@ -188,7 +188,7 @@ def _update_label(self):
188188
existing_classes = widget_label.property("class")
189189
new_classes = re.sub(r"status-\w+", "", existing_classes).strip()
190190
widget_label.setProperty("class", f"{new_classes} status-{threshold}")
191-
widget_label.setStyleSheet("")
191+
refresh_widget_style(widget_label)
192192

193193
# only blink when plugged AND blink_enabled
194194
if self._battery_state.power_plugged and self._icon_charging_blink:
@@ -204,11 +204,11 @@ def _update_label(self):
204204
new_classes = current_classes.replace("blink", "").strip()
205205
new_classes = re.sub(r"\s+", " ", new_classes)
206206
widget_label.setProperty("class", new_classes)
207-
widget_label.setStyleSheet("")
207+
refresh_widget_style(widget_label)
208208
else:
209209
alt_class = "alt" if self._show_alt_label else ""
210210
formatted_text = battery_status.format(battery_status)
211211
active_widgets[widget_index].setText(formatted_text)
212212
active_widgets[widget_index].setProperty("class", f"label {alt_class} status-{threshold}")
213-
active_widgets[widget_index].setStyleSheet("")
213+
refresh_widget_style(active_widgets[widget_index])
214214
widget_index += 1

src/core/widgets/yasb/cpu.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from PyQt6.QtCore import QTimer
66
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel
77

8-
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label
8+
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label, refresh_widget_style
99
from core.utils.widgets.animation_manager import AnimationManager
1010
from core.validation.widgets.yasb.cpu import VALIDATION_SCHEMA
1111
from core.widgets.base import BaseWidget
@@ -190,7 +190,7 @@ def _update_label(self, cpu_freq, cpu_stats, current_perc, cores_perc, cpu_cores
190190
active_widgets[widget_index].setProperty(
191191
"class", f"{label_class} status-{self._get_cpu_threshold(current_perc)}"
192192
)
193-
active_widgets[widget_index].setStyleSheet("")
193+
refresh_widget_style(active_widgets[widget_index])
194194
widget_index += 1
195195

196196
def _toggle_label(self):

src/core/widgets/yasb/disk.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,13 @@
66
from PyQt6.QtCore import Qt, pyqtSignal
77
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel, QProgressBar, QVBoxLayout, QWidget
88

9-
from core.utils.utilities import PopupWidget, add_shadow, build_progress_widget, build_widget_label
9+
from core.utils.utilities import (
10+
PopupWidget,
11+
add_shadow,
12+
build_progress_widget,
13+
build_widget_label,
14+
refresh_widget_style,
15+
)
1016
from core.utils.widgets.animation_manager import AnimationManager
1117
from core.validation.widgets.yasb.disk import VALIDATION_SCHEMA
1218
from core.widgets.base import BaseWidget
@@ -147,7 +153,7 @@ def _update_label(self):
147153
"class", f"{label_class} status-{self._get_disk_threshold(percent_value)}"
148154
)
149155
active_widgets[widget_index].setText(formatted_text)
150-
active_widgets[widget_index].setStyleSheet("")
156+
refresh_widget_style(active_widgets[widget_index])
151157
widget_index += 1
152158

153159
def _get_volume_label(self, drive_letter):

src/core/widgets/yasb/gpu.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from PyQt6.QtCore import QTimer
1010
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel
1111

12-
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label
12+
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label, refresh_widget_style
1313
from core.utils.widgets.animation_manager import AnimationManager
1414
from core.validation.widgets.yasb.gpu import VALIDATION_SCHEMA
1515
from core.widgets.base import BaseWidget
@@ -219,7 +219,7 @@ def _update_label(self, gpu_data):
219219
active_widgets[widget_index].setProperty(
220220
"class", f"{label_class} status-{self._get_gpu_threshold(gpu_data.utilization)}"
221221
)
222-
active_widgets[widget_index].setStyleSheet("")
222+
refresh_widget_style(active_widgets[widget_index])
223223
widget_index += 1
224224

225225
def _get_gpu_threshold(self, utilization) -> str:

src/core/widgets/yasb/launchpad.py

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343

4444
from core.config import HOME_CONFIGURATION_DIR
4545
from core.event_service import EventService
46-
from core.utils.utilities import add_shadow, build_widget_label
46+
from core.utils.utilities import add_shadow, build_widget_label, refresh_widget_style
4747
from core.utils.widgets.animation_manager import AnimationManager
4848
from core.utils.widgets.launchpad.app_loader import AppListLoader, ShortcutResolver
4949
from core.utils.widgets.launchpad.icon_extractor import IconExtractorUtil, UrlExtractorUtil
@@ -220,15 +220,17 @@ def __init__(self, parent=None, app_data=None, icons_dir=None):
220220
button_layout = QHBoxLayout(button_container)
221221
button_layout.setContentsMargins(0, 0, 0, 0)
222222

223-
cancel_btn = QPushButton("Cancel")
224-
cancel_btn.setProperty("class", "button")
225-
cancel_btn.clicked.connect(self.reject)
226-
button_layout.addWidget(cancel_btn)
227-
228-
add_btn = QPushButton("Save" if self.is_edit_mode else "Add")
229-
add_btn.setProperty("class", f"button {'save' if self.is_edit_mode else 'add'}")
230-
add_btn.clicked.connect(self.accept)
231-
button_layout.addWidget(add_btn)
223+
self.cancel_btn = QPushButton("Cancel")
224+
self.cancel_btn.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
225+
self.cancel_btn.setProperty("class", "button")
226+
self.cancel_btn.clicked.connect(self.reject)
227+
button_layout.addWidget(self.cancel_btn)
228+
229+
self.add_btn = QPushButton("Save" if self.is_edit_mode else "Add")
230+
self.add_btn.setProperty("class", f"button {'save' if self.is_edit_mode else 'add'}")
231+
self.add_btn.setCursor(QCursor(Qt.CursorShape.PointingHandCursor))
232+
self.add_btn.clicked.connect(self.accept)
233+
button_layout.addWidget(self.add_btn)
232234
layout.addWidget(button_container)
233235
self.setLayout(layout)
234236

@@ -450,6 +452,11 @@ def accept(self):
450452

451453
super().accept()
452454

455+
def done(self, result):
456+
for btn in (self.add_btn, self.cancel_btn):
457+
btn.unsetCursor()
458+
super().done(result)
459+
453460

454461
class SmoothScrollArea(QScrollArea):
455462
"""Custom scroll area with smooth scrolling capabilities"""
@@ -756,15 +763,15 @@ def dragLeaveEvent(event):
756763
self._hide_drop_overlay()
757764
app_icon._drop_highlight = False
758765
app_icon.setProperty("isDropTarget", False)
759-
app_icon.setStyleSheet("")
766+
refresh_widget_style(app_icon)
760767
app_icon.update()
761768

762769
app_icon.dragLeaveEvent = dragLeaveEvent
763770

764771
def dropEvent(event):
765772
app_icon._drop_highlight = False
766773
app_icon.setProperty("isDropTarget", False)
767-
app_icon.setStyleSheet("")
774+
refresh_widget_style(app_icon)
768775
app_icon.update()
769776
source_id = event.mimeData().text()
770777
target_id = str(app_icon.app_data.get("id", ""))
@@ -787,15 +794,15 @@ def _load_app_icon(self, app_icon):
787794
cache_key = f"{icon_path}_{self._app_icon_size}_{self._dpr}"
788795
if cache_key in _ICON_CACHE:
789796
app_icon.icon_label.setPixmap(_ICON_CACHE[cache_key])
790-
app_icon.icon_label.setStyleSheet("")
797+
refresh_widget_style(app_icon.icon_label)
791798
app_icon._icon_loaded = True
792799
return
793800
try:
794801
pixmap = load_and_scale_icon(icon_path, self._app_icon_size, self._dpr)
795802
if not pixmap.isNull():
796803
_ICON_CACHE[cache_key] = pixmap
797804
app_icon.icon_label.setPixmap(pixmap)
798-
app_icon.icon_label.setStyleSheet("")
805+
refresh_widget_style(app_icon.icon_label)
799806
app_icon._icon_loaded = True
800807
else:
801808
app_icon.icon_label.setText("")
@@ -845,7 +852,7 @@ def _show_context_menu(self, pos, app_data=None, parent_widget=None, event=None)
845852
Show context menu for the launchpad or an app icon
846853
"""
847854
menu_parent = parent_widget if parent_widget else self._launchpad_popup
848-
menu = QMenu(menu_parent)
855+
menu = QMenu(menu_parent.window())
849856
menu.setProperty("class", "context-menu")
850857
qmenu_rounded_corners(menu)
851858

@@ -1421,7 +1428,7 @@ def _on_background_icon_loaded(self, icon_path: str, pixmap: QPixmap):
14211428
if hasattr(app_icon, "app_data") and app_icon.app_data.get("icon", "") == icon_path:
14221429
if hasattr(app_icon, "_icon_loaded") and not app_icon._icon_loaded:
14231430
app_icon.icon_label.setPixmap(pixmap)
1424-
app_icon.icon_label.setStyleSheet("")
1431+
refresh_widget_style(app_icon.icon_label)
14251432
app_icon._icon_loaded = True
14261433

14271434
def _recalculate_grid_columns(self):

src/core/widgets/yasb/memory.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from PyQt6.QtCore import QTimer
66
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel
77

8-
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label
8+
from core.utils.utilities import add_shadow, build_progress_widget, build_widget_label, refresh_widget_style
99
from core.utils.widgets.animation_manager import AnimationManager
1010
from core.validation.widgets.yasb.memory import VALIDATION_SCHEMA
1111
from core.widgets.base import BaseWidget
@@ -167,7 +167,7 @@ def _update_label(self, virtual_mem, swap_mem):
167167
active_widgets[widget_index].setProperty(
168168
"class", f"{label_class} status-{self._get_virtual_memory_threshold(virtual_mem.percent)}"
169169
)
170-
active_widgets[widget_index].setStyleSheet("")
170+
refresh_widget_style(active_widgets[widget_index])
171171
widget_index += 1
172172

173173
def _toggle_label(self):

src/core/widgets/yasb/pomodoro.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,14 +240,14 @@ def _update_label(self):
240240
active_widgets[widget_index].setText(formatted_text)
241241
base_class = active_widgets[widget_index].property("class").split()[0]
242242
active_widgets[widget_index].setProperty("class", f"{base_class} {class_name}")
243-
active_widgets[widget_index].setStyleSheet("")
243+
refresh_widget_style(active_widgets[widget_index])
244244
else:
245245
if widget_index < len(active_widgets) and isinstance(active_widgets[widget_index], QLabel):
246246
alt_class = "alt" if self._show_alt_label else ""
247247
active_widgets[widget_index].setText(formatted_text)
248248
base_class = "label"
249249
active_widgets[widget_index].setProperty("class", f"{base_class} {alt_class} {class_name}")
250-
active_widgets[widget_index].setStyleSheet("")
250+
refresh_widget_style(active_widgets[widget_index])
251251
widget_index += 1
252252

253253
def _get_current_icon(self):

src/core/widgets/yasb/power_plan.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from PyQt6.QtGui import QCursor
88
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel, QPushButton, QVBoxLayout
99

10-
from core.utils.utilities import PopupWidget, add_shadow, build_widget_label
10+
from core.utils.utilities import PopupWidget, add_shadow, build_widget_label, refresh_widget_style
1111
from core.utils.win32.bindings import PowerEnumerate, PowerGetActiveScheme, PowerReadFriendlyName, PowerSetActiveScheme
1212
from core.utils.win32.structs import GUID
1313
from core.validation.widgets.yasb.power_plan import VALIDATION_SCHEMA
@@ -154,7 +154,7 @@ def _update_label(self):
154154
alt_class = "alt" if self._show_alt_label else ""
155155
base_class = "icon" if "<span" in part else f"label {alt_class}"
156156
active_widgets[widget_index].setProperty("class", f"{base_class} {self._plan_class_name}")
157-
active_widgets[widget_index].setStyleSheet("")
157+
refresh_widget_style(active_widgets[widget_index])
158158
widget_index += 1
159159

160160
def _toggle_label(self):

src/core/widgets/yasb/recycle_bin.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from PyQt6.QtWidgets import QFrame, QHBoxLayout, QLabel
44

55
from core.utils.tooltip import set_tooltip
6-
from core.utils.utilities import add_shadow, build_widget_label
6+
from core.utils.utilities import add_shadow, build_widget_label, refresh_widget_style
77
from core.utils.widgets.animation_manager import AnimationManager
88
from core.utils.widgets.recycle_bin.recycle_bin_monitor import RecycleBinMonitor
99
from core.validation.widgets.yasb.recycle_bin import VALIDATION_SCHEMA
@@ -108,14 +108,14 @@ def _update_label(self):
108108
active_widgets[widget_index].setText(formatted_text)
109109
base_class = active_widgets[widget_index].property("class").split()[0]
110110
active_widgets[widget_index].setProperty("class", f"{base_class} {class_name}")
111-
active_widgets[widget_index].setStyleSheet("")
111+
refresh_widget_style(active_widgets[widget_index])
112112
else:
113113
if widget_index < len(active_widgets) and isinstance(active_widgets[widget_index], QLabel):
114114
alt_class = "alt" if self._show_alt_label else ""
115115
active_widgets[widget_index].setText(formatted_text)
116116
base_class = "label"
117117
active_widgets[widget_index].setProperty("class", f"{base_class} {alt_class} {class_name}")
118-
active_widgets[widget_index].setStyleSheet("")
118+
refresh_widget_style(active_widgets[widget_index])
119119
widget_index += 1
120120
if self._tooltip:
121121
set_tooltip(

0 commit comments

Comments
 (0)