123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562 |
- // Copyright (c) 2016 Ultimaker B.V.
- // Cura is released under the terms of the AGPLv3 or higher.
- import QtQuick 2.1
- import QtQuick.Controls 1.1
- import QtQuick.Layouts 1.1
- import QtQuick.Controls.Styles 1.1
- import UM 1.1 as UM
- UM.PreferencesPage
- {
- //: General configuration page title
- title: catalog.i18nc("@title:tab","General")
- function setDefaultLanguage(languageCode)
- {
- //loops trough the languageList and sets the language using the languageCode
- for(var i = 0; i < languageList.count; i++)
- {
- if (languageComboBox.model.get(i).code == languageCode)
- {
- languageComboBox.currentIndex = i
- }
- }
- }
- function setDefaultDiscardOrKeepProfile(code)
- {
- for (var i = 0; i < choiceOnProfileOverrideDropDownButton.model.count; i++)
- {
- if (choiceOnProfileOverrideDropDownButton.model.get(i).code == code)
- {
- choiceOnProfileOverrideDropDownButton.currentIndex = i;
- break;
- }
- }
- }
- function setDefaultOpenProjectOption(code)
- {
- for (var i = 0; i < choiceOnOpenProjectDropDownButton.model.count; ++i)
- {
- if (choiceOnOpenProjectDropDownButton.model.get(i).code == code)
- {
- choiceOnOpenProjectDropDownButton.currentIndex = i
- break;
- }
- }
- }
- function reset()
- {
- UM.Preferences.resetPreference("general/language")
- var defaultLanguage = UM.Preferences.getValue("general/language")
- setDefaultLanguage(defaultLanguage)
- UM.Preferences.resetPreference("physics/automatic_push_free")
- pushFreeCheckbox.checked = boolCheck(UM.Preferences.getValue("physics/automatic_push_free"))
- UM.Preferences.resetPreference("physics/automatic_drop_down")
- dropDownCheckbox.checked = boolCheck(UM.Preferences.getValue("physics/automatic_drop_down"))
- UM.Preferences.resetPreference("mesh/scale_to_fit")
- scaleToFitCheckbox.checked = boolCheck(UM.Preferences.getValue("mesh/scale_to_fit"))
- UM.Preferences.resetPreference("mesh/scale_tiny_meshes")
- scaleTinyCheckbox.checked = boolCheck(UM.Preferences.getValue("mesh/scale_tiny_meshes"))
- UM.Preferences.resetPreference("cura/jobname_prefix")
- prefixJobNameCheckbox.checked = boolCheck(UM.Preferences.getValue("cura/jobname_prefix"))
- UM.Preferences.resetPreference("view/show_overhang");
- showOverhangCheckbox.checked = boolCheck(UM.Preferences.getValue("view/show_overhang"))
- UM.Preferences.resetPreference("view/center_on_select");
- centerOnSelectCheckbox.checked = boolCheck(UM.Preferences.getValue("view/center_on_select"))
- UM.Preferences.resetPreference("view/invert_zoom");
- invertZoomCheckbox.checked = boolCheck(UM.Preferences.getValue("view/invert_zoom"))
- UM.Preferences.resetPreference("view/top_layer_count");
- topLayerCountCheckbox.checked = boolCheck(UM.Preferences.getValue("view/top_layer_count"))
- UM.Preferences.resetPreference("cura/choice_on_profile_override")
- setDefaultDiscardOrKeepProfile(UM.Preferences.getValue("cura/choice_on_profile_override"))
- UM.Preferences.resetPreference("cura/choice_on_open_project")
- setDefaultOpenProjectOption(UM.Preferences.getValue("cura/choice_on_open_project"))
- if (plugins.find("id", "SliceInfoPlugin") > -1) {
- UM.Preferences.resetPreference("info/send_slice_info")
- sendDataCheckbox.checked = boolCheck(UM.Preferences.getValue("info/send_slice_info"))
- }
- if (plugins.find("id", "UpdateChecker") > -1) {
- UM.Preferences.resetPreference("info/automatic_update_check")
- checkUpdatesCheckbox.checked = boolCheck(UM.Preferences.getValue("info/automatic_update_check"))
- }
- }
- ScrollView
- {
- width: parent.width
- height: parent.height
- Column
- {
- //: Model used to check if a plugin exists
- UM.PluginsModel { id: plugins }
- //: Language selection label
- UM.I18nCatalog{id: catalog; name:"cura"}
- Label
- {
- font.bold: true
- text: catalog.i18nc("@label","Interface")
- }
- Row
- {
- spacing: UM.Theme.getSize("default_margin").width
- Label
- {
- id: languageLabel
- text: catalog.i18nc("@label","Language:")
- anchors.verticalCenter: languageComboBox.verticalCenter
- }
- ComboBox
- {
- id: languageComboBox
- model: ListModel
- {
- id: languageList
- Component.onCompleted: {
- append({ text: "English", code: "en" })
- append({ text: "Deutsch", code: "de" })
- append({ text: "Español", code: "es" })
- append({ text: "Suomi", code: "fi" })
- append({ text: "Français", code: "fr" })
- append({ text: "Italiano", code: "it" })
- append({ text: "Nederlands", code: "nl" })
- append({ text: "Português do Brasil", code: "ptbr" })
- append({ text: "Русский", code: "ru" })
- append({ text: "Türkçe", code: "tr" })
- }
- }
- currentIndex:
- {
- var code = UM.Preferences.getValue("general/language");
- for(var i = 0; i < languageList.count; ++i)
- {
- if(model.get(i).code == code)
- {
- return i
- }
- }
- }
- onActivated: UM.Preferences.setValue("general/language", model.get(index).code)
- 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: currencyLabel
- text: catalog.i18nc("@label","Currency:")
- anchors.verticalCenter: languageComboBox.verticalCenter
- }
- TextField
- {
- id: currencyField
- text: UM.Preferences.getValue("cura/currency")
- onTextChanged: UM.Preferences.setValue("cura/currency", text)
- }
- }
- Label
- {
- id: languageCaption
- //: Language change warning
- text: catalog.i18nc("@label", "You will need to restart the application for language changes to have effect.")
- wrapMode: Text.WordWrap
- font.italic: true
- }
- Item
- {
- //: Spacer
- height: UM.Theme.getSize("default_margin").height
- width: UM.Theme.getSize("default_margin").width
- }
- UM.TooltipArea
- {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip","Slice automatically when changing settings.")
- CheckBox
- {
- id: autoSliceCheckbox
- checked: boolCheck(UM.Preferences.getValue("general/auto_slice"))
- onClicked: UM.Preferences.setValue("general/auto_slice", checked)
- text: catalog.i18nc("@option:check","Slice automatically");
- }
- }
- Item
- {
- //: Spacer
- height: UM.Theme.getSize("default_margin").height
- width: UM.Theme.getSize("default_margin").width
- }
- Label
- {
- font.bold: true
- text: catalog.i18nc("@label","Viewport behavior")
- }
- UM.TooltipArea
- {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip","Highlight unsupported areas of the model in red. Without support these areas will not print properly.")
- CheckBox
- {
- id: showOverhangCheckbox
- checked: boolCheck(UM.Preferences.getValue("view/show_overhang"))
- onClicked: UM.Preferences.setValue("view/show_overhang", checked)
- text: catalog.i18nc("@option:check","Display overhang");
- }
- }
- UM.TooltipArea {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip","Moves the camera so the model is in the center of the view when an model is selected")
- CheckBox
- {
- id: centerOnSelectCheckbox
- text: catalog.i18nc("@action:button","Center camera when item is selected");
- checked: boolCheck(UM.Preferences.getValue("view/center_on_select"))
- onClicked: UM.Preferences.setValue("view/center_on_select", checked)
- enabled: Qt.platform.os != "windows" // Hack: disable the feature on windows as it's broken for pyqt 5.7.1.
- }
- }
- UM.TooltipArea {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip","Should the default zoom behavior of cura be inverted?")
- CheckBox
- {
- id: invertZoomCheckbox
- text: catalog.i18nc("@action:button","Invert the direction of camera zoom.");
- checked: boolCheck(UM.Preferences.getValue("view/invert_zoom"))
- onClicked: UM.Preferences.setValue("view/invert_zoom", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Should models on the platform be moved so that they no longer intersect?")
- CheckBox
- {
- id: pushFreeCheckbox
- text: catalog.i18nc("@option:check", "Ensure models are kept apart")
- checked: boolCheck(UM.Preferences.getValue("physics/automatic_push_free"))
- onCheckedChanged: UM.Preferences.setValue("physics/automatic_push_free", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Should models on the platform be moved down to touch the build plate?")
- CheckBox
- {
- id: dropDownCheckbox
- text: catalog.i18nc("@option:check", "Automatically drop models to the build plate")
- checked: boolCheck(UM.Preferences.getValue("physics/automatic_drop_down"))
- onCheckedChanged: UM.Preferences.setValue("physics/automatic_drop_down", checked)
- }
- }
- UM.TooltipArea
- {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip","Show caution message in gcode reader.")
- CheckBox
- {
- id: gcodeShowCautionCheckbox
- checked: boolCheck(UM.Preferences.getValue("gcodereader/show_caution"))
- onClicked: UM.Preferences.setValue("gcodereader/show_caution", checked)
- text: catalog.i18nc("@option:check","Caution message in gcode reader");
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Should layer be forced into compatibility mode?")
- CheckBox
- {
- id: forceLayerViewCompatibilityModeCheckbox
- text: catalog.i18nc("@option:check", "Force layer view compatibility mode (restart required)")
- checked: boolCheck(UM.Preferences.getValue("view/force_layer_view_compatibility_mode"))
- onCheckedChanged: UM.Preferences.setValue("view/force_layer_view_compatibility_mode", checked)
- }
- }
- Item
- {
- //: Spacer
- height: UM.Theme.getSize("default_margin").height
- width: UM.Theme.getSize("default_margin").height
- }
- Label
- {
- font.bold: true
- text: catalog.i18nc("@label","Opening and saving files")
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip","Should models be scaled to the build volume if they are too large?")
- CheckBox
- {
- id: scaleToFitCheckbox
- text: catalog.i18nc("@option:check","Scale large models")
- checked: boolCheck(UM.Preferences.getValue("mesh/scale_to_fit"))
- onCheckedChanged: UM.Preferences.setValue("mesh/scale_to_fit", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip","An model may appear extremely small if its unit is for example in meters rather than millimeters. Should these models be scaled up?")
- CheckBox
- {
- id: scaleTinyCheckbox
- text: catalog.i18nc("@option:check","Scale extremely small models")
- checked: boolCheck(UM.Preferences.getValue("mesh/scale_tiny_meshes"))
- onCheckedChanged: UM.Preferences.setValue("mesh/scale_tiny_meshes", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Should a prefix based on the printer name be added to the print job name automatically?")
- CheckBox
- {
- id: prefixJobNameCheckbox
- text: catalog.i18nc("@option:check", "Add machine prefix to job name")
- checked: boolCheck(UM.Preferences.getValue("cura/jobname_prefix"))
- onCheckedChanged: UM.Preferences.setValue("cura/jobname_prefix", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Should a summary be shown when saving a project file?")
- CheckBox
- {
- text: catalog.i18nc("@option:check", "Show summary dialog when saving project")
- checked: boolCheck(UM.Preferences.getValue("cura/dialog_on_project_save"))
- onCheckedChanged: UM.Preferences.setValue("cura/dialog_on_project_save", checked)
- }
- }
- UM.TooltipArea {
- width: childrenRect.width
- height: childrenRect.height
- text: catalog.i18nc("@info:tooltip", "Default behavior when opening a project file")
- Column
- {
- spacing: 4
- Label
- {
- text: catalog.i18nc("@window:text", "Default behavior when opening a project file: ")
- }
- ComboBox
- {
- id: choiceOnOpenProjectDropDownButton
- width: 200
- model: ListModel
- {
- id: openProjectOptionModel
- Component.onCompleted: {
- append({ text: catalog.i18nc("@option:openProject", "Always ask"), code: "always_ask" })
- append({ text: catalog.i18nc("@option:openProject", "Always open as a project"), code: "open_as_project" })
- append({ text: catalog.i18nc("@option:openProject", "Always import models"), code: "open_as_model" })
- }
- }
- currentIndex:
- {
- var index = 0;
- var currentChoice = UM.Preferences.getValue("cura/choice_on_open_project");
- for (var i = 0; i < model.count; ++i)
- {
- if (model.get(i).code == currentChoice)
- {
- index = i;
- break;
- }
- }
- return index;
- }
- onActivated: UM.Preferences.setValue("cura/choice_on_open_project", model.get(index).code)
- }
- }
- }
- Item
- {
- //: Spacer
- height: UM.Theme.getSize("default_margin").height
- width: UM.Theme.getSize("default_margin").width
- }
- UM.TooltipArea
- {
- width: childrenRect.width;
- height: childrenRect.height;
- text: catalog.i18nc("@info:tooltip", "When you have made changes to a profile and switched to a different one, a dialog will be shown asking whether you want to keep your modifications or not, or you can choose a default behaviour and never show that dialog again.")
- Column
- {
- spacing: 4
- Label
- {
- font.bold: true
- text: catalog.i18nc("@label", "Override Profile")
- }
- ComboBox
- {
- id: choiceOnProfileOverrideDropDownButton
- width: 200
- model: ListModel
- {
- id: discardOrKeepProfileListModel
- Component.onCompleted: {
- append({ text: catalog.i18nc("@option:discardOrKeep", "Always ask me this"), code: "always_ask" })
- append({ text: catalog.i18nc("@option:discardOrKeep", "Discard and never ask again"), code: "always_discard" })
- append({ text: catalog.i18nc("@option:discardOrKeep", "Keep and never ask again"), code: "always_keep" })
- }
- }
- currentIndex:
- {
- var index = 0;
- var code = UM.Preferences.getValue("cura/choice_on_profile_override");
- for (var i = 0; i < model.count; ++i)
- {
- if (model.get(i).code == code)
- {
- index = i;
- break;
- }
- }
- return index;
- }
- onActivated: UM.Preferences.setValue("cura/choice_on_profile_override", model.get(index).code)
- }
- }
- }
- Item
- {
- //: Spacer
- height: UM.Theme.getSize("default_margin").height
- width: UM.Theme.getSize("default_margin").height
- }
- Label
- {
- font.bold: true
- visible: checkUpdatesCheckbox.visible || sendDataCheckbox.visible
- text: catalog.i18nc("@label","Privacy")
- }
- UM.TooltipArea {
- visible: plugins.find("id", "UpdateChecker") > -1
- width: childrenRect.width
- height: visible ? childrenRect.height : 0
- text: catalog.i18nc("@info:tooltip","Should Cura check for updates when the program is started?")
- CheckBox
- {
- id: checkUpdatesCheckbox
- text: catalog.i18nc("@option:check","Check for updates on start")
- checked: boolCheck(UM.Preferences.getValue("info/automatic_update_check"))
- onCheckedChanged: UM.Preferences.setValue("info/automatic_update_check", checked)
- }
- }
- UM.TooltipArea {
- visible: plugins.find("id", "SliceInfoPlugin") > -1
- width: childrenRect.width
- height: visible ? childrenRect.height : 0
- 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.")
- CheckBox
- {
- 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)
- }
- }
- }
- }
- }
|