Files
mayo-mil-hd/qtvcp/screens/qtdragon_hd/handler.py

79 lines
3.4 KiB
Python

# -*- coding: utf-8 -*-
# handler.py
import os
from qtvcp.core import Handler, Info
from qtvcp.widgets.widget_base import WidgetBase
from PyQt5.QtWidgets import QPushButton
print("Plik handler.py został załadowany przez Pythona.")
# Pobierz sciezke do naszej konfiguracji
PATH = Info().get_config_path()
class MyHandler(Handler):
"""
Główna klasa handlera, która dynamicznie ładuje zakładkę użytkownika.
WERSJA DEBUG.
"""
def __init__(self, *args, **kwargs):
"""
Metoda __init__ jest wywoływana przy starcie.
"""
super(MyHandler, self).__init__(*args, **kwargs)
print(">>> HANDLER: __init__ został wykonany. Obiekt MyHandler stworzony.")
# Tworzymy pin HAL dla naszego własnego przycisku
self.my_custom_button_pin = self.hal.newpin("wlasny-przycisk_is-on", "HAL_BIT", "out")
print(f">>> HANDLER: Pin HAL '{self.my_custom_button_pin.name}' został stworzony.")
def initialized(self):
"""
Ta metoda jest wywoływana, gdy interfejs jest już załadowany.
Tutaj wczytujemy nasz plik UI i wstawiamy go do stackedWidget.
"""
print(">>> HANDLER: Metoda 'initialized' została wywołana.")
# Ścieżka do naszego pliku UI z zawartością zakładki
user_tab_ui_file = os.path.join(PATH, 'qtvcp', 'screens', 'qtdragon_hd', 'my_user_tab.ui')
print(f">>> HANDLER: Sprawdzam ścieżkę do pliku UI: {user_tab_ui_file}")
if not os.path.exists(user_tab_ui_file):
print(">>> HANDLER: BŁĄD KRYTYCZNY! Nie znaleziono pliku my_user_tab.ui. Przycisk 'USER' nie zostanie aktywowany.")
self.widgets.btn_user.setVisible(False)
return
print(">>> HANDLER: Plik my_user_tab.ui ZOSTAŁ ZNALEZIONY. Próbuję go załadować.")
# Załaduj zawartość z pliku .ui do nowego widżetu
self.user_tab_widget = WidgetBase()
self.user_tab_widget.load_ui(user_tab_ui_file)
print(">>> HANDLER: Plik UI załadowany pomyślnie do widżetu.")
# Główne QStackedWidget z oryginalnego UI
main_stack = self.widgets.stackedWidget_mainTab
user_button = self.widgets.btn_user
target_index = user_button.property('index')
# Wstawiamy nasz nowy widżet
main_stack.insertWidget(target_index, self.user_tab_widget)
print(f">>> HANDLER: Widżet wstawiony do stackedWidget_mainTab na indeksie {target_index}.")
# Upewnij się, że przycisk USER jest widoczny
user_button.setVisible(True)
print(">>> HANDLER: Próba ustawienia przycisku 'btn_user' jako WIDOCZNY.")
# Znajdź nasz własny przycisk w załadowanym widżecie i połącz jego sygnał
my_button = self.user_tab_widget.findChild(QPushButton, 'moj_wlasny_przycisk_1')
if my_button:
my_button.clicked.connect(self.on_my_custom_button_clicked)
print(">>> HANDLER: Znaleziono 'moj_wlasny_przycisk_1' i połączono jego sygnał 'clicked'.")
else:
print(">>> HANDLER: OSTRZEŻENIE: Nie znaleziono przycisku 'moj_wlasny_przycisk_1' w my_user_tab.ui")
def on_my_custom_button_clicked(self):
current_state = self.my_custom_button_pin.get()
self.my_custom_button_pin.set(not current_state)
print(f">>> HANDLER: Kliknięto własny przycisk! Nowy stan pinu HAL: {not current_state}")