Merge branch '2.1'

This commit is contained in:
Tim Kuipers 2016-01-28 15:25:18 +01:00
commit 8a48791a0b
83 changed files with 14784 additions and 9510 deletions

View file

@ -54,7 +54,7 @@ Item
Action
{
id: undoAction;
text: catalog.i18nc("@action:inmenu","&Undo");
text: catalog.i18nc("@action:inmenu menubar:edit","&Undo");
iconName: "edit-undo";
shortcut: StandardKey.Undo;
}
@ -62,7 +62,7 @@ Item
Action
{
id: redoAction;
text: catalog.i18nc("@action:inmenu","&Redo");
text: catalog.i18nc("@action:inmenu menubar:edit","&Redo");
iconName: "edit-redo";
shortcut: StandardKey.Redo;
}
@ -70,7 +70,7 @@ Item
Action
{
id: quitAction;
text: catalog.i18nc("@action:inmenu","&Quit");
text: catalog.i18nc("@action:inmenu menubar:file","&Quit");
iconName: "application-exit";
shortcut: StandardKey.Quit;
}
@ -78,55 +78,56 @@ Item
Action
{
id: preferencesAction;
text: catalog.i18nc("@action:inmenu","&Preferences...");
text: catalog.i18nc("@action:inmenu menubar:settings","&Preferences...");
iconName: "configure";
}
Action
{
id: addMachineAction;
text: catalog.i18nc("@action:inmenu","&Add Printer...");
text: catalog.i18nc("@action:inmenu menubar:printer","&Add Printer...");
}
Action
{
id: settingsAction;
text: catalog.i18nc("@action:inmenu","Manage Pr&inters...");
text: catalog.i18nc("@action:inmenu menubar:printer","Manage Pr&inters...");
iconName: "configure";
}
Action
{
id: manageProfilesAction;
text: catalog.i18nc("@action:inmenu","Manage Profiles...");
text: catalog.i18nc("@action:inmenu menubar:profile","Manage Profiles...");
iconName: "configure";
}
Action
{
id: documentationAction;
text: catalog.i18nc("@action:inmenu","Show Online &Documentation");
text: catalog.i18nc("@action:inmenu menubar:help","Show Online &Documentation");
iconName: "help-contents";
shortcut: StandardKey.Help;
}
Action {
id: reportBugAction;
text: catalog.i18nc("@action:inmenu","Report a &Bug");
text: catalog.i18nc("@action:inmenu menubar:help","Report a &Bug");
iconName: "tools-report-bug";
}
Action
{
id: aboutAction;
text: catalog.i18nc("@action:inmenu","&About...");
text: catalog.i18nc("@action:inmenu menubar:help","&About...");
iconName: "help-about";
}
Action
{
id: deleteSelectionAction;
text: catalog.i18nc("@action:inmenu","Delete &Selection");
text: catalog.i18nc("@action:inmenu menubar:edit","Delete &Selection");
enabled: UM.Controller.toolsEnabled;
iconName: "edit-delete";
shortcut: StandardKey.Delete;
}
@ -135,6 +136,7 @@ Item
{
id: deleteObjectAction;
text: catalog.i18nc("@action:inmenu","Delete Object");
enabled: UM.Controller.toolsEnabled;
iconName: "edit-delete";
}
@ -147,7 +149,7 @@ Item
Action
{
id: groupObjectsAction
text: catalog.i18nc("@action:inmenu","&Group Objects");
text: catalog.i18nc("@action:inmenu menubar:edit","&Group Objects");
enabled: UM.Scene.numObjectsSelected > 1 ? true: false
iconName: "object-group"
}
@ -155,7 +157,7 @@ Item
Action
{
id: unGroupObjectsAction
text: catalog.i18nc("@action:inmenu","Ungroup Objects");
text: catalog.i18nc("@action:inmenu menubar:edit","Ungroup Objects");
enabled: UM.Scene.isGroupSelected
iconName: "object-ungroup"
}
@ -163,7 +165,7 @@ Item
Action
{
id: mergeObjectsAction
text: catalog.i18nc("@action:inmenu","&Merge Objects");
text: catalog.i18nc("@action:inmenu menubar:edit","&Merge Objects");
enabled: UM.Scene.numObjectsSelected > 1 ? true: false
iconName: "merge";
}
@ -178,7 +180,8 @@ Item
Action
{
id: deleteAllAction;
text: catalog.i18nc("@action:inmenu","&Clear Build Platform");
text: catalog.i18nc("@action:inmenu menubar:edit","&Clear Build Platform");
enabled: UM.Controller.toolsEnabled;
iconName: "edit-delete";
shortcut: "Ctrl+D";
}
@ -186,26 +189,26 @@ Item
Action
{
id: reloadAllAction;
text: catalog.i18nc("@action:inmenu","Re&load All Objects");
text: catalog.i18nc("@action:inmenu menubar:file","Re&load All Objects");
iconName: "document-revert";
}
Action
{
id: resetAllTranslationAction;
text: catalog.i18nc("@action:inmenu","Reset All Object Positions");
text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Object Positions");
}
Action
{
id: resetAllAction;
text: catalog.i18nc("@action:inmenu","Reset All Object &Transformations");
text: catalog.i18nc("@action:inmenu menubar:edit","Reset All Object &Transformations");
}
Action
{
id: openAction;
text: catalog.i18nc("@action:inmenu","&Open File...");
text: catalog.i18nc("@action:inmenu menubar:file","&Open File...");
iconName: "document-open";
shortcut: StandardKey.Open;
}
@ -213,7 +216,7 @@ Item
Action
{
id: showEngineLogAction;
text: catalog.i18nc("@action:inmenu","Show Engine &Log...");
text: catalog.i18nc("@action:inmenu menubar:help","Show Engine &Log...");
iconName: "view-list-text";
shortcut: StandardKey.WhatsThis;
}

