Skip to content

Commit 65d8bc8

Browse files
committed
Add button to undock sidebar (experimental)
1 parent 3b8539e commit 65d8bc8

5 files changed

Lines changed: 113 additions & 10 deletions

File tree

SidebarGUIPlugin.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def __init__(self):
2323
Application.getInstance().pluginsLoaded.connect(self._onPluginsLoaded)
2424
Application.getInstance().getPreferences().addPreference("sidebargui/expand_extruder_configuration", False)
2525
Application.getInstance().getPreferences().addPreference("sidebargui/expand_legend", True)
26+
Application.getInstance().getPreferences().addPreference("sidebargui/docked_sidebar", True)
2627

2728
self._controller = Application.getInstance().getController()
2829
self._controller.activeStageChanged.connect(self._onStageChanged)

resources/qml/ProfileSelector40.qml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,32 @@ Item
3535
ModeToggleSwitch
3636
{
3737
id: modeToggleSwitch
38-
anchors.right: collapseButton.left
38+
anchors.right: dockButton.left
3939
anchors.rightMargin: UM.Theme.getSize("default_margin").width
4040
}
4141

42+
UM.SimpleButton
43+
{
44+
id: dockButton
45+
anchors
46+
{
47+
top: parent.top
48+
topMargin: UM.Theme.getSize("default_margin").width
49+
50+
right: collapseButton.left
51+
rightMargin: UM.Theme.getSize("thin_margin").width
52+
}
53+
iconSource: UM.Theme.getIcon("cross2")
54+
width: UM.Theme.getSize("default_arrow").width
55+
height: UM.Theme.getSize("default_arrow").height
56+
color: UM.Theme.getColor("small_button_text")
57+
58+
onClicked:
59+
{
60+
UM.Preferences.setValue("sidebargui/docked_sidebar", !UM.Preferences.getValue("sidebargui/docked_sidebar"))
61+
}
62+
}
63+
4264
UM.SimpleButton
4365
{
4466
id: collapseButton

resources/qml/ProfileSelector44.qml

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,10 +179,32 @@ Item
179179
ModeToggleSwitch
180180
{
181181
id: modeToggleSwitch
182-
anchors.right: collapseButton.left
182+
anchors.right: dockButton.left
183183
anchors.rightMargin: UM.Theme.getSize("default_margin").width
184184
}
185185

186+
UM.SimpleButton
187+
{
188+
id: dockButton
189+
anchors
190+
{
191+
top: parent.top
192+
topMargin: UM.Theme.getSize("default_margin").width
193+
194+
right: collapseButton.left
195+
rightMargin: UM.Theme.getSize("thin_margin").width
196+
}
197+
iconSource: UM.Theme.getIcon("cross2")
198+
width: UM.Theme.getSize("default_arrow").width
199+
height: UM.Theme.getSize("default_arrow").height
200+
color: UM.Theme.getColor("small_button_text")
201+
202+
onClicked:
203+
{
204+
UM.Preferences.setValue("sidebargui/docked_sidebar", !UM.Preferences.getValue("sidebargui/docked_sidebar"))
205+
}
206+
}
207+
186208
UM.SimpleButton
187209
{
188210
id: collapseButton

resources/qml/SidebarStageMenu.qml

Lines changed: 56 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
import QtQuick 2.7
55
import QtQuick.Controls 2.3
6+
import QtQuick.Window 2.2
67

78
import UM 1.3 as UM
89
import Cura 1.1 as Cura
@@ -25,7 +26,8 @@ Item
2526
property bool prepareStageActive: UM.Controller.activeStage.toString().indexOf("PrepareStage") > 0
2627
property bool preSlicedData: PrintInformation !== null && PrintInformation.preSliced
2728
property bool settingsVisible: UM.Preferences.getValue("view/settings_visible")
28-
property bool sidebarVisible: settingsVisible && (prepareStageActive || !preSlicedData)
29+
property bool settingsDocked: UM.Preferences.getValue("sidebargui/docked_sidebar")
30+
property bool sidebarVisible: settingsVisible && (prepareStageActive || !preSlicedData) && settingsDocked
2931
property real sidebarWidth: sidebarVisible ? printSetupSelector.width : 0
3032

3133
Component.onCompleted:
@@ -156,10 +158,16 @@ Item
156158
target: UM.Preferences
157159
onPreferenceChanged:
158160
{
159-
if (preference == "view/settings_visible")
161+
switch (preference)
160162
{
161-
settingsVisible = UM.Preferences.getValue("view/settings_visible")
162-
base.onWidthChanged(base.width)
163+
case "view/settings_visible":
164+
settingsVisible = UM.Preferences.getValue("view/settings_visible")
165+
base.onWidthChanged(base.width)
166+
break
167+
case "sidebargui/docked_sidebar":
168+
settingsDocked = UM.Preferences.getValue("sidebargui/docked_sidebar")
169+
base.onWidthChanged(base.width)
170+
break
163171
}
164172
}
165173
}
@@ -225,18 +233,27 @@ Item
225233
}
226234
}
227235

