Make the settings panel resizable

You can now drag the bottom side of the panel to make it bigger or smaller.

Contributes to issue CURA-6054.
This commit is contained in:
Ghostkeeper 2018-12-24 15:31:47 +01:00
parent f627560751
commit c6f4cb4927
No known key found for this signature in database
GPG key ID: 86BEF881AE2CF276
3 changed files with 49 additions and 6 deletions

View file

@ -499,7 +499,7 @@ class CuraApplication(QtApplication):
preferences.addPreference("cura/choice_on_profile_override", "always_ask") preferences.addPreference("cura/choice_on_profile_override", "always_ask")
preferences.addPreference("cura/choice_on_open_project", "always_ask") preferences.addPreference("cura/choice_on_open_project", "always_ask")
preferences.addPreference("cura/use_multi_build_plate", False) preferences.addPreference("cura/use_multi_build_plate", False)
preferences.addPreference("view/settings_list_height", 600)
preferences.addPreference("cura/currency", "") preferences.addPreference("cura/currency", "")
preferences.addPreference("cura/material_settings", "{}") preferences.addPreference("cura/material_settings", "{}")

View file

@ -11,7 +11,6 @@ import Cura 1.0 as Cura
Item Item
{ {
id: customPrintSetup id: customPrintSetup
height: childrenRect.height + padding
property real padding: UM.Theme.getSize("default_margin").width property real padding: UM.Theme.getSize("default_margin").width
property bool multipleExtruders: extrudersModel.count > 1 property bool multipleExtruders: extrudersModel.count > 1
@ -98,15 +97,15 @@ Item
Rectangle Rectangle
{ {
height: UM.Theme.getSize("print_setup_widget").height
anchors anchors
{ {
top: tabBar.visible ? tabBar.bottom : globalProfileRow.bottom top: tabBar.visible ? tabBar.bottom : globalProfileRow.bottom
topMargin: -UM.Theme.getSize("default_lining").width
left: parent.left left: parent.left
leftMargin: parent.padding leftMargin: parent.padding
right: parent.right right: parent.right
rightMargin: parent.padding rightMargin: parent.padding
topMargin: -UM.Theme.getSize("default_lining").width bottom: parent.bottom
} }
z: tabBar.z - 1 z: tabBar.z - 1
// Don't show the border when only one extruder // Don't show the border when only one extruder

View file

@ -15,7 +15,7 @@ Item
id: content id: content
width: UM.Theme.getSize("print_setup_widget").width - 2 * UM.Theme.getSize("default_margin").width width: UM.Theme.getSize("print_setup_widget").width - 2 * UM.Theme.getSize("default_margin").width
height: childrenRect.height height: contents.height + buttonRow.height
enum Mode enum Mode
{ {
@ -71,6 +71,15 @@ Item
right: parent.right right: parent.right
top: parent.top top: parent.top
} }
height: UM.Preferences.getValue("view/settings_list_height") - UM.Theme.getSize("default_margin").height
Connections
{
target: UM.Preferences
onPreferenceChanged:
{
customPrintSetup.height = UM.Preferences.getValue("view/settings_list_height");
}
}
visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom
} }
} }
@ -94,13 +103,14 @@ Item
anchors anchors
{ {
top: buttonsSeparator.bottom bottom: parent.bottom
left: parent.left left: parent.left
right: parent.right right: parent.right
} }
Cura.SecondaryButton Cura.SecondaryButton
{ {
id: recommendedButton
anchors.top: parent.top anchors.top: parent.top
anchors.left: parent.left anchors.left: parent.left
anchors.margins: parent.padding anchors.margins: parent.padding
@ -125,5 +135,39 @@ Item
visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended visible: currentModeIndex == PrintSetupSelectorContents.Mode.Recommended
onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Custom onClicked: currentModeIndex = PrintSetupSelectorContents.Mode.Custom
} }
//Invisible area at the bottom with which you can resize the panel.
MouseArea
{
anchors
{
left: parent.left
right: parent.right
bottom: parent.bottom
top: recommendedButton.bottom
topMargin: UM.Theme.getSize("default_lining").height
}
cursorShape: Qt.SplitVCursor
visible: currentModeIndex == PrintSetupSelectorContents.Mode.Custom
drag
{
target: parent
axis: Drag.YAxis
}
onMouseYChanged:
{
if(drag.active)
{
// position of mouse relative to dropdown align vertical centre of mouse area to cursor
// v------------------------------v v------------v
var h = mouseY + buttonRow.y + content.y - height / 2 | 0;
if(h < 200 * screenScaleFactor) //Enforce a minimum size.
{
h = 200 * screenScaleFactor;
}
UM.Preferences.setValue("view/settings_list_height", h);
}
}
}
} }
} }