Browse Source

Move action panel into each stage

They can then decide if it needs to be there. For instance, the monitor stage doesn't want to have this panel. Also each stage can position it where they like, and in the near future I'll make a feature to let it decide whether or not to show the preview button.

Contributes to issue CURA-6086.
Ghostkeeper 6 years ago
parent
commit
5992e66ed6

+ 24 - 0
plugins/PrepareStage/PrepareMain.qml

@@ -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
+    }
+}

+ 4 - 4
plugins/PrepareStage/PrepareStage.py

@@ -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.
+
 import os.path
 from UM.Application import Application
 from UM.PluginRegistry import PluginRegistry
-from UM.Resources import Resources
 from cura.Stages.CuraStage import CuraStage
 
-
-
 ##  Stage for preparing model (slicing).
 class PrepareStage(CuraStage):
     def __init__(self, parent = None):
@@ -16,4 +14,6 @@ class PrepareStage(CuraStage):
 
     def _engineCreated(self):
         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("main", main_component_path)

+ 16 - 5
plugins/PreviewStage/PreviewMain.qml

@@ -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.
 
 import QtQuick 2.4
@@ -9,10 +9,21 @@ import QtQuick.Controls.Styles 1.1
 import UM 1.0 as UM
 import Cura 1.0 as Cura
 
-
-Loader
+Item
 {
-    id: previewMain
+    Loader
+    {
+        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
+    }
 }

+ 2 - 1
resources/qml/ActionPanel/ActionPanelWidget.qml

@@ -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.
 
 import QtQuick 2.7
@@ -17,6 +17,7 @@ Item
     id: base
     width: childrenRect.width
     height: childrenRect.height
+    visible: CuraApplication.platformActivity
 
     Rectangle
     {

+ 0 - 24
resources/qml/Cura.qml

@@ -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
             {
                 // A stage can control this area. If nothing is set, it will therefore show the 3D view.