This commit is contained in:
Tamara Hogenhout 2015-08-21 10:55:44 +02:00
commit 3cb3cce31c
10 changed files with 254 additions and 47 deletions

View File

@ -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()

View File

@ -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.

View File

@ -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

View File

@ -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 {

View 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 }
}
}

View File

@ -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 }
} }
} }

View File

@ -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

View File

@ -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
] ]
] ]
}, },

View File

@ -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": [

View File

@ -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)" },