mostly finish rewrite
This commit is contained in:
+18
-12
@@ -1,9 +1,17 @@
|
||||
"""
|
||||
Filename: welcome.py
|
||||
Description: Welcome dialog for FLARES
|
||||
|
||||
Author: Tyler de Zeeuw
|
||||
License: GPL-3.0
|
||||
"""
|
||||
|
||||
from PySide6.QtWidgets import QTextBrowser, QVBoxLayout, QLabel, QDialog, QHBoxLayout, QPushButton
|
||||
from PySide6.QtGui import QDesktopServices, QIcon
|
||||
from PySide6.QtCore import QUrl
|
||||
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkRequest
|
||||
|
||||
from src.shared.shareddata import APP_NAME, CURRENT_VERSION, resource_path
|
||||
from src.shared.shareddata import APP_NAME, CURRENT_VERSION, CHANGELOG_URL, resource_path
|
||||
|
||||
|
||||
class WelcomeDialog(QDialog):
|
||||
@@ -13,13 +21,13 @@ class WelcomeDialog(QDialog):
|
||||
self.setMinimumSize(550, 450)
|
||||
self.resize(800, 500)
|
||||
|
||||
# Main Layout
|
||||
layout = QVBoxLayout(self)
|
||||
|
||||
# Header Layout (Logo + App Name)
|
||||
header_layout = QHBoxLayout()
|
||||
logo_label = QLabel(self)
|
||||
logo_label.setPixmap(QIcon(resource_path("icons/main.ico")).pixmap(48, 48)) # Fits cleanly in a header
|
||||
|
||||
# NOTE: might not work on mac and need the icns file
|
||||
logo_label.setPixmap(QIcon(resource_path("icons/main.ico")).pixmap(48, 48))
|
||||
if direct:
|
||||
title_label = QLabel(f"<h2>{APP_NAME.upper()} has been sucessfully updated to version {CURRENT_VERSION}!</h2>", self)
|
||||
else:
|
||||
@@ -30,19 +38,19 @@ class WelcomeDialog(QDialog):
|
||||
header_layout.addStretch()
|
||||
layout.addLayout(header_layout)
|
||||
|
||||
# Text Browser Area (Automatically converts Markdown syntax into clean formatted UI text)
|
||||
self.text_browser = QTextBrowser(self)
|
||||
self.text_browser.setHtml("<p style='color: gray;'>Loading latest updates from server...</p>")
|
||||
self.text_browser.setOpenLinks(False) # Don't open links inside the viewer
|
||||
|
||||
# Ensure links open in the default web browser and not in this window
|
||||
self.text_browser.setOpenLinks(False)
|
||||
self.text_browser.anchorClicked.connect(QDesktopServices.openUrl)
|
||||
layout.addWidget(self.text_browser)
|
||||
|
||||
# Footer Controls Layout
|
||||
footer_layout = QHBoxLayout()
|
||||
|
||||
ok_button = QPushButton("OK", self)
|
||||
ok_button.setDefault(True)
|
||||
ok_button.clicked.connect(self.accept) # Closes the dialog with a success signal
|
||||
ok_button.clicked.connect(self.accept)
|
||||
|
||||
footer_layout.addStretch()
|
||||
footer_layout.addWidget(ok_button)
|
||||
@@ -51,18 +59,16 @@ class WelcomeDialog(QDialog):
|
||||
# Fetch markdown from the web asynchronously
|
||||
self.network_manager = QNetworkAccessManager(self)
|
||||
self.network_manager.finished.connect(self._on_download_complete)
|
||||
|
||||
md_url = "https://git.research.dezeeuw.ca/tyler/flares/raw/branch/main/changelog_major.md"
|
||||
self.network_manager.get(QNetworkRequest(QUrl(md_url)))
|
||||
self.network_manager.get(QNetworkRequest(QUrl(CHANGELOG_URL)))
|
||||
|
||||
|
||||
def _on_download_complete(self, reply):
|
||||
"""Processes the downloaded markdown and drops it into the view frame."""
|
||||
if reply.error() == reply.NetworkError.NoError:
|
||||
raw_bytes = reply.readAll()
|
||||
|
||||
# Convert raw bytes to standard text string
|
||||
markdown_text = str(raw_bytes, encoding='utf-8')
|
||||
# Qt's QTextBrowser natively renders markdown arrays beautifully!
|
||||
self.text_browser.setMarkdown(markdown_text)
|
||||
else:
|
||||
self.text_browser.setHtml(
|
||||
|
||||
Reference in New Issue
Block a user