|
@@ -0,0 +1,64 @@
|
|
|
+// Copyright (c) 2022 Ultimaker B.V.
|
|
|
+// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
+
|
|
|
+import QtQuick 2.7
|
|
|
+import QtQuick.Controls 2.4
|
|
|
+
|
|
|
+import UM 1.5 as UM
|
|
|
+import Cura 1.0 as Cura
|
|
|
+
|
|
|
+UM.Menu
|
|
|
+{
|
|
|
+ id: extensionMenu
|
|
|
+ title: catalog.i18nc("@title:menu menubar:toplevel", "E&xtensions")
|
|
|
+
|
|
|
+ Component
|
|
|
+ {
|
|
|
+ id: extensionsMenuItem
|
|
|
+
|
|
|
+ UM.MenuItem
|
|
|
+ {
|
|
|
+ text: modelText
|
|
|
+ onTriggered: extensionsModel.subMenuTriggered(extensionName, modelText)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Component
|
|
|
+ {
|
|
|
+ id: extensionsMenuSeparator
|
|
|
+
|
|
|
+ MenuSeparator {}
|
|
|
+ }
|
|
|
+
|
|
|
+ Instantiator
|
|
|
+ {
|
|
|
+ id: extensions
|
|
|
+ model: UM.ExtensionModel { }
|
|
|
+
|
|
|
+ UM.Menu
|
|
|
+ {
|
|
|
+ id: sub_menu
|
|
|
+ title: model.name
|
|
|
+ shouldBeVisible: actions !== undefined
|
|
|
+ enabled: actions != null
|
|
|
+ Instantiator
|
|
|
+ {
|
|
|
+ model: actions
|
|
|
+ Loader
|
|
|
+ {
|
|
|
+ property var extensionsModel: extensions.model
|
|
|
+ property var modelText: model.text
|
|
|
+ property var extensionName: name
|
|
|
+
|
|
|
+ sourceComponent: modelText.trim() == "" ? extensionsMenuSeparator : extensionsMenuItem
|
|
|
+ }
|
|
|
+
|
|
|
+ onObjectAdded: sub_menu.insertItem(index, object.item)
|
|
|
+ onObjectRemoved: sub_menu.removeItem(object.item)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ onObjectAdded: extensionMenu.insertMenu(index, object)
|
|
|
+ onObjectRemoved: extensionMenu.removeMenu(object)
|
|
|
+ }
|
|
|
+}
|