Get default settings view to work as sidebar component

This commit is contained in:
ChrisTerBeke 2017-12-04 16:28:35 +01:00
parent 5eeb98bbcf
commit 3c863fc388
8 changed files with 138 additions and 49 deletions

View file

@ -1,9 +1,7 @@
# Copyright (c) 2017 Ultimaker B.V.
from UM.Logger import Logger
from UM.PluginRegistry import PluginRegistry
from UM.Signal import Signal
from .SidebarView import SidebarView
from typing import Optional, Dict
from UM.PluginRegistry import PluginRegistry
# The sidebar controller manages available sidebar components and decides which one to display.
# The cura.qml file uses this controller to repeat over the sidebars and show the active index.
@ -14,6 +12,7 @@ class SidebarController:
self._sidebar_views = {}
self._active_sidebar_view = None
# Register the sidebar_view plugin type so plugins can expose custom sidebar views.
PluginRegistry.addType("sidebar_view", self.addSidebarView)
## Emitted when the list of views changes.
@ -26,28 +25,32 @@ class SidebarController:
def getApplication(self):
return self._application
## Get all sidebar views registered in this controller.
def getAllSidebarViews(self):
return self._sidebar_views
## Add a sidebar view to the registry.
# It get's a unique name based on the plugin ID.
def addSidebarView(self, sidebar_view: SidebarView):
name = sidebar_view.getPluginId()
if name not in self._sidebar_views:
self._sidebar_views[name] = sidebar_view
def addSidebarView(self, sidebar_view):
sidebar_view_id = sidebar_view.getPluginId()
if sidebar_view_id not in self._sidebar_views:
self._sidebar_views[sidebar_view_id] = sidebar_view
self.sidebarViewsChanged.emit()
## Get a registered sidebar view by name.
# The name is the ID of the plugin that registered the view.
def getSidebarView(self, name: str) -> Optional[SidebarView]:
def getSidebarView(self, name: str):
try:
return self._sidebar_views[name]
except KeyError:
Logger.log("e", "Unable to find %s in sidebar view list", name)
return None
## Change the active sidebar view to one of the registered views.
def setActiveSidebarView(self, name: str):
print("setting active sidebar view")
self.activeSidebarViewChanged.emit()
## Get the active sidebar view.
def getActiveSidebarView(self):
return self._active_sidebar_view
## Get all sidebar views registered in this controller.
def getAllSidebarViews(self) -> Dict[SidebarView]:
return self._sidebar_views
## Change the active sidebar view to one of the registered views.
def setActiveSidebarView(self, sidebar_view_id: str):
self._active_sidebar_view = self._sidebar_views[sidebar_view_id]
self.activeSidebarViewChanged.emit()