mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-08-14 12:55:54 +08:00
Merge branch 'master' of https://github.com/Ultimaker/Cura
This commit is contained in:
commit
3cb3cce31c
@ -85,6 +85,7 @@ class CuraApplication(QtApplication):
|
|||||||
Preferences.getInstance().addPreference("cura/active_mode", "simple")
|
Preferences.getInstance().addPreference("cura/active_mode", "simple")
|
||||||
Preferences.getInstance().addPreference("cura/recent_files", "")
|
Preferences.getInstance().addPreference("cura/recent_files", "")
|
||||||
Preferences.getInstance().addPreference("cura/categories_expanded", "")
|
Preferences.getInstance().addPreference("cura/categories_expanded", "")
|
||||||
|
Preferences.getInstance().addPreference("view/center_on_select", True)
|
||||||
|
|
||||||
JobQueue.getInstance().jobFinished.connect(self._onJobFinished)
|
JobQueue.getInstance().jobFinished.connect(self._onJobFinished)
|
||||||
|
|
||||||
@ -202,7 +203,7 @@ class CuraApplication(QtApplication):
|
|||||||
self._previous_active_tool = None
|
self._previous_active_tool = None
|
||||||
else:
|
else:
|
||||||
self.getController().setActiveTool("TranslateTool")
|
self.getController().setActiveTool("TranslateTool")
|
||||||
|
if Preferences.getInstance().getValue("view/center_on_select"):
|
||||||
self._camera_animation.setStart(self.getController().getTool("CameraTool").getOrigin())
|
self._camera_animation.setStart(self.getController().getTool("CameraTool").getOrigin())
|
||||||
self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition())
|
self._camera_animation.setTarget(Selection.getSelectedObject(0).getWorldPosition())
|
||||||
self._camera_animation.start()
|
self._camera_animation.start()
|
||||||
|
@ -12,6 +12,8 @@ from UM.Math.Vector import Vector
|
|||||||
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
||||||
from UM.Application import Application
|
from UM.Application import Application
|
||||||
from UM.Scene.Selection import Selection
|
from UM.Scene.Selection import Selection
|
||||||
|
from UM.Preferences import Preferences
|
||||||
|
|
||||||
from cura.ConvexHullDecorator import ConvexHullDecorator
|
from cura.ConvexHullDecorator import ConvexHullDecorator
|
||||||
|
|
||||||
from . import PlatformPhysicsOperation
|
from . import PlatformPhysicsOperation
|
||||||
@ -37,6 +39,8 @@ class PlatformPhysics:
|
|||||||
self._change_timer.setSingleShot(True)
|
self._change_timer.setSingleShot(True)
|
||||||
self._change_timer.timeout.connect(self._onChangeTimerFinished)
|
self._change_timer.timeout.connect(self._onChangeTimerFinished)
|
||||||
|
|
||||||
|
Preferences.getInstance().addPreference("physics/automatic_push_free", True)
|
||||||
|
|
||||||
def _onSceneChanged(self, source):
|
def _onSceneChanged(self, source):
|
||||||
self._change_timer.start()
|
self._change_timer.start()
|
||||||
|
|
||||||
@ -82,7 +86,7 @@ class PlatformPhysics:
|
|||||||
|
|
||||||
elif Selection.isSelected(node):
|
elif Selection.isSelected(node):
|
||||||
pass
|
pass
|
||||||
else:
|
elif Preferences.getInstance().getValue("physics/automatic_push_free"):
|
||||||
# Check for collisions between convex hulls
|
# Check for collisions between convex hulls
|
||||||
for other_node in BreadthFirstIterator(root):
|
for other_node in BreadthFirstIterator(root):
|
||||||
# Ignore root, ourselves and anything that is not a normal SceneNode.
|
# Ignore root, ourselves and anything that is not a normal SceneNode.
|
||||||
|
@ -40,6 +40,14 @@ Item {
|
|||||||
property alias reportBug: reportBugAction;
|
property alias reportBug: reportBugAction;
|
||||||
property alias about: aboutAction;
|
property alias about: aboutAction;
|
||||||
|
|
||||||
|
property alias toggleFullScreen: toggleFullScreenAction;
|
||||||
|
|
||||||
|
Action
|
||||||
|
{
|
||||||
|
id:toggleFullScreenAction
|
||||||
|
shortcut: StandardKey.FullScreen;
|
||||||
|
}
|
||||||
|
|
||||||
Action {
|
Action {
|
||||||
id: undoAction;
|
id: undoAction;
|
||||||
//: Undo action
|
//: Undo action
|
||||||
|
@ -12,7 +12,6 @@ import UM 1.1 as UM
|
|||||||
UM.MainWindow {
|
UM.MainWindow {
|
||||||
id: base
|
id: base
|
||||||
visible: true
|
visible: true
|
||||||
|
|
||||||
//: Cura application window title
|
//: Cura application window title
|
||||||
title: qsTr("Cura");
|
title: qsTr("Cura");
|
||||||
|
|
||||||
@ -345,8 +344,15 @@ UM.MainWindow {
|
|||||||
id: preferences
|
id: preferences
|
||||||
|
|
||||||
Component.onCompleted: {
|
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
|
//: View preferences page title
|
||||||
insertPage(1, qsTr("View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
|
insertPage(1, qsTr("View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
|
||||||
|
|
||||||
|
//Force refresh
|
||||||
|
setPage(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -419,6 +425,8 @@ UM.MainWindow {
|
|||||||
reportBug.onTriggered: CuraActions.openBugReportPage();
|
reportBug.onTriggered: CuraActions.openBugReportPage();
|
||||||
showEngineLog.onTriggered: engineLog.visible = true;
|
showEngineLog.onTriggered: engineLog.visible = true;
|
||||||
about.onTriggered: aboutDialog.visible = true;
|
about.onTriggered: aboutDialog.visible = true;
|
||||||
|
toggleFullScreen.onTriggered: base.toggleFullscreen()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Menu {
|
Menu {
|
||||||
|
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 }
|
||||||
|
}
|
||||||
|
}
|
@ -8,7 +8,8 @@ import QtQuick.Controls.Styles 1.1
|
|||||||
|
|
||||||
import UM 1.0 as UM
|
import UM 1.0 as UM
|
||||||
|
|
||||||
UM.PreferencesPage {
|
UM.PreferencesPage
|
||||||
|
{
|
||||||
id: preferencesPage
|
id: preferencesPage
|
||||||
|
|
||||||
//: View configuration page title
|
//: View configuration page title
|
||||||
@ -17,22 +18,26 @@ UM.PreferencesPage {
|
|||||||
function reset()
|
function reset()
|
||||||
{
|
{
|
||||||
UM.Preferences.resetPreference("view/show_overhang");
|
UM.Preferences.resetPreference("view/show_overhang");
|
||||||
|
UM.Preferences.resetPreferences("view/center_on_select");
|
||||||
}
|
}
|
||||||
|
|
||||||
GridLayout {
|
GridLayout
|
||||||
|
{
|
||||||
columns: 2;
|
columns: 2;
|
||||||
|
|
||||||
CheckBox {
|
CheckBox
|
||||||
id: viewCheckbox
|
{
|
||||||
|
id: overhangCheckbox
|
||||||
checked: UM.Preferences.getValue("view/show_overhang")
|
checked: UM.Preferences.getValue("view/show_overhang")
|
||||||
onCheckedChanged: UM.Preferences.setValue("view/show_overhang", checked)
|
onCheckedChanged: UM.Preferences.setValue("view/show_overhang", checked)
|
||||||
}
|
}
|
||||||
Button {
|
Button
|
||||||
|
{
|
||||||
id: viewText //is a button so the user doesn't have te click inconvenientley precise to enable or disable the checkbox
|
id: viewText //is a button so the user doesn't have te click inconvenientley precise to enable or disable the checkbox
|
||||||
|
|
||||||
//: Display Overhang preference checkbox
|
//: Display Overhang preference checkbox
|
||||||
text: qsTr("Display Overhang");
|
text: qsTr("Display Overhang");
|
||||||
onClicked: viewCheckbox.checked = !viewCheckbox.checked
|
onClicked: overhangCheckbox.checked = !overhangCheckbox.checked
|
||||||
|
|
||||||
//: Display Overhang preference tooltip
|
//: Display Overhang preference tooltip
|
||||||
tooltip: "Highlight unsupported areas of the model in red. Without support these areas will nog print properly."
|
tooltip: "Highlight unsupported areas of the model in red. Without support these areas will nog print properly."
|
||||||
@ -49,6 +54,39 @@ UM.PreferencesPage {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CheckBox
|
||||||
|
{
|
||||||
|
id: centerCheckbox
|
||||||
|
checked: UM.Preferences.getValue("view/center_on_select")
|
||||||
|
onCheckedChanged: UM.Preferences.setValue("view/center_on_select", checked)
|
||||||
|
}
|
||||||
|
Button
|
||||||
|
{
|
||||||
|
id: centerText //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("Center camera when item is selected");
|
||||||
|
onClicked: centerCheckbox.checked = !centerCheckbox.checked
|
||||||
|
|
||||||
|
//: Display Overhang preference tooltip
|
||||||
|
tooltip: "Moves the camera so the object is in the center of the view when an object is selected"
|
||||||
|
|
||||||
|
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 }
|
Item { Layout.fillHeight: true; Layout.columnSpan: 2 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@ Column
|
|||||||
Component.onCompleted: printer_connection.homeHead()
|
Component.onCompleted: printer_connection.homeHead()
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
text: UM.Models.settingsModel.getItem(UM.Models.settingsModel.find("key", "machine_width")).toString()
|
text: ""
|
||||||
//Component.onCompleted:console.log(UM.Models.settingsModel.getMachineSetting("machine_width"))
|
//Component.onCompleted:console.log(UM.Models.settingsModel.getMachineSetting("machine_width"))
|
||||||
}
|
}
|
||||||
Button
|
Button
|
||||||
|
@ -28,21 +28,6 @@
|
|||||||
"machine_center_is_zero": {
|
"machine_center_is_zero": {
|
||||||
"default": false
|
"default": false
|
||||||
},
|
},
|
||||||
"machine_head_shape_min_x": {
|
|
||||||
"default": 40
|
|
||||||
},
|
|
||||||
"machine_head_shape_min_y": {
|
|
||||||
"default": 10
|
|
||||||
},
|
|
||||||
"machine_head_shape_max_x": {
|
|
||||||
"default": 60
|
|
||||||
},
|
|
||||||
"machine_head_shape_max_y": {
|
|
||||||
"default": 30
|
|
||||||
},
|
|
||||||
"machine_nozzle_gantry_distance": {
|
|
||||||
"default": 55
|
|
||||||
},
|
|
||||||
"machine_extruder_count": {
|
"machine_extruder_count": {
|
||||||
"default": 1
|
"default": 1
|
||||||
},
|
},
|
||||||
@ -67,20 +52,20 @@
|
|||||||
"machine_head_polygon": {
|
"machine_head_polygon": {
|
||||||
"default": [
|
"default": [
|
||||||
[
|
[
|
||||||
-10,
|
-1,
|
||||||
10
|
1
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
10,
|
-1,
|
||||||
10
|
-1
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
10,
|
1,
|
||||||
-10
|
-1
|
||||||
],
|
],
|
||||||
[
|
[
|
||||||
-10,
|
1,
|
||||||
-10
|
1
|
||||||
]
|
]
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
@ -47,14 +47,30 @@
|
|||||||
"machine_height": { "default": 205 },
|
"machine_height": { "default": 205 },
|
||||||
"machine_heated_bed": { "default": true },
|
"machine_heated_bed": { "default": true },
|
||||||
|
|
||||||
|
"machine_head_with_fans_polygon":
|
||||||
|
{
|
||||||
|
"default": [
|
||||||
|
[
|
||||||
|
-40,
|
||||||
|
30
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-40,
|
||||||
|
-10
|
||||||
|
],
|
||||||
|
[
|
||||||
|
60,
|
||||||
|
-10
|
||||||
|
],
|
||||||
|
[
|
||||||
|
60,
|
||||||
|
30
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
"machine_center_is_zero": { "default": false },
|
"machine_center_is_zero": { "default": false },
|
||||||
"machine_nozzle_size": { "default": 0.4 },
|
"machine_nozzle_size": { "default": 0.4 },
|
||||||
"machine_head_shape_min_x": { "default": 40 },
|
"gantry_height": { "default": 55 },
|
||||||
"machine_head_shape_min_y": { "default": 10 },
|
|
||||||
"machine_head_shape_max_x": { "default": 60 },
|
|
||||||
"machine_head_shape_max_y": { "default": 30 },
|
|
||||||
"machine_nozzle_gantry_distance": { "default": 55 },
|
|
||||||
"machine_use_extruder_offset_to_offset_coords": { "default": true },
|
"machine_use_extruder_offset_to_offset_coords": { "default": true },
|
||||||
"machine_gcode_flavor": { "default": "UltiGCode" },
|
"machine_gcode_flavor": { "default": "UltiGCode" },
|
||||||
"machine_disallowed_areas": { "default": [
|
"machine_disallowed_areas": { "default": [
|
||||||
|
@ -50,11 +50,28 @@
|
|||||||
"machine_depth": { "default": 205 },
|
"machine_depth": { "default": 205 },
|
||||||
"machine_center_is_zero": { "default": false },
|
"machine_center_is_zero": { "default": false },
|
||||||
"machine_nozzle_size": { "default": 0.4 },
|
"machine_nozzle_size": { "default": 0.4 },
|
||||||
"machine_head_shape_min_x": { "default": 75 },
|
"machine_head_with_fans_polygon":
|
||||||
"machine_head_shape_min_y": { "default": 18 },
|
{
|
||||||
"machine_head_shape_max_x": { "default": 18 },
|
"default": [
|
||||||
"machine_head_shape_max_y": { "default": 35 },
|
[
|
||||||
"machine_nozzle_gantry_distance": { "default": 55 },
|
-75,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
[
|
||||||
|
-75,
|
||||||
|
-18
|
||||||
|
],
|
||||||
|
[
|
||||||
|
18,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
[
|
||||||
|
18,
|
||||||
|
-18
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"gantry_height": { "default": 55 },
|
||||||
"machine_use_extruder_offset_to_offset_coords": { "default": true },
|
"machine_use_extruder_offset_to_offset_coords": { "default": true },
|
||||||
"machine_gcode_flavor": { "default": "RepRap (Marlin/Sprinter)" },
|
"machine_gcode_flavor": { "default": "RepRap (Marlin/Sprinter)" },
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user