hydraveil-gui/gui/v2/ui/pages/Page.py
2026-07-01 11:01:26 -04:00

96 lines
3.4 KiB
Python
Executable file

import os
from PyQt6.QtWidgets import QWidget, QLabel, QPushButton
from PyQt6.QtGui import QIcon
from PyQt6 import QtCore
class Page(QWidget):
def __init__(self, name, page_stack, custom_window, parent=None):
super().__init__(parent)
self.custom_window = custom_window
self.btn_path = custom_window.btn_path
self.name = name
self.page_stack = page_stack
self._prepared = None
self.init_ui()
self.selected_profiles = []
self.selected_wireguard = []
self.selected_residential = []
self.buttons = []
@staticmethod
def prepare_data(custom_window):
return None
def _prepared_value(self, key, loader):
if self._prepared is not None and key in self._prepared:
return self._prepared[key]
return loader()
def add_selected_profile(self, profile):
self.selected_profiles.clear()
self.selected_wireguard.clear()
self.selected_residential.clear()
self.selected_profiles.append(profile)
def init_ui(self):
self.title = QLabel(self)
self.title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.title.setObjectName("titles")
self.display = QLabel(self)
self.display.setObjectName("display")
self.display.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
buttons_info = [
(QPushButton, "button_back", "back", (660, 534, 48, 35)),
(QPushButton, "button_next", "next", (720, 534, 48, 35)),
(QPushButton, "button_reverse", "back", (660, 534, 48, 35)),
(QPushButton, "button_go", "next", (720, 534, 48, 35)),
(QPushButton, "button_apply", "apply", (720, 534, 48, 35)),
]
for button_type, object_name, icon_name, geometry in buttons_info:
button = button_type(self)
button.setObjectName(object_name)
button.setGeometry(*geometry)
button.setIcon(
QIcon(os.path.join(self.btn_path, f"{icon_name}.png")))
button.setIconSize(QtCore.QSize(48, 35))
button.setVisible(False)
if object_name == "button_back":
self.button_back = button
self.button_back.clicked.connect(self.gestionar_back)
if object_name == "button_next":
self.button_next = button
self.button_next.clicked.connect(self.gestionar_next)
if object_name == "button_reverse":
self.button_reverse = button
self.button_reverse.clicked.connect(self.limpiar)
if object_name == "button_go":
self.button_go = button
self.button_go.clicked.connect(self.limpiar)
if object_name == "button_apply":
self.button_apply = button
def gestionar_back(self):
current_index = self.page_stack.currentIndex()
if current_index == 18:
return
if current_index > 0:
self.page_stack.setCurrentIndex(current_index - 1)
def gestionar_next(self):
current_index = self.page_stack.currentIndex()
next_index = (current_index + 1) % self.page_stack.count()
self.page_stack.setCurrentIndex(next_index)
self.limpiar()
def limpiar(self):
self.display.clear()
for boton in self.buttons:
boton.setChecked(False)
self.button_next.setVisible(False)