mirror of
https://github.com/KeksPirates/SoftwareManager.git
synced 2026-08-04 09:59:41 +02:00
feat: Add image position presets and sliders
Introduce image positioning presets and UI improvements for image overlay control. image.py: compute overlay coordinates for top-left/top-right/bottom-left/bottom-right/center positions and respect corner offset and opacity. settings.py: replace spinboxes with horizontal sliders (with value labels and custom style), add Wallpaper Mode checkbox and Position combo, wire controls to state and include them in the settings tab; ensure dialog rollback restores new temp settings. config/config.py & utils/settings.py: persist and load new image_as_wallpaper and image_position settings and extend save_settings to accept them. data/state.py: add new state fields and properties for image_position, custom position flags and x/y coordinates; change default image_as_wallpaper to false. These changes enable preset positioning, improved UX for sizing/offset/opacity, and persistence of new image options.
This commit is contained in:
+42
-1
@@ -35,7 +35,8 @@ class AppState(QObject):
|
||||
self._image_width: int = 300 # Default to 300px
|
||||
self._image_offset: int = 50
|
||||
self._image_opacity: int = 100
|
||||
self._image_as_wallpaper: bool = True
|
||||
self._image_as_wallpaper: bool = False
|
||||
self._image_position: str = "bottom-right" # top-left, top-right, bottom-left, bottom-right, center
|
||||
|
||||
# Trackers / Scraping
|
||||
self.posts: list[Dict[str,str]] | None = None # titles, urls, author, seeders, leechers
|
||||
@@ -115,4 +116,44 @@ class AppState(QObject):
|
||||
self._image_as_wallpaper = new_state
|
||||
self.image_changed.emit(self._image_path)
|
||||
|
||||
@property
|
||||
def image_position(self) -> str:
|
||||
return self._image_position
|
||||
|
||||
@image_position.setter
|
||||
def image_position(self, new_pos: str):
|
||||
if new_pos != self._image_position:
|
||||
self._image_position = new_pos
|
||||
self.image_changed.emit(self._image_path)
|
||||
|
||||
@property
|
||||
def image_custom_position(self) -> bool:
|
||||
return self._image_custom_position
|
||||
|
||||
@image_custom_position.setter
|
||||
def image_custom_position(self, new_state: bool):
|
||||
if new_state != self._image_custom_position:
|
||||
self._image_custom_position = new_state
|
||||
self.image_changed.emit(self._image_path)
|
||||
|
||||
@property
|
||||
def image_x(self) -> int:
|
||||
return self._image_x
|
||||
|
||||
@image_x.setter
|
||||
def image_x(self, val: int):
|
||||
if val != self._image_x:
|
||||
self._image_x = val
|
||||
self.image_changed.emit(self._image_path)
|
||||
|
||||
@property
|
||||
def image_y(self) -> int:
|
||||
return self._image_y
|
||||
|
||||
@image_y.setter
|
||||
def image_y(self, val: int):
|
||||
if val != self._image_y:
|
||||
self._image_y = val
|
||||
self.image_changed.emit(self._image_path)
|
||||
|
||||
state = AppState()
|
||||
|
||||
Reference in New Issue
Block a user