mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-02 00:34:26 +08:00
Merge pull request #5270 from Ultimaker/action_panel_per_stage
Let each stage create its own action panel
This commit is contained in:
commit
cfdadbaffb
24
plugins/PrepareStage/PrepareMain.qml
Normal file
24
plugins/PrepareStage/PrepareMain.qml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
//Copyright (c) 2019 Ultimaker B.V.
|
||||||
|
//Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
|
import QtQuick 2.4
|
||||||
|
import QtQuick.Controls 1.2
|
||||||
|
import QtQuick.Layouts 1.1
|
||||||
|
import QtQuick.Controls.Styles 1.1
|
||||||
|
|
||||||
|
import UM 1.0 as UM
|
||||||
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
|
id: prepareMain
|
||||||
|
|
||||||
|
Cura.ActionPanelWidget
|
||||||
|
{
|
||||||
|
id: actionPanelWidget
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.rightMargin: UM.Theme.getSize("thick_margin").width
|
||||||
|
anchors.bottomMargin: UM.Theme.getSize("thick_margin").height
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,11 @@
|
|||||||
# Copyright (c) 2018 Ultimaker B.V.
|
# Copyright (c) 2019 Ultimaker B.V.
|
||||||
# Cura is released under the terms of the LGPLv3 or higher.
|
# Cura is released under the terms of the LGPLv3 or higher.
|
||||||
|
|
||||||
import os.path
|
import os.path
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.PluginRegistry import PluginRegistry
|
from UM.PluginRegistry import PluginRegistry
|
||||||
from UM.Resources import Resources
|
|
||||||
from cura.Stages.CuraStage import CuraStage
|
from cura.Stages.CuraStage import CuraStage
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## Stage for preparing model (slicing).
|
## Stage for preparing model (slicing).
|
||||||
class PrepareStage(CuraStage):
|
class PrepareStage(CuraStage):
|
||||||
def __init__(self, parent = None):
|
def __init__(self, parent = None):
|
||||||
@ -16,4 +14,6 @@ class PrepareStage(CuraStage):
|
|||||||
|
|
||||||
def _engineCreated(self):
|
def _engineCreated(self):
|
||||||
menu_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("PrepareStage"), "PrepareMenu.qml")
|
menu_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("PrepareStage"), "PrepareMenu.qml")
|
||||||
|
main_component_path = os.path.join(PluginRegistry.getInstance().getPluginPath("PrepareStage"), "PrepareMain.qml")
|
||||||
self.addDisplayComponent("menu", menu_component_path)
|
self.addDisplayComponent("menu", menu_component_path)
|
||||||
|
self.addDisplayComponent("main", main_component_path)
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2019 Ultimaker B.V.
|
||||||
// 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.4
|
import QtQuick 2.4
|
||||||
@ -9,10 +9,22 @@ import QtQuick.Controls.Styles 1.1
|
|||||||
import UM 1.0 as UM
|
import UM 1.0 as UM
|
||||||
import Cura 1.0 as Cura
|
import Cura 1.0 as Cura
|
||||||
|
|
||||||
|
Item
|
||||||
|
{
|
||||||
Loader
|
Loader
|
||||||
{
|
{
|
||||||
id: previewMain
|
id: previewMain
|
||||||
|
|
||||||
source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : ""
|
source: UM.Controller.activeView != null && UM.Controller.activeView.mainComponent != null ? UM.Controller.activeView.mainComponent : ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Cura.ActionPanelWidget
|
||||||
|
{
|
||||||
|
id: actionPanelWidget
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.rightMargin: UM.Theme.getSize("thick_margin").width
|
||||||
|
anchors.bottomMargin: UM.Theme.getSize("thick_margin").height
|
||||||
|
hasPreviewButton: false
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2019 Ultimaker B.V.
|
||||||
// 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.7
|
import QtQuick 2.7
|
||||||
@ -17,6 +17,9 @@ Item
|
|||||||
id: base
|
id: base
|
||||||
width: childrenRect.width
|
width: childrenRect.width
|
||||||
height: childrenRect.height
|
height: childrenRect.height
|
||||||
|
visible: CuraApplication.platformActivity
|
||||||
|
|
||||||
|
property bool hasPreviewButton: true
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
{
|
{
|
||||||
@ -46,6 +49,13 @@ Item
|
|||||||
rightMargin: UM.Theme.getSize("thick_margin").width
|
rightMargin: UM.Theme.getSize("thick_margin").width
|
||||||
}
|
}
|
||||||
sourceComponent: actionPanelWidget.outputAvailable ? outputProcessWidget : sliceProcessWidget
|
sourceComponent: actionPanelWidget.outputAvailable ? outputProcessWidget : sliceProcessWidget
|
||||||
|
onLoaded:
|
||||||
|
{
|
||||||
|
if(actionPanelWidget.outputAvailable)
|
||||||
|
{
|
||||||
|
loader.item.hasPreviewButton = base.hasPreviewButton;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Component
|
Component
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// Copyright (c) 2018 Ultimaker B.V.
|
// Copyright (c) 2019 Ultimaker B.V.
|
||||||
// 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.7
|
import QtQuick 2.7
|
||||||
@ -19,6 +19,7 @@ Column
|
|||||||
|
|
||||||
spacing: UM.Theme.getSize("thin_margin").height
|
spacing: UM.Theme.getSize("thin_margin").height
|
||||||
property bool preSlicedData: PrintInformation.preSliced
|
property bool preSlicedData: PrintInformation.preSliced
|
||||||
|
property alias hasPreviewButton: previewStageShortcut.visible
|
||||||
|
|
||||||
UM.I18nCatalog
|
UM.I18nCatalog
|
||||||
{
|
{
|
||||||
@ -120,7 +121,6 @@ Column
|
|||||||
toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignLeft
|
toolTipContentAlignment: Cura.ToolTip.ContentAlignment.AlignLeft
|
||||||
|
|
||||||
onClicked: UM.Controller.setActiveStage("PreviewStage")
|
onClicked: UM.Controller.setActiveStage("PreviewStage")
|
||||||
visible: UM.Controller.activeStage != null && UM.Controller.activeStage.stageId != "PreviewStage"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.OutputDevicesActionButton
|
Cura.OutputDevicesActionButton
|
||||||
|
@ -246,30 +246,6 @@ UM.MainWindow
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Cura.ActionPanelWidget
|
|
||||||
{
|
|
||||||
id: actionPanelWidget
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
anchors.rightMargin: UM.Theme.getSize("thick_margin").width
|
|
||||||
anchors.bottomMargin: UM.Theme.getSize("thick_margin").height
|
|
||||||
|
|
||||||
/*
|
|
||||||
Show this panel only if there is something on the build plate, and there is NOT an opaque item in front of the build plate.
|
|
||||||
This cannot be solved by Z indexing! If you want to try solving this, please increase this counter when you're done:
|
|
||||||
Number of people having tried to fix this by z-indexing: 2
|
|
||||||
The problem arises from the following render order requirements:
|
|
||||||
- The stage menu must be rendered above the stage main.
|
|
||||||
- The stage main must be rendered above the action panel (because the monitor page must be rendered above the action panel).
|
|
||||||
- The action panel must be rendered above the expandable components drop-down.
|
|
||||||
However since the expandable components drop-downs are child elements of the stage menu,
|
|
||||||
they can't be rendered lower than elements that are lower than the stage menu.
|
|
||||||
Therefore we opted to forego the second requirement and hide the action panel instead when something obscures it (except the expandable components).
|
|
||||||
We assume that QQuickRectangles are always opaque and any other item is not.
|
|
||||||
*/
|
|
||||||
visible: CuraApplication.platformActivity && (main.item == null || !qmlTypeOf(main.item, "QQuickRectangle"))
|
|
||||||
}
|
|
||||||
|
|
||||||
Loader
|
Loader
|
||||||
{
|
{
|
||||||
// A stage can control this area. If nothing is set, it will therefore show the 3D view.
|
// A stage can control this area. If nothing is set, it will therefore show the 3D view.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user