mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-06 22:47:29 -06:00
Added FirmwareUpdateCheckerMessage, so no variables have to be hidden in the action of a plain Message.
This commit is contained in:
parent
8c71a8855c
commit
931143ceaa
4 changed files with 40 additions and 22 deletions
|
@ -19,6 +19,7 @@ from cura.Settings.GlobalStack import GlobalStack
|
||||||
|
|
||||||
from .FirmwareUpdateCheckerJob import FirmwareUpdateCheckerJob
|
from .FirmwareUpdateCheckerJob import FirmwareUpdateCheckerJob
|
||||||
from .FirmwareUpdateCheckerLookup import FirmwareUpdateCheckerLookup, getSettingsKeyForMachine
|
from .FirmwareUpdateCheckerLookup import FirmwareUpdateCheckerLookup, getSettingsKeyForMachine
|
||||||
|
from .FirmwareUpdateCheckerMessage import FirmwareUpdateCheckerMessage
|
||||||
|
|
||||||
i18n_catalog = i18nCatalog("cura")
|
i18n_catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
@ -40,20 +41,22 @@ class FirmwareUpdateChecker(Extension):
|
||||||
# Partly initialize after creation, since we need our own path from the plugin-manager.
|
# Partly initialize after creation, since we need our own path from the plugin-manager.
|
||||||
self._download_url = None
|
self._download_url = None
|
||||||
self._check_job = None
|
self._check_job = None
|
||||||
self._checked_printer_names = [] # type: Set[str]
|
self._checked_printer_names = set() # type: Set[str]
|
||||||
self._lookups = None
|
self._lookups = None
|
||||||
QtApplication.pluginsLoaded.connect(self._onPluginsLoaded)
|
QtApplication.pluginsLoaded.connect(self._onPluginsLoaded)
|
||||||
|
|
||||||
## Callback for the message that is spawned when there is a new version.
|
## Callback for the message that is spawned when there is a new version.
|
||||||
def _onActionTriggered(self, message, action):
|
def _onActionTriggered(self, message, action):
|
||||||
download_url = self._lookups.getRedirectUserFor(int(action))
|
if action == FirmwareUpdateCheckerMessage.STR_ACTION_DOWNLOAD:
|
||||||
|
machine_id = message.getMachineId()
|
||||||
|
download_url = self._lookups.getRedirectUserFor(machine_id)
|
||||||
if download_url is not None:
|
if download_url is not None:
|
||||||
if QDesktopServices.openUrl(QUrl(download_url)):
|
if QDesktopServices.openUrl(QUrl(download_url)):
|
||||||
Logger.log("i", "Redirected browser to {0} to show newly available firmware.".format(download_url))
|
Logger.log("i", "Redirected browser to {0} to show newly available firmware.".format(download_url))
|
||||||
else:
|
else:
|
||||||
Logger.log("e", "Can't reach URL: {0}".format(download_url))
|
Logger.log("e", "Can't reach URL: {0}".format(download_url))
|
||||||
else:
|
else:
|
||||||
Logger.log("e", "Can't find URL for {0}".format(action))
|
Logger.log("e", "Can't find URL for {0}".format(machine_id))
|
||||||
|
|
||||||
def _onContainerAdded(self, container):
|
def _onContainerAdded(self, container):
|
||||||
# Only take care when a new GlobalStack was added
|
# Only take care when a new GlobalStack was added
|
||||||
|
@ -88,7 +91,7 @@ class FirmwareUpdateChecker(Extension):
|
||||||
container_name = container.definition.getName()
|
container_name = container.definition.getName()
|
||||||
if container_name in self._checked_printer_names:
|
if container_name in self._checked_printer_names:
|
||||||
return
|
return
|
||||||
self._checked_printer_names.append(container_name)
|
self._checked_printer_names.add(container_name)
|
||||||
|
|
||||||
self._check_job = FirmwareUpdateCheckerJob(container = container, silent = silent,
|
self._check_job = FirmwareUpdateCheckerJob(container = container, silent = silent,
|
||||||
lookups = self._lookups,
|
lookups = self._lookups,
|
||||||
|
|
|
@ -10,9 +10,9 @@ from UM.Version import Version
|
||||||
import urllib.request
|
import urllib.request
|
||||||
from urllib.error import URLError
|
from urllib.error import URLError
|
||||||
from typing import Dict
|
from typing import Dict
|
||||||
import codecs
|
|
||||||
|
|
||||||
from .FirmwareUpdateCheckerLookup import FirmwareUpdateCheckerLookup, getSettingsKeyForMachine
|
from .FirmwareUpdateCheckerLookup import FirmwareUpdateCheckerLookup, getSettingsKeyForMachine
|
||||||
|
from .FirmwareUpdateCheckerMessage import FirmwareUpdateCheckerMessage
|
||||||
|
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
i18n_catalog = i18nCatalog("cura")
|
i18n_catalog = i18nCatalog("cura")
|
||||||
|
@ -99,22 +99,7 @@ class FirmwareUpdateCheckerJob(Job):
|
||||||
# notify the user when no new firmware version is available.
|
# notify the user when no new firmware version is available.
|
||||||
if (checked_version != "") and (checked_version != current_version):
|
if (checked_version != "") and (checked_version != current_version):
|
||||||
Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE")
|
Logger.log("i", "SHOWING FIRMWARE UPDATE MESSAGE")
|
||||||
|
message = FirmwareUpdateCheckerMessage(machine_id, machine_name)
|
||||||
message = Message(i18n_catalog.i18nc(
|
|
||||||
"@info Don't translate {machine_name}, since it gets replaced by a printer name!",
|
|
||||||
"New features are available for your {machine_name}! It is recommended to update the firmware on your printer.").format(
|
|
||||||
machine_name = machine_name),
|
|
||||||
title = i18n_catalog.i18nc(
|
|
||||||
"@info:title The %s gets replaced with the printer name.",
|
|
||||||
"New %s firmware available") % machine_name)
|
|
||||||
|
|
||||||
message.addAction(machine_id,
|
|
||||||
i18n_catalog.i18nc("@action:button", "How to update"),
|
|
||||||
"[no_icon]",
|
|
||||||
"[no_description]",
|
|
||||||
button_style = Message.ActionButtonStyle.LINK,
|
|
||||||
button_align = Message.ActionButtonStyle.BUTTON_ALIGN_LEFT)
|
|
||||||
|
|
||||||
message.actionTriggered.connect(self._callback)
|
message.actionTriggered.connect(self._callback)
|
||||||
message.show()
|
message.show()
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -6,7 +6,6 @@ import json
|
||||||
from typing import Callable, Dict, List, Optional
|
from typing import Callable, Dict, List, Optional
|
||||||
|
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.Version import Version
|
|
||||||
|
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
i18n_catalog = i18nCatalog("cura")
|
i18n_catalog = i18nCatalog("cura")
|
||||||
|
|
|
@ -0,0 +1,31 @@
|
||||||
|
|
||||||
|
from UM.i18n import i18nCatalog
|
||||||
|
from UM.Message import Message
|
||||||
|
|
||||||
|
i18n_catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
||||||
|
# Make a separate class, since we need an extra field: The machine-id that this message is about.
|
||||||
|
class FirmwareUpdateCheckerMessage(Message):
|
||||||
|
STR_ACTION_DOWNLOAD = "download"
|
||||||
|
|
||||||
|
def __init__(self, machine_id: int, machine_name: str) -> None:
|
||||||
|
super().__init__(i18n_catalog.i18nc(
|
||||||
|
"@info Don't translate {machine_name}, since it gets replaced by a printer name!",
|
||||||
|
"New features are available for your {machine_name}! It is recommended to update the firmware on your printer.").format(
|
||||||
|
machine_name=machine_name),
|
||||||
|
title=i18n_catalog.i18nc(
|
||||||
|
"@info:title The %s gets replaced with the printer name.",
|
||||||
|
"New %s firmware available") % machine_name)
|
||||||
|
|
||||||
|
self._machine_id = machine_id
|
||||||
|
|
||||||
|
self.addAction(self.STR_ACTION_DOWNLOAD,
|
||||||
|
i18n_catalog.i18nc("@action:button", "How to update"),
|
||||||
|
"[no_icon]",
|
||||||
|
"[no_description]",
|
||||||
|
button_style=Message.ActionButtonStyle.LINK,
|
||||||
|
button_align=Message.ActionButtonStyle.BUTTON_ALIGN_LEFT)
|
||||||
|
|
||||||
|
def getMachineId(self) -> int:
|
||||||
|
return self._machine_id
|
Loading…
Add table
Add a link
Reference in a new issue