mirror of
https://github.com/imarkoff/Marble-shell-theme.git
synced 2025-09-17 08:47:55 -07:00
- 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.
65 lines
2.6 KiB
Python
65 lines
2.6 KiB
Python
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.") |