mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-17 16:57:56 -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:
65
scripts/utils/global_theme/gdm_remover.py
Normal file
65
scripts/utils/global_theme/gdm_remover.py
Normal file
@@ -0,0 +1,65 @@
|
||||
from scripts.utils.global_theme.ubuntu_alternatives_updater import UbuntuGDMAlternativesUpdater
|
||||
from scripts.utils.gresource import GresourceBackupNotFoundError
|
||||
from scripts.utils.gresource.gresource import Gresource
|
||||
from scripts.utils.logger.console import Console, Color, Format
|
||||
from scripts.utils.logger.logger import LoggerFactory
|
||||
|
||||
|
||||
class GDMThemeRemover:
|
||||
"""
|
||||
Responsible for safely removing installed GDM themes.
|
||||
|
||||
This class handles:
|
||||
- Restoring original gresource files from backups
|
||||
- Removing theme alternatives from the system
|
||||
- Providing feedback about removal status
|
||||
"""
|
||||
def __init__(self,
|
||||
gresource: Gresource,
|
||||
alternatives_updater: UbuntuGDMAlternativesUpdater,
|
||||
logger_factory: LoggerFactory):
|
||||
"""
|
||||
:param gresource: Handler for gresource operations
|
||||
:param alternatives_updater: Handler for update-alternatives operations
|
||||
:param logger_factory: Factory for creating loggers
|
||||
"""
|
||||
self.gresource = gresource
|
||||
self.alternatives_updater = alternatives_updater
|
||||
self.remover_logger = GDMRemoverLogger(logger_factory)
|
||||
|
||||
def remove(self):
|
||||
"""Restores the gresource backup and removes the alternatives."""
|
||||
self.remover_logger.start_removing()
|
||||
|
||||
try:
|
||||
self.gresource.restore()
|
||||
self.alternatives_updater.remove()
|
||||
self.remover_logger.success_removing()
|
||||
except GresourceBackupNotFoundError:
|
||||
self.remover_logger.error_removing()
|
||||
|
||||
def warn_not_installed(self):
|
||||
self.remover_logger.not_installed_warning()
|
||||
|
||||
|
||||
class GDMRemoverLogger:
|
||||
def __init__(self, logger_factory: LoggerFactory):
|
||||
self.logger_factory = logger_factory
|
||||
self.removing_line = None
|
||||
|
||||
def start_removing(self):
|
||||
self.removing_line = self.logger_factory.create_logger()
|
||||
self.removing_line.update("Theme is installed. Removing...")
|
||||
|
||||
def success_removing(self):
|
||||
self.removing_line.success("Global theme removed successfully. Restart GDM to apply changes.")
|
||||
|
||||
def error_removing(self):
|
||||
formatted_shell = Console.format("gnome-shell", color=Color.BLUE, format_type=Format.BOLD)
|
||||
self.removing_line.error(f"Backup file not found. Try reinstalling {formatted_shell} package.")
|
||||
|
||||
def not_installed_warning(self):
|
||||
self.logger_factory.create_logger().error(
|
||||
"Theme is not installed. Nothing to remove.")
|
||||
self.logger_factory.create_logger().warn(
|
||||
"If theme is still installed globally, try reinstalling gnome-shell package.")
|
Reference in New Issue
Block a user