mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
More WIP on Settings
This commit is contained in:
@@ -8,8 +8,7 @@ from src.engines.blender.blender_engine import Blender
|
|||||||
from src.engines.core.base_downloader import EngineDownloader
|
from src.engines.core.base_downloader import EngineDownloader
|
||||||
from src.utilities.misc_helper import current_system_os, current_system_cpu
|
from src.utilities.misc_helper import current_system_os, current_system_cpu
|
||||||
|
|
||||||
# url = "https://download.blender.org/release/"
|
url = "https://download.blender.org/release/"
|
||||||
url = "https://ftp.nluug.nl/pub/graphics/blender/release/" # much faster mirror for testing
|
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
supported_formats = ['.zip', '.tar.xz', '.dmg']
|
supported_formats = ['.zip', '.tar.xz', '.dmg']
|
||||||
|
|||||||
@@ -243,6 +243,27 @@ class EngineManager:
|
|||||||
threads.append(thread)
|
threads.append(thread)
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def update_engine(cls, engine_class):
|
||||||
|
logger.debug(f"Checking for updates to {engine_class.name()}")
|
||||||
|
latest_version = engine_class.downloader().find_most_recent_version()
|
||||||
|
|
||||||
|
if not latest_version:
|
||||||
|
logger.warning(f"Could not find most recent version of {engine_class.name()} to download")
|
||||||
|
return
|
||||||
|
|
||||||
|
version_num = latest_version.get('version')
|
||||||
|
if cls.is_version_downloaded(engine_class.name(), version_num):
|
||||||
|
logger.debug(f"Latest version of {engine_class.name()} ({version_num}) already downloaded")
|
||||||
|
return
|
||||||
|
|
||||||
|
# download the engine
|
||||||
|
logger.info(f"Downloading latest version of {engine_class.name()} ({version_num})...")
|
||||||
|
download_job = cls.download_engine(engine=engine_class.name(), version=version_num, background=True)
|
||||||
|
|
||||||
|
return {"latest": latest_version, "thread": download_job, "name": engine_class.name()}
|
||||||
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create_worker(cls, renderer, input_path, output_path, engine_version=None, args=None, parent=None, name=None):
|
def create_worker(cls, renderer, input_path, output_path, engine_version=None, args=None, parent=None, name=None):
|
||||||
|
|
||||||
|
|||||||
@@ -10,12 +10,13 @@ from PyQt6.QtCore import Qt, QSettings
|
|||||||
from PyQt6.QtGui import QIcon
|
from PyQt6.QtGui import QIcon
|
||||||
from PyQt6.QtWidgets import QApplication, QMainWindow, QListWidget, QListWidgetItem, QStackedWidget, QVBoxLayout, \
|
from PyQt6.QtWidgets import QApplication, QMainWindow, QListWidget, QListWidgetItem, QStackedWidget, QVBoxLayout, \
|
||||||
QWidget, QLabel, QCheckBox, QLineEdit, \
|
QWidget, QLabel, QCheckBox, QLineEdit, \
|
||||||
QComboBox, QPushButton, QHBoxLayout, QGroupBox, QTableWidget, QAbstractItemView, QTableWidgetItem, QHeaderView
|
QComboBox, QPushButton, QHBoxLayout, QGroupBox, QTableWidget, QAbstractItemView, QTableWidgetItem, QHeaderView, \
|
||||||
|
QMessageBox
|
||||||
|
|
||||||
from api.server_proxy import RenderServerProxy
|
from api.server_proxy import RenderServerProxy
|
||||||
from engines.engine_manager import EngineManager
|
from engines.engine_manager import EngineManager
|
||||||
from utilities.config import Config
|
from utilities.config import Config
|
||||||
from utilities.misc_helper import launch_url
|
from utilities.misc_helper import launch_url, system_safe_path
|
||||||
from version import APP_AUTHOR, APP_NAME
|
from version import APP_AUTHOR, APP_NAME
|
||||||
|
|
||||||
settings = QSettings(APP_AUTHOR, APP_NAME)
|
settings = QSettings(APP_AUTHOR, APP_NAME)
|
||||||
@@ -268,6 +269,35 @@ class SettingsWindow(QMainWindow):
|
|||||||
launch_url(engine_info['path'])
|
launch_url(engine_info['path'])
|
||||||
|
|
||||||
def check_for_new_engines(self):
|
def check_for_new_engines(self):
|
||||||
|
|
||||||
|
if not EngineManager.engines_path: # fix issue where sometimes path was not set
|
||||||
|
EngineManager.engines_path = system_safe_path(
|
||||||
|
os.path.join(os.path.join(os.path.expanduser(Config.upload_folder),
|
||||||
|
'engines')))
|
||||||
|
|
||||||
|
results = []
|
||||||
|
for engine in EngineManager.downloadable_engines():
|
||||||
|
if settings.value(f'engine_download-{engine.name()}', False):
|
||||||
|
update_result = EngineManager.update_engine(engine)
|
||||||
|
if update_result:
|
||||||
|
results.append(update_result)
|
||||||
|
|
||||||
|
if results:
|
||||||
|
for result in results:
|
||||||
|
msg_box = QMessageBox()
|
||||||
|
msg_box.setWindowTitle(f"{result['name']} {result['version']} Available")
|
||||||
|
msg_box.setText(f"A new version of {result['name']} is available ({result['version']}). It will begin downloading now.")
|
||||||
|
msg_box.setIcon(QMessageBox.Icon.Information)
|
||||||
|
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
|
||||||
|
msg_box.exec()
|
||||||
|
else:
|
||||||
|
msg_box = QMessageBox()
|
||||||
|
msg_box.setWindowTitle("No Updates Available")
|
||||||
|
msg_box.setText("All your render engines are up-to-date.")
|
||||||
|
msg_box.setIcon(QMessageBox.Icon.Information)
|
||||||
|
msg_box.setStandardButtons(QMessageBox.StandardButton.Ok)
|
||||||
|
msg_box.exec()
|
||||||
|
|
||||||
settings.setValue("engines_last_update_time", datetime.now().isoformat())
|
settings.setValue("engines_last_update_time", datetime.now().isoformat())
|
||||||
self.update_last_checked_label()
|
self.update_last_checked_label()
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user