Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGhostkeeper <rubend@tutanota.com>2020-02-04 16:25:22 +0300
committerGhostkeeper <rubend@tutanota.com>2020-02-04 16:25:22 +0300
commit232b59bfb66e8d62d5bd65f06089978cb9820a64 (patch)
tree005439477f25efc962d28ef9c36508ab9c2881bd /plugins
parentccc295e2bccaddab56890c095f60edb295bcf56f (diff)
parent5a7ec98f1e9def6e17a9387c23642bee89e4c35d (diff)
Merge branch 'master' into CURA-7024_remove_hidden_stacks
Diffstat (limited to 'plugins')
-rw-r--r--plugins/Toolbox/resources/images/shop.svg3
-rw-r--r--plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml43
-rw-r--r--plugins/Toolbox/resources/qml/components/ToolboxHeader.qml56
-rw-r--r--plugins/Toolbox/src/CloudSync/LicensePresenter.py2
-rw-r--r--plugins/Toolbox/src/Toolbox.py15
5 files changed, 92 insertions, 27 deletions
diff --git a/plugins/Toolbox/resources/images/shop.svg b/plugins/Toolbox/resources/images/shop.svg
new file mode 100644
index 0000000000..64862834b0
--- /dev/null
+++ b/plugins/Toolbox/resources/images/shop.svg
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24">
+ <path d="M19,3H5A2.9,2.9,0,0,0,2,6V9a3.9,3.9,0,0,0,2,3.4V22H20V12.4A3.9,3.9,0,0,0,22,9V6A2.9,2.9,0,0,0,19,3ZM10,5h4V9a2,2,0,0,1-4,0ZM4,9V5H8V9A2,2,0,0,1,4,9ZM18,20H14V15H10v5H6V13a3.7,3.7,0,0,0,3-1.4A3.7,3.7,0,0,0,12,13a3.7,3.7,0,0,0,3-1.4A3.7,3.7,0,0,0,18,13ZM20,9a2,2,0,0,1-4,0V5h4Z" />
+</svg>
diff --git a/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml
index 72dd6f91a2..9b34952ab6 100644
--- a/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml
+++ b/plugins/Toolbox/resources/qml/components/ToolboxDownloadsShowcase.qml
@@ -14,17 +14,44 @@ Rectangle
Column
{
height: childrenRect.height + 2 * padding
- spacing: UM.Theme.getSize("default_margin").width
+ spacing: UM.Theme.getSize("default_margin").height
width: parent.width
padding: UM.Theme.getSize("wide_margin").height
- Label
+ Item
{
- id: heading
- text: catalog.i18nc("@label", "Featured")
- width: parent.width
- color: UM.Theme.getColor("text_medium")
- font: UM.Theme.getFont("large")
- renderType: Text.NativeRendering
+ width: parent.width - parent.padding * 2
+ height: childrenRect.height
+ Label
+ {
+ id: heading
+ text: catalog.i18nc("@label", "Featured")
+ width: contentWidth
+ height: contentHeight
+ color: UM.Theme.getColor("text_medium")
+ font: UM.Theme.getFont("large")
+ renderType: Text.NativeRendering
+ }
+ UM.TooltipArea
+ {
+ width: childrenRect.width
+ height: childrenRect.height
+ anchors.right: parent.right
+ text: catalog.i18nc("@info:tooltip", "Go to Web Marketplace")
+ Label
+ {
+ text: "<a href='%2'>".arg(toolbox.getWebMarketplaceUrl("materials")) + catalog.i18nc("@label", "Search materials") + "</a>"
+ width: contentWidth
+ height: contentHeight
+ horizontalAlignment: Text.AlignRight
+ font: UM.Theme.getFont("default")
+ renderType: Text.NativeRendering
+
+ linkColor: UM.Theme.getColor("text_link")
+ onLinkActivated: Qt.openUrlExternally(link)
+
+ visible: toolbox.viewCategory === "material"
+ }
+ }
}
Grid
{
diff --git a/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml b/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml
index 491567eb5f..3cba9a9ece 100644
--- a/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml
+++ b/plugins/Toolbox/resources/qml/components/ToolboxHeader.qml
@@ -1,4 +1,4 @@
-// Copyright (c) 2018 Ultimaker B.V.
+// Copyright (c) 2020 Ultimaker B.V.
// Toolbox is released under the terms of the LGPLv3 or higher.
import QtQuick 2.10
@@ -51,32 +51,25 @@ Item
toolbox.viewPage = "overview"
}
}
- }
- ToolboxTabButton
- {
- id: installedTabButton
- text: catalog.i18nc("@title:tab", "Installed")
- active: toolbox.viewCategory == "installed"
- enabled: !toolbox.isDownloading
- anchors
+ ToolboxTabButton
{
- right: parent.right
- rightMargin: UM.Theme.getSize("default_margin").width
+ id: installedTabButton
+ text: catalog.i18nc("@title:tab", "Installed")
+ active: toolbox.viewCategory == "installed"
+ enabled: !toolbox.isDownloading
+ onClicked: toolbox.viewCategory = "installed"
+ width: UM.Theme.getSize("toolbox_header_tab").width + marketplaceNotificationIcon.width - UM.Theme.getSize("default_margin").width
}
- onClicked: toolbox.viewCategory = "installed"
- width: UM.Theme.getSize("toolbox_header_tab").width + marketplaceNotificationIcon.width - UM.Theme.getSize("default_margin").width
+
+
}
Cura.NotificationIcon
{
id: marketplaceNotificationIcon
-
visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0
-
- anchors.right: installedTabButton.right
- anchors.verticalCenter: installedTabButton.verticalCenter
-
+ anchors.right: bar.right
labelText:
{
const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length
@@ -84,6 +77,33 @@ Item
}
}
+
+ UM.TooltipArea
+ {
+ id: webMarketplaceButtonTooltipArea
+ width: childrenRect.width
+ height: parent.height
+ text: catalog.i18nc("@info:tooltip", "Go to Web Marketplace")
+ anchors
+ {
+ right: parent.right
+ rightMargin: UM.Theme.getSize("default_margin").width
+ verticalCenter: parent.verticalCenter
+ }
+ onClicked: Qt.openUrlExternally(toolbox.getWebMarketplaceUrl("plugins"))
+ UM.RecolorImage
+ {
+ id: cloudMarketplaceButton
+ source: "../../images/shop.svg"
+ color: UM.Theme.getColor(webMarketplaceButtonTooltipArea.containsMouse ? "primary" : "text")
+ height: parent.height / 2
+ width: height
+ anchors.verticalCenter: parent.verticalCenter
+ sourceSize.width: width
+ sourceSize.height: height
+ }
+ }
+
ToolboxShadow
{
anchors.top: bar.bottom
diff --git a/plugins/Toolbox/src/CloudSync/LicensePresenter.py b/plugins/Toolbox/src/CloudSync/LicensePresenter.py
index 5f01166898..9e0a888320 100644
--- a/plugins/Toolbox/src/CloudSync/LicensePresenter.py
+++ b/plugins/Toolbox/src/CloudSync/LicensePresenter.py
@@ -63,7 +63,7 @@ class LicensePresenter(QObject):
self._package_models[self._current_package_idx]["accepted"] = False
self._checkNextPage()
- def _initState(self, packages: Dict[str, Dict[str, str]]) -> None:
+ def _initState(self, packages: Dict[str, Dict[str, Any]]) -> None:
implicitly_accepted_count = 0
diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py
index 782d6668ba..55c6ba223b 100644
--- a/plugins/Toolbox/src/Toolbox.py
+++ b/plugins/Toolbox/src/Toolbox.py
@@ -16,6 +16,7 @@ from UM.i18n import i18nCatalog
from UM.Version import Version
from cura import ApplicationMetadata
+
from cura.CuraApplication import CuraApplication
from cura.Machines.ContainerTree import ContainerTree
@@ -31,6 +32,13 @@ if TYPE_CHECKING:
i18n_catalog = i18nCatalog("cura")
+DEFAULT_MARKETPLACE_ROOT = "https://marketplace.ultimaker.com" # type: str
+
+try:
+ from cura.CuraVersion import CuraMarketplaceRoot
+except ImportError:
+ CuraMarketplaceRoot = DEFAULT_MARKETPLACE_ROOT
+
# todo Remove license and download dialog, use SyncOrchestrator instead
## Provides a marketplace for users to download plugins an materials
@@ -766,6 +774,13 @@ class Toolbox(QObject, Extension):
def materialsGenericModel(self) -> PackagesModel:
return self._materials_generic_model
+ @pyqtSlot(str, result = str)
+ def getWebMarketplaceUrl(self, page: str) -> str:
+ root = CuraMarketplaceRoot
+ if root == "":
+ root = DEFAULT_MARKETPLACE_ROOT
+ return root + "/app/cura/" + page
+
# Filter Models:
# --------------------------------------------------------------------------
@pyqtSlot(str, str, str)