228-
SidebarContents
236+
Item
229237
{
230238
id: printSetupSidebar
231239
visible: sidebarVisible
232240

241+
width: UM.Theme.getSize("print_setup_widget").width
233242
anchors
234243
{
235244
top: parent.top
236245
bottom: actionRow.top
237246
bottomMargin: actionRow.height == 0 ? 0 : UM.Theme.getSize("thin_margin").height
238247
right: bottomRight.right
239248
}
249+
250+
children:[sidebarContents]
251+
}
252+
253+
SidebarContents
254+
{
255+
id: sidebarContents
256+
anchors.fill: parent
240257
}
241258

242259
SidebarFooter
@@ -253,4 +270,38 @@ Item
253270
anchors.right: parent.right
254271
y: base.height - stageMenu.mapToItem(base.contentItem, 0, 0).y - height
255272
}
273+
274+
Window
275+
{
276+
id: sidebarToolWindow
277+
title: catalog.i18nc("@title:window", "Print Settings")
278+
279+
flags: Qt.Tool | Qt.WindowTitleHint;
280+
281+
minimumWidth: UM.Theme.getSize("print_setup_widget").width
282+
maximumWidth: minimumWidth
283+
width: minimumWidth
284+
minimumHeight: Math.floor(1.5 * minimumWidth)
285+
height: minimumHeight
286+
287+
visible: !settingsDocked && settingsVisible
288+
onVisibleChanged:
289+
{
290+
if (visible)
291+
{
292+
printSetupWindow.children = [sidebarContents]
293+
}
294+
else
295+
{
296+
printSetupSidebar.children = [sidebarContents]
297+
}
298+
}
299+
300+
Item
301+
{
302+
id: printSetupWindow
303+
304+
anchors.fill: parent
305+
}
306+
}
256307
}

resources/qml/StageMain.qml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ Loader
1313

1414
property bool preSlicedData: PrintInformation !== null && PrintInformation.preSliced
1515
property bool settingsVisible: UM.Preferences.getValue("view/settings_visible")
16-
property bool sidebarVisible: settingsVisible && !preSlicedData
16+
property bool settingsDocked: UM.Preferences.getValue("sidebargui/docked_sidebar")
17+
property bool sidebarVisible: settingsVisible && !preSlicedData && settingsDocked
1718

1819
onLoaded:
1920
{
@@ -67,9 +68,15 @@ Loader
6768
target: UM.Preferences
6869
onPreferenceChanged:
6970
{
70-
if (preference == "view/settings_visible")
71+
switch (preference)
7172
{
72-
settingsVisible = UM.Preferences.getValue("view/settings_visible")
73+
case "view/settings_visible":
74+
settingsVisible = UM.Preferences.getValue("view/settings_visible")
75+
base.onWidthChanged(base.width)
76+
break
77+
case "sidebargui/docked_sidebar":
78+
settingsDocked = UM.Preferences.getValue("sidebargui/docked_sidebar")
79+
break
7380
}
7481
}
7582
}

0 commit comments

Comments
 (0)