Machine action can now create displayItems

CURA-1385
This commit is contained in:
Jaime van Kessel 2016-06-21 12:47:34 +02:00
parent 3342f2a76a
commit 81602e9ccd

View File

@ -1,8 +1,15 @@
# Copyright (c) 2016 Ultimaker B.V. # Copyright (c) 2016 Ultimaker B.V.
# Cura is released under the terms of the AGPLv3 or higher. # Cura is released under the terms of the AGPLv3 or higher.
from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal from PyQt5.QtCore import QObject, pyqtSlot, pyqtProperty, pyqtSignal, QUrl
from PyQt5.QtQml import QQmlComponent, QQmlContext
from UM.PluginObject import PluginObject from UM.PluginObject import PluginObject
from UM.PluginRegistry import PluginRegistry
from UM.Application import Application
import os
class MachineAction(QObject, PluginObject): class MachineAction(QObject, PluginObject):
@ -10,6 +17,11 @@ class MachineAction(QObject, PluginObject):
super().__init__() super().__init__()
self._key = key self._key = key
self._label = label self._label = label
self._qml_url = ""
self._component = None
self._context = None
self._view = None
labelChanged = pyqtSignal() labelChanged = pyqtSignal()
@ -30,4 +42,19 @@ class MachineAction(QObject, PluginObject):
self._execute() self._execute()
def _execute(self): def _execute(self):
raise NotImplementedError("Execute() must be implemented") raise NotImplementedError("Execute() must be implemented")
def _createViewFromQML(self):
path = QUrl.fromLocalFile(
os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), self._qml_url))
self._component = QQmlComponent(Application.getInstance()._engine, path)
self._context = QQmlContext(Application.getInstance()._engine.rootContext())
self._context.setContextProperty("manager", self)
self._view = self._component.create(self._context)
@pyqtProperty(QObject, constant = True)
def displayItem(self):
if not self._component:
self._createViewFromQML()
return self._view