mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-18 09:17:54 -07:00
Refactor GDM module to correspond SOLID principles
- I don't know how I will support this hell ahh code; - Added some methods to gnome_shell_theme_builder.py; - Added "color" property "install" method from theme_base.py.
This commit is contained in:
88
scripts/utils/global_theme/gdm.py
Normal file
88
scripts/utils/global_theme/gdm.py
Normal file
@@ -0,0 +1,88 @@
|
||||
from scripts.types.theme_base import ThemeBase
|
||||
from scripts.utils.global_theme.gdm_installer import GDMThemeInstaller
|
||||
from scripts.utils.global_theme.gdm_preparer import GDMThemePreparer
|
||||
from scripts.utils.global_theme.gdm_remover import GDMThemeRemover
|
||||
from scripts.utils.global_theme.gdm_theme_prepare import GDMThemePrepare
|
||||
|
||||
|
||||
class GDMTheme(ThemeBase):
|
||||
"""
|
||||
GDM theming module.
|
||||
|
||||
This module provides functionality to prepare, install, and remove GNOME Display Manager themes.
|
||||
It follows a workflow of:
|
||||
1. Preparing themes from existing GDM resources
|
||||
2. Installing themes with custom colors/styles
|
||||
3. Providing ability to restore original GDM themes
|
||||
|
||||
The main entry point is the GDMTheme class, which orchestrates the entire theme management process.
|
||||
"""
|
||||
def __init__(self, preparer: GDMThemePreparer, installer: GDMThemeInstaller, remover: GDMThemeRemover):
|
||||
"""
|
||||
:param preparer: GDMThemePreparer instance for preparing themes
|
||||
:param installer: GDMThemeInstaller instance for installing themes
|
||||
:param remover: GDMThemeRemover instance for removing themes
|
||||
"""
|
||||
self.preparer = preparer
|
||||
self.installer = installer
|
||||
self.remover = remover
|
||||
|
||||
self.themes: list[GDMThemePrepare] = []
|
||||
|
||||
def prepare(self):
|
||||
"""
|
||||
Prepare the theme for installation.
|
||||
|
||||
This method:
|
||||
1. Checks if a theme is already installed and uses backup if needed
|
||||
2. Extracts relevant theme files
|
||||
3. Processes them into ready-to-compile GDMThemePrepare objects
|
||||
|
||||
The processed themes are stored in the themes attribute for later use.
|
||||
"""
|
||||
if self._is_installed():
|
||||
self.preparer.use_backup_as_source()
|
||||
self.themes = self.preparer.prepare()
|
||||
|
||||
def _is_installed(self) -> bool:
|
||||
"""
|
||||
Check if a GDM theme is currently installed.
|
||||
|
||||
This looks for specific markers in the system gresource files
|
||||
that indicate our theme has been installed.
|
||||
|
||||
:return: True if a custom theme is installed, False otherwise
|
||||
"""
|
||||
return self.installer.is_installed()
|
||||
|
||||
def install(self, hue: int, name: str, sat: float | None = None):
|
||||
"""
|
||||
Install the prepared theme with specified color adjustments.
|
||||
|
||||
This method:
|
||||
1. Compiles theme files with the specified hue and saturation
|
||||
2. Creates a backup of the original GDM theme if one doesn't exist
|
||||
3. Installs the compiled theme to the system
|
||||
|
||||
:param hue: The hue adjustment (0-360) to apply to the theme
|
||||
:param name: The name of the theme to be installed. In GDM will only be shown in logger
|
||||
:param sat: Optional saturation adjustment (0-100) to apply
|
||||
"""
|
||||
self.installer.compile(self.themes, hue, name, sat)
|
||||
|
||||
if not self._is_installed():
|
||||
self.installer.backup()
|
||||
|
||||
self.installer.install()
|
||||
|
||||
def remove(self):
|
||||
"""
|
||||
Remove the installed theme and restore the original GDM theme.
|
||||
|
||||
If no theme is installed, displays a warning message to the user.
|
||||
This will restore from backup and update GDM alternatives if needed.
|
||||
"""
|
||||
if self._is_installed():
|
||||
self.remover.remove()
|
||||
else:
|
||||
self.remover.warn_not_installed()
|
Reference in New Issue
Block a user