View file

@ -14,7 +14,6 @@ UM.MainWindow
id: base
//: Cura application window title
title: catalog.i18nc("@title:window","Cura");
viewportRect: Qt.rect(0, 0, (base.width - sidebar.width) / base.width, 1.0)
Item
@ -23,6 +22,14 @@ UM.MainWindow
anchors.fill: parent;
UM.I18nCatalog{id: catalog; name:"cura"}
signal hasMesh(string name) //this signal sends the filebase name so it can be used for the JobSpecs.qml
function getMeshName(path){
//takes the path the complete path of the meshname and returns only the filebase
var fileName = path.slice(path.lastIndexOf("/") + 1)
var fileBase = fileName.slice(0, fileName.lastIndexOf("."))
return fileBase
}
//DeleteSelection on the keypress backspace event
Keys.onPressed: {
if (event.key == Qt.Key_Backspace)
@ -34,7 +41,6 @@ UM.MainWindow
}
}
UM.ApplicationMenu
{
id: menu
@ -44,7 +50,7 @@ UM.MainWindow
{
id: fileMenu
//: File menu
title: catalog.i18nc("@title:menu","&File");
title: catalog.i18nc("@title:menu menubar:toplevel","&File");
MenuItem {
action: actions.open;
@ -53,7 +59,7 @@ UM.MainWindow
Menu
{
id: recentFilesMenu;
title: catalog.i18nc("@title:menu", "Open &Recent")
title: catalog.i18nc("@title:menu menubar:file", "Open &Recent")
iconName: "document-open-recent";
enabled: Printer.recentFiles.length > 0;
@ -70,7 +76,8 @@ UM.MainWindow
}
onTriggered: {
UM.MeshFileHandler.readLocalFile(modelData);
openDialog.sendMeshName(modelData.toString())
var meshName = backgroundItem.getMeshName(modelData.toString())
backgroundItem.hasMesh(meshName)
}
}
onObjectAdded: recentFilesMenu.insertItem(index, object)
@ -82,7 +89,7 @@ UM.MainWindow
MenuItem
{
text: catalog.i18nc("@action:inmenu", "&Save Selection to File");
text: catalog.i18nc("@action:inmenu menubar:file", "&Save Selection to File");
enabled: UM.Selection.hasSelection;
iconName: "document-save-as";
onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", Printer.jobName);
@ -90,7 +97,7 @@ UM.MainWindow
Menu
{
id: saveAllMenu
title: catalog.i18nc("@title:menu","Save &All")
title: catalog.i18nc("@title:menu menubar:file","Save &All")
iconName: "document-save-all";
enabled: devicesModel.rowCount() > 0 && UM.Backend.progress > 0.99;
@ -118,7 +125,7 @@ UM.MainWindow
Menu
{
//: Edit menu
title: catalog.i18nc("@title:menu","&Edit");
title: catalog.i18nc("@title:menu menubar:toplevel","&Edit");
MenuItem { action: actions.undo; }
MenuItem { action: actions.redo; }
@ -135,7 +142,7 @@ UM.MainWindow
Menu
{
title: catalog.i18nc("@title:menu","&View");
title: catalog.i18nc("@title:menu menubar:toplevel","&View");
id: top_view_menu
Instantiator
{
@ -157,7 +164,7 @@ UM.MainWindow
{
id: machineMenu;
//: Machine menu
title: catalog.i18nc("@title:menu","&Machine");
title: catalog.i18nc("@title:menu menubar:toplevel","&Printer");
Instantiator
{
@ -203,7 +210,7 @@ UM.MainWindow
Menu
{
id: profileMenu
title: catalog.i18nc("@title:menu", "&Profile")
title: catalog.i18nc("@title:menu menubar:toplevel", "P&rofile")
Instantiator
{
@ -230,7 +237,7 @@ UM.MainWindow
{
id: extension_menu
//: Extensions menu
title: catalog.i18nc("@title:menu","E&xtensions");
title: catalog.i18nc("@title:menu menubar:toplevel","E&xtensions");
Instantiator
{
@ -263,7 +270,7 @@ UM.MainWindow
Menu
{
//: Settings menu
title: catalog.i18nc("@title:menu","&Settings");
title: catalog.i18nc("@title:menu menubar:toplevel","&Settings");
MenuItem { action: actions.preferences; }
}
@ -271,7 +278,7 @@ UM.MainWindow
Menu
{
//: Help menu
title: catalog.i18nc("@title:menu","&Help");
title: catalog.i18nc("@title:menu menubar:toplevel","&Help");
MenuItem { action: actions.showEngineLog; }
MenuItem { action: actions.documentation; }
@ -303,7 +310,8 @@ UM.MainWindow
UM.MeshFileHandler.readLocalFile(drop.urls[i]);
if (i == drop.urls.length - 1)
{
openDialog.sendMeshName(drop.urls[i].toString())
var meshName = backgroundItem.getMeshName(drop.urls[i].toString())
backgroundItem.hasMesh(meshName)
}
}
}
@ -312,6 +320,7 @@ UM.MainWindow
JobSpecs
{
id: jobSpecs
anchors
{
bottom: parent.bottom;
@ -327,7 +336,8 @@ UM.MainWindow
{
horizontalCenter: parent.horizontalCenter
horizontalCenterOffset: -(UM.Theme.sizes.sidebar.width/ 2)
verticalCenter: parent.verticalCenter;
top: parent.verticalCenter;
bottom: parent.bottom;
}
}
@ -517,10 +527,7 @@ UM.MainWindow
deleteSelection.onTriggered:
{
if(objectContextMenu.objectId != 0)
{
Printer.deleteObject(objectContextMenu.objectId);
}
Printer.deleteSelection()
}
deleteObject.onTriggered:
@ -638,14 +645,6 @@ UM.MainWindow
modality: UM.Application.platform == "linux" ? Qt.NonModal : Qt.WindowModal;
//TODO: Support multiple file selection, workaround bug in KDE file dialog
//selectMultiple: true
signal hasMesh(string name)
function sendMeshName(path){
var fileName = path.slice(path.lastIndexOf("/") + 1)
var fileBase = fileName.slice(0, fileName.lastIndexOf("."))
openDialog.hasMesh(fileBase)
}
nameFilters: UM.MeshFileHandler.supportedReadFileTypes;
onAccepted:
@ -656,7 +655,8 @@ UM.MainWindow
folder = f;
UM.MeshFileHandler.readLocalFile(fileUrl)
openDialog.sendMeshName(fileUrl.toString())
var meshName = backgroundItem.getMeshName(fileUrl.toString())
backgroundItem.hasMesh(meshName)
}
}

View file

@ -11,7 +11,7 @@ import UM 1.1 as UM
UM.PreferencesPage
{
//: General configuration page title
title: catalog.i18nc("@title:tab","General");
title: catalog.i18nc("@title:tab","General")
function setDefaultLanguage(languageCode)
{
@ -38,74 +38,72 @@ UM.PreferencesPage
setDefaultLanguage(defaultLanguage)
}
GridLayout
ColumnLayout
{
columns: 2;
//: Language selection label
UM.I18nCatalog{id: catalog; name:"cura"}
Label
{
id: languageLabel
text: catalog.i18nc("@label","Language")
}
ComboBox
RowLayout
{
id: languageComboBox
model: ListModel
Label
{
id: languageList
Component.onCompleted: {
// append({ text: catalog.i18nc("@item:inlistbox", "Bulgarian"), code: "bg" })
// append({ text: catalog.i18nc("@item:inlistbox", "Czech"), code: "cs" })
append({ text: catalog.i18nc("@item:inlistbox", "English"), code: "en" })
append({ text: catalog.i18nc("@item:inlistbox", "Finnish"), code: "fi" })
append({ text: catalog.i18nc("@item:inlistbox", "French"), code: "fr" })
append({ text: catalog.i18nc("@item:inlistbox", "German"), code: "de" })
// append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
append({ text: catalog.i18nc("@item:inlistbox", "Polish"), code: "pl" })
// append({ text: catalog.i18nc("@item:inlistbox", "Russian"), code: "ru" })
// append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
}
id: languageLabel
text: catalog.i18nc("@label","Language:")
}
currentIndex:
ComboBox
{
var code = UM.Preferences.getValue("general/language");
for(var i = 0; i < languageList.count; ++i)
id: languageComboBox
model: ListModel
{
if(model.get(i).code == code)
{
return i
id: languageList
Component.onCompleted: {
// append({ text: catalog.i18nc("@item:inlistbox", "Bulgarian"), code: "bg" })
// append({ text: catalog.i18nc("@item:inlistbox", "Czech"), code: "cs" })
append({ text: catalog.i18nc("@item:inlistbox", "English"), code: "en" })
append({ text: catalog.i18nc("@item:inlistbox", "Finnish"), code: "fi" })
append({ text: catalog.i18nc("@item:inlistbox", "French"), code: "fr" })
append({ text: catalog.i18nc("@item:inlistbox", "German"), code: "de" })
// append({ text: catalog.i18nc("@item:inlistbox", "Italian"), code: "it" })
append({ text: catalog.i18nc("@item:inlistbox", "Polish"), code: "pl" })
// append({ text: catalog.i18nc("@item:inlistbox", "Russian"), code: "ru" })
// append({ text: catalog.i18nc("@item:inlistbox", "Spanish"), code: "es" })
}
}
}
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)
currentIndex:
{
languageList.setProperty(i, "text", catalog.i18n(languageList.get(i).text));
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)
// 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;
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", catalog.i18n(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
id: languageCaption
//: Language change warning
text: catalog.i18nc("@label", "You will need to restart the application for language changes to have effect.")
@ -113,103 +111,46 @@ UM.PreferencesPage
font.italic: true
}
CheckBox
{
id: pushFreeCheckbox
checked: boolCheck(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
UM.TooltipArea {
width: childrenRect.width
height: childrenRect.height
text: catalog.i18nc("@info:tooltip", "Should objects on the platform be moved so that they no longer intersect.")
//: Display Overhang preference checkbox
text: catalog.i18nc("@option:check", "Ensure objects are kept apart");
onClicked: pushFreeCheckbox.checked = !pushFreeCheckbox.checked
//: Display Overhang preference tooltip
tooltip: catalog.i18nc("@info:tooltip", "Should objects on the platform be moved so that they no longer intersect.")
style: ButtonStyle
CheckBox
{
background: Rectangle
{
border.width: 0
color: "transparent"
}
label: Text
{
renderType: Text.NativeRendering
horizontalAlignment: Text.AlignLeft
text: control.text
}
id: pushFreeCheckbox
text: catalog.i18nc("@option:check", "Ensure objects are kept apart")
checked: boolCheck(UM.Preferences.getValue("physics/automatic_push_free"))
onCheckedChanged: UM.Preferences.setValue("physics/automatic_push_free", checked)
}
}
CheckBox
{
id: sendDataCheckbox
checked: boolCheck(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
UM.TooltipArea {
width: childrenRect.width
height: childrenRect.height
text: catalog.i18nc("@info:tooltip","Should opened files be scaled to the build volume if they are too large?")
//: Display Overhang preference checkbox
text: catalog.i18nc("@option:check","Send (Anonymous) Print Information");
onClicked: sendDataCheckbox.checked = !sendDataCheckbox.checked
//: Display Overhang preference tooltip
tooltip: catalog.i18nc("@info:tooltip","Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored.")
style: ButtonStyle
CheckBox
{
background: Rectangle
{
border.width: 0
color: "transparent"
}
label: Text
{
renderType: Text.NativeRendering
horizontalAlignment: Text.AlignLeft
text: control.text
}
id: scaleToFitCheckbox
text: catalog.i18nc("@option:check","Scale large files")
checked: boolCheck(UM.Preferences.getValue("mesh/scale_to_fit"))
onCheckedChanged: UM.Preferences.setValue("mesh/scale_to_fit", checked)
}
}
CheckBox
{
id: scaleToFitCheckbox
checked: boolCheck(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("@option:check","Scale Too Large Files");
onClicked: scaleToFitCheckbox.checked = !scaleToFitCheckbox.checked
UM.TooltipArea {
width: childrenRect.width
height: childrenRect.height
text: catalog.i18nc("@info:tooltip","Should anonymous data about your print be sent to Ultimaker? Note, no models, IP addresses or other personally identifiable information is sent or stored.")
//: Display Overhang preference tooltip
tooltip: catalog.i18nc("@info:tooltip","Should opened files be scaled to the build volume when they are too large?")
style: ButtonStyle
CheckBox
{
background: Rectangle
{
border.width: 0
color: "transparent"
}
label: Text
{
renderType: Text.NativeRendering
horizontalAlignment: Text.AlignLeft
text: control.text
}
id: sendDataCheckbox
text: catalog.i18nc("@option:check","Send (anonymous) print information")
checked: boolCheck(UM.Preferences.getValue("info/send_slice_info"))
onCheckedChanged: UM.Preferences.setValue("info/send_slice_info", checked)
}
}
Item { Layout.fillHeight: true; Layout.columnSpan: 2 }
}
}

View file

@ -53,54 +53,111 @@ Rectangle {
}
Connections {
target: openDialog
target: backgroundItem
onHasMesh: {
if(base.fileBaseName == ''){
base.fileBaseName = name
base.createFileName()
}
base.fileBaseName = name
}
}
onActivityChanged: {
if (activity == false){
base.fileBaseName = ''
if (activity == true && base.fileBaseName == ''){
//this only runs when you open a file from the terminal (or something that works the same way; for example when you drag a file on the icon in MacOS or use 'open with' on Windows)
base.fileBaseName = Printer.jobName //it gets the fileBaseName from CuraApplication.py because this saves the filebase when the file is opened using the terminal (or something alike)
base.createFileName()
}
if (activity == true && base.fileBaseName != ''){
//this runs in all other cases where there is a mesh on the buildplate (activity == true). It uses the fileBaseName from the hasMesh signal
base.createFileName()
}
if (activity == false){
//When there is no mesh in the buildplate; the printJobTextField is set to an empty string so it doesn't set an empty string as a jobName (which is later used for saving the file)
printJobTextfield.text = ''
}
}
TextField {
id: printJobTextfield
Rectangle
{
id: jobNameRow
anchors.top: parent.top
anchors.right: parent.right
height: UM.Theme.sizes.jobspecs_line.height
width: base.width
property int unremovableSpacing: 5
text: ''
horizontalAlignment: TextInput.AlignRight
onTextChanged: Printer.setJobName(text)
visible: base.activity
onEditingFinished: {
if (printJobTextfield.text != ''){
printJobTextfield.focus = false
Item
{
width: parent.width
height: parent.height
Button
{
id: printJobPencilIcon
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
width: UM.Theme.sizes.save_button_specs_icons.width
height: UM.Theme.sizes.save_button_specs_icons.height
onClicked:
{
printJobTextfield.selectAll()
printJobTextfield.focus = true
}
style: ButtonStyle
{
background: Rectangle
{
color: "transparent"
UM.RecolorImage
{
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: control.hovered ? UM.Theme.colors.setting_control_button_hover : UM.Theme.colors.text
source: UM.Theme.icons.pencil;
}
}
}
}
}
validator: RegExpValidator {
regExp: /^[^\\ \/ \.]*$/
}
style: TextFieldStyle{
textColor: UM.Theme.colors.setting_control_text;
font: UM.Theme.fonts.default;
background: Rectangle {
opacity: 0
border.width: 0
TextField
{
id: printJobTextfield
anchors.right: printJobPencilIcon.left
anchors.rightMargin: UM.Theme.sizes.default_margin.width/2
height: UM.Theme.sizes.jobspecs_line.height
width: base.width
property int unremovableSpacing: 5
text: ''
horizontalAlignment: TextInput.AlignRight
onTextChanged: {
if(text != ''){
//this prevent that is sets an empty string as jobname
Printer.setJobName(text)
}
}
onEditingFinished: {
if (printJobTextfield.text != ''){
printJobTextfield.focus = false
}
}
validator: RegExpValidator {
regExp: /^[^\\ \/ \.]*$/
}
style: TextFieldStyle{
textColor: UM.Theme.colors.setting_control_text;
font: UM.Theme.fonts.default_bold;
background: Rectangle {
opacity: 0
border.width: 0
}
}
}
}
}
Label{
id: boundingSpec
anchors.top: printJobTextfield.bottom
anchors.top: jobNameRow.bottom
anchors.right: parent.right
height: UM.Theme.sizes.jobspecs_line.height
verticalAlignment: Text.AlignVCenter
@ -138,7 +195,7 @@ Rectangle {
anchors.verticalCenter: parent.verticalCenter
font: UM.Theme.fonts.small
color: UM.Theme.colors.text_subtext
text: (!base.printDuration || !base.printDuration.valid) ? "00h 00min" : base.printDuration.getDisplayString(UM.DurationFormat.Short)
text: (!base.printDuration || !base.printDuration.valid) ? catalog.i18nc("@label", "00h 00min") : base.printDuration.getDisplayString(UM.DurationFormat.Short)
}
UM.RecolorImage {
id: lengthIcon
@ -158,7 +215,7 @@ Rectangle {
anchors.verticalCenter: parent.verticalCenter
font: UM.Theme.fonts.small
color: UM.Theme.colors.text_subtext
text: base.printMaterialAmount <= 0 ? "0.0 m" : catalog.i18nc("@label %1 is length of filament","%1 m").arg(base.printMaterialAmount)
text: base.printMaterialAmount <= 0 ? catalog.i18nc("@label", "0.0 m") : catalog.i18nc("@label", "%1 m").arg(base.printMaterialAmount)
}
}
}

View file

@ -0,0 +1,64 @@
// Copyright (c) 2015 Ultimaker B.V.
// Cura is released under the terms of the AGPLv3 or higher.
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Window 2.1
import UM 1.1 as UM
UM.Dialog
{
id: base
//: About dialog title
title: catalog.i18nc("@title:window","Load profile")
width: 400
height: childrenRect.height
Label
{
id: body
//: About dialog application description
text: catalog.i18nc("@label","Selecting this profile overwrites some of your customised settings. Do you want to merge the new settings into your current profile or do you want to load a clean copy of the profile?")
wrapMode: Text.WordWrap
width: parent.width
anchors.top: parent.top
anchors.margins: UM.Theme.sizes.default_margin.height
UM.I18nCatalog { id: catalog; name: "cura"; }
}
Label
{
id: show_details
//: About dialog application author note
text: catalog.i18nc("@label","Show details.")
wrapMode: Text.WordWrap
anchors.top: body.bottom
anchors.topMargin: UM.Theme.sizes.default_margin.height
}
rightButtons: Row
{
spacing: UM.Theme.sizes.default_margin.width
Button
{
text: catalog.i18nc("@action:button","Merge settings");
}
Button
{
text: catalog.i18nc("@action:button","Reset profile");
}
Button
{
text: catalog.i18nc("@action:button","Cancel");
onClicked: base.visible = false;
}
}
}

View file

@ -14,62 +14,9 @@ Item{
property int totalHeightProfileSetup: childrenRect.height
property Action manageProfilesAction
Rectangle {
id: variantRow
anchors.top: base.top
width: base.width
height: UM.Theme.sizes.sidebar_setup.height
//visible: UM.MachineManager.hasVariants;
visible: true
Label{
id: variantLabel
text: catalog.i18nc("@label","Variant:");
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;
}
ToolButton {
id: variantSelection
text: UM.MachineManager.activeMachineVariant
width: parent.width/100*55
height: UM.Theme.sizes.setting_control.height
tooltip: UM.MachineManager.activeMachineInstance;
anchors.right: parent.right
anchors.rightMargin: UM.Theme.sizes.default_margin.width
anchors.verticalCenter: parent.verticalCenter
style: UM.Theme.styles.sidebar_header_button
menu: Menu
{
id: variantsSelectionMenu
Instantiator
{
model: UM.MachineVariantsModel { id: variantsModel }
MenuItem
{
text: model.name;
checkable: true;
checked: model.active;
exclusiveGroup: variantSelectionMenuGroup;
onTriggered: UM.MachineManager.setActiveMachineVariant(variantsModel.getItem(index).name)
}
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
onObjectRemoved: variantsSelectionMenu.removeItem(object)
}
ExclusiveGroup { id: variantSelectionMenuGroup; }
}
}
}
Rectangle{
id: globalProfileRow;
anchors.top: UM.MachineManager.hasVariants ? variantRow.bottom : base.top
//anchors.top: variantRow.bottom
id: globalProfileRow
anchors.top: base.top
height: UM.Theme.sizes.sidebar_setup.height
width: base.width
@ -78,7 +25,7 @@ Item{
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
anchors.verticalCenter: parent.verticalCenter
text: catalog.i18nc("@label","Global Profile:");
text: catalog.i18nc("@label","Profile:");
width: parent.width/100*45
font: UM.Theme.fonts.default;
color: UM.Theme.colors.text;

View file

@ -74,7 +74,7 @@ Rectangle {
Button {
id: saveToButton
property int resizedWidth
x: base.width - saveToButton.resizedWidth - UM.Theme.sizes.default_margin.width - UM.Theme.sizes.save_button_save_to_button.height + 3
x: base.width - saveToButton.resizedWidth - UM.Theme.sizes.default_margin.width - UM.Theme.sizes.save_button_save_to_button.height + UM.Theme.sizes.save_button_save_to_button.width
tooltip: UM.OutputDeviceManager.activeDeviceDescription;
enabled: base.progress > 0.99 && base.activity == true
height: UM.Theme.sizes.save_button_save_to_button.height
@ -90,6 +90,7 @@ Rectangle {
background: Rectangle {
//opacity: control.enabled ? 1.0 : 0.5
//Behavior on opacity { NumberAnimation { duration: 50; } }
border.width: UM.Theme.sizes.default_lining.width
border.color: !control.enabled ? UM.Theme.colors.action_button_disabled_border :
control.pressed ? UM.Theme.colors.action_button_active_border :
control.hovered ? UM.Theme.colors.action_button_hovered_border : UM.Theme.colors.action_button_border
@ -130,6 +131,7 @@ Rectangle {
style: ButtonStyle {
background: Rectangle {
id: deviceSelectionIcon
border.width: UM.Theme.sizes.default_lining.width
border.color: !control.enabled ? UM.Theme.colors.action_button_disabled_border :
control.pressed ? UM.Theme.colors.action_button_active_border :
control.hovered ? UM.Theme.colors.action_button_hovered_border : UM.Theme.colors.action_button_border

View file

@ -120,6 +120,7 @@ Rectangle
style: ButtonStyle {
background: Rectangle {
border.width: UM.Theme.sizes.default_lining.width
border.color: control.checked ? UM.Theme.colors.toggle_checked_border :
control.pressed ? UM.Theme.colors.toggle_active_border :
control.hovered ? UM.Theme.colors.toggle_hovered_border : UM.Theme.colors.toggle_unchecked_border

View file

@ -17,7 +17,7 @@ Item
property int totalHeightHeader: childrenRect.height
Rectangle {
id: settingsModeRow
id: sidebarTabRow
width: base.width
height: 0
anchors.top: parent.top
@ -29,7 +29,7 @@ Item
text: catalog.i18nc("@label:listbox","Print Job");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.default_margin.width;
anchors.top: settingsModeRow.bottom
anchors.top: sidebarTabRow.bottom
anchors.topMargin: UM.Theme.sizes.default_margin.height
width: parent.width/100*45
font: UM.Theme.fonts.large;
@ -47,7 +47,7 @@ Item
Label{
id: machineSelectionLabel
//: Machine selection label
text: catalog.i18nc("@label:listbox","Machine:");
text: catalog.i18nc("@label:listbox","Printer:");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.default_margin.width
anchors.verticalCenter: parent.verticalCenter
@ -93,4 +93,57 @@ Item
}
}
}
Rectangle {
id: variantRow
anchors.top: machineSelectionRow.bottom
anchors.topMargin: UM.MachineManager.hasVariants ? UM.Theme.sizes.default_margin.height : 0
width: base.width
height: UM.MachineManager.hasVariants ? UM.Theme.sizes.sidebar_setup.height : 0
visible: UM.MachineManager.hasVariants
Label{
id: variantLabel
text: catalog.i18nc("@label","Nozzle:");
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;
}
ToolButton {
id: variantSelection
text: UM.MachineManager.activeMachineVariant
width: parent.width/100*55
height: UM.Theme.sizes.setting_control.height
tooltip: UM.MachineManager.activeMachineVariant;
anchors.right: parent.right
anchors.rightMargin: UM.Theme.sizes.default_margin.width
anchors.verticalCenter: parent.verticalCenter
style: UM.Theme.styles.sidebar_header_button
menu: Menu
{
id: variantsSelectionMenu
Instantiator
{
model: UM.MachineVariantsModel { id: variantsModel }
MenuItem
{
text: model.name;
checkable: true;
checked: model.active;
exclusiveGroup: variantSelectionMenuGroup;
onTriggered: UM.MachineManager.setActiveMachineVariant(variantsModel.getItem(index).name)
}
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
onObjectRemoved: variantsSelectionMenu.removeItem(object)
}
ExclusiveGroup { id: variantSelectionMenuGroup; }
}
}
}
}

View file

@ -127,7 +127,7 @@ Item
anchors.top: parent.top
anchors.left: parent.left
width: base.width/100* 35 - UM.Theme.sizes.default_margin.width
height: childrenRect.height < UM.Theme.sizes.simple_mode_infill_caption.height ? UM.Theme.sizes.simple_mode_infill_caption.height : childrenRect.height
height: childrenRect.height
Label{
id: infillLabel
@ -140,17 +140,6 @@ Item
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.default_margin.width
}
/* Label{
id: infillCaption
width: infillCellLeft.width - UM.Theme.sizes.default_margin.width * 2
text: infillModel.count > 0 && infillListView.activeIndex != -1 ? infillModel.get(infillListView.activeIndex).text : ""
font: UM.Theme.fonts.caption
wrapMode: Text.Wrap
color: UM.Theme.colors.text_subtext
anchors.top: infillLabel.bottom
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.default_margin.width
} */
}
Flow {
@ -162,7 +151,6 @@ Item
anchors.left: infillCellLeft.right
anchors.top: infillCellLeft.top
anchors.topMargin: UM.Theme.sizes.default_margin.height
Repeater {
id: infillListView
@ -335,7 +323,7 @@ Item
property bool hovered_ex: false
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.sizes.default_lining.height
anchors.topMargin: UM.Theme.sizes.default_margin.height
anchors.left: parent.left
//: Setting enable support checkbox

View file

@ -33,7 +33,7 @@ Item {
checkable: true;
checked: model.active;
enabled: UM.Selection.hasSelection;
enabled: UM.Selection.hasSelection && UM.Controller.toolsEnabled;
style: UM.Theme.styles.tool_button;
@ -97,6 +97,7 @@ Item {
y: UM.Theme.sizes.default_margin.height;
source: UM.ActiveTool.valid ? UM.ActiveTool.activeToolPanel : "";
enabled: UM.Controller.toolsEnabled;
}
}
}

View file

@ -39,7 +39,7 @@ UM.PreferencesPage
checked: boolCheck(UM.Preferences.getValue("view/show_overhang"))
onClicked: UM.Preferences.setValue("view/show_overhang", checked)
text: catalog.i18nc("@option:check","Display Overhang");
text: catalog.i18nc("@option:check","Display overhang");
}
}

View file

@ -129,30 +129,31 @@ Item
section.property: "manufacturer"
section.delegate: Button {
text: section + " "
text: section
style: ButtonStyle {
background: Rectangle {
id: manufacturerBackground
opacity: 0.3
border.width: 0
color: control.hovered ? palette.light : "transparent";
color: "transparent";
height: UM.Theme.sizes.standard_list_lineheight.height
width: machineList.width
}
label: Text {
horizontalAlignment: Text.AlignLeft
anchors.left: parent.left
anchors.leftMargin: UM.Theme.sizes.standard_arrow.width + UM.Theme.sizes.default_margin.width
text: control.text
color: palette.windowText
font.bold: true
UM.RecolorImage {
id: downArrow
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.right
anchors.right: parent.left
anchors.rightMargin: UM.Theme.sizes.default_margin.width
width: UM.Theme.sizes.standard_arrow.width
height: UM.Theme.sizes.standard_arrow.height
sourceSize.width: width
sourceSize.height: width
color: palette.windowText
source: base,activeManufacturer == section ? UM.Theme.icons.arrow_bottom : UM.Theme.icons.arrow_right
source: base.activeManufacturer == section ? UM.Theme.icons.arrow_bottom : UM.Theme.icons.arrow_right
}
}
}
@ -184,18 +185,6 @@ Item
machineName.text = getMachineName()
}
Label
{
id: author
text: model.author;
anchors.left: machineButton.right
anchors.leftMargin: UM.Theme.sizes.standard_list_lineheight.height/2
anchors.verticalCenter: machineButton.verticalCenter
anchors.verticalCenterOffset: UM.Theme.sizes.standard_list_lineheight.height / 4
font: UM.Theme.fonts.caption;
color: palette.mid
}
states: State {
name: "collapsed";
when: base.activeManufacturer != model.manufacturer;