mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-07 23:17:32 -06:00
Allow PackageList to be used as a model from QML
QML is leading here and holding the pointers for creation and destruction. Contributes to issue CURA-8556.
This commit is contained in:
parent
4337e81b77
commit
3138452f94
3 changed files with 19 additions and 4 deletions
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
from PyQt5.QtCore import pyqtSlot
|
from PyQt5.QtCore import pyqtSlot
|
||||||
|
from PyQt5.QtQml import qmlRegisterType
|
||||||
from typing import Optional, TYPE_CHECKING
|
from typing import Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from cura.ApplicationMetadata import CuraSDKVersion
|
from cura.ApplicationMetadata import CuraSDKVersion
|
||||||
|
@ -12,6 +13,8 @@ from UM.Extension import Extension # We are implementing the main object of an
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
from UM.PluginRegistry import PluginRegistry # To find out where we are stored (the proper way).
|
from UM.PluginRegistry import PluginRegistry # To find out where we are stored (the proper way).
|
||||||
|
|
||||||
|
from .PackageList import PackageList # To register this type with QML.
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from PyQt5.QtCore import QObject
|
from PyQt5.QtCore import QObject
|
||||||
|
|
||||||
|
@ -27,6 +30,8 @@ class Marketplace(Extension):
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here.
|
self._window: Optional["QObject"] = None # If the window has been loaded yet, it'll be cached in here.
|
||||||
|
|
||||||
|
qmlRegisterType(PackageList, "Cura", 1, 7, "PackageList")
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def show(self) -> None:
|
def show(self) -> None:
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -9,7 +9,7 @@ from UM.Qt.ListModel import ListModel
|
||||||
from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To request the package list from the API.
|
from UM.TaskManagement.HttpRequestManager import HttpRequestManager # To request the package list from the API.
|
||||||
from UM.TaskManagement.HttpRequestScope import JsonDecoratorScope # To request JSON responses from the API.
|
from UM.TaskManagement.HttpRequestScope import JsonDecoratorScope # To request JSON responses from the API.
|
||||||
|
|
||||||
from .Marketplace import PACKAGES_URL # To get the list of packages.
|
from . import Marketplace # To get the list of packages. Imported this way to prevent circular imports.
|
||||||
from .PackageModel import PackageModel # This list is a list of PackageModels.
|
from .PackageModel import PackageModel # This list is a list of PackageModels.
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
|
@ -47,7 +47,7 @@ class PackageList(ListModel):
|
||||||
|
|
||||||
http = HttpRequestManager.getInstance()
|
http = HttpRequestManager.getInstance()
|
||||||
http.get(
|
http.get(
|
||||||
PACKAGES_URL,
|
Marketplace.PACKAGES_URL,
|
||||||
scope = self._scope,
|
scope = self._scope,
|
||||||
callback = self._parseResponse,
|
callback = self._parseResponse,
|
||||||
error_callback = self._onError
|
error_callback = self._onError
|
||||||
|
|
|
@ -2,8 +2,18 @@
|
||||||
// Cura is released under the terms of the LGPLv3 or higher.
|
// Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import QtQuick 2.15
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Controls 2.15
|
||||||
|
import Cura 1.7 as Cura
|
||||||
|
|
||||||
Rectangle
|
Item
|
||||||
{
|
{
|
||||||
color: "pink" //TODO
|
Repeater
|
||||||
|
{
|
||||||
|
model: Cura.PackageList{}
|
||||||
|
|
||||||
|
Label
|
||||||
|
{
|
||||||
|
text: "Test" //TODO: Create a card for each package.
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue