mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-16 11:17:49 -06:00
Add CuraView, which does something similar to CuraStage
So instead of relying on strange activeViewProxy, it's up to the CuraView to provide a set of components. These can subsequently be used by the active stage again. CURA-5829
This commit is contained in:
parent
d8dd9bf363
commit
0a3803d665
4 changed files with 39 additions and 5 deletions
24
cura/CuraView.py
Normal file
24
cura/CuraView.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
# Copyright (c) 2018 Ultimaker B.V.
|
||||||
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
from PyQt5.QtCore import pyqtProperty, QUrl
|
||||||
|
|
||||||
|
from UM.View.View import View
|
||||||
|
|
||||||
|
|
||||||
|
# Since Cura has a few pre-defined "space claims" for the locations of certain components, we've provided some structure
|
||||||
|
# to indicate this.
|
||||||
|
# MainComponent works in the same way the MainComponent of a stage.
|
||||||
|
# the stageMenuComponent returns an item that should be used somehwere in the stage menu. It's up to the active stage
|
||||||
|
# to actually do something with this.
|
||||||
|
class CuraView(View):
|
||||||
|
def __init__(self, parent = None) -> None:
|
||||||
|
super().__init__(parent)
|
||||||
|
|
||||||
|
@pyqtProperty(QUrl, constant = True)
|
||||||
|
def mainComponent(self) -> QUrl:
|
||||||
|
return self.getDisplayComponent("main")
|
||||||
|
|
||||||
|
@pyqtProperty(QUrl, constant = True)
|
||||||
|
def stageMenuComponent(self) -> QUrl:
|
||||||
|
return self.getDisplayComponent("menu")
|
|
@ -78,7 +78,7 @@ Item
|
||||||
height: childrenRect.height
|
height: childrenRect.height
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
|
|
||||||
source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : ""
|
source: UM.Controller.activeView != null && UM.Controller.activeView.stageMenuComponent != null ? UM.Controller.activeView.stageMenuComponent : ""
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.PrintSetupSelector
|
Cura.PrintSetupSelector
|
||||||
|
|
|
@ -26,8 +26,8 @@ from UM.View.GL.OpenGL import OpenGL
|
||||||
from UM.View.GL.OpenGLContext import OpenGLContext
|
from UM.View.GL.OpenGLContext import OpenGLContext
|
||||||
from UM.View.GL.ShaderProgram import ShaderProgram
|
from UM.View.GL.ShaderProgram import ShaderProgram
|
||||||
|
|
||||||
from UM.View.View import View
|
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
|
from cura.CuraView import CuraView
|
||||||
from cura.Scene.ConvexHullNode import ConvexHullNode
|
from cura.Scene.ConvexHullNode import ConvexHullNode
|
||||||
from cura.CuraApplication import CuraApplication
|
from cura.CuraApplication import CuraApplication
|
||||||
|
|
||||||
|
@ -48,15 +48,15 @@ catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
||||||
## View used to display g-code paths.
|
## View used to display g-code paths.
|
||||||
class SimulationView(View):
|
class SimulationView(CuraView):
|
||||||
# Must match SimulationView.qml
|
# Must match SimulationView.qml
|
||||||
LAYER_VIEW_TYPE_MATERIAL_TYPE = 0
|
LAYER_VIEW_TYPE_MATERIAL_TYPE = 0
|
||||||
LAYER_VIEW_TYPE_LINE_TYPE = 1
|
LAYER_VIEW_TYPE_LINE_TYPE = 1
|
||||||
LAYER_VIEW_TYPE_FEEDRATE = 2
|
LAYER_VIEW_TYPE_FEEDRATE = 2
|
||||||
LAYER_VIEW_TYPE_THICKNESS = 3
|
LAYER_VIEW_TYPE_THICKNESS = 3
|
||||||
|
|
||||||
def __init__(self) -> None:
|
def __init__(self, parent = None) -> None:
|
||||||
super().__init__()
|
super().__init__(parent)
|
||||||
|
|
||||||
self._max_layers = 0
|
self._max_layers = 0
|
||||||
self._current_layer_num = 0
|
self._current_layer_num = 0
|
||||||
|
@ -113,6 +113,13 @@ class SimulationView(View):
|
||||||
self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"),
|
self._wireprint_warning_message = Message(catalog.i18nc("@info:status", "Cura does not accurately display layers when Wire Printing is enabled"),
|
||||||
title = catalog.i18nc("@info:title", "Simulation View"))
|
title = catalog.i18nc("@info:title", "Simulation View"))
|
||||||
|
|
||||||
|
Application.getInstance().engineCreatedSignal.connect(self._onEngineCreated)
|
||||||
|
|
||||||
|
def _onEngineCreated(self) -> None:
|
||||||
|
menu_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("SimulationView"),
|
||||||
|
"SimulationView.qml")
|
||||||
|
self.addDisplayComponent("menu", menu_component_path)
|
||||||
|
|
||||||
def _evaluateCompatibilityMode(self) -> bool:
|
def _evaluateCompatibilityMode(self) -> bool:
|
||||||
return OpenGLContext.isLegacyOpenGL() or bool(Application.getInstance().getPreferences().getValue("view/force_layer_view_compatibility_mode"))
|
return OpenGLContext.isLegacyOpenGL() or bool(Application.getInstance().getPreferences().getValue("view/force_layer_view_compatibility_mode"))
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@ from . import SimulationViewProxy, SimulationView
|
||||||
|
|
||||||
catalog = i18nCatalog("cura")
|
catalog = i18nCatalog("cura")
|
||||||
|
|
||||||
|
|
||||||
def getMetaData():
|
def getMetaData():
|
||||||
return {
|
return {
|
||||||
"view": {
|
"view": {
|
||||||
|
@ -17,9 +18,11 @@ def getMetaData():
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def createSimulationViewProxy(engine, script_engine):
|
def createSimulationViewProxy(engine, script_engine):
|
||||||
return SimulationViewProxy.SimulationViewProxy()
|
return SimulationViewProxy.SimulationViewProxy()
|
||||||
|
|
||||||
|
|
||||||
def register(app):
|
def register(app):
|
||||||
simulation_view = SimulationView.SimulationView()
|
simulation_view = SimulationView.SimulationView()
|
||||||
qmlRegisterSingletonType(SimulationViewProxy.SimulationViewProxy, "UM", 1, 0, "SimulationView", simulation_view.getProxy)
|
qmlRegisterSingletonType(SimulationViewProxy.SimulationViewProxy, "UM", 1, 0, "SimulationView", simulation_view.getProxy)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue