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.SidebarController import SidebarController
|
||||||
from cura.Sidebar.SidebarControllerProxy import SidebarControllerProxy
|
from cura.Sidebar.SidebarControllerProxy import SidebarControllerProxy
|
||||||
from cura.Sidebar.SidebarViewModel import SidebarViewModel
|
from cura.Sidebar.SidebarViewModel import SidebarViewModel
|
||||||
from cura.Settings.SettingsSidebarView import SettingsSidebarView
|
|
||||||
|
|
||||||
from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS
|
from PyQt5.QtCore import QUrl, pyqtSignal, pyqtProperty, QEvent, Q_ENUMS
|
||||||
from UM.FlameProfiler import pyqtSlot
|
from UM.FlameProfiler import pyqtSlot
|
||||||
|
@ -1319,16 +1318,10 @@ class CuraApplication(QtApplication):
|
||||||
def _addProfileWriter(self, profile_writer):
|
def _addProfileWriter(self, profile_writer):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
## Create and register the default sidebar component (settings)
|
## Set the default sidebar view to "default"
|
||||||
def _setDefaultSidebarView(self):
|
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 = 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")
|
active_sidebar_view = preferences.getValue("cura/active_sidebar_view")
|
||||||
self._sidebar_controller.setActiveSidebarView(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):
|
def __init__(self, application):
|
||||||
self._application = application
|
self._application = application
|
||||||
self._sidebar_views = {}
|
self._sidebar_views = {"default": {}} # default is needed for the default settings sidebar
|
||||||
self._active_sidebar_view = None
|
self._active_sidebar_view = None
|
||||||
|
|
||||||
# Register the sidebar_view plugin type so plugins can expose custom sidebar views.
|
# Register the sidebar_view plugin type so plugins can expose custom sidebar views.
|
||||||
|
@ -51,6 +51,13 @@ class SidebarController:
|
||||||
def getActiveSidebarView(self):
|
def getActiveSidebarView(self):
|
||||||
return self._active_sidebar_view
|
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.
|
## Change the active sidebar view to one of the registered views.
|
||||||
def setActiveSidebarView(self, sidebar_view_id: str):
|
def setActiveSidebarView(self, sidebar_view_id: str):
|
||||||
if sidebar_view_id in self._sidebar_views:
|
if sidebar_view_id in self._sidebar_views:
|
||||||
|
|
|
@ -22,10 +22,7 @@ class SidebarControllerProxy(QObject):
|
||||||
|
|
||||||
@pyqtProperty(str, notify = activeSidebarViewChanged)
|
@pyqtProperty(str, notify = activeSidebarViewChanged)
|
||||||
def activeSidebarId(self):
|
def activeSidebarId(self):
|
||||||
if self._controller.getActiveSidebarView() is not None:
|
return self._controller.getActiveSidebarViewId()
|
||||||
return self._controller.getActiveSidebarView().getPluginId()
|
|
||||||
else:
|
|
||||||
return "default"
|
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
def setActiveSidebarView(self, sidebar_view_id):
|
def setActiveSidebarView(self, sidebar_view_id):
|
||||||
|
|
|
@ -34,10 +34,18 @@ class SidebarViewModel(ListModel):
|
||||||
current_view_id = current_view.getPluginId()
|
current_view_id = current_view.getPluginId()
|
||||||
|
|
||||||
for sidebar_view_id, sidebar_view in sidebar_views.items():
|
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", {})
|
# Override fields for default settings sidebar
|
||||||
else:
|
if sidebar_view_id == "default":
|
||||||
sidebar_view_metadata = sidebar_view.getMetaData().get("sidebar_view", {})
|
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
|
# Skip view modes that are marked as not visible
|
||||||
if "visible" in sidebar_view_metadata and not sidebar_view_metadata["visible"]:
|
if "visible" in sidebar_view_metadata and not sidebar_view_metadata["visible"]:
|
||||||
|
|
|
@ -395,30 +395,6 @@ UM.MainWindow
|
||||||
width: parent.width
|
width: parent.width
|
||||||
z: 1
|
z: 1
|
||||||
monitoringPrint: base.showPrintMonitor
|
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:
|
onCurrentModeIndexChanged:
|
||||||
{
|
{
|
||||||
UM.Preferences.setValue("cura/active_mode", currentModeIndex);
|
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 {
|
Label {
|
||||||
id: settingsModeLabel
|
id: settingsModeLabel
|
||||||
text: !hideSettings ? catalog.i18nc("@label:listbox", "Print Setup") : catalog.i18nc("@label:listbox","Print Setup disabled\nG-code files cannot be modified");
|
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)
|
width: Math.floor(parent.width * 0.45)
|
||||||
font: UM.Theme.getFont("large")
|
font: UM.Theme.getFont("large")
|
||||||
color: UM.Theme.getColor("text")
|
color: UM.Theme.getColor("text")
|
||||||
visible: !monitoringPrint && !hideView
|
visible: !monitoringPrint && !hideView && Cura.SidebarController.activeSidebarId == "default"
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
|
@ -147,7 +146,7 @@ Rectangle
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
||||||
visible: !monitoringPrint && !hideSettings && !hideView
|
visible: !monitoringPrint && !hideSettings && !hideView && Cura.SidebarController.activeSidebarId == "default"
|
||||||
Component{
|
Component{
|
||||||
id: wizardDelegate
|
id: wizardDelegate
|
||||||
Button {
|
Button {
|
||||||
|
@ -228,7 +227,7 @@ Rectangle
|
||||||
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
anchors.topMargin: UM.Theme.getSize("sidebar_margin").height
|
||||||
anchors.left: base.left
|
anchors.left: base.left
|
||||||
anchors.right: base.right
|
anchors.right: base.right
|
||||||
visible: !monitoringPrint && !hideSettings
|
visible: !monitoringPrint && !hideSettings && Cura.SidebarController.activeSidebarId == "default"
|
||||||
|
|
||||||
delegate: StackViewDelegate
|
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
|
Loader
|
||||||
{
|
{
|
||||||
id: controlItem
|
id: controlItem
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue