diff --git a/gui/v2/ui/popups/error_popup.py b/gui/v2/ui/popups/error_popup.py index b77f60c..2583171 100644 --- a/gui/v2/ui/popups/error_popup.py +++ b/gui/v2/ui/popups/error_popup.py @@ -1,6 +1,11 @@ -from typing import Optional, Callable, Any -from PyQt6.QtWidgets import QDialog, QVBoxLayout, QHBoxLayout, QLabel, QPushButton, QApplication +from gui.v2.ui.styles.css.error_css import GOTHIC_DARK_THEME, CORPORATE_PUNK_DYING_ROT, get_message_style + +from PyQt6.QtWidgets import ( + QDialog, QVBoxLayout, QHBoxLayout, QLabel, + QPushButton, QScrollArea, QWidget, QApplication, QFrame +) from PyQt6.QtCore import Qt +from typing import Optional, Callable, Any class ErrorPopup(QDialog): def __init__( @@ -26,26 +31,8 @@ class ErrorPopup(QDialog): self.setFixedSize(400, 300) self.setModal(True) - # Dark Theme Styling - self.setStyleSheet(""" - QDialog { - background-color: #1a1a1a; - border-radius: 20px; - } - QLabel { - color: #33ff33; - font-size: 24px; - background: transparent; - border: none; - } - QPushButton { - color: white; - font-size: 20px; - border-radius: 10px; - padding: 10px; - min-height: 50px; - } - """) + # Gothic Dark Theme Styling (Applied once here, covers all children) + self.setStyleSheet(GOTHIC_DARK_THEME) # Layout setup main_layout = QVBoxLayout() @@ -56,7 +43,16 @@ class ErrorPopup(QDialog): self.message_label = QLabel(message) self.message_label.setAlignment(Qt.AlignmentFlag.AlignCenter) self.message_label.setWordWrap(True) - main_layout.addWidget(self.message_label) + + # Blindly apply the CSS returned by the helper + self.message_label.setStyleSheet(get_message_style(message)) + + # SCROLL AREA + scroll = QScrollArea() + scroll.setWidgetResizable(True) + scroll.setWidget(self.message_label) + + main_layout.addWidget(scroll) if choice: # BUTTON LAYOUT for Yes/No @@ -76,8 +72,9 @@ class ErrorPopup(QDialog): main_layout.addLayout(button_layout) else: # OK button - ok_btn = QPushButton("OK") - ok_btn.setStyleSheet("background-color: #1b4d1b;") + ok_btn = QPushButton("✓ OK") + ok_btn.setStyleSheet(CORPORATE_PUNK_DYING_ROT) + ok_btn.clicked.connect(self.accept) # Closes the dialog main_layout.addWidget(ok_btn) diff --git a/gui/v2/ui/styles/css/error_css.py b/gui/v2/ui/styles/css/error_css.py new file mode 100644 index 0000000..1261ebf --- /dev/null +++ b/gui/v2/ui/styles/css/error_css.py @@ -0,0 +1,67 @@ + + +def get_message_style(message: str): + """Returns the Gothic Dark CSS for the label based on text length.""" + # Determine font size: 24px for short messages, 16px for long ones + font_size = 24 if len(message) < 150 else 16 + + return f""" + QLabel {{ + color: #33ff33; + font-size: {font_size}px; + background: transparent; + border: none; + font-family: 'Georgia', serif; + }} + """ + + +GOTHIC_DARK_THEME = """ + QDialog { + background-color: #000000; + border-radius: 20px; + } + QScrollArea { + background-color: #000000; + border: none; + } + QLabel { + color: #33ff33; + font-size: 16px; + background: transparent; + border: none; + font-family: 'Georgia', serif; + } + QPushButton { + color: white; + font-size: 20px; + border-radius: 10px; + padding: 10px; + min-height: 50px; + } +""" + + +CORPORATE_PUNK_DYING_ROT = """ + QPushButton { + background-color: #0a0d0a; /* Deep, muddy 'decayed earth' black */ + color: #33ff33; /* The forced, sterile corporate neon */ + border: 2px solid #1a331a; /* Dull, corroded green border */ + border-radius: 4px; /* Sharper edges feel more industrial/corporate */ + font-family: 'Georgia', serif; + font-weight: bold; + font-size: 18px; + padding: 10px 20px; + min-height: 50px; + } + QPushButton:hover { + background-color: #151a15; /* Slightly lighter, like a failing light */ + color: #ffffff; /* Clinical, sterile white */ + border: 2px solid #33ff33; /* The neon 'activates' - forced corporate perfection */ + } + QPushButton:pressed { + background-color: #050705; /* Sinks back into the void */ + color: #1a331a; /* Text fades into the rot */ + border: 2px solid #000000; /* Border vanishes into the dark */ + } +"""