mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-15 18:57:52 -06:00
Move sidebar target for plugins to only middle section
This commit is contained in:
parent
5673a834bc
commit
e33288b7c8
7 changed files with 67 additions and 92 deletions
|
@ -79,7 +79,6 @@ from cura.Settings.ExtruderStack import ExtruderStack
|
|||
from cura.Sidebar.SidebarController import SidebarController
|
||||
from cura.Sidebar.SidebarControllerProxy import SidebarControllerProxy
|
||||
from cura.Sidebar.SidebarViewModel import SidebarViewModel
|
||||
from cura.Settings.SettingsSidebarView import SettingsSidebarView
|
||||
|
||||
from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS
|
||||
from UM.FlameProfiler import pyqtSlot
|
||||
|
@ -1319,16 +1318,10 @@ class CuraApplication(QtApplication):
|
|||
def _addProfileWriter(self, profile_writer):
|
||||
pass
|
||||
|
||||
## Create and register the default sidebar component (settings)
|
||||
## Set the default sidebar view to "default"
|
||||
def _setDefaultSidebarView(self):
|
||||
|
||||
# Register the default settings sidebar manually
|
||||
settings_sidebar_view = SettingsSidebarView()
|
||||
self._sidebar_controller.addSidebarView(settings_sidebar_view)
|
||||
|
||||
# Set the default sidebar view depending on user preferences.
|
||||
preferences = Preferences.getInstance()
|
||||
preferences.addPreference("cura/active_sidebar_view", settings_sidebar_view.getPluginId())
|
||||
preferences.addPreference("cura/active_sidebar_view", "default")
|
||||
active_sidebar_view = preferences.getValue("cura/active_sidebar_view")
|
||||
self._sidebar_controller.setActiveSidebarView(active_sidebar_view)
|
||||
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
from PyQt5.QtCore import QObject
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
|
||||
from cura.Sidebar.SidebarView import SidebarView
|
||||
i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
class SettingsSidebarView(QObject, SidebarView):
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
|
||||
## As the default sidebar is not a plugin, we have a get plugin ID method to allow the sidebar view model to get the needed data.
|
||||
def getPluginId(self):
|
||||
return "default"
|
||||
|
||||
## As the default sidebar is not a plugin, we have a add meta data method here to allow the sidebar view model to get the needed data.
|
||||
def getMetaData(self):
|
||||
return {
|
||||
"sidebar_view": {
|
||||
"name": i18n_catalog.i18nc("@item:inmenu", "Print settings"),
|
||||
"weight": 0
|
||||
}
|
||||
}
|
||||
|
||||
def getComponent(self):
|
||||
return None
|
|
@ -10,7 +10,7 @@ class SidebarController:
|
|||
|
||||
def __init__(self, application):
|
||||
self._application = application
|
||||
self._sidebar_views = {}
|
||||
self._sidebar_views = {"default": {}} # default is needed for the default settings sidebar
|
||||
self._active_sidebar_view = None
|
||||
|
||||
# Register the sidebar_view plugin type so plugins can expose custom sidebar views.
|
||||
|
@ -51,6 +51,13 @@ class SidebarController:
|
|||
def getActiveSidebarView(self):
|
||||
return self._active_sidebar_view
|
||||
|
||||
## Get the ID of the active sidebar view.
|
||||
def getActiveSidebarViewId(self):
|
||||
if self._active_sidebar_view:
|
||||
if hasattr(self._active_sidebar_view, "getPluginId"):
|
||||
return self._active_sidebar_view.getPluginId()
|
||||
return "default"
|
||||
|
||||
## Change the active sidebar view to one of the registered views.
|
||||
def setActiveSidebarView(self, sidebar_view_id: str):
|
||||
if sidebar_view_id in self._sidebar_views:
|
||||
|
|
|
@ -22,10 +22,7 @@ class SidebarControllerProxy(QObject):
|
|||
|
||||
@pyqtProperty(str, notify = activeSidebarViewChanged)
|
||||
def activeSidebarId(self):
|
||||
if self._controller.getActiveSidebarView() is not None:
|
||||
return self._controller.getActiveSidebarView().getPluginId()
|
||||
else:
|
||||
return "default"
|
||||
return self._controller.getActiveSidebarViewId()
|
||||
|
||||
@pyqtSlot(str)
|
||||
def setActiveSidebarView(self, sidebar_view_id):
|
||||
|
|
|
@ -34,10 +34,18 @@ class SidebarViewModel(ListModel):
|
|||
current_view_id = current_view.getPluginId()
|
||||
|
||||
for sidebar_view_id, sidebar_view in sidebar_views.items():
|
||||
if sidebar_view_id != "default":
|
||||
sidebar_view_metadata = PluginRegistry.getInstance().getMetaData(sidebar_view_id).get("sidebar_view", {})
|
||||
else:
|
||||
sidebar_view_metadata = sidebar_view.getMetaData().get("sidebar_view", {})
|
||||
|
||||
# Override fields for default settings sidebar
|
||||
if sidebar_view_id == "default":
|
||||
items.append({
|
||||
"id": "default",
|
||||
"name": "Print settings",
|
||||
"weight": 0,
|
||||
"active": current_view_id == "default"
|
||||
})
|
||||
continue
|
||||
|
||||
sidebar_view_metadata = PluginRegistry.getInstance().getMetaData(sidebar_view_id).get("sidebar_view", {})
|
||||
|
||||
# Skip view modes that are marked as not visible
|
||||
if "visible" in sidebar_view_metadata and not sidebar_view_metadata["visible"]:
|
||||
|
|
|
@ -395,30 +395,6 @@ UM.MainWindow
|
|||
width: parent.width
|
||||
z: 1
|
||||
monitoringPrint: base.showPrintMonitor
|
||||
visible: Cura.SidebarController.activeSidebarId == "default"
|
||||
}
|
||||
|
||||
// The sidebarRepeater exposes sidebar views provided by plugins.
|
||||
// Whenever a plugin sidebar view is active (e.g. not "default"), that sidebar view is shown.
|
||||
Repeater
|
||||
{
|
||||
id: sidebarRepeater
|
||||
|
||||
model: Cura.SidebarViewModel { }
|
||||
|
||||
delegate: Loader
|
||||
{
|
||||
id: delegate
|
||||
asynchronous: true
|
||||
visible: model.active
|
||||
|
||||
// dynamically get the component from the sidebar controller or set the default sidebar
|
||||
sourceComponent: {
|
||||
if (model.id !== "default") {
|
||||
return Cura.SidebarController.getSidebarComponent(model.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -87,25 +87,6 @@ Rectangle
|
|||
}
|
||||
}
|
||||
|
||||
SidebarHeader {
|
||||
id: header
|
||||
width: parent.width
|
||||
visible: machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants
|
||||
|
||||
onShowTooltip: base.showTooltip(item, location, text)
|
||||
onHideTooltip: base.hideTooltip()
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: headerSeparator
|
||||
width: parent.width
|
||||
visible: settingsModeSelection.visible && header.visible
|
||||
height: visible ? UM.Theme.getSize("sidebar_lining").height : 0
|
||||
color: UM.Theme.getColor("sidebar_lining")
|
||||
anchors.top: header.bottom
|
||||
anchors.topMargin: visible ? UM.Theme.getSize("sidebar_margin").height : 0
|
||||
}
|
||||
|
||||
onCurrentModeIndexChanged:
|
||||
{
|
||||
UM.Preferences.setValue("cura/active_mode", currentModeIndex);
|
||||
|
@ -115,6 +96,24 @@ Rectangle
|
|||
}
|
||||
}
|
||||
|
||||
SidebarHeader {
|
||||
id: header
|
||||
width: parent.width
|
||||
visible: (machineExtruderCount.properties.value > 1 || Cura.MachineManager.hasMaterials || Cura.MachineManager.hasVariants) && Cura.SidebarController.activeSidebarId == "default"
|
||||
onShowTooltip: base.showTooltip(item, location, text)
|
||||
onHideTooltip: base.hideTooltip()
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: headerSeparator
|
||||
width: parent.width
|
||||
visible: settingsModeSelection.visible && header.visible && Cura.SidebarController.activeSidebarId == "default"
|
||||
height: visible ? UM.Theme.getSize("sidebar_lining").height : 0
|
||||
color: UM.Theme.getColor("sidebar_lining")
|
||||
anchors.top: header.bottom
|
||||
anchors.topMargin: visible ? UM.Theme.getSize("sidebar_margin").height : 0
|
||||
}
|
||||
|
||||
Label {
|
||||
id: settingsModeLabel
|
||||
text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox","Print Setup disabled\nG-code files cannot be modified");
|
||||
|
@ -125,7 +124,7 @@ Rectangle
|
|||
width: Math.floor(parent.width * 0.45)
|
||||
font: UM.Theme.getFont("large")
|
||||
color: UM.Theme.getColor("text")
|
||||
visible: !monitoringPrint && !hideView
|
||||
visible: !monitoringPrint && !hideView && Cura.SidebarController.activeSidebarId == "default"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
@ -147,7 +146,7 @@ Rectangle
|
|||
}
|
||||
}
|
||||
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
||||
visible: !monitoringPrint && !hideSettings && !hideView
|
||||
visible: !monitoringPrint && !hideSettings && !hideView && Cura.SidebarController.activeSidebarId == "default"
|
||||
Component{
|
||||
id: wizardDelegate
|
||||
Button {
|
||||
|
@ -228,7 +227,7 @@ Rectangle
|
|||
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
||||
anchors.left: base.left
|
||||
anchors.right: base.right
|
||||
visible: !monitoringPrint && !hideSettings
|
||||
visible: !monitoringPrint && !hideSettings && Cura.SidebarController.activeSidebarId == "default"
|
||||
|
||||
delegate: StackViewDelegate
|
||||
{
|
||||
|
@ -259,6 +258,29 @@ Rectangle
|
|||
}
|
||||
}
|
||||
|
||||
// The sidebarRepeater exposes sidebar views provided by plugins.
|
||||
// Whenever a plugin sidebar view is active (e.g. not "default"), that sidebar view is shown.
|
||||
Repeater
|
||||
{
|
||||
id: sidebarRepeater
|
||||
|
||||
model: Cura.SidebarViewModel { }
|
||||
|
||||
delegate: Loader
|
||||
{
|
||||
id: delegate
|
||||
asynchronous: true
|
||||
visible: model.active
|
||||
|
||||
// dynamically get the component from the sidebar controller or set the default sidebar
|
||||
sourceComponent: {
|
||||
if (model.id !== "default") {
|
||||
return Cura.SidebarController.getSidebarComponent(model.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader
|
||||
{
|
||||
id: controlItem
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue