mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-08-09 23:05:01 -06:00
Merge branch 'master' of github.com:ultimaker/Cura into per_object_settings
* 'master' of github.com:ultimaker/Cura: (49 commits) 15.10 restyling of the sidebar header 15.10 restyling of the sidebar header 15.10 restyling of the sidebar split magic_mesh)surface_mode into Normal, Surface, Both Added preference to disable automatic scale Removed unused import Added changeLog plugin Added missing ) Merging of mine and Jaimes work Removed font from rectangle JSON: git diff! removed triangles and grid top/bottom skin options (though they are available) Code style & switch to translation catalog 15.10 re-alignment of the toolbar 15.10 New Icons 15.10 restyling of the savebutton Area Added message asking about sending data to server Added exception handling for checking overlap. Fixed default button for general and view page Fixed double ID in qml Removed unused import ...
This commit is contained in:
commit
57b2ce4f3e
55 changed files with 1753 additions and 927 deletions
|
@ -5,17 +5,21 @@ import QtQuick 2.2
|
|||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
UM.Dialog {
|
||||
UM.Dialog
|
||||
{
|
||||
id: base
|
||||
|
||||
//: About dialog title
|
||||
title: qsTr("About Cura")
|
||||
title: catalog.i18nc("@title:window","About Cura")
|
||||
minimumWidth: 400
|
||||
minimumHeight: 300
|
||||
minimumHeight: 300;
|
||||
//UM.I18nCatalog { id: catalog; }
|
||||
|
||||
Image {
|
||||
|
||||
Image
|
||||
{
|
||||
id: logo
|
||||
width: parent.width * 0.75
|
||||
height: width * (1/4.25)
|
||||
|
@ -26,9 +30,11 @@ UM.Dialog {
|
|||
sourceSize.height: height
|
||||
anchors.centerIn: parent
|
||||
anchors.verticalCenterOffset : -(height * 0.5)
|
||||
UM.I18nCatalog{id: catalog; name:"cura"}
|
||||
}
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
id: version
|
||||
|
||||
text: "Cura %1".arg(UM.Application.version)
|
||||
|
@ -39,30 +45,33 @@ UM.Dialog {
|
|||
anchors.topMargin : 5
|
||||
}
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
id: description
|
||||
width: parent.width
|
||||
|
||||
//: About dialog application description
|
||||
text: qsTr("End-to-end solution for fused filament 3D printing.")
|
||||
text: catalog.i18nc("@label","End-to-end solution for fused filament 3D printing.")
|
||||
wrapMode: Text.WordWrap
|
||||
anchors.top: version.bottom
|
||||
anchors.topMargin : 10
|
||||
}
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
id: author_note
|
||||
width: parent.width
|
||||
|
||||
//: About dialog application author note
|
||||
text: qsTr("Cura has been developed by Ultimaker B.V. in cooperation with the community.")
|
||||
text: catalog.i18nc("@label","Cura has been developed by Ultimaker B.V. in cooperation with the community.")
|
||||
wrapMode: Text.WordWrap
|
||||
anchors.top: description.bottom
|
||||
}
|
||||
|
||||
rightButtons: Button {
|
||||
rightButtons: Button
|
||||
{
|
||||
//: Close about dialog button
|
||||
text: qsTr("Close");
|
||||
text: catalog.i18nc("@action:button","Close");
|
||||
|
||||
onClicked: base.visible = false;
|
||||
}
|
||||
|
|
|
@ -3,9 +3,10 @@
|
|||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
property alias open: openAction;
|
||||
property alias save: saveAction;
|
||||
property alias quit: quitAction;
|
||||
|
@ -42,60 +43,69 @@ Item {
|
|||
|
||||
property alias toggleFullScreen: toggleFullScreenAction;
|
||||
|
||||
UM.I18nCatalog{id: catalog; name:"cura"}
|
||||
|
||||
Action
|
||||
{
|
||||
id:toggleFullScreenAction
|
||||
shortcut: StandardKey.FullScreen;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: undoAction;
|
||||
//: Undo action
|
||||
text: qsTr("Undo");
|
||||
text: catalog.i18nc("@action","Undo");
|
||||
iconName: "edit-undo";
|
||||
shortcut: StandardKey.Undo;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: redoAction;
|
||||
//: Redo action
|
||||
text: qsTr("Redo");
|
||||
text: catalog.i18nc("@action","Redo");
|
||||
iconName: "edit-redo";
|
||||
shortcut: StandardKey.Redo;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: quitAction;
|
||||
//: Quit action
|
||||
text: qsTr("Quit");
|
||||
text: catalog.i18nc("@action","Quit");
|
||||
iconName: "application-exit";
|
||||
shortcut: StandardKey.Quit;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: preferencesAction;
|
||||
//: Preferences action
|
||||
text: qsTr("Preferences...");
|
||||
text: catalog.i18nc("@action","Preferences...");
|
||||
iconName: "configure";
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: addMachineAction;
|
||||
//: Add Printer action
|
||||
text: qsTr("Add Printer...");
|
||||
text: catalog.i18nc("@action","Add Printer...");
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: settingsAction;
|
||||
//: Configure Printers action
|
||||
text: qsTr("Configure Printers");
|
||||
text: catalog.i18nc("@action","Configure Printers");
|
||||
iconName: "configure";
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: documentationAction;
|
||||
//: Show Online Documentation action
|
||||
text: qsTr("Show Online &Documentation");
|
||||
text: catalog.i18nc("@action","Show Online &Documentation");
|
||||
iconName: "help-contents";
|
||||
shortcut: StandardKey.Help;
|
||||
}
|
||||
|
@ -103,118 +113,131 @@ Item {
|
|||
Action {
|
||||
id: reportBugAction;
|
||||
//: Report a Bug Action
|
||||
text: qsTr("Report a &Bug");
|
||||
text: catalog.i18nc("@action","Report a &Bug");
|
||||
iconName: "tools-report-bug";
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: aboutAction;
|
||||
//: About action
|
||||
text: qsTr("About...");
|
||||
text: catalog.i18nc("@action","About...");
|
||||
iconName: "help-about";
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: deleteSelectionAction;
|
||||
//: Delete selection action
|
||||
text: qsTr("Delete Selection");
|
||||
text: catalog.i18nc("@action","Delete Selection");
|
||||
iconName: "edit-delete";
|
||||
shortcut: StandardKey.Delete;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: deleteObjectAction;
|
||||
//: Delete object action
|
||||
text: qsTr("Delete Object");
|
||||
text: catalog.i18nc("@action","Delete Object");
|
||||
iconName: "edit-delete";
|
||||
shortcut: StandardKey.Backspace;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: centerObjectAction;
|
||||
//: Center object action
|
||||
text: qsTr("Center Object on Platform");
|
||||
text: catalog.i18nc("@action","Center Object on Platform");
|
||||
}
|
||||
|
||||
Action
|
||||
{
|
||||
id: groupObjectsAction
|
||||
text: qsTr("Group objects");
|
||||
text: catalog.i18nc("@action","Group objects");
|
||||
enabled: UM.Scene.numObjectsSelected > 1 ? true: false
|
||||
}
|
||||
|
||||
Action
|
||||
{
|
||||
id: unGroupObjectsAction
|
||||
text: qsTr("Ungroup objects");
|
||||
text: catalog.i18nc("@action","Ungroup objects");
|
||||
enabled: UM.Scene.isGroupSelected
|
||||
}
|
||||
|
||||
Action
|
||||
{
|
||||
id: mergeObjectsAction
|
||||
text: qsTr("Merge objects");
|
||||
text: catalog.i18nc("@action","Merge objects");
|
||||
enabled: UM.Scene.numObjectsSelected > 1 ? true: false
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: multiplyObjectAction;
|
||||
//: Duplicate object action
|
||||
text: qsTr("Duplicate Object");
|
||||
text: catalog.i18nc("@action","Duplicate Object");
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: splitObjectAction;
|
||||
//: Split object action
|
||||
text: qsTr("Split Object into Parts");
|
||||
text: catalog.i18nc("@action","Split Object into Parts");
|
||||
enabled: false;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: deleteAllAction;
|
||||
//: Clear build platform action
|
||||
text: qsTr("Clear Build Platform");
|
||||
text: catalog.i18nc("@action","Clear Build Platform");
|
||||
iconName: "edit-clear";
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: reloadAllAction;
|
||||
//: Reload all objects action
|
||||
text: qsTr("Reload All Objects");
|
||||
text: catalog.i18nc("@action","Reload All Objects");
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: resetAllTranslationAction;
|
||||
//: Reset all positions action
|
||||
text: qsTr("Reset All Object Positions");
|
||||
text: catalog.i18nc("@action","Reset All Object Positions");
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: resetAllAction;
|
||||
//: Reset all positions action
|
||||
text: qsTr("Reset All Object Transformations");
|
||||
text: catalog.i18nc("@action","Reset All Object Transformations");
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: openAction;
|
||||
//: Open file action
|
||||
text: qsTr("Load file");
|
||||
text: catalog.i18nc("@action","Load file");
|
||||
iconName: "document-open";
|
||||
shortcut: StandardKey.Open;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: saveAction;
|
||||
//: Save file action
|
||||
text: qsTr("Save...");
|
||||
text: catalog.i18nc("@action","Save...");
|
||||
iconName: "document-save";
|
||||
shortcut: StandardKey.Save;
|
||||
}
|
||||
|
||||
Action {
|
||||
Action
|
||||
{
|
||||
id: showEngineLogAction;
|
||||
//: Show engine log action
|
||||
text: qsTr("Show engine &log...");
|
||||
text: catalog.i18nc("@action","Show engine &log...");
|
||||
iconName: "view-list-text";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,7 @@ UM.Wizard
|
|||
{
|
||||
id: base;
|
||||
|
||||
title: catalog.i18nc("@title", "Add Printer")
|
||||
title: catalog.i18nc("@title:window", "Add Printer")
|
||||
|
||||
// This part is optional
|
||||
// This part checks whether there is a printer -> if not: some of the functions (delete for example) are disabled
|
||||
|
|
|
@ -9,38 +9,46 @@ import QtQuick.Dialogs 1.1
|
|||
|
||||
import UM 1.1 as UM
|
||||
|
||||
UM.MainWindow {
|
||||
UM.MainWindow
|
||||
{
|
||||
id: base
|
||||
visible: true
|
||||
//: Cura application window title
|
||||
title: qsTr("Cura");
|
||||
title: catalog.i18nc("@title:window","Cura");
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
id: backgroundItem;
|
||||
anchors.fill: parent;
|
||||
|
||||
UM.ApplicationMenu {
|
||||
UM.I18nCatalog{id: catalog; name:"cura"}
|
||||
UM.ApplicationMenu
|
||||
{
|
||||
id: menu
|
||||
window: base
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: fileMenu
|
||||
//: File menu
|
||||
title: qsTr("&File");
|
||||
title: catalog.i18nc("@title:menu","&File");
|
||||
|
||||
MenuItem { action: actions.open; }
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: recentFilesMenu;
|
||||
title: "Open Recent"
|
||||
title: catalog.i18nc("@title:menu","Open Recent")
|
||||
iconName: "document-open-recent";
|
||||
|
||||
enabled: Printer.recentFiles.length > 0;
|
||||
|
||||
Instantiator {
|
||||
Instantiator
|
||||
{
|
||||
model: Printer.recentFiles
|
||||
MenuItem {
|
||||
text: {
|
||||
MenuItem
|
||||
{
|
||||
text:
|
||||
{
|
||||
var path = modelData.toString()
|
||||
return (index + 1) + ". " + path.slice(path.lastIndexOf("/") + 1);
|
||||
}
|
||||
|
@ -53,22 +61,26 @@ UM.MainWindow {
|
|||
|
||||
MenuSeparator { }
|
||||
|
||||
MenuItem {
|
||||
text: "Save Selection to File";
|
||||
MenuItem
|
||||
{
|
||||
text: catalog.i18nc("@action:menu", "Save Selection to File");
|
||||
enabled: UM.Selection.hasSelection;
|
||||
iconName: "document-save-as";
|
||||
onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file");
|
||||
}
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: saveAllMenu
|
||||
title: "Save All"
|
||||
title: catalog.i18nc("@title:menu","Save All")
|
||||
iconName: "document-save";
|
||||
enabled: devicesModel.rowCount() > 0 && UM.Backend.progress > 0.99;
|
||||
|
||||
Instantiator {
|
||||
Instantiator
|
||||
{
|
||||
model: UM.OutputDevicesModel { id: devicesModel; }
|
||||
|
||||
MenuItem {
|
||||
MenuItem
|
||||
{
|
||||
text: model.description;
|
||||
onTriggered: UM.OutputDeviceManager.requestWriteToDevice(model.id);
|
||||
}
|
||||
|
@ -82,9 +94,10 @@ UM.MainWindow {
|
|||
MenuItem { action: actions.quit; }
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
//: Edit menu
|
||||
title: qsTr("&Edit");
|
||||
title: catalog.i18nc("@title:menu","&Edit");
|
||||
|
||||
MenuItem { action: actions.undo; }
|
||||
MenuItem { action: actions.redo; }
|
||||
|
@ -94,7 +107,7 @@ UM.MainWindow {
|
|||
}
|
||||
Menu
|
||||
{
|
||||
title: qsTr("&View");
|
||||
title: catalog.i18nc("@title:menu","&View");
|
||||
id: top_view_menu
|
||||
Instantiator
|
||||
{
|
||||
|
@ -116,14 +129,17 @@ UM.MainWindow {
|
|||
|
||||
MenuItem { action: actions.toggleFullScreen; }
|
||||
}
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: machineMenu;
|
||||
//: Machine menu
|
||||
title: qsTr("&Machine");
|
||||
title: catalog.i18nc("@title:menu","&Machine");
|
||||
|
||||
Instantiator {
|
||||
Instantiator
|
||||
{
|
||||
model: UM.MachineInstancesModel { }
|
||||
MenuItem {
|
||||
MenuItem
|
||||
{
|
||||
text: model.name;
|
||||
checkable: true;
|
||||
checked: model.active;
|
||||
|
@ -138,7 +154,8 @@ UM.MainWindow {
|
|||
|
||||
MenuSeparator { }
|
||||
|
||||
Instantiator {
|
||||
Instantiator
|
||||
{
|
||||
model: UM.MachineVariantsModel { }
|
||||
MenuItem {
|
||||
text: model.name;
|
||||
|
@ -159,10 +176,11 @@ UM.MainWindow {
|
|||
MenuItem { action: actions.configureMachines; }
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: extension_menu
|
||||
//: Extensions menu
|
||||
title: qsTr("E&xtensions");
|
||||
title: catalog.i18nc("@title:menu","E&xtensions");
|
||||
|
||||
Instantiator
|
||||
{
|
||||
|
@ -191,16 +209,18 @@ UM.MainWindow {
|
|||
}
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
//: Settings menu
|
||||
title: qsTr("&Settings");
|
||||
title: catalog.i18nc("@title:menu","&Settings");
|
||||
|
||||
MenuItem { action: actions.preferences; }
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
//: Help menu
|
||||
title: qsTr("&Help");
|
||||
title: catalog.i18nc("@title:menu","&Help");
|
||||
|
||||
MenuItem { action: actions.showEngineLog; }
|
||||
MenuItem { action: actions.documentation; }
|
||||
|
@ -210,7 +230,8 @@ UM.MainWindow {
|
|||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
id: contentItem;
|
||||
|
||||
y: menu.height
|
||||
|
@ -219,19 +240,25 @@ UM.MainWindow {
|
|||
|
||||
Keys.forwardTo: menu
|
||||
|
||||
DropArea {
|
||||
DropArea
|
||||
{
|
||||
anchors.fill: parent;
|
||||
onDropped: {
|
||||
if(drop.urls.length > 0) {
|
||||
for(var i in drop.urls) {
|
||||
onDropped:
|
||||
{
|
||||
if(drop.urls.length > 0)
|
||||
{
|
||||
for(var i in drop.urls)
|
||||
{
|
||||
UM.MeshFileHandler.readLocalFile(drop.urls[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UM.MessageStack {
|
||||
anchors {
|
||||
UM.MessageStack
|
||||
{
|
||||
anchors
|
||||
{
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
horizontalCenterOffset: -(UM.Theme.sizes.logo.width/ 2)
|
||||
top: parent.verticalCenter;
|
||||
|
@ -258,12 +285,14 @@ UM.MainWindow {
|
|||
source: UM.ActiveView.valid ? UM.ActiveView.activeViewPanel : "";
|
||||
}
|
||||
|
||||
Button {
|
||||
Button
|
||||
{
|
||||
id: openFileButton;
|
||||
//style: UM.Backend.progress < 0 ? UM.Theme.styles.open_file_button : UM.Theme.styles.tool_button;
|
||||
style: UM.Theme.styles.open_file_button
|
||||
tooltip: '';
|
||||
anchors {
|
||||
anchors
|
||||
{
|
||||
top: parent.top;
|
||||
topMargin: UM.Theme.sizes.loadfile_margin.height
|
||||
left: parent.left;
|
||||
|
@ -272,9 +301,11 @@ UM.MainWindow {
|
|||
action: actions.open;
|
||||
}
|
||||
|
||||
Image {
|
||||
Image
|
||||
{
|
||||
id: logo
|
||||
anchors {
|
||||
anchors
|
||||
{
|
||||
left: parent.left
|
||||
leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
bottom: parent.bottom
|
||||
|
@ -289,24 +320,29 @@ UM.MainWindow {
|
|||
sourceSize.height: height;
|
||||
}
|
||||
|
||||
Button {
|
||||
Button
|
||||
{
|
||||
id: viewModeButton
|
||||
anchors {
|
||||
anchors
|
||||
{
|
||||
top: parent.top;
|
||||
right: sidebar.left;
|
||||
rightMargin: UM.Theme.sizes.window_margin.width;
|
||||
}
|
||||
//: View Mode toolbar button
|
||||
text: qsTr("View Mode");
|
||||
text: catalog.i18nc("@action:button","View Mode");
|
||||
iconSource: UM.Theme.icons.viewmode;
|
||||
|
||||
style: UM.Theme.styles.tool_button;
|
||||
tooltip: '';
|
||||
menu: Menu {
|
||||
menu: Menu
|
||||
{
|
||||
id: viewMenu;
|
||||
Instantiator {
|
||||
Instantiator
|
||||
{
|
||||
model: UM.Models.viewModel;
|
||||
MenuItem {
|
||||
MenuItem
|
||||
{
|
||||
text: model.name;
|
||||
checkable: true;
|
||||
checked: model.active;
|
||||
|
@ -321,38 +357,46 @@ UM.MainWindow {
|
|||
}
|
||||
}
|
||||
|
||||
Toolbar {
|
||||
Toolbar
|
||||
{
|
||||
id: toolbar;
|
||||
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
horizontalCenterOffset: -(UM.Theme.sizes.panel.width / 2)
|
||||
top: parent.top;
|
||||
left: parent.left
|
||||
top: parent.top
|
||||
topMargin: 74
|
||||
//horizontalCenter: parent.horizontalCenter
|
||||
//horizontalCenterOffset: -(UM.Theme.sizes.sidebar.width / 2)
|
||||
//top: parent.top;
|
||||
}
|
||||
}
|
||||
|
||||
Sidebar {
|
||||
Sidebar
|
||||
{
|
||||
id: sidebar;
|
||||
|
||||
anchors {
|
||||
anchors
|
||||
{
|
||||
top: parent.top;
|
||||
bottom: parent.bottom;
|
||||
right: parent.right;
|
||||
}
|
||||
|
||||
width: UM.Theme.sizes.panel.width;
|
||||
width: UM.Theme.sizes.sidebar.width;
|
||||
|
||||
addMachineAction: actions.addMachine;
|
||||
configureMachinesAction: actions.configureMachines;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Rectangle
|
||||
{
|
||||
x: base.mouseX + UM.Theme.sizes.default_margin.width;
|
||||
y: base.mouseY + UM.Theme.sizes.default_margin.height;
|
||||
|
||||
width: childrenRect.width;
|
||||
height: childrenRect.height;
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
text: UM.ActiveTool.properties.Rotation != undefined ? "%1°".arg(UM.ActiveTool.properties.Rotation) : "";
|
||||
}
|
||||
|
||||
|
@ -361,23 +405,26 @@ UM.MainWindow {
|
|||
}
|
||||
}
|
||||
|
||||
UM.PreferencesDialog {
|
||||
UM.PreferencesDialog
|
||||
{
|
||||
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"));
|
||||
insertPage(0, catalog.i18nc("@title:tab","General") , "" , Qt.resolvedUrl("./GeneralPage.qml"));
|
||||
|
||||
//: View preferences page title
|
||||
insertPage(1, qsTr("View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
|
||||
insertPage(1, catalog.i18nc("@title:tab","View"), "view-preview", Qt.resolvedUrl("./ViewPage.qml"));
|
||||
|
||||
//Force refresh
|
||||
setPage(0)
|
||||
}
|
||||
}
|
||||
|
||||
Actions {
|
||||
Actions
|
||||
{
|
||||
id: actions;
|
||||
|
||||
open.onTriggered: openDialog.open();
|
||||
|
@ -390,28 +437,36 @@ UM.MainWindow {
|
|||
redo.onTriggered: UM.OperationStack.redo();
|
||||
redo.enabled: UM.OperationStack.canRedo;
|
||||
|
||||
deleteSelection.onTriggered: {
|
||||
if(objectContextMenu.objectId != 0) {
|
||||
deleteSelection.onTriggered:
|
||||
{
|
||||
if(objectContextMenu.objectId != 0)
|
||||
{
|
||||
Printer.deleteObject(objectContextMenu.objectId);
|
||||
}
|
||||
}
|
||||
|
||||
deleteObject.onTriggered: {
|
||||
if(objectContextMenu.objectId != 0) {
|
||||
deleteObject.onTriggered:
|
||||
{
|
||||
if(objectContextMenu.objectId != 0)
|
||||
{
|
||||
Printer.deleteObject(objectContextMenu.objectId);
|
||||
objectContextMenu.objectId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
multiplyObject.onTriggered: {
|
||||
if(objectContextMenu.objectId != 0) {
|
||||
multiplyObject.onTriggered:
|
||||
{
|
||||
if(objectContextMenu.objectId != 0)
|
||||
{
|
||||
Printer.multiplyObject(objectContextMenu.objectId, 1);
|
||||
objectContextMenu.objectId = 0;
|
||||
}
|
||||
}
|
||||
|
||||
centerObject.onTriggered: {
|
||||
if(objectContextMenu.objectId != 0) {
|
||||
centerObject.onTriggered:
|
||||
{
|
||||
if(objectContextMenu.objectId != 0)
|
||||
{
|
||||
Printer.centerObject(objectContextMenu.objectId);
|
||||
objectContextMenu.objectId = 0;
|
||||
}
|
||||
|
@ -450,7 +505,8 @@ UM.MainWindow {
|
|||
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: objectContextMenu;
|
||||
|
||||
property variant objectId: -1;
|
||||
|
@ -469,7 +525,8 @@ UM.MainWindow {
|
|||
MenuItem { action: actions.mergeObjects;}
|
||||
}
|
||||
|
||||
Menu {
|
||||
Menu
|
||||
{
|
||||
id: contextMenu;
|
||||
MenuItem { action: actions.deleteAll; }
|
||||
MenuItem { action: actions.reloadAll; }
|
||||
|
@ -480,23 +537,28 @@ UM.MainWindow {
|
|||
MenuItem { action: actions.mergeObjects;}
|
||||
}
|
||||
|
||||
Connections {
|
||||
Connections
|
||||
{
|
||||
target: UM.Controller
|
||||
onContextMenuRequested: {
|
||||
if(objectId == 0) {
|
||||
onContextMenuRequested:
|
||||
{
|
||||
if(objectId == 0)
|
||||
{
|
||||
contextMenu.popup();
|
||||
} else {
|
||||
} else
|
||||
{
|
||||
objectContextMenu.objectId = objectId;
|
||||
objectContextMenu.popup();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FileDialog {
|
||||
FileDialog
|
||||
{
|
||||
id: openDialog;
|
||||
|
||||
//: File open dialog title
|
||||
title: qsTr("Open File")
|
||||
title: catalog.i18nc("@title:window","Open File")
|
||||
modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal;
|
||||
//TODO: Support multiple file selection, workaround bug in KDE file dialog
|
||||
//selectMultiple: true
|
||||
|
@ -509,22 +571,27 @@ UM.MainWindow {
|
|||
}
|
||||
}
|
||||
|
||||
EngineLog {
|
||||
EngineLog
|
||||
{
|
||||
id: engineLog;
|
||||
}
|
||||
|
||||
AddMachineWizard {
|
||||
AddMachineWizard
|
||||
{
|
||||
id: addMachineWizard
|
||||
}
|
||||
|
||||
|
||||
AboutDialog {
|
||||
AboutDialog
|
||||
{
|
||||
id: aboutDialog
|
||||
}
|
||||
|
||||
Connections {
|
||||
Connections
|
||||
{
|
||||
target: Printer
|
||||
onRequestAddPrinter: {
|
||||
onRequestAddPrinter:
|
||||
{
|
||||
addMachineWizard.visible = true
|
||||
addMachineWizard.firstRun = true
|
||||
}
|
||||
|
|
|
@ -5,40 +5,48 @@ import QtQuick 2.2
|
|||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
UM.Dialog {
|
||||
UM.Dialog
|
||||
{
|
||||
id: dialog;
|
||||
|
||||
//: Engine Log dialog title
|
||||
title: qsTr("Engine Log");
|
||||
title: catalog.i18nc("@title:window","Engine Log");
|
||||
|
||||
modality: Qt.NonModal;
|
||||
|
||||
TextArea {
|
||||
TextArea
|
||||
{
|
||||
id: textArea
|
||||
anchors.fill: parent;
|
||||
|
||||
Timer {
|
||||
Timer
|
||||
{
|
||||
id: updateTimer;
|
||||
interval: 1000;
|
||||
running: false;
|
||||
repeat: true;
|
||||
onTriggered: textArea.text = Printer.getEngineLog();
|
||||
}
|
||||
UM.I18nCatalog{id: catalog; name:"cura"}
|
||||
}
|
||||
|
||||
rightButtons: Button {
|
||||
rightButtons: Button
|
||||
{
|
||||
//: Close engine log button
|
||||
text: qsTr("Close");
|
||||
text: catalog.i18nc("@action:button","Close");
|
||||
onClicked: dialog.visible = false;
|
||||
}
|
||||
|
||||
onVisibleChanged: {
|
||||
if(visible) {
|
||||
onVisibleChanged:
|
||||
{
|
||||
if(visible)
|
||||
{
|
||||
textArea.text = Printer.getEngineLog();
|
||||
updateTimer.start();
|
||||
} else {
|
||||
} else
|
||||
{
|
||||
updateTimer.stop();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,26 +6,33 @@ import QtQuick.Controls 1.1
|
|||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
UM.PreferencesPage
|
||||
{
|
||||
//: General configuration page title
|
||||
title: qsTr("General");
|
||||
title: catalog.i18nc("@title:wizard","General");
|
||||
|
||||
function reset()
|
||||
{
|
||||
UM.Preferences.resetPreference("general/language")
|
||||
UM.Preferences.resetPreference("physics/automatic_push_free")
|
||||
UM.Preferences.resetPreference("mesh/scale_to_fit")
|
||||
UM.Preferences.resetPreference("info/send_slice_info")
|
||||
pushFreeCheckbox.checked = UM.Preferences.getValue("physics/automatic_push_free")
|
||||
sendDataCheckbox.checked = UM.Preferences.getValue("info/send_slice_info")
|
||||
scaleToFitCheckbox.checked = UM.Preferences.getValue("mesh/scale_to_fit")
|
||||
languageComboBox.currentIndex = 0
|
||||
}
|
||||
GridLayout
|
||||
{
|
||||
columns: 2;
|
||||
//: Language selection label
|
||||
UM.I18nCatalog{id: catalog; name:"cura"}
|
||||
Label
|
||||
{
|
||||
id: languageLabel
|
||||
text: qsTr("Language")
|
||||
text: catalog.i18nc("@label","Language")
|
||||
}
|
||||
|
||||
ComboBox
|
||||
|
@ -72,7 +79,7 @@ UM.PreferencesPage
|
|||
// 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));
|
||||
languageList.setProperty(i, "text", catalog.i18nc("@action:menu",languageList.get(i).text));
|
||||
}
|
||||
|
||||
// Glorious hack time. ComboBox does not update the text properly after changing the
|
||||
|
@ -88,7 +95,7 @@ UM.PreferencesPage
|
|||
Layout.columnSpan: 2
|
||||
|
||||
//: Language change warning
|
||||
text: qsTr("You will need to restart the application for language changes to have effect.")
|
||||
text: catalog.i18nc("@label","You will need to restart the application for language changes to have effect.")
|
||||
wrapMode: Text.WordWrap
|
||||
font.italic: true
|
||||
}
|
||||
|
@ -104,11 +111,76 @@ UM.PreferencesPage
|
|||
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");
|
||||
text: catalog.i18nc("@action:checkbox","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"
|
||||
tooltip: catalog.i18nc("@info: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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CheckBox
|
||||
{
|
||||
id: sendDataCheckbox
|
||||
checked: UM.Preferences.getValue("info/send_slice_info")
|
||||
onCheckedChanged: UM.Preferences.setValue("info/send_slice_info", checked)
|
||||
}
|
||||
Button
|
||||
{
|
||||
id: sendDataText //is a button so the user doesn't have te click inconvenientley precise to enable or disable the checkbox
|
||||
|
||||
//: Display Overhang preference checkbox
|
||||
text: catalog.i18nc("@action:checkbox","Send (anonymous) slice info");
|
||||
onClicked: sendDataCheckbox.checked = !sendDataCheckbox.checked
|
||||
|
||||
//: Display Overhang preference tooltip
|
||||
tooltip: catalog.i18nc("@info:tooltip","Should anonymous data about your slices be sent to Ultimaker. No models or IP's are sent / stored.")
|
||||
|
||||
style: ButtonStyle
|
||||
{
|
||||
background: Rectangle
|
||||
{
|
||||
border.width: 0
|
||||
color: "transparent"
|
||||
}
|
||||
label: Text
|
||||
{
|
||||
renderType: Text.NativeRendering
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
text: control.text
|
||||
}
|
||||
}
|
||||
}
|
||||
CheckBox
|
||||
{
|
||||
id: scaleToFitCheckbox
|
||||
checked: UM.Preferences.getValue("mesh/scale_to_fit")
|
||||
onCheckedChanged: UM.Preferences.setValue("mesh/scale_to_fit", checked)
|
||||
}
|
||||
Button
|
||||
{
|
||||
id: scaleToFitText //is a button so the user doesn't have te click inconvenientley precise to enable or disable the checkbox
|
||||
|
||||
//: Display Overhang preference checkbox
|
||||
text: catalog.i18nc("@action:checkbox","Scale loaded meshes when too large");
|
||||
onClicked: scaleToFitCheckbox.checked = !scaleToFitCheckbox.checked
|
||||
|
||||
//: Display Overhang preference tooltip
|
||||
tooltip: catalog.i18nc("@info:tooltip","Should loaded meshes be scaled to the max build volume if they are too large.")
|
||||
|
||||
style: ButtonStyle
|
||||
{
|
||||
|
|
|
@ -14,115 +14,150 @@ Rectangle {
|
|||
property real progress: UM.Backend.progress;
|
||||
property bool activity: Printer.getPlatformActivity;
|
||||
Behavior on progress { NumberAnimation { duration: 250; } }
|
||||
property int totalHeight: childrenRect.height
|
||||
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
|
||||
property variant printDuration: PrintInformation.currentPrintTime;
|
||||
property real printMaterialAmount: PrintInformation.materialAmount;
|
||||
|
||||
Rectangle{
|
||||
id: background
|
||||
id: printJobRow
|
||||
implicitWidth: base.width;
|
||||
implicitHeight: parent.height;
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
border.width: UM.Theme.sizes.save_button_border.width
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
|
||||
Rectangle {
|
||||
id: infoBox
|
||||
width: parent.width - UM.Theme.sizes.default_margin.width * 2;
|
||||
height: UM.Theme.sizes.save_button_slicing_bar.height
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.sizes.default_margin.height;
|
||||
implicitHeight: UM.Theme.sizes.sidebar_header.height
|
||||
anchors.top: parent.top
|
||||
color: UM.Theme.colors.sidebar_header_bar
|
||||
Label{
|
||||
id: printJobTextfieldLabel
|
||||
text: catalog.i18nc("@label","Printjob name");
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
border.width: UM.Theme.sizes.save_button_border.width
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
color: UM.Theme.colors.save_button_estimated_text_background;
|
||||
Label {
|
||||
id: label;
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
visible: base.progress >= 0 && base.progress < 0.99 ? false : true
|
||||
color: UM.Theme.colors.save_button_estimated_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
text: {
|
||||
if(base.activity == false) {
|
||||
//: Save button label
|
||||
return qsTr("Please load a 3D model");
|
||||
} else if (base.progress < 0.99) {
|
||||
//: Save button label
|
||||
return qsTr("Calculating Print-time");
|
||||
} else if (base.printDuration.days > 0 || base.progress == null){
|
||||
return qsTr("");
|
||||
}
|
||||
else if (base.progress > 0.99){
|
||||
//: Save button label
|
||||
return qsTr("Estimated Print-time");
|
||||
}
|
||||
return "";
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
font: UM.Theme.fonts.default;
|
||||
color: UM.Theme.colors.text_white
|
||||
}
|
||||
TextField {
|
||||
id: printJobTextfield
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.sizes.default_margin.width;
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: parent.width/100*55
|
||||
height: UM.Theme.sizes.sidebar_inputFields.height
|
||||
property int unremovableSpacing: 5
|
||||
text: "UM2" + "_" + "filename" ///TODO KOMT NOG
|
||||
onEditingFinished: {
|
||||
if (printJobTextfield.text != ''){
|
||||
printJobTextfield.focus = false
|
||||
}
|
||||
}
|
||||
Label {
|
||||
id: printDurationLabel
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: label.right;
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
color: UM.Theme.colors.save_button_printtime_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
visible: base.activity == false || base.progress < 0.99 ? false : true
|
||||
text: (!base.printDuration || !base.printDuration.valid) ? "" : base.printDuration.getDisplayString(UM.DurationFormat.Long);
|
||||
validator: RegExpValidator {
|
||||
regExp: /^[0-9a-zA-Z\_\-]*$/
|
||||
}
|
||||
Label {
|
||||
id: printMaterialLabel
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: printDurationLabel.right;
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width;
|
||||
color: base.printDuration.days > 0 ? UM.Theme.colors.save_button_estimated_text : UM.Theme.colors.save_button_printtime_text;
|
||||
font: UM.Theme.fonts.small;
|
||||
property bool mediumLengthDuration: base.printDuration.hours > 9 && base.printMaterialAmount > 9.99 && base.printDuration.days == 0
|
||||
width: mediumLengthDuration ? 50 : undefined
|
||||
elide: mediumLengthDuration ? Text.ElideRight : Text.ElideNone
|
||||
visible: base.activity == false || base.progress < 0.99 ? false : true
|
||||
//: Print material amount save button label
|
||||
text: base.printMaterialAmount < 0 ? "" : qsTr("%1m of Material").arg(base.printMaterialAmount);
|
||||
style: TextFieldStyle{
|
||||
textColor: UM.Theme.colors.setting_control_text;
|
||||
font: UM.Theme.fonts.default;
|
||||
background: Rectangle {
|
||||
radius: 0
|
||||
implicitWidth: parent.width
|
||||
implicitHeight: parent.height
|
||||
border.width: 1;
|
||||
border.color: UM.Theme.colors.slider_groove_border;
|
||||
}
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
id: infoBoxOverlay
|
||||
anchors {
|
||||
left: infoBox.left;
|
||||
top: infoBox.top;
|
||||
bottom: infoBox.bottom;
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: specsRow
|
||||
implicitWidth: base.width
|
||||
implicitHeight: UM.Theme.sizes.sidebar_specs_bar.height
|
||||
anchors.top: printJobRow.bottom
|
||||
Item{
|
||||
id: time
|
||||
width: (parent.width / 100 * 45) - UM.Theme.sizes.default_margin.width * 2
|
||||
height: parent.height
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width
|
||||
anchors.top: parent.top
|
||||
visible: base.printMaterialAmount > 0 ? true : false
|
||||
UM.RecolorImage {
|
||||
id: timeIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
width: UM.Theme.sizes.save_button_specs_icons.width
|
||||
height: UM.Theme.sizes.save_button_specs_icons.height
|
||||
sourceSize.width: width
|
||||
sourceSize.height: width
|
||||
color: UM.Theme.colors.text_hover
|
||||
source: UM.Theme.icons.print_time;
|
||||
}
|
||||
Label{
|
||||
id: timeSpec
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: timeIcon.right
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width/2
|
||||
font: UM.Theme.fonts.default
|
||||
color: UM.Theme.colors.text
|
||||
text: (!base.printDuration || !base.printDuration.valid) ? "" : catalog.i18nc("@label", "%1 m").arg(base.printDuration.getDisplayString(UM.DurationFormat.Short))
|
||||
}
|
||||
width: Math.max(infoBox.width * base.progress);
|
||||
color: UM.Theme.colors.save_button_active
|
||||
visible: progress > 0.99 ? false : true
|
||||
}
|
||||
Item{
|
||||
width: parent.width / 100 * 55
|
||||
height: parent.height
|
||||
anchors.left: time.right
|
||||
anchors.top: parent.top
|
||||
visible: base.printMaterialAmount > 0 ? true : false
|
||||
UM.RecolorImage {
|
||||
id: lengthIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
width: UM.Theme.sizes.save_button_specs_icons.width
|
||||
height: UM.Theme.sizes.save_button_specs_icons.height
|
||||
sourceSize.width: width
|
||||
sourceSize.height: width
|
||||
color: UM.Theme.colors.text_hover
|
||||
source: UM.Theme.icons.category_material;
|
||||
}
|
||||
Label{
|
||||
id: lengthSpec
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: lengthIcon.right
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width/2
|
||||
font: UM.Theme.fonts.default
|
||||
color: UM.Theme.colors.text
|
||||
text: base.printMaterialAmount <= 0 ? "" : catalog.i18nc("@label","%1 m").arg(base.printMaterialAmount)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item{
|
||||
id: saveRow
|
||||
implicitWidth: base.width / 100 * 55
|
||||
implicitHeight: saveToButton.height + (UM.Theme.sizes.default_margin.height / 2) // height + bottomMargin
|
||||
anchors.top: specsRow.bottom
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.sizes.default_margin.width
|
||||
|
||||
Button {
|
||||
id: saveToButton
|
||||
anchors.top: infoBox.bottom
|
||||
anchors.topMargin: UM.Theme.sizes.save_button_text_margin.height;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
tooltip: UM.OutputDeviceManager.activeDeviceDescription;
|
||||
enabled: progress > 0.99 && base.activity == true
|
||||
|
||||
width: infoBox.width/6*4.5
|
||||
width: parent.width - UM.Theme.sizes.save_button_save_to_button.height - 2
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
|
||||
text: UM.OutputDeviceManager.activeDeviceShortDescription;
|
||||
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
color: !control.enabled ? UM.Theme.colors.save_button_inactive : control.hovered ? UM.Theme.colors.save_button_active_hover : UM.Theme.colors.save_button_active;
|
||||
color: control.hovered ? UM.Theme.colors.load_save_button_hover : UM.Theme.colors.load_save_button
|
||||
Behavior on color { ColorAnimation { duration: 50; } }
|
||||
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
color: UM.Theme.colors.save_button_safe_to_text;
|
||||
font: UM.Theme.fonts.sidebar_save_to;
|
||||
color: UM.Theme.colors.load_save_button_text
|
||||
font: UM.Theme.fonts.default
|
||||
text: control.text;
|
||||
}
|
||||
}
|
||||
|
@ -133,52 +168,35 @@ Rectangle {
|
|||
|
||||
Button {
|
||||
id: deviceSelectionMenu;
|
||||
anchors.top: infoBox.bottom
|
||||
anchors.topMargin: UM.Theme.sizes.save_button_text_margin.height
|
||||
tooltip: catalog.i18nc("@info:tooltip","Select the active output device");
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.sizes.default_margin.width;
|
||||
|
||||
tooltip: qsTr("Select the active output device");
|
||||
|
||||
width: infoBox.width/6*1.3 - UM.Theme.sizes.save_button_text_margin.height;
|
||||
width: UM.Theme.sizes.save_button_save_to_button.height
|
||||
height: UM.Theme.sizes.save_button_save_to_button.height
|
||||
|
||||
iconSource: UM.Theme.icons[UM.OutputDeviceManager.activeDeviceIconName];
|
||||
//iconSource: UM.Theme.icons[UM.OutputDeviceManager.activeDeviceIconName];
|
||||
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
border.width: control.hovered ? UM.Theme.sizes.save_button_border.width : 0
|
||||
border.color: UM.Theme.colors.save_button_border
|
||||
id: deviceSelectionIcon
|
||||
color: control.hovered ? UM.Theme.colors.load_save_button_hover : UM.Theme.colors.load_save_button
|
||||
Behavior on color { ColorAnimation { duration: 50; } }
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width / 2;
|
||||
width: parent.height
|
||||
height: parent.height
|
||||
|
||||
Rectangle {
|
||||
id: deviceSelectionIcon
|
||||
color: UM.Theme.colors.save_button_background;
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.save_button_text_margin.width / 2;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
width: parent.height - UM.Theme.sizes.save_button_text_margin.width ;
|
||||
height: parent.height - UM.Theme.sizes.save_button_text_margin.width;
|
||||
|
||||
UM.RecolorImage {
|
||||
anchors.fill: parent;
|
||||
sourceSize.width: width;
|
||||
sourceSize.height: height;
|
||||
color: UM.Theme.colors.save_button_active
|
||||
source: control.iconSource;
|
||||
}
|
||||
}
|
||||
Label {
|
||||
id: deviceSelectionArrow
|
||||
anchors.right: parent.right;
|
||||
anchors.rightMargin: UM.Theme.sizes.save_button_text_margin.height
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "▼";
|
||||
font: UM.Theme.fonts.tiny;
|
||||
color: UM.Theme.colors.save_button_active;
|
||||
UM.RecolorImage {
|
||||
id: lengthIcon
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: UM.Theme.sizes.standard_arrow.width
|
||||
height: UM.Theme.sizes.standard_arrow.height
|
||||
sourceSize.width: width
|
||||
sourceSize.height: width
|
||||
color: UM.Theme.colors.load_save_button_text
|
||||
source: UM.Theme.icons.arrow_bottom
|
||||
}
|
||||
}
|
||||
label: Item { }
|
||||
label: Label{ }
|
||||
}
|
||||
|
||||
menu: Menu {
|
||||
|
@ -200,9 +218,6 @@ Rectangle {
|
|||
ExclusiveGroup { id: devicesMenuGroup; }
|
||||
}
|
||||
}
|
||||
UM.OutputDevicesModel { id: devicesModel; }
|
||||
}
|
||||
|
||||
UM.OutputDevicesModel {
|
||||
id: devicesModel;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -8,162 +8,172 @@ import QtQuick.Layouts 1.1
|
|||
|
||||
import UM 1.1 as UM
|
||||
|
||||
Rectangle {
|
||||
Rectangle
|
||||
{
|
||||
id: base;
|
||||
|
||||
property Action addMachineAction;
|
||||
property Action configureMachinesAction;
|
||||
|
||||
color: UM.Theme.colors.sidebar;
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
|
||||
function showTooltip(item, position, text) {
|
||||
function showTooltip(item, position, text)
|
||||
{
|
||||
tooltip.text = text;
|
||||
position = item.mapToItem(base, position.x, position.y / 2);
|
||||
tooltip.show(position);
|
||||
}
|
||||
|
||||
function hideTooltip() {
|
||||
function hideTooltip()
|
||||
{
|
||||
tooltip.hide();
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
MouseArea
|
||||
{
|
||||
anchors.fill: parent
|
||||
acceptedButtons: Qt.AllButtons;
|
||||
|
||||
onWheel: {
|
||||
onWheel:
|
||||
{
|
||||
wheel.accepted = true;
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent;
|
||||
anchors.topMargin: UM.Theme.sizes.default_margin.height;
|
||||
SidebarHeader {
|
||||
id: header;
|
||||
|
||||
spacing: UM.Theme.sizes.default_margin.height;
|
||||
width: parent.width
|
||||
height: totalHeightHeader
|
||||
|
||||
SidebarHeader {
|
||||
id: header;
|
||||
addMachineAction: base.addMachineAction;
|
||||
configureMachinesAction: base.configureMachinesAction;
|
||||
modesModel: modesListModel;
|
||||
|
||||
Layout.fillWidth: true;
|
||||
|
||||
addMachineAction: base.addMachineAction;
|
||||
configureMachinesAction: base.configureMachinesAction;
|
||||
modesModel: modesListModel;
|
||||
|
||||
currentModeIndex: {
|
||||
var index = parseInt(UM.Preferences.getValue("cura/active_mode"))
|
||||
if(index) {
|
||||
return index;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
onCurrentModeIndexChanged: UM.Preferences.setValue("cura/active_mode", currentModeIndex);
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true;
|
||||
implicitHeight: UM.Theme.sizes.setting.height;
|
||||
|
||||
visible: UM.MachineManager.hasVariants;
|
||||
|
||||
Row {
|
||||
spacing: UM.Theme.sizes.default_margin.width;
|
||||
Label {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "Variant";
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
model: UM.MachineVariantsModel { }
|
||||
textRole: "name"
|
||||
onActivated: UM.MachineManager.setActiveMachineVariant(model.getItem(index).name);
|
||||
|
||||
currentIndex: {
|
||||
for(var i = 0; i < model.rowCount(); ++i) {
|
||||
if(model.getItem(i).name == UM.MachineManager.activeMachineVariant) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true;
|
||||
implicitHeight: UM.Theme.sizes.setting.height;
|
||||
|
||||
Row {
|
||||
spacing: UM.Theme.sizes.default_margin.width;
|
||||
Label {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "Global Profile";
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
model: UM.ProfilesModel { }
|
||||
textRole: "name"
|
||||
onActivated: UM.MachineManager.setActiveProfile(model.getItem(index).name)
|
||||
|
||||
currentIndex: {
|
||||
for(var i = 0; i < model.rowCount(); ++i) {
|
||||
if(model.getItem(i).name == UM.MachineManager.activeProfile)
|
||||
return i;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Save";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: sidebarContents;
|
||||
|
||||
Layout.fillWidth: true;
|
||||
Layout.fillHeight: true;
|
||||
|
||||
source: modesListModel.get(header.currentModeIndex).file;
|
||||
|
||||
property Item sidebar: base;
|
||||
|
||||
onLoaded:
|
||||
currentModeIndex:
|
||||
{
|
||||
var index = parseInt(UM.Preferences.getValue("cura/active_mode"))
|
||||
if(index)
|
||||
{
|
||||
if(item)
|
||||
{
|
||||
item.configureSettings = base.configureMachinesAction;
|
||||
if(item.onShowTooltip != undefined)
|
||||
{
|
||||
item.showTooltip.connect(base.showTooltip)
|
||||
}
|
||||
if(item.onHideTooltip != undefined)
|
||||
{
|
||||
item.hideTooltip.connect(base.hideTooltip)
|
||||
return index;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
onCurrentModeIndexChanged: UM.Preferences.setValue("cura/active_mode", currentModeIndex);
|
||||
}
|
||||
|
||||
Item {
|
||||
id: variantItem;
|
||||
|
||||
anchors.top: header.bottom;
|
||||
height: UM.Theme.sizes.setting.height;
|
||||
|
||||
visible: UM.MachineManager.hasVariants;
|
||||
|
||||
Row {
|
||||
spacing: UM.Theme.sizes.default_margin.width;
|
||||
Label {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "Variant";
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
model: UM.MachineVariantsModel { }
|
||||
textRole: "name"
|
||||
onActivated: UM.MachineManager.setActiveMachineVariant(model.getItem(index).name);
|
||||
|
||||
currentIndex: {
|
||||
for(var i = 0; i < model.rowCount(); ++i) {
|
||||
if(model.getItem(i).name == UM.MachineManager.activeMachineVariant) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SaveButton {
|
||||
id: saveButton;
|
||||
implicitWidth: base.width
|
||||
implicitHeight: UM.Theme.sizes.save_button_text_margin.height * 2 + UM.Theme.sizes.save_button_slicing_bar.height + UM.Theme.sizes.save_button_save_to_button.height + UM.Theme.sizes.default_margin.height
|
||||
}
|
||||
}
|
||||
|
||||
SidebarTooltip {
|
||||
Item {
|
||||
id: profileItem;
|
||||
|
||||
anchors.top: variantItem.bottom;
|
||||
height: UM.Theme.sizes.setting.height;
|
||||
|
||||
Row {
|
||||
spacing: UM.Theme.sizes.default_margin.width;
|
||||
Label {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: "Global Profile";
|
||||
}
|
||||
|
||||
ComboBox {
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
model: UM.ProfilesModel { }
|
||||
textRole: "name"
|
||||
onActivated: UM.MachineManager.setActiveProfile(model.getItem(index).name)
|
||||
|
||||
currentIndex: {
|
||||
for(var i = 0; i < model.rowCount(); ++i) {
|
||||
if(model.getItem(i).name == UM.MachineManager.activeProfile)
|
||||
return i;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Button {
|
||||
text: "Save";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: sidebarContents;
|
||||
anchors.bottom: saveButton.top
|
||||
anchors.top: profileItem.bottom
|
||||
anchors.left: base.left
|
||||
anchors.right: base.right
|
||||
|
||||
source: modesListModel.get(header.currentModeIndex).file;
|
||||
|
||||
property Item sidebar: base;
|
||||
|
||||
onLoaded:
|
||||
{
|
||||
if(item)
|
||||
{
|
||||
item.configureSettings = base.configureMachinesAction;
|
||||
if(item.onShowTooltip != undefined)
|
||||
{
|
||||
item.showTooltip.connect(base.showTooltip)
|
||||
}
|
||||
if(item.onHideTooltip != undefined)
|
||||
{
|
||||
item.hideTooltip.connect(base.hideTooltip)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SaveButton {
|
||||
id: saveButton;
|
||||
implicitWidth: base.width
|
||||
implicitHeight: totalHeight
|
||||
anchors.bottom: parent.bottom
|
||||
}
|
||||
|
||||
SidebarTooltip
|
||||
{
|
||||
id: tooltip;
|
||||
}
|
||||
|
||||
ListModel {
|
||||
ListModel
|
||||
{
|
||||
id: modesListModel;
|
||||
//: Simple configuration mode option
|
||||
ListElement { text: QT_TR_NOOP("Simple"); file: "SidebarSimple.qml" }
|
||||
|
@ -171,10 +181,11 @@ Rectangle {
|
|||
ListElement { text: QT_TR_NOOP("Advanced"); file: "SidebarAdvanced.qml" }
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
Component.onCompleted:
|
||||
{
|
||||
for(var i = 0; i < modesListModel.count; ++i)
|
||||
{
|
||||
modesListModel.setProperty(i, "text", qsTr(modesListModel.get(i).text));
|
||||
modesListModel.setProperty(i, "text", catalog.i18nc("@label", modesListModel.get(i).text));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -8,87 +8,117 @@ import QtQuick.Layouts 1.1
|
|||
|
||||
import UM 1.1 as UM
|
||||
|
||||
Column {
|
||||
ColumnLayout
|
||||
{
|
||||
id: base;
|
||||
|
||||
// Machine Setup
|
||||
property variant modesModel;
|
||||
property alias currentModeIndex: modeMenu.currentIndex;
|
||||
property alias currentModeIndex: modesList.currentIndex;
|
||||
property Action addMachineAction;
|
||||
property Action configureMachinesAction;
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
property int totalHeightHeader: childrenRect.height
|
||||
spacing: 0
|
||||
|
||||
spacing: UM.Theme.sizes.default_margin.height;
|
||||
Rectangle {
|
||||
id: settingsModeRow
|
||||
width: base.width
|
||||
height: UM.Theme.sizes.sidebar_header.height
|
||||
anchors.top: parent.top
|
||||
color: UM.Theme.colors.sidebar_header_bar
|
||||
|
||||
RowLayout {
|
||||
anchors.horizontalCenter: parent.horizontalCenter;
|
||||
|
||||
width: parent.width - UM.Theme.sizes.default_margin.width * 2;
|
||||
height: UM.Theme.sizes.line.height;
|
||||
|
||||
Label {
|
||||
//: Configuration mode label
|
||||
text: qsTr("Mode:");
|
||||
|
||||
font: UM.Theme.fonts.sidebar_header;
|
||||
color: UM.Theme.colors.text_inactive;
|
||||
Label{
|
||||
id: settingsModeLabel
|
||||
text: catalog.i18nc("@label","Print setup: ");
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
width: parent.width/100*45
|
||||
font: UM.Theme.fonts.default;
|
||||
color: UM.Theme.colors.text_white
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
text: base.modesModel ? base.modesModel.get(modeMenu.currentIndex).text : "";
|
||||
|
||||
style: UM.Theme.styles.sidebar_header_button;
|
||||
|
||||
Layout.preferredWidth: base.width * 0.25;
|
||||
|
||||
menu: Menu {
|
||||
id: modeMenu;
|
||||
|
||||
property int currentIndex: 0;
|
||||
|
||||
Instantiator {
|
||||
model: base.modesModel;
|
||||
|
||||
MenuItem {
|
||||
text: model.text;
|
||||
checkable: true;
|
||||
checked: modeMenu.currentIndex == index;
|
||||
exclusiveGroup: modeMenuGroup;
|
||||
onTriggered: modeMenu.currentIndex = index;
|
||||
Rectangle{
|
||||
id: settingsModeSelection
|
||||
width: parent.width/100*55
|
||||
height: childrenRect.height - UM.Theme.sizes.default_margin.width;
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: UM.Theme.sizes.default_margin.width;
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color: "red"
|
||||
Component{
|
||||
id: wizardDelegate
|
||||
Button {
|
||||
id: simpleModeButton
|
||||
height: settingsModeSelection.height
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: model.index * (settingsModeSelection.width / 2)
|
||||
anchors.top: parent.top
|
||||
width: parent.width / 2
|
||||
text: model.text
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
color: control.hovered ? UM.Theme.colors.load_save_button_hover : UM.Theme.colors.load_save_button
|
||||
Behavior on color { ColorAnimation { duration: 50; } }
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
color: UM.Theme.colors.load_save_button_text
|
||||
font: UM.Theme.fonts.default
|
||||
text: control.text;
|
||||
}
|
||||
}
|
||||
label: Item { }
|
||||
}
|
||||
onObjectAdded: modeMenu.insertItem(index, object)
|
||||
onObjectRemoved: modeMenu.removeItem(object)
|
||||
}
|
||||
}
|
||||
|
||||
ExclusiveGroup { id: modeMenuGroup; }
|
||||
ListView{
|
||||
id: modesList
|
||||
property var index: 0
|
||||
model: base.modesModel
|
||||
delegate: wizardDelegate
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
width: parent.width
|
||||
height: UM.Theme.sizes.sidebar_header.height
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: 1;
|
||||
height: parent.height;
|
||||
color: UM.Theme.colors.border;
|
||||
}
|
||||
Rectangle {
|
||||
id: machineSelectionRow
|
||||
width: base.width - (UM.Theme.sizes.default_margin.width * 2)
|
||||
height: UM.Theme.sizes.sidebar_header.height
|
||||
anchors.top: settingsModeRow.bottom
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
Label {
|
||||
Label{
|
||||
id: machineSelectionLabel
|
||||
//: Machine selection label
|
||||
text: qsTr("Machine:");
|
||||
|
||||
font: UM.Theme.fonts.sidebar_header;
|
||||
color: UM.Theme.colors.text_inactive;
|
||||
text: catalog.i18nc("@label","Machine:");
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
font: UM.Theme.fonts.default;
|
||||
}
|
||||
|
||||
ToolButton {
|
||||
id: machineButton;
|
||||
id: machineSelection
|
||||
text: UM.MachineManager.activeMachineInstance;
|
||||
width: parent.width/100*55
|
||||
height: UM.Theme.sizes.sidebar_header.height
|
||||
tooltip: UM.Application.machineName;
|
||||
//style: UM.Theme.styles.sidebar_header_button;
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
style: UM.Theme.styles.sidebar_header_button;
|
||||
|
||||
Layout.fillWidth: true;
|
||||
|
||||
menu: Menu {
|
||||
id: machineMenu;
|
||||
Instantiator {
|
||||
menu: Menu
|
||||
{
|
||||
id: machineSelectionMenu
|
||||
Instantiator
|
||||
{
|
||||
model: UM.MachineInstancesModel { }
|
||||
MenuItem {
|
||||
MenuItem
|
||||
{
|
||||
text: model.name;
|
||||
checkable: true;
|
||||
checked: model.active;
|
||||
|
@ -99,7 +129,7 @@ Column {
|
|||
onObjectRemoved: machineMenu.removeItem(object)
|
||||
}
|
||||
|
||||
ExclusiveGroup { id: machineMenuGroup; }
|
||||
ExclusiveGroup { id: machineSelectionMenuGroup; }
|
||||
|
||||
MenuSeparator { }
|
||||
|
||||
|
@ -109,16 +139,51 @@ Column {
|
|||
}
|
||||
}
|
||||
|
||||
UM.SidebarCategoryHeader {
|
||||
/////////////////tot hier
|
||||
|
||||
// ToolButton
|
||||
// {
|
||||
// text: base.modesModel ? base.modesModel.get(modeMenu.currentIndex).text : "";
|
||||
//
|
||||
// style: UM.Theme.styles.sidebar_header_button;
|
||||
//
|
||||
// menu: Menu
|
||||
// {
|
||||
// id: modeMenu;
|
||||
//
|
||||
// property int currentIndex: 0;
|
||||
//
|
||||
// Instantiator
|
||||
// {
|
||||
// model: base.modesModel;
|
||||
//
|
||||
// MenuItem
|
||||
// {
|
||||
// text: model.text;
|
||||
// checkable: true;
|
||||
// checked: modeMenu.currentIndex == index;
|
||||
// exclusiveGroup: modeMenuGroup;
|
||||
// onTriggered: modeMenu.currentIndex = index;
|
||||
// }
|
||||
// onObjectAdded: modeMenu.insertItem(index, object)
|
||||
// onObjectRemoved: modeMenu.removeItem(object)
|
||||
// }
|
||||
//
|
||||
// ExclusiveGroup { id: modeMenuGroup; }
|
||||
// }
|
||||
// }
|
||||
/*
|
||||
UM.SidebarCategoryHeader
|
||||
{
|
||||
width: parent.width;
|
||||
height: UM.Theme.sizes.section.height;
|
||||
|
||||
iconSource: UM.Theme.icons.printsetup;
|
||||
|
||||
//: Sidebar header label
|
||||
text: qsTr("Print Setup");
|
||||
text: catalog.i18nc("@label","Print Setup");
|
||||
enabled: false;
|
||||
|
||||
color: UM.Theme.colors.primary;
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
|
|
@ -6,9 +6,10 @@ import QtQuick.Controls 1.1
|
|||
import QtQuick.Controls.Styles 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
id: base;
|
||||
|
||||
anchors.fill: parent;
|
||||
|
@ -22,44 +23,47 @@ Item {
|
|||
|
||||
Component.onCompleted: PrintInformation.enabled = true
|
||||
Component.onDestruction: PrintInformation.enabled = false
|
||||
|
||||
ColumnLayout {
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
ColumnLayout
|
||||
{
|
||||
anchors.fill: parent;
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true;
|
||||
Layout.preferredHeight: UM.Theme.sizes.section.height;
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
anchors.left: parent.left;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: base.minimumPrintTime.valid ? base.minimumPrintTime.getDisplayString(UM.DurationFormat.Short) : "??:??";
|
||||
font: UM.Theme.fonts.timeslider_time;
|
||||
color: UM.Theme.colors.primary;
|
||||
}
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
anchors.centerIn: parent;
|
||||
text: {
|
||||
text: //: Sidebar configuration label
|
||||
{
|
||||
if (UM.Backend.progress < 0)
|
||||
{
|
||||
//: Sidebar configuration label
|
||||
return qsTr("No Model Loaded");
|
||||
return catalog.i18nc("@label","No Model Loaded");
|
||||
}
|
||||
else if (!base.minimumPrintTime.valid || !base.maximumPrintTime.valid)
|
||||
{
|
||||
//: Sidebar configuration label
|
||||
return qsTr("Calculating...")
|
||||
return catalog.i18nc("@label","Calculating...")
|
||||
}
|
||||
else
|
||||
{
|
||||
//: Sidebar configuration label
|
||||
return qsTr("Estimated Print Time");
|
||||
return catalog.i18nc("@label","Estimated Print Time");
|
||||
}
|
||||
}
|
||||
color: UM.Theme.colors.text;
|
||||
font: UM.Theme.fonts.default;
|
||||
}
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
anchors.right: parent.right;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
text: base.maximumPrintTime.valid ? base.maximumPrintTime.getDisplayString(UM.DurationFormat.Short) : "??:??";
|
||||
|
@ -68,7 +72,8 @@ Item {
|
|||
}
|
||||
}
|
||||
|
||||
Slider {
|
||||
Slider
|
||||
{
|
||||
Layout.fillWidth: true;
|
||||
Layout.preferredHeight: UM.Theme.sizes.section.height;
|
||||
|
||||
|
@ -81,38 +86,42 @@ Item {
|
|||
style: UM.Theme.styles.slider;
|
||||
}
|
||||
|
||||
Item {
|
||||
Item
|
||||
{
|
||||
Layout.fillWidth: true;
|
||||
Layout.preferredHeight: UM.Theme.sizes.section.height;
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
anchors.left: parent.left;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
|
||||
//: Quality slider label
|
||||
text: qsTr("Minimum\nDraft");
|
||||
text: catalog.i18nc("@label","Minimum\nDraft");
|
||||
color: UM.Theme.colors.text;
|
||||
font: UM.Theme.fonts.default;
|
||||
}
|
||||
|
||||
Label {
|
||||
Label
|
||||
{
|
||||
anchors.right: parent.right;
|
||||
anchors.verticalCenter: parent.verticalCenter;
|
||||
|
||||
//: Quality slider label
|
||||
text: qsTr("Maximum\nQuality");
|
||||
text: catalog.i18nc("@label","Maximum\nQuality");
|
||||
horizontalAlignment: Text.AlignRight;
|
||||
color: UM.Theme.colors.text;
|
||||
font: UM.Theme.fonts.default;
|
||||
}
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
CheckBox
|
||||
{
|
||||
Layout.fillWidth: true;
|
||||
Layout.preferredHeight: UM.Theme.sizes.section.height;
|
||||
|
||||
//: Setting checkbox
|
||||
text: qsTr("Enable Support");
|
||||
text: catalog.i18nc("@action:checkbox","Enable Support");
|
||||
|
||||
style: UM.Theme.styles.checkbox;
|
||||
|
||||
|
|
|
@ -13,8 +13,9 @@ Item {
|
|||
|
||||
width: buttons.width;
|
||||
height: buttons.height
|
||||
property int activeY
|
||||
|
||||
RowLayout {
|
||||
ColumnLayout {
|
||||
id: buttons;
|
||||
|
||||
anchors.bottom: parent.bottom;
|
||||
|
@ -39,26 +40,30 @@ Item {
|
|||
//just catch the click so we do not trigger that behaviour.
|
||||
MouseArea {
|
||||
anchors.fill: parent;
|
||||
onClicked: parent.checked ? UM.Controller.setActiveTool(null) : UM.Controller.setActiveTool(model.id);
|
||||
onClicked: {
|
||||
parent.checked ? UM.Controller.setActiveTool(null) : UM.Controller.setActiveTool(model.id);
|
||||
base.activeY = parent.y
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
width: base.width - 10
|
||||
height: base.height
|
||||
z: parent.z - 1
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
color: UM.Theme.colors.button_lining
|
||||
}
|
||||
width: base.width
|
||||
height: base.height
|
||||
z: parent.z - 1
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
color: UM.Theme.colors.lining
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: panelBackground;
|
||||
|
||||
anchors.left: parent.left;
|
||||
anchors.top: buttons.bottom;
|
||||
anchors.left: parent.right;
|
||||
y: base.activeY
|
||||
|
||||
width: panel.item ? Math.max(panel.width + 2 * UM.Theme.sizes.default_margin.width) : 0;
|
||||
height: panel.item ? panel.height + 2 * UM.Theme.sizes.default_margin.height : 0;
|
||||
|
@ -68,7 +73,7 @@ Item {
|
|||
|
||||
color: UM.Theme.colors.tool_panel_background;
|
||||
border.width: UM.Theme.sizes.default_lining.width
|
||||
border.color: UM.Theme.colors.button_lining
|
||||
border.color: UM.Theme.colors.lining
|
||||
|
||||
Loader {
|
||||
id: panel
|
||||
|
|
|
@ -6,25 +6,27 @@ import QtQuick.Controls 1.1
|
|||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Controls.Styles 1.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
UM.PreferencesPage
|
||||
{
|
||||
id: preferencesPage
|
||||
|
||||
//: View configuration page title
|
||||
title: qsTr("View");
|
||||
title: catalog.i18nc("@title:window","View");
|
||||
|
||||
function reset()
|
||||
{
|
||||
UM.Preferences.resetPreference("view/show_overhang");
|
||||
UM.Preferences.resetPreferences("view/center_on_select");
|
||||
UM.Preferences.resetPreference("view/center_on_select");
|
||||
overhangCheckbox.checked = UM.Preferences.getValue("view/show_overhang")
|
||||
centerCheckbox.checked = UM.Preferences.getValue("view/center_on_select")
|
||||
}
|
||||
|
||||
GridLayout
|
||||
{
|
||||
columns: 2;
|
||||
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
CheckBox
|
||||
{
|
||||
id: overhangCheckbox
|
||||
|
@ -36,18 +38,21 @@ UM.PreferencesPage
|
|||
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
|
||||
text: qsTr("Display Overhang");
|
||||
text: catalog.i18nc("@action:button","Display Overhang");
|
||||
onClicked: overhangCheckbox.checked = !overhangCheckbox.checked
|
||||
|
||||
//: Display Overhang preference tooltip
|
||||
tooltip: "Highlight unsupported areas of the model in red. Without support these areas will nog print properly."
|
||||
tooltip: catalog.i18nc("@info:tooltip","Highlight unsupported areas of the model in red. Without support these areas will nog print properly.")
|
||||
|
||||
style: ButtonStyle {
|
||||
background: Rectangle {
|
||||
style: ButtonStyle
|
||||
{
|
||||
background: Rectangle
|
||||
{
|
||||
border.width: 0
|
||||
color: "transparent"
|
||||
}
|
||||
label: Text {
|
||||
label: Text
|
||||
{
|
||||
renderType: Text.NativeRendering
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
text: control.text
|
||||
|
@ -66,11 +71,11 @@ UM.PreferencesPage
|
|||
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");
|
||||
text: catalog.i18nc("@action:button","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"
|
||||
tooltip: catalog.i18nc("@info:tooltip","Moves the camera so the object is in the center of the view when an object is selected")
|
||||
|
||||
style: ButtonStyle
|
||||
{
|
||||
|
|
|
@ -19,6 +19,8 @@ Item
|
|||
|
||||
property variant wizard: null;
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"}
|
||||
|
||||
Connections
|
||||
{
|
||||
target: base.wizard
|
||||
|
@ -221,6 +223,11 @@ Item
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (elementRoot.getPageCount() == elementRoot.currentPage)
|
||||
{
|
||||
elementRoot.visible = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import QtQuick.Controls 1.1
|
|||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
Item
|
||||
{
|
||||
|
@ -14,7 +14,7 @@ Item
|
|||
property string title
|
||||
|
||||
SystemPalette{id: palette}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
ScrollView
|
||||
{
|
||||
height: parent.height
|
||||
|
@ -36,7 +36,7 @@ Item
|
|||
//: Add UM Original wizard page description
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("To assist you in having better default settings for your Ultimaker. Cura would like to know which upgrades you have in your machine:")
|
||||
text: catalog.i18nc("@label","To assist you in having better default settings for your Ultimaker. Cura would like to know which upgrades you have in your machine:")
|
||||
}
|
||||
|
||||
Column
|
||||
|
@ -46,19 +46,19 @@ Item
|
|||
|
||||
CheckBox
|
||||
{
|
||||
text: qsTr("Extruder driver ugrades")
|
||||
text: catalog.i18nc("@action:checkbox","Extruder driver ugrades")
|
||||
}
|
||||
CheckBox
|
||||
{
|
||||
text: qsTr("Heated printer bed (kit)")
|
||||
text: catalog.i18nc("@action:checkbox","Heated printer bed (kit)")
|
||||
}
|
||||
CheckBox
|
||||
{
|
||||
text: qsTr("Heated printer bed (self built)")
|
||||
text: catalog.i18nc("@action:checkbox","Heated printer bed (self built)")
|
||||
}
|
||||
CheckBox
|
||||
{
|
||||
text: qsTr("Dual extrusion (experimental)")
|
||||
text: catalog.i18nc("@action:checkbox","Dual extrusion (experimental)")
|
||||
checked: true
|
||||
}
|
||||
}
|
||||
|
@ -67,14 +67,14 @@ Item
|
|||
{
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("If you have an Ultimaker bought after october 2012 you will have the Extruder drive upgrade. If you do not have this upgrade, it is highly recommended to improve reliability.");
|
||||
text: catalog.i18nc("@label","If you have an Ultimaker bought after october 2012 you will have the Extruder drive upgrade. If you do not have this upgrade, it is highly recommended to improve reliability.");
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: qsTr("This upgrade can be bought from the Ultimaker webshop or found on thingiverse as thing:26094");
|
||||
text: catalog.i18nc("@label","This upgrade can be bought from the Ultimaker webshop or found on thingiverse as thing:26094");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ import QtQuick.Controls 1.1
|
|||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
import UM 1.0 as UM
|
||||
import UM 1.1 as UM
|
||||
|
||||
Column
|
||||
{
|
||||
|
@ -23,7 +23,7 @@ Column
|
|||
|
||||
Component.onCompleted: printer_connection.startPollEndstop()
|
||||
Component.onDestruction: printer_connection.stopPollEndstop()
|
||||
|
||||
UM.I18nCatalog { id: catalog; name:"cura"}
|
||||
Label
|
||||
{
|
||||
text: parent.title
|
||||
|
@ -33,14 +33,14 @@ Column
|
|||
Label
|
||||
{
|
||||
//: Add Printer wizard page description
|
||||
text: qsTr("It's a good idea to do a few sanity checks on your Ultimaker. \n You can skip these if you know your machine is functional");
|
||||
text: catalog.i18nc("@label","It's a good idea to do a few sanity checks on your Ultimaker. \n You can skip these if you know your machine is functional");
|
||||
}
|
||||
|
||||
Row
|
||||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("Connection: ")
|
||||
text: catalog.i18nc("@label","Connection: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
|
@ -51,22 +51,22 @@ Column
|
|||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("Min endstop X: ")
|
||||
text: catalog.i18nc("@label","Min endstop X: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: x_min_pressed ? qsTr("Works") : qsTr("Not checked")
|
||||
text: x_min_pressed ? catalog.i18nc("@label","Works") : catalog.i18nc("@label","Not checked")
|
||||
}
|
||||
}
|
||||
Row
|
||||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("Min endstop Y: ")
|
||||
text: catalog.i18nc("@label","Min endstop Y: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: y_min_pressed ? qsTr("Works") : qsTr("Not checked")
|
||||
text: y_min_pressed ? catalog.i18nc("@label","Works") : catalog.i18nc("@label","Not checked")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -74,11 +74,11 @@ Column
|
|||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("Min endstop Z: ")
|
||||
text: catalog.i18nc("@label","Min endstop Z: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
text: z_min_pressed ? qsTr("Works") : qsTr("Not checked")
|
||||
text: z_min_pressed ? catalog.i18nc("@label","Works") : catalog.i18nc("@label","Not checked")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -86,7 +86,7 @@ Column
|
|||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("Nozzle temperature check: ")
|
||||
text: catalog.i18nc("@label","Nozzle temperature check: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
|
@ -94,10 +94,10 @@ Column
|
|||
}
|
||||
Button
|
||||
{
|
||||
text: "Start heating"
|
||||
text: catalog.i18nc("@action:button","Start heating")
|
||||
onClicked:
|
||||
{
|
||||
heater_status_label.text = qsTr("Checking")
|
||||
heater_status_label.text = catalog.i18nc("@label","Checking")
|
||||
printer_connection.heatupNozzle(190)
|
||||
wizardPage.extruder_target_temp = 190
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ Column
|
|||
Label
|
||||
{
|
||||
id: heater_status_label
|
||||
text: qsTr("Not checked")
|
||||
text: catalog.i18nc("@label","Not checked")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,7 +113,7 @@ Column
|
|||
{
|
||||
Label
|
||||
{
|
||||
text: qsTr("bed temperature check: ")
|
||||
text: catalog.i18nc("@label","bed temperature check: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
|
@ -121,10 +121,10 @@ Column
|
|||
}
|
||||
Button
|
||||
{
|
||||
text: "Start heating"
|
||||
text: catalog.i18nc("@action:button","Start heating")
|
||||
onClicked:
|
||||
{
|
||||
bed_status_label.text = qsTr("Checking")
|
||||
bed_status_label.text = catalog.i18nc("@label","Checking")
|
||||
printer_connection.printer.heatupBed(60)
|
||||
wizardPage.bed_target_temp = 60
|
||||
}
|
||||
|
@ -132,7 +132,7 @@ Column
|
|||
Label
|
||||
{
|
||||
id: bed_status_label
|
||||
text: qsTr("Not checked")
|
||||
text: catalog.i18nc("@label","Not checked")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -159,7 +159,7 @@ Column
|
|||
{
|
||||
if(printer_connection.extruderTemperature > wizardPage.extruder_target_temp - 10 && printer_connection.extruderTemperature < wizardPage.extruder_target_temp + 10)
|
||||
{
|
||||
heater_status_label.text = qsTr("Works")
|
||||
heater_status_label.text = catalog.i18nc("@label","Works")
|
||||
printer_connection.heatupNozzle(0)
|
||||
}
|
||||
}
|
||||
|
@ -167,7 +167,7 @@ Column
|
|||
{
|
||||
if(printer_connection.bedTemperature > wizardPage.bed_target_temp - 5 && printer_connection.bedTemperature < wizardPage.bed_target_temp + 5)
|
||||
{
|
||||
bed_status_label.text = qsTr("Works")
|
||||
bed_status_label.text = catalog.i18nc("@label","Works")
|
||||
printer_connection.heatupBed(0)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue