mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-06-04 11:14:21 +08:00
parent
04999a42c8
commit
bbf0b92f87
@ -12,6 +12,8 @@ from UM.Math.Vector import Vector
|
||||
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
||||
from UM.Application import Application
|
||||
from UM.Scene.Selection import Selection
|
||||
from UM.Preferences import Preferences
|
||||
|
||||
from cura.ConvexHullDecorator import ConvexHullDecorator
|
||||
|
||||
from . import PlatformPhysicsOperation
|
||||
@ -37,6 +39,8 @@ class PlatformPhysics:
|
||||
self._change_timer.setSingleShot(True)
|
||||
self._change_timer.timeout.connect(self._onChangeTimerFinished)
|
||||
|
||||
Preferences.getInstance().addPreference("physics/automatic_push_free", True)
|
||||
|
||||
def _onSceneChanged(self, source):
|
||||
self._change_timer.start()
|
||||
|
||||
@ -82,7 +86,7 @@ class PlatformPhysics:
|
||||
|
||||
elif Selection.isSelected(node):
|
||||
pass
|
||||
else:
|
||||
elif Preferences.getInstance().getValue("physics/automatic_push_free"):
|
||||
# Check for collisions between convex hulls
|
||||
for other_node in BreadthFirstIterator(root):
|
||||
# Ignore root, ourselves and anything that is not a normal SceneNode.
|
||||
|
@ -344,8 +344,15 @@ UM.MainWindow {
|
||||
id: preferences
|
||||
|
||||
Component.onCompleted: {
|
||||
//; Remove & re-add the general page as we want to use our own instead of uranium standard.
|
||||
removePage(0);
|
||||
insertPage(0, qsTr("General") , "" , Qt.resolvedUrl("./GeneralPage.qml"));
|
||||
|
||||
//: View preferences page title
|
||||
insertPage(1, qsTr("View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
|
||||
|
||||
//Force refresh
|
||||
setPage(0)
|
||||
}
|
||||
}
|
||||
|
||||
|
130
resources/qml/GeneralPage.qml
Normal file
130
resources/qml/GeneralPage.qml
Normal file
@ -0,0 +1,130 @@
|
||||
// Copyright (c) 2015 Ultimaker B.V.
|
||||
// Uranium is released under the terms of the AGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.1
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
|
||||
UM.PreferencesPage
|
||||
{
|
||||
//: General configuration page title
|
||||
title: qsTr("General");
|
||||
|
||||
function reset()
|
||||
{
|
||||
UM.Preferences.resetPreference("general/language")
|
||||
UM.Preferences.resetPreference("physics/automatic_push_free")
|
||||
}
|
||||
GridLayout
|
||||
{
|
||||
columns: 2;
|
||||
//: Language selection label
|
||||
Label
|
||||
{
|
||||
id: languageLabel
|
||||
text: qsTr("Language")
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
id: languageComboBox
|
||||
model: ListModel
|
||||
{
|
||||
id: languageList
|
||||
//: English language combo box option
|
||||
ListElement { text: QT_TR_NOOP("English"); code: "en" }
|
||||
//: German language combo box option
|
||||
ListElement { text: QT_TR_NOOP("German"); code: "de" }
|
||||
//: French language combo box option
|
||||
// ListElement { text: QT_TR_NOOP("French"); code: "fr" }
|
||||
//: Spanish language combo box option
|
||||
ListElement { text: QT_TR_NOOP("Spanish"); code: "es" }
|
||||
//: Italian language combo box option
|
||||
// ListElement { text: QT_TR_NOOP("Italian"); code: "it" }
|
||||
//: Finnish language combo box option
|
||||
ListElement { text: QT_TR_NOOP("Finnish"); code: "fi" }
|
||||
//: Russian language combo box option
|
||||
ListElement { text: QT_TR_NOOP("Russian"); code: "ru" }
|
||||
}
|
||||
|
||||
currentIndex:
|
||||
{
|
||||
var code = UM.Preferences.getValue("general/language");
|
||||
for(var i = 0; i < languageList.count; ++i)
|
||||
{
|
||||
if(model.get(i).code == code)
|
||||
{
|
||||
return i
|
||||
}
|
||||
}
|
||||
}
|
||||
onActivated: UM.Preferences.setValue("general/language", model.get(index).code)
|
||||
|
||||
anchors.left: languageLabel.right
|
||||
anchors.top: languageLabel.top
|
||||
anchors.leftMargin: 20
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
// Because ListModel is stupid and does not allow using qsTr() for values.
|
||||
for(var i = 0; i < languageList.count; ++i)
|
||||
{
|
||||
languageList.setProperty(i, "text", qsTr(languageList.get(i).text));
|
||||
}
|
||||
|
||||
// Glorious hack time. ComboBox does not update the text properly after changing the
|
||||
// model. So change the indices around to force it to update.
|
||||
currentIndex += 1;
|
||||
currentIndex -= 1;
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: languageCaption;
|
||||
Layout.columnSpan: 2
|
||||
|
||||
//: Language change warning
|
||||
text: qsTr("You will need to restart the application for language changes to have effect.")
|
||||
wrapMode: Text.WordWrap
|
||||
font.italic: true
|
||||
}
|
||||
|
||||
CheckBox
|
||||
{
|
||||
id: pushFreeCheckbox
|
||||
checked: UM.Preferences.getValue("physics/automatic_push_free")
|
||||
onCheckedChanged: UM.Preferences.setValue("physics/automatic_push_free", checked)
|
||||
}
|
||||
Button
|
||||
{
|
||||
id: pushFreeText //is a button so the user doesn't have te click inconvenientley precise to enable or disable the checkbox
|
||||
|
||||
//: Display Overhang preference checkbox
|
||||
text: qsTr("Automatic push free");
|
||||
onClicked: pushFreeCheckbox.checked = !pushFreeCheckbox.checked
|
||||
|
||||
//: Display Overhang preference tooltip
|
||||
tooltip: "Are objects on the platform automatically moved so they no longer intersect"
|
||||
|
||||
style: ButtonStyle
|
||||
{
|
||||
background: Rectangle
|
||||
{
|
||||
border.width: 0
|
||||
color: "transparent"
|
||||
}
|
||||
label: Text
|
||||
{
|
||||
renderType: Text.NativeRendering
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
text: control.text
|
||||
}
|
||||
}
|
||||
}
|
||||
Item { Layout.fillHeight: true; Layout.columnSpan: 2 }
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user