mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
* Initial commit of py2app code * Use environment variable RESOURCE_PATH when running as a bundle * Move config files to system config location
69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
''' app/ui/widgets/statusbar.py '''
|
|
import os.path
|
|
import socket
|
|
import threading
|
|
import time
|
|
|
|
from PyQt6.QtCore import Qt, QTimer
|
|
from PyQt6.QtGui import QPixmap
|
|
from PyQt6.QtWidgets import QStatusBar, QLabel
|
|
|
|
from src.api.server_proxy import RenderServerProxy
|
|
from src.engines.engine_manager import EngineManager
|
|
from src.utilities.misc_helper import resources_dir
|
|
|
|
|
|
class StatusBar(QStatusBar):
|
|
"""
|
|
Initialize the status bar.
|
|
|
|
Args:
|
|
parent: The parent widget.
|
|
"""
|
|
|
|
def __init__(self, parent) -> None:
|
|
super().__init__(parent)
|
|
|
|
def background_update():
|
|
|
|
proxy = RenderServerProxy(socket.gethostname())
|
|
proxy.start_background_update()
|
|
image_names = {'Ready': 'GreenCircle.png', 'Offline': "RedSquare.png"}
|
|
|
|
# Check for status change every 1s on background thread
|
|
while True:
|
|
new_status = proxy.status()
|
|
new_image_name = image_names.get(new_status, 'Synchronize.png')
|
|
image_path = os.path.join(resources_dir(), new_image_name)
|
|
self.label.setPixmap((QPixmap(image_path).scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio)))
|
|
|
|
# add download status
|
|
if EngineManager.download_tasks:
|
|
if len(EngineManager.download_tasks) == 1:
|
|
task = EngineManager.download_tasks[0]
|
|
new_status = f"{new_status} | Downloading {task.engine.capitalize()} {task.version}..."
|
|
else:
|
|
new_status = f"{new_status} | Downloading {len(EngineManager.download_tasks)} engines"
|
|
|
|
self.messageLabel.setText(new_status)
|
|
time.sleep(1)
|
|
|
|
background_thread = threading.Thread(target=background_update,)
|
|
background_thread.daemon = True
|
|
background_thread.start()
|
|
|
|
# Create a label that holds an image
|
|
self.label = QLabel()
|
|
image_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'resources',
|
|
'RedSquare.png')
|
|
pixmap = (QPixmap(image_path).scaled(16, 16, Qt.AspectRatioMode.KeepAspectRatio))
|
|
self.label.setPixmap(pixmap)
|
|
self.addWidget(self.label)
|
|
|
|
# Create a label for the message
|
|
self.messageLabel = QLabel()
|
|
self.addWidget(self.messageLabel)
|
|
|
|
# Call this method to display a message
|
|
self.messageLabel.setText("Loading...")
|