mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-09 23:05:01 -06:00
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:
parent
aa4b7ddb8b
commit
5897b3de38
2 changed files with 55 additions and 3 deletions
|
@ -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()
|
21
plugins/Marketplace/resources/qml/Marketplace.qml
Normal file
21
plugins/Marketplace/resources/qml/Marketplace.qml
Normal 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
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue