Add function to open Marketplace window

This will now load in a QML file, cache it, and create an empty window with the title 'Marketplace'.

Contributes to issue CURA-8556.
This commit is contained in:
Ghostkeeper 2021-10-19 13:43:41 +02:00
parent aa4b7ddb8b
commit 5897b3de38
No known key found for this signature in database
GPG key ID: 68F39EA88EEED5FF
2 changed files with 55 additions and 3 deletions

View file

@ -1,10 +1,41 @@
# Copyright (c) 2021 Ultimaker B.V.
# Cura is released under the terms of the LGPLv3 or higher.
from UM.PluginObject import PluginObject
import os.path
from PyQt5.QtCore import pyqtSlot
from typing import Optional, TYPE_CHECKING
class Marketplace(PluginObject):
from cura.CuraApplication import CuraApplication # Creating QML objects and managing packages.
from UM.Extension import Extension # We are implementing the main object of an extension here.
from UM.Logger import Logger
from UM.PluginRegistry import PluginRegistry # To find out where we are stored (the proper way).
if TYPE_CHECKING:
from PyQt5.QtCore import QObject
class Marketplace(Extension):
"""
The main managing object for the Marketplace plug-in.
"""
pass # TODO
def __init__(self):
super().__init__()
self._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here.
@pyqtSlot()
def show(self) -> None:
"""
Opens the window of the Marketplace.
If the window hadn't been loaded yet into Qt, it will be created lazily.
"""
if self._window is None:
plugin_path = PluginRegistry.getInstance().getPluginPath(self.getPluginId())
if plugin_path is None:
plugin_path = os.path.dirname(__file__)
path = os.path.join(plugin_path, "resources", "qml", "Marketplace.qml")
self._window = CuraApplication.getInstance().createQmlComponent(path, {})
if self._window is None: # Still None? Failed to load the QML then.
Logger.error(f"Failed to load QML for Marketplace window.")
return
self._window.show()

View file

@ -0,0 +1,21 @@
// Copyright (c) 2021 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.
import QtQuick 2.15
import QtQuick.Window 2.2
import UM 1.2 as UM
Window
{
id: marketplaceDialog
property variant catalog: UM.I18nCatalog { name: "cura" }
minimumWidth: UM.Theme.getSize("modal_window_minimum").width
minimumHeight: UM.Theme.getSize("modal_window_minimum").height
width: minimumWidth
height: minimumHeight
title: "Marketplace" //Seen by Ultimaker as a brand name, so this doesn't get translated.
modality: Qt.NonModal
}