Merge branch 'master' into feature_accelerations_and_jerk_per_feature_settigns_rework

This commit is contained in:
Tim Kuipers 2016-06-10 12:29:06 +02:00
commit 149af8af28
119 changed files with 3484 additions and 1784 deletions

View file

@ -22,9 +22,13 @@
{
"label": "Extruder",
"description": "The extruder train used for printing. This is used in multi-extrusion.",
"type": "int",
"type": "extruder",
"default_value": 0,
"minimum_value": "0"
"minimum_value": "0",
"settable_per_mesh": true,
"settable_per_extruder": false,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_nozzle_offset_x":
{
@ -33,7 +37,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_nozzle_offset_y":
{
@ -42,7 +49,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_start_code":
{
@ -50,7 +60,10 @@
"description": "Start g-code to execute whenever turning the extruder on.",
"type": "str",
"default_value": "",
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_start_pos_abs":
{
@ -58,7 +71,10 @@
"description": "Make the extruder starting position absolute rather than relative to the last-known location of the head.",
"type": "bool",
"default_value": false,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_start_pos_x":
{
@ -67,7 +83,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_start_pos_y":
{
@ -76,7 +95,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_end_code":
{
@ -84,7 +106,10 @@
"description": "End g-code to execute whenever turning the extruder off.",
"type": "str",
"default_value": "",
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_end_pos_abs":
{
@ -92,7 +117,10 @@
"description": "Make the extruder ending position absolute rather than relative to the last-known location of the head.",
"type": "bool",
"default_value": false,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_end_pos_x":
{
@ -101,7 +129,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
},
"machine_extruder_end_pos_y":
{
@ -110,7 +141,10 @@
"type": "float",
"unit": "mm",
"default_value": 0,
"global_only": "True"
"settable_per_mesh": false,
"settable_per_extruder": true,
"settable_per_meshgroup": false,
"settable_globally": false
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -5,10 +5,7 @@
"inherits": "fdmprinter",
"metadata": {
"author": "Ultimaker",
"manufacturer": "Ultimaker",
"manufacturer": "Ultimaker"
"visible": false,
"preferred_profile": "Normal Quality",
"preferred_nozzle": "0.4 mm",
"preferred_material": "PLA"
}
}

View file

@ -12,8 +12,12 @@
"platform": "ultimaker2_platform.obj",
"platform_texture": "Ultimaker2Plusbackplate.png",
"preferred_variant": "ultimaker2_plus_0.4",
"preferred_material": "pla",
"preferred_quality": "high"
"preferred_material": "*pla*",
"preferred_quality": "*normal*",
"has_variants": true,
"has_materials": true,
"has_machine_materials": true,
"has_machine_quality": true
},
"overrides": {

View file

@ -11,6 +11,9 @@
"file_formats": "text/x-gcode",
"icon": "icon_ultimaker.png",
"platform": "ultimaker_platform.stl",
"has_materials": true,
"preferred_material": "*pla*",
"preferred_quality": "*normal*",
"pages": [
"SelectUpgradedParts",
"UpgradeFirmware",

View file

@ -1,9 +0,0 @@
[general]
version = 2
name = high
definition = fdmprinter
[metadata]
type = quality
[values]

View file

@ -1,9 +0,0 @@
[general]
version = 2
name = normal
definition = fdmprinter
[metadata]
type = quality
[values]

View file

@ -1,12 +0,0 @@
[general]
version = 2
name = ABS
definition = fdmprinter
[metadata]
type = material
[values]
material_print_temperature = 250
material_bed_temperature = 80
material_flow = 107

View file

@ -1,11 +0,0 @@
[general]
version = 2
name = CPE
definition = fdmprinter
[metadata]
type = material
[values]
material_print_temperature = 250
material_bed_temperature = 70

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Generic PLA profile. Serves as an example file, data in this file is not correct.
-->
<fdmmaterial xmlns="http://www.ultimaker.com/material">
<metadata>
<name>
<brand>Generic</brand>
<material>ABS</material>
<color>Generic</color>
</name>
<GUID>506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9</GUID>
<version>0</version>
<color_code>#FF0000</color_code>
</metadata>
<properties>
<density>1.07</density>
<diameter>2.85</diameter>
</properties>
<settings>
<setting key="print temperature">250</setting>
<setting key="heated bed temperature">80</setting>
<machine>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2+"/>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2extended+"/>
<hotend id="0.25 mm" />
<hotend id="0.4 mm" />
<hotend id="0.6 mm" />
<hotend id="0.8 mm" />
</machine>
</settings>
</fdmmaterial>

View file

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Generic PLA profile. Serves as an example file, data in this file is not correct.
-->
<fdmmaterial xmlns="http://www.ultimaker.com/material">
<metadata>
<name>
<brand>Generic</brand>
<material>CPE</material>
<color>Generic</color>
</name>
<GUID>506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9</GUID>
<version>0</version>
<color_code>#0000FF</color_code>
</metadata>
<properties>
<density>0.94</density>
<diameter>2.85</diameter>
</properties>
<settings>
<setting key="print temperature">250</setting>
<setting key="heated bed temperature">70</setting>
<machine>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2+"/>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2extended+"/>
<hotend id="0.25 mm" />
<hotend id="0.4 mm" />
<hotend id="0.6 mm" />
<hotend id="0.8 mm" />
</machine>
</settings>
</fdmmaterial>

View file

@ -11,7 +11,7 @@ Generic PLA profile. Serves as an example file, data in this file is not correct
</name>
<GUID>506c9f0d-e3aa-4bd4-b2d2-23e2425b1aa9</GUID>
<version>0</version>
<color_code>#FFFFFF</color_code>
<color_code>#00FF00</color_code>
</metadata>
<properties>
<density>1.3</density>
@ -20,28 +20,15 @@ Generic PLA profile. Serves as an example file, data in this file is not correct
<settings>
<setting key="print temperature">210</setting>
<setting key="heated bed temperature">60</setting>
<setting key="standby temperature">175</setting>
<machine>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2+"/>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker2extended+"/>
<setting key="standby temperature">150</setting>
<setting key="processing temperature graph">
<point flow="2" temperature="180"/>
<point flow="10" temperature="230"/>
</setting>
</machine>
<machine>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker Original"/>
<machine_identifier manufacturer="Ultimaker" product="Ultimaker Original+"/>
<setting key="standby temperature">150</setting>
<hotend id="0.8mm">
<setting key="standby temperature">80</setting>
</hotend>
<hotend id="0.6mm">
<setting key="standby temperature">100</setting>
</hotend>
<hotend id="0.25 mm" />
<hotend id="0.4 mm" />
<hotend id="0.6 mm" />
<hotend id="0.8 mm" />
</machine>
</settings>
</fdmmaterial>

View file

@ -1,10 +0,0 @@
[general]
version = 2
name = PLA
definition = fdmprinter
[metadata]
type = material
[values]
material_bed_temperature = 60

View file

@ -1,10 +0,0 @@
[general]
version = 1
name = High Quality
weight = -3
[settings]
layer_height = 0.06
speed_topbottom = 15
speed_infill = 80

View file

@ -1,8 +0,0 @@
[general]
version = 1
name = Normal Quality
weight = -2
[settings]
speed_topbottom = 15
speed_infill = 80

View file

@ -1,9 +0,0 @@
[general]
version = 1
name = Ulti Quality
weight = -4
[settings]
layer_height = 0.04
speed_topbottom = 15
speed_infill = 80

View file

@ -1,9 +0,0 @@
[general]
version = 1
type = material
name = ABS
[settings]
material_print_temperature = 250
material_bed_temperature = 80
material_flow = 107

View file

@ -1,8 +0,0 @@
[general]
version = 1
type = material
name = CPE
[settings]
material_print_temperature = 250
material_bed_temperature = 70

View file

@ -1,7 +0,0 @@
[general]
version = 1
type = material
name = PLA
[settings]
material_bed_temperature = 60

View file

@ -1,21 +0,0 @@
[general]
version = 1
name = Ulti Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = PLA
weight = -4
[settings]
line_width = 0.35
layer_height = 0.04
layer_height_0 = 0.26
wall_thickness = 1.4
top_bottom_thickness = 1.12
infill_sparse_density = 25
speed_print = 30
speed_infill = 50
speed_wall_x = 40
speed_topbottom = 20
speed_layer_0 = 25
cool_min_layer_time_fan_speed_max = 15

View file

@ -6,6 +6,7 @@ pragma Singleton
import QtQuick 2.2
import QtQuick.Controls 1.1
import UM 1.1 as UM
import Cura 1.0 as Cura
Item
{
@ -109,24 +110,24 @@ Item
Action
{
id: updateProfileAction;
enabled: UM.ActiveProfile.valid && !UM.ActiveProfile.readOnly && UM.ActiveProfile.hasCustomisedValues
text: catalog.i18nc("@action:inmenu menubar:profile","&Update Current Profile");
onTriggered: UM.ActiveProfile.updateProfile();
enabled: Cura.MachineManager.isGlobalStackValid && Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
text: catalog.i18nc("@action:inmenu menubar:profile","&Update profile with current settings");
onTriggered: Cura.MachineManager.updateQualityContainerFromUserContainer()
}
Action
{
id: resetProfileAction;
enabled: UM.ActiveProfile.valid && UM.ActiveProfile.hasCustomisedValues
text: catalog.i18nc("@action:inmenu menubar:profile","&Reload Current Profile");
onTriggered: UM.ActiveProfile.discardChanges();
enabled: Cura.MachineManager.hasUserSettings
text: catalog.i18nc("@action:inmenu menubar:profile","&Discard current settings");
onTriggered: Cura.MachineManager.clearUserSettings();
}
Action
{
id: addProfileAction;
enabled: UM.ActiveProfile.valid
text: catalog.i18nc("@action:inmenu menubar:profile","&Create New Profile...");
enabled: Cura.MachineManager.isGlobalStackValid && Cura.MachineManager.hasUserSettings
text: catalog.i18nc("@action:inmenu menubar:profile","&Create profile from current settings...");
}
Action

View file

@ -10,8 +10,6 @@ import QtQuick.Dialogs 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
import "."
UM.MainWindow
{
id: base
@ -56,7 +54,7 @@ UM.MainWindow
title: catalog.i18nc("@title:menu menubar:toplevel","&File");
MenuItem {
action: Actions.open;
action: Cura.Actions.open;
}
Menu
@ -95,7 +93,7 @@ UM.MainWindow
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, { "filter_by_machine": false });
onTriggered: UM.OutputDeviceManager.requestWriteSelectionToDevice("local_file", PrintInformation.jobName, { "filter_by_machine": false });
}
Menu
{
@ -111,18 +109,18 @@ UM.MainWindow
MenuItem
{
text: model.description;
onTriggered: UM.OutputDeviceManager.requestWriteToDevice(model.id, Printer.jobName, { "filter_by_machine": false });
onTriggered: UM.OutputDeviceManager.requestWriteToDevice(model.id, PrintInformation.jobName, { "filter_by_machine": false });
}
onObjectAdded: saveAllMenu.insertItem(index, object)
onObjectRemoved: saveAllMenu.removeItem(object)
}
}
MenuItem { action: Actions.reloadAll; }
MenuItem { action: Cura.Actions.reloadAll; }
MenuSeparator { }
MenuItem { action: Actions.quit; }
MenuItem { action: Cura.Actions.quit; }
}
Menu
@ -130,17 +128,17 @@ UM.MainWindow
//: Edit menu
title: catalog.i18nc("@title:menu menubar:toplevel","&Edit");
MenuItem { action: Actions.undo; }
MenuItem { action: Actions.redo; }
MenuItem { action: Cura.Actions.undo; }
MenuItem { action: Cura.Actions.redo; }
MenuSeparator { }
MenuItem { action: Actions.deleteSelection; }
MenuItem { action: Actions.deleteAll; }
MenuItem { action: Actions.resetAllTranslation; }
MenuItem { action: Actions.resetAll; }
MenuItem { action: Cura.Actions.deleteSelection; }
MenuItem { action: Cura.Actions.deleteAll; }
MenuItem { action: Cura.Actions.resetAllTranslation; }
MenuItem { action: Cura.Actions.resetAll; }
MenuSeparator { }
MenuItem { action: Actions.groupObjects;}
MenuItem { action: Actions.mergeObjects;}
MenuItem { action: Actions.unGroupObjects;}
MenuItem { action: Cura.Actions.groupObjects;}
MenuItem { action: Cura.Actions.mergeObjects;}
MenuItem { action: Cura.Actions.unGroupObjects;}
}
Menu
@ -180,7 +178,7 @@ UM.MainWindow
text: model.name;
checkable: true;
checked: Cura.MachineManager.activeMachineId == model.id
exclusiveGroup: machineSelectionMenuGroup;
exclusiveGroup: machineMenuGroup;
onTriggered: Cura.MachineManager.setActiveMachine(model.id);
}
onObjectAdded: machineMenu.insertItem(index, object)
@ -216,8 +214,8 @@ UM.MainWindow
MenuSeparator { visible: Cura.MachineManager.hasVariants; }
MenuItem { action: Actions.addMachine; }
MenuItem { action: Actions.configureMachines; }
MenuItem { action: Cura.Actions.addMachine; }
MenuItem { action: Cura.Actions.configureMachines; }
}
Menu
@ -228,7 +226,26 @@ UM.MainWindow
Instantiator
{
id: profileMenuInstantiator
// model: UM.ProfilesModel {}
model: UM.InstanceContainersModel
{
filter:
{
var result = { "type": "quality" };
if(Cura.MachineManager.filterQualityByMachine)
{
result.definition = Cura.MachineManager.activeDefinitionId;
if(Cura.MachineManager.hasMaterials)
{
result.material = Cura.MachineManager.activeMaterialId;
}
}
else
{
result.definition = "fdmprinter"
}
return result
}
}
property int separatorIndex: -1
Loader {
@ -271,30 +288,20 @@ UM.MainWindow
{
id: item
text: model_data ? model_data.name : ""
checkable: true;
checked: model_data ? model_data.active : false;
exclusiveGroup: profileMenuGroup;
onTriggered:
{
UM.MachineManager.setActiveProfile(model_data.name);
if (!model_data.active) {
//Selecting a profile was canceled; undo menu selection
profileMenuInstantiator.model.setProperty(model_index, "active", false);
var activeProfileName = UM.MachineManager.activeProfile;
var activeProfileIndex = profileMenuInstantiator.model.find("name", activeProfileName);
profileMenuInstantiator.model.setProperty(activeProfileIndex, "active", true);
}
}
checkable: true
checked: Cura.MachineManager.activeQualityId == model_data.id
exclusiveGroup: profileMenuGroup
onTriggered: Cura.MachineManager.setActiveQuality(model_data.id)
}
}
MenuSeparator { id: profileMenuSeparator }
MenuItem { action: Actions.updateProfile; }
MenuItem { action: Actions.resetProfile; }
MenuItem { action: Actions.addProfile; }
MenuItem { action: Cura.Actions.addProfile }
MenuItem { action: Cura.Actions.updateProfile }
MenuItem { action: Cura.Actions.resetProfile }
MenuSeparator { }
MenuItem { action: Actions.manageProfiles; }
MenuItem { action: Cura.Actions.manageProfiles }
}
Menu
@ -305,7 +312,7 @@ UM.MainWindow
Instantiator
{
id: extenions
id: extensions
model: UM.ExtensionModel { }
Menu
@ -320,7 +327,7 @@ UM.MainWindow
MenuItem
{
text: model.text
onTriggered: extenions.model.subMenuTriggered(name, model.text)
onTriggered: extensions.model.subMenuTriggered(name, model.text)
}
onObjectAdded: sub_menu.insertItem(index, object)
onObjectRemoved: sub_menu.removeItem(object)
@ -337,7 +344,7 @@ UM.MainWindow
//: Settings menu
title: catalog.i18nc("@title:menu menubar:toplevel","&Settings");
MenuItem { action: Actions.preferences; }
MenuItem { action: Cura.Actions.preferences; }
}
Menu
@ -345,11 +352,11 @@ UM.MainWindow
//: Help menu
title: catalog.i18nc("@title:menu menubar:toplevel","&Help");
MenuItem { action: Actions.showEngineLog; }
MenuItem { action: Actions.documentation; }
MenuItem { action: Actions.reportBug; }
MenuItem { action: Cura.Actions.showEngineLog; }
MenuItem { action: Cura.Actions.documentation; }
MenuItem { action: Cura.Actions.reportBug; }
MenuSeparator { }
MenuItem { action: Actions.about; }
MenuItem { action: Cura.Actions.about; }
}
}
@ -439,7 +446,7 @@ UM.MainWindow
left: parent.left;
//leftMargin: UM.Theme.getSize("loadfile_margin").width
}
action: Actions.open;
action: Cura.Actions.open;
}
Image
@ -526,13 +533,6 @@ UM.MainWindow
}
width: UM.Theme.getSize("sidebar").width;
addMachineAction: Actions.addMachine;
configureMachinesAction: Actions.configureMachines;
addProfileAction: Actions.addProfile;
updateProfileAction: Actions.updateProfile;
resetProfileAction: Actions.resetProfile;
manageProfilesAction: Actions.manageProfiles;
}
}
}
@ -573,16 +573,16 @@ UM.MainWindow
Connections
{
target: Actions.preferences
target: Cura.Actions.preferences
onTriggered: preferences.visible = true
}
Connections
{
target: Actions.addProfile
target: Cura.Actions.addProfile
onTriggered:
{
UM.MachineManager.createProfile();
Cura.MachineManager.newQualityContainerFromQualityAndUser();
preferences.setPage(5);
preferences.show();
@ -593,7 +593,7 @@ UM.MainWindow
Connections
{
target: Actions.configureMachines
target: Cura.Actions.configureMachines
onTriggered:
{
preferences.visible = true;
@ -603,7 +603,7 @@ UM.MainWindow
Connections
{
target: Actions.manageProfiles
target: Cura.Actions.manageProfiles
onTriggered:
{
preferences.visible = true;
@ -613,7 +613,7 @@ UM.MainWindow
Connections
{
target: Actions.configureSettingVisibility
target: Cura.Actions.configureSettingVisibility
onTriggered:
{
preferences.visible = true;
@ -636,22 +636,22 @@ UM.MainWindow
id: objectContextMenu;
property variant objectId: -1;
MenuItem { action: Actions.centerObject; }
MenuItem { action: Actions.deleteObject; }
MenuItem { action: Actions.multiplyObject; }
MenuItem { action: Cura.Actions.centerObject; }
MenuItem { action: Cura.Actions.deleteObject; }
MenuItem { action: Cura.Actions.multiplyObject; }
MenuSeparator { }
MenuItem { action: Actions.deleteAll; }
MenuItem { action: Actions.reloadAll; }
MenuItem { action: Actions.resetAllTranslation; }
MenuItem { action: Actions.resetAll; }
MenuItem { action: Cura.Actions.deleteAll; }
MenuItem { action: Cura.Actions.reloadAll; }
MenuItem { action: Cura.Actions.resetAllTranslation; }
MenuItem { action: Cura.Actions.resetAll; }
MenuSeparator { }
MenuItem { action: Actions.groupObjects; }
MenuItem { action: Actions.mergeObjects; }
MenuItem { action: Actions.unGroupObjects; }
MenuItem { action: Cura.Actions.groupObjects; }
MenuItem { action: Cura.Actions.mergeObjects; }
MenuItem { action: Cura.Actions.unGroupObjects; }
Connections
{
target: Actions.deleteObject
target: Cura.Actions.deleteObject
onTriggered:
{
if(objectContextMenu.objectId != 0)
@ -664,7 +664,7 @@ UM.MainWindow
Connections
{
target: Actions.multiplyObject
target: Cura.Actions.multiplyObject
onTriggered:
{
if(objectContextMenu.objectId != 0)
@ -677,7 +677,7 @@ UM.MainWindow
Connections
{
target: Actions.centerObject
target: Cura.Actions.centerObject
onTriggered:
{
if(objectContextMenu.objectId != 0)
@ -692,14 +692,14 @@ UM.MainWindow
Menu
{
id: contextMenu;
MenuItem { action: Actions.deleteAll; }
MenuItem { action: Actions.reloadAll; }
MenuItem { action: Actions.resetAllTranslation; }
MenuItem { action: Actions.resetAll; }
MenuItem { action: Cura.Actions.deleteAll; }
MenuItem { action: Cura.Actions.reloadAll; }
MenuItem { action: Cura.Actions.resetAllTranslation; }
MenuItem { action: Cura.Actions.resetAll; }
MenuSeparator { }
MenuItem { action: Actions.groupObjects; }
MenuItem { action: Actions.mergeObjects; }
MenuItem { action: Actions.unGroupObjects; }
MenuItem { action: Cura.Actions.groupObjects; }
MenuItem { action: Cura.Actions.mergeObjects; }
MenuItem { action: Cura.Actions.unGroupObjects; }
}
Connections
@ -720,13 +720,13 @@ UM.MainWindow
Connections
{
target: Actions.quit
target: Cura.Actions.quit
onTriggered: base.visible = false;
}
Connections
{
target: Actions.toggleFullScreen
target: Cura.Actions.toggleFullScreen
onTriggered: base.toggleFullscreen();
}
@ -756,7 +756,7 @@ UM.MainWindow
Connections
{
target: Actions.open
target: Cura.Actions.open
onTriggered: openDialog.open()
}
@ -767,7 +767,7 @@ UM.MainWindow
Connections
{
target: Actions.showEngineLog
target: Cura.Actions.showEngineLog
onTriggered: engineLog.visible = true;
}
@ -778,7 +778,7 @@ UM.MainWindow
Connections
{
target: Actions.addMachine
target: Cura.Actions.addMachine
onTriggered: addMachineDialog.visible = true;
}
@ -789,7 +789,7 @@ UM.MainWindow
Connections
{
target: Actions.about
target: Cura.Actions.about
onTriggered: aboutDialog.visible = true;
}

View file

@ -5,7 +5,6 @@ import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Controls.Styles 1.1
import QtQml.Models 2.2
import UM 1.1 as UM
@ -207,10 +206,11 @@ UM.PreferencesPage
}
}
DelegateModel
ListView
{
id: plugins
model: UM.PluginsModel { }
visible: false
}
}
}

View file

@ -10,62 +10,25 @@ import UM 1.1 as UM
import Cura 1.0 as Cura
Rectangle {
id: base;
id: base
property bool activity: Printer.getPlatformActivity;
property bool activity: Printer.getPlatformActivity
property string fileBaseName
property variant activeMachineName: Cura.MachineManager.activeMachineName
onActiveMachineNameChanged:
{
base.createFileName()
printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName);
}
UM.I18nCatalog { id: catalog; name:"cura"}
property variant printDuration: PrintInformation.currentPrintTime;
property real printMaterialAmount: PrintInformation.materialAmount;
property variant printDuration: PrintInformation.currentPrintTime
property real printMaterialAmount: PrintInformation.materialAmount
height: childrenRect.height
color: "transparent"
function createFileName()
{
var splitMachineName = Cura.MachineManager.activeMachineName.split(" ")
var abbrMachine = "";
if ((UM.Preferences.getValue("cura/jobname_prefix")))
{
for (var i = 0; i < splitMachineName.length; i++)
{
if (splitMachineName[i].search(/ultimaker/i) != -1)
{
abbrMachine += "UM";
}
else
{
if (splitMachineName[i].charAt(0).search(/[0-9]/g) == -1)
{
abbrMachine += splitMachineName[i].charAt(0);
}
}
}
var regExpAdditives = /[0-9\+]/g;
var resultAdditives = splitMachineName[i].match(regExpAdditives);
if (resultAdditives != null)
{
for (var j = 0; j < resultAdditives.length; j++)
{
abbrMachine += resultAdditives[j];
}
}
printJobTextfield.text = abbrMachine + "_" + base.fileBaseName;
}
else
{
printJobTextfield.text = base.fileBaseName;
}
}
Connections
{
target: backgroundItem
@ -78,20 +41,20 @@ Rectangle {
onActivityChanged: {
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()
base.fileBaseName = PrintInformation.jobName; //get the fileBaseName from PrintInformation.py because this saves the filebase when the file is opened using the terminal (or something alike)
printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName);
}
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()
printJobTextfield.text = PrintInformation.createJobName(base.fileBaseName);
}
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 = ''
printJobTextfield.text = '';
}
}
Rectangle
Rectangle
{
id: jobNameRow
anchors.top: parent.top
@ -112,22 +75,22 @@ Rectangle {
width: UM.Theme.getSize("save_button_specs_icons").width
height: UM.Theme.getSize("save_button_specs_icons").height
onClicked:
onClicked:
{
printJobTextfield.selectAll()
printJobTextfield.focus = true
printJobTextfield.selectAll();
printJobTextfield.focus = true;
}
style: ButtonStyle
{
background: Rectangle
{
color: "transparent"
UM.RecolorImage
UM.RecolorImage
{
width: UM.Theme.getSize("save_button_specs_icons").width
height: UM.Theme.getSize("save_button_specs_icons").height
sourceSize.width: width
sourceSize.height: width
width: UM.Theme.getSize("save_button_specs_icons").width;
height: UM.Theme.getSize("save_button_specs_icons").height;
sourceSize.width: width;
sourceSize.height: width;
color: control.hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("text");
source: UM.Theme.getIcon("pencil");
}
@ -147,15 +110,15 @@ Rectangle {
text: ''
horizontalAlignment: TextInput.AlignRight
onTextChanged: {
Printer.setJobName(text)
PrintInformation.setJobName(text);
}
onEditingFinished: {
if (printJobTextfield.text != ''){
printJobTextfield.focus = false
printJobTextfield.focus = false;
}
}
validator: RegExpValidator {
regExp: /^[^\\ \/ \.]*$/
regExp: /^[^\\ \/ \*\?\|\[\]]*$/
}
style: TextFieldStyle{
textColor: UM.Theme.getColor("setting_control_text");
@ -200,7 +163,7 @@ Rectangle {
sourceSize.width: width
sourceSize.height: width
color: UM.Theme.getColor("text_subtext")
source: UM.Theme.getIcon("print_time");
source: UM.Theme.getIcon("print_time")
}
Label{
id: timeSpec
@ -221,7 +184,7 @@ Rectangle {
sourceSize.width: width
sourceSize.height: width
color: UM.Theme.getColor("text_subtext")
source: UM.Theme.getIcon("category_material");
source: UM.Theme.getIcon("category_material")
}
Label{
id: lengthSpec
@ -229,7 +192,7 @@ Rectangle {
anchors.verticalCenter: parent.verticalCenter
font: UM.Theme.getFont("small")
color: UM.Theme.getColor("text_subtext")
text: base.printMaterialAmount <= 0 ? catalog.i18nc("@label", "0.0 m") : catalog.i18nc("@label", "%1 m").arg(base.printMaterialAmount)
text: catalog.i18nc("@label", "%1 m").arg(base.printMaterialAmount > 0 ? base.printMaterialAmount : 0)
}
}
}

View file

@ -12,11 +12,19 @@ UM.ManagementPage
id: base;
title: catalog.i18nc("@title:tab", "Printers");
property int numInstances: model.rowCount();
model: UM.ContainerStacksModel
{
filter: {"type": "machine"}
onDataChanged: numInstances = model.rowCount()
}
activeId: Cura.MachineManager.activeMachineId
activeIndex: {
for(var i = 0; i < model.rowCount(); i++) {
if (model.getItem(i).id == Cura.MachineManager.activeMachineId) {
return i;
}
}
return -1;
}
onAddObject: Printer.requestAddPrinter()
@ -24,9 +32,9 @@ UM.ManagementPage
onRenameObject: renameDialog.open();
onActivateObject: Cura.MachineManager.setActiveMachine(base.currentItem.id)
removeEnabled: base.currentItem != null && numInstances > 1
renameEnabled: base.currentItem != null && numInstances > 0
activateEnabled: base.currentItem != null
removeEnabled: base.currentItem != null && model.rowCount() > 1
renameEnabled: base.currentItem != null
activateEnabled: base.currentItem != null && base.currentItem.id != Cura.MachineManager.activeMachineId
Flow
{

View file

@ -14,13 +14,37 @@ UM.ManagementPage
title: catalog.i18nc("@title:tab", "Materials");
model: UM.InstanceContainersModel { filter: { "type": "material", "definition": Cura.MachineManager.activeDefinitionId } }
/*
onAddObject: { var selectedMaterial = UM.MaterialManager.createProfile(); base.selectMaterial(selectedMaterial); }
onRemoveObject: confirmDialog.open();
onRenameObject: { renameDialog.open(); renameDialog.selectText(); }
*/
// activateEnabled: false
model: UM.InstanceContainersModel
{
filter:
{
var result = { "type": "material" }
if(Cura.MachineManager.filterMaterialsByMachine)
{
result.definition = Cura.MachineManager.activeDefinitionId
if(Cura.MachineManager.hasVariants)
{
result.variant = Cura.MachineManager.activeVariantId
}
}
else
{
result.definition = "fdmprinter"
}
return result
}
}
activeId: Cura.MachineManager.activeMaterialId
activeIndex: {
for(var i = 0; i < model.rowCount(); i++) {
if (model.getItem(i).id == Cura.MachineManager.activeMaterialId) {
return i;
}
}
return -1;
}
addEnabled: false
removeEnabled: false
renameEnabled: false
@ -185,7 +209,7 @@ UM.ManagementPage
onCurrentItemChanged:
{
if(!currentItem == null)
if(currentItem == null)
{
return
}

View file

@ -6,25 +6,70 @@ import QtQuick.Controls 1.1
import QtQuick.Dialogs 1.2
import UM 1.2 as UM
import Cura 1.0 as Cura
UM.ManagementPage
{
id: base;
title: catalog.i18nc("@title:tab", "Profiles");
addText: catalog.i18nc("@label", "Duplicate")
addText: base.currentItem && (base.currentItem.id == Cura.MachineManager.activeQualityId) ? catalog.i18nc("@label", "Create") : catalog.i18nc("@label", "Duplicate")
model: UM.InstanceContainersModel { filter: { "type": "quality" } }
onAddObject: {
var selectedProfile;
if (objectList.currentIndex == 0) {
// Current settings
selectedProfile = UM.MachineManager.createProfile();
} else {
selectedProfile = UM.MachineManager.duplicateProfile(currentItem.name);
model: UM.InstanceContainersModel
{
filter:
{
var result = { "type": "quality" };
if(Cura.MachineManager.filterQualityByMachine)
{
result.definition = Cura.MachineManager.activeDefinitionId;
if(Cura.MachineManager.hasMaterials)
{
result.material = Cura.MachineManager.activeMaterialId;
}
}
else
{
result.definition = "fdmprinter"
}
return result
}
base.selectProfile(selectedProfile);
}
section.property: "readOnly"
section.delegate: Rectangle
{
width: objectListContainer.viewport.width;
height: childrenRect.height;
Label
{
anchors.left: parent.left;
anchors.leftMargin: UM.Theme.getSize("default_lining").width;
text: section == "true" ? catalog.i18nc("@label", "Protected profiles") : catalog.i18nc("@label", "Custom profiles")
font.bold: true
}
}
activeId: Cura.MachineManager.activeQualityId
activeIndex: {
for(var i = 0; i < model.rowCount(); i++) {
if (model.getItem(i).id == Cura.MachineManager.activeQualityId) {
return i;
}
}
return -1;
}
onActivateObject: Cura.MachineManager.setActiveQuality(currentItem.id)
onAddObject: {
var selectedContainer;
if (objectList.currentItem.id == Cura.MachineManager.activeQualityId) {
selectedContainer = Cura.MachineManager.newQualityContainerFromQualityAndUser();
} else {
selectedContainer = Cura.MachineManager.duplicateContainer(base.currentItem.id);
}
base.selectContainer(selectedContainer);
renameDialog.removeWhenRejected = true;
renameDialog.open();
@ -33,15 +78,19 @@ UM.ManagementPage
onRemoveObject: confirmDialog.open();
onRenameObject: { renameDialog.removeWhenRejected = false; renameDialog.open(); renameDialog.selectText(); }
activateEnabled: currentItem != null ? currentItem.id != Cura.MachineManager.activeQualityId : false;
addEnabled: currentItem != null;
removeEnabled: currentItem != null ? !currentItem.readOnly : false;
renameEnabled: currentItem != null ? !currentItem.readOnly : false;
scrollviewCaption: catalog.i18nc("@label %1 is printer name","Printer: %1").arg(UM.MachineManager.activeMachineInstance)
scrollviewCaption: catalog.i18nc("@label %1 is printer name","Printer: %1").arg(Cura.MachineManager.activeMachineName)
signal selectProfile(string name)
onSelectProfile: {
objectList.currentIndex = objectList.model.find("name", name);
signal showProfileNameDialog()
onShowProfileNameDialog: { renameDialog.removeWhenRejected = true; renameDialog.open(); renameDialog.selectText(); }
signal selectContainer(string id)
onSelectContainer: {
objectList.currentIndex = objectList.model.find("id", id);
}
Item {
@ -56,71 +105,109 @@ UM.ManagementPage
elide: Text.ElideRight
}
ScrollView {
Row {
id: currentSettingsActions
visible: currentItem.id == Cura.MachineManager.activeQualityId
anchors.left: parent.left
anchors.top: profileName.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
Button
{
text: {
return catalog.i18nc("@action:button", "Update profile with current settings");
}
enabled: Cura.MachineManager.hasUserSettings && !Cura.MachineManager.isReadOnly(Cura.MachineManager.activeQualityId)
onClicked: Cura.MachineManager.updateQualityContainerFromUserContainer()
}
Button
{
text: catalog.i18nc("@action:button", "Discard current settings");
enabled: Cura.MachineManager.hasUserSettings
onClicked: Cura.MachineManager.clearUserSettings();
}
}
Column {
id: profileNotices
anchors.top: currentSettingsActions.visible ? currentSettingsActions.bottom : currentSettingsActions.anchors.top
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left
anchors.right: parent.right
spacing: UM.Theme.getSize("default_margin").height
Label {
id: defaultsMessage
visible: !currentItem.metadata.has_settings
text: catalog.i18nc("@action:label", "This profile has no settings and uses the defaults specified by the printer.")
wrapMode: Text.WordWrap
width: parent.width
}
Label {
id: noCurrentSettingsMessage
visible: currentItem.id == Cura.MachineManager.activeQualityId && !Cura.MachineManager.hasUserSettings
text: catalog.i18nc("@action:label", "Your current settings match the selected profile.")
wrapMode: Text.WordWrap
width: parent.width
}
}
ScrollView {
id: scrollView
anchors.left: parent.left
anchors.top: profileNotices.visible ? profileNotices.bottom : profileNotices.anchors.top
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.right: parent.right
anchors.bottom: parent.bottom
Column
{
spacing: UM.Theme.getSize("default_margin").height
Row
{
visible: base.currentItem.id == -1 || base.currentItem.active
Button
{
text: {
var profileName = UM.MachineManager.activeProfile;
profileName = (profileName.length > 20) ? profileName.substring(0, 20) + '...' : profileName;
return catalog.i18nc("@action:button", "Update \"%1\"".arg(profileName));
}
enabled: UM.ActiveProfile.hasCustomisedValues && !UM.ActiveProfile.readOnly
onClicked: UM.ActiveProfile.updateProfile()
ListView {
model: Cura.ContainerSettingsModel{ containers: (currentItem.id == Cura.MachineManager.activeQualityId) ? [base.currentItem.id, Cura.MachineManager.activeUserProfileId] : [base.currentItem.id] }
delegate: Row {
property variant setting: model
spacing: UM.Theme.getSize("default_margin").width/2
Label {
text: model.label
elide: Text.ElideMiddle
width: scrollView.width / 100 * 40
}
Button
{
text: catalog.i18nc("@action:button", "Discard changes");
enabled: UM.ActiveProfile.hasCustomisedValues
onClicked: UM.ActiveProfile.discardChanges()
Repeater {
model: setting.values.length
Label {
text: setting.values[index].toString()
width: scrollView.width / 100 * 15
elide: Text.ElideRight
font.strikeout: index < setting.values.length - 1 && setting.values[index + 1] != ""
opacity: font.strikeout ? 0.5 : 1
}
}
Label {
text: model.unit
}
}
Grid
{
id: containerGrid
columns: 2
header: Row {
visible: currentItem.id == Cura.MachineManager.activeQualityId
spacing: UM.Theme.getSize("default_margin").width
Label {
text: base.currentItem == null ? "" :
base.currentItem.id == -1 ? catalog.i18nc("@label", "Based on") : catalog.i18nc("@label", "Profile type")
text: catalog.i18nc("@action:label", "Profile:")
width: scrollView.width / 100 * 55
horizontalAlignment: Text.AlignRight
font.bold: true
}
Label {
text: base.currentItem == null ? "" :
base.currentItem.id == -1 ? UM.MachineManager.activeProfile :
base.currentItem.readOnly ? catalog.i18nc("@label", "Protected profile") : catalog.i18nc("@label", "Custom profile")
}
Column {
Repeater {
model: base.currentItem ? base.currentItem.settings : null
Label {
text: modelData.name.toString();
elide: Text.ElideMiddle;
}
}
}
Column {
Repeater {
model: base.currentItem ? base.currentItem.settings : null
Label { text: modelData.value.toString(); }
}
text: catalog.i18nc("@action:label", "Current:")
visible: currentItem.id == Cura.MachineManager.activeQualityId
font.bold: true
}
}
section.property: "category"
section.criteria: ViewSection.FullString
section.delegate: Label {
text: section
font.bold: true
}
}
}
}
@ -136,9 +223,10 @@ UM.ManagementPage
Button
{
text: catalog.i18nc("@action:button", "Export");
iconName: "document-export";
onClicked: exportDialog.open();
text: catalog.i18nc("@action:button", "Export")
iconName: "document-export"
onClicked: exportDialog.open()
enabled: currentItem != null
}
}
@ -148,19 +236,19 @@ UM.ManagementPage
UM.ConfirmRemoveDialog
{
id: confirmDialog;
object: base.currentItem != null ? base.currentItem.name : "";
onYes: base.model.removeProfile(base.currentItem.name);
id: confirmDialog
object: base.currentItem != null ? base.currentItem.name : ""
onYes: Cura.MachineManager.removeQualityContainer(base.currentItem.id)
}
UM.RenameDialog
{
id: renameDialog;
object: base.currentItem != null ? base.currentItem.name : "";
property bool removeWhenRejected: false;
onAccepted: base.model.renameProfile(base.currentItem.name, newName.trim());
object: base.currentItem != null ? base.currentItem.name : ""
property bool removeWhenRejected: false
onAccepted: Cura.MachineManager.renameQualityContainer(base.currentItem.id, newName)
onRejected: {
if(removeWhenRejected) {
base.model.removeProfile(base.currentItem.name)
Cura.MachineManager.removeQualityContainer(base.currentItem.id)
}
}
}
@ -208,7 +296,7 @@ UM.ManagementPage
folder: base.model.getDefaultPath()
onAccepted:
{
var result = base.model.exportProfile(base.currentItem.id, base.currentItem.name, fileUrl, selectedNameFilter)
var result = base.model.exportProfile(base.currentItem.id, fileUrl, selectedNameFilter)
if(result && result.status == "error")
{
messageDialog.icon = StandardIcon.Critical

View file

@ -1,160 +0,0 @@
// 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.Controls.Styles 1.1
import QtQuick.Layouts 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
Item{
id: base;
UM.I18nCatalog { id: catalog; name:"cura"}
property int totalHeightProfileSetup: childrenRect.height
property Action manageProfilesAction
property Action addProfileAction
property Action updateProfileAction
property Action resetProfileAction
signal showTooltip(Item item, point location, string text)
signal hideTooltip()
Rectangle{
id: globalProfileRow
anchors.top: base.top
height: UM.Theme.getSize("sidebar_setup").height
width: base.width
Label{
id: globalProfileLabel
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width;
anchors.verticalCenter: parent.verticalCenter
text: catalog.i18nc("@label","Profile:");
width: parent.width/100*45
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
ToolButton {
property int rightMargin: customisedSettings.visible ? customisedSettings.width + UM.Theme.getSize("default_margin").width / 2 : 0
id: globalProfileSelection
text: Cura.MachineManager.activeQualityName
width: parent.width/100*55
height: UM.Theme.getSize("setting_control").height
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter
tooltip: Cura.MachineManager.activeQualityName
style: UM.Theme.styles.sidebar_header_button
menu: Menu
{
id: profileSelectionMenu
Instantiator
{
id: profileSelectionInstantiator
model: UM.InstanceContainersModel
{
filter: {"type": "quality"}
}
property int separatorIndex: -1
Loader {
property QtObject model_data: model
property int model_index: index
sourceComponent: menuItemDelegate
}
onObjectAdded:
{
//Insert a separator between readonly and custom profiles
if(separatorIndex < 0 && index > 0) {
if(model.getItem(index-1).readOnly != model.getItem(index).readOnly) {
profileSelectionMenu.insertSeparator(index);
separatorIndex = index;
}
}
//Because of the separator, custom profiles move one index lower
profileSelectionMenu.insertItem((model.getItem(index).readOnly) ? index : index + 1, object.item);
}
onObjectRemoved:
{
//When adding a profile, the menu is rebuild by removing all items.
//If a separator was added, we need to remove that too.
if(separatorIndex >= 0)
{
profileSelectionMenu.removeItem(profileSelectionMenu.items[separatorIndex])
separatorIndex = -1;
}
profileSelectionMenu.removeItem(object.item);
}
}
ExclusiveGroup { id: profileSelectionMenuGroup; }
Component
{
id: menuItemDelegate
MenuItem
{
id: item
text: model_data ? model_data.name : ""
checkable: true;
checked: Cura.MachineManager.activeQualityId == model_data.id
exclusiveGroup: profileSelectionMenuGroup;
onTriggered:
{
Cura.MachineManager.setActiveQuality(model_data.id);
/*if (!model_data.active) {
//Selecting a profile was canceled; undo menu selection
profileSelectionInstantiator.model.setProperty(model_index, "active", false);
var activeProfileName = UM.MachineManager.activeProfile;
var activeProfileIndex = profileSelectionInstantiator.model.find("name", activeProfileName);
profileSelectionInstantiator.model.setProperty(activeProfileIndex, "active", true);
}*/
}
}
}
MenuSeparator { }
MenuItem {
action: base.updateProfileAction;
}
MenuItem {
action: base.resetProfileAction;
}
MenuItem {
action: base.addProfileAction;
}
MenuSeparator { }
MenuItem {
action: base.manageProfilesAction;
}
}
}
UM.SimpleButton {
id: customisedSettings
visible: UM.ActiveProfile.hasCustomisedValues
height: parent.height * 0.6
width: parent.height * 0.6
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width
color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button");
iconSource: UM.Theme.getIcon("star");
onClicked: base.manageProfilesAction.trigger()
onEntered:
{
var content = catalog.i18nc("@tooltip","Some setting values are different from the values stored in the profile.\n\nClick to open the profile manager.")
base.showTooltip(globalProfileRow, Qt.point(0, globalProfileRow.height / 2), content)
}
onExited: base.hideTooltip()
}
}
}

View file

@ -98,7 +98,7 @@ Rectangle {
text: UM.OutputDeviceManager.activeDeviceShortDescription
onClicked:
{
UM.OutputDeviceManager.requestWriteToDevice(UM.OutputDeviceManager.activeDevice, Printer.jobName, { "filter_by_machine": true })
UM.OutputDeviceManager.requestWriteToDevice(UM.OutputDeviceManager.activeDevice, PrintInformation.jobName, { "filter_by_machine": true })
}
style: ButtonStyle {

View file

@ -7,8 +7,7 @@ import QtQuick.Controls.Styles 1.1
import QtQuick.Layouts 1.1
import UM 1.1 as UM
import ".."
import Cura 1.0 as Cura
Button {
id: base;
@ -45,7 +44,7 @@ Button {
iconSource: UM.Theme.getIcon("settings");
onClicked: {
Actions.configureSettingVisibility.trigger(definition)
Cura.Actions.configureSettingVisibility.trigger(definition)
}
}
@ -57,9 +56,9 @@ Button {
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width
visible: hiddenValuesCount > 0
height: parent.height / 2;
width: height;
visible: false //hiddenValuesCount > 0
height: parent.height / 2
width: height
onClicked: {
base.showAllHiddenInheritedSettings()

View file

@ -16,6 +16,7 @@ SettingItem
{
id: control
anchors.fill: parent
hoverEnabled: true
property bool checked:
{

View file

@ -0,0 +1,114 @@
// Copyright (c) 2016 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Controls.Styles 1.1
import UM 1.1 as UM
import Cura 1.0 as Cura
SettingItem
{
id: base
contents: ComboBox
{
id: control
model: Cura.ExtrudersModel
{
id: extruders_model
}
textRole: "name"
anchors.fill: parent
MouseArea
{
anchors.fill: parent
acceptedButtons: Qt.NoButton
onWheel: wheel.accepted = true;
}
style: ComboBoxStyle
{
background: Rectangle
{
color:
{
if (!enabled)
{
return UM.Theme.getColor("setting_control_disabled");
}
if(control.hovered || base.activeFocus)
{
return UM.Theme.getColor("setting_control_highlight");
}
else
{
return extruders_model.getItem(index).colour;
}
}
border.width: UM.Theme.getSize("default_lining").width
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
}
label: Item
{
Label
{
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_lining").width
anchors.right: downArrow.left
anchors.rightMargin: UM.Theme.getSize("default_lining").width
anchors.verticalCenter: parent.verticalCenter
text: control.currentText
font: UM.Theme.getFont("default")
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : extruders_model.getItem(index).colour
elide: Text.ElideRight
verticalAlignment: Text.AlignVCenter
}
UM.RecolorImage
{
id: downArrow
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2
anchors.verticalCenter: parent.verticalCenter
source: UM.Theme.getIcon("arrow_bottom")
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
sourceSize.width: width + 5
sourceSize.height: width + 5
color: UM.Theme.getColor("setting_control_text")
}
}
}
onActivated: provider.setPropertyValue("value", extruders_model.getItem(index).index);
onModelChanged: updateCurrentIndex();
Connections
{
target: provider
onPropertiesChanged: control.updateCurrentIndex();
}
function updateCurrentIndex()
{
for(var i = 0; i < extruders_model.rowCount(); ++i)
{
if(extruders_model.getItem(i).index == provider.properties.value)
{
currentIndex = i;
return;
}
}
currentIndex = -1;
}
}
}

View file

@ -18,10 +18,51 @@ Item {
property alias contents: controlContainer.children;
property alias hovered: mouse.containsMouse
property var showRevertButton: true
property var showInheritButton: true
property var doDepthIndentation: true
// Create properties to put property provider stuff in (bindings break in qt 5.5.1 otherwise)
property var state: propertyProvider.properties.state
property var stackLevels: propertyProvider.stackLevels
property var stackLevel: stackLevels[0]
signal contextMenuRequested()
signal showTooltip(string text);
signal hideTooltip();
property string tooltipText:
{
var affects = settingDefinitionsModel.getRequiredBy(definition.key, "value")
var affected_by = settingDefinitionsModel.getRequires(definition.key, "value")
var affected_by_list = ""
for(var i in affected_by)
{
affected_by_list += "<li>%1</li>\n".arg(affected_by[i].label)
}
var affects_list = ""
for(var i in affects)
{
affects_list += "<li>%1</li>\n".arg(affects[i].label)
}
var tooltip = "<b>%1</b>\n<p>%2</p>".arg(definition.label).arg(definition.description)
if(affects_list != "")
{
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affects")).arg(affects_list)
}
if(affected_by_list != "")
{
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label", "Affected By")).arg(affected_by_list)
}
return tooltip
}
MouseArea
{
id: mouse;
@ -50,7 +91,10 @@ Item {
interval: 500;
repeat: false;
onTriggered: base.showTooltip(definition.description);
onTriggered:
{
base.showTooltip(base.tooltipText);
}
}
Label
@ -58,7 +102,7 @@ Item {
id: label;
anchors.left: parent.left;
anchors.leftMargin: (UM.Theme.getSize("section_icon_column").width + 5) + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width)
anchors.leftMargin: doDepthIndentation ? (UM.Theme.getSize("section_icon_column").width + 5) + ((definition.depth - 1) * UM.Theme.getSize("setting_control_depth_margin").width) : 0
anchors.right: settingControls.left;
anchors.verticalCenter: parent.verticalCenter
@ -89,7 +133,7 @@ Item {
{
id: revertButton;
visible: propertyProvider.stackLevel == 0
visible: base.stackLevel == 0 && base.showRevertButton
height: parent.height;
width: height;
@ -106,24 +150,72 @@ Item {
propertyProvider.removeFromContainer(0)
}
onEntered: base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile."))
onExited: base.showTooltip(definition.description);
onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting has a value that is different from the profile.\n\nClick to restore the value of the profile.")) }
onExited: base.showTooltip(base.tooltipText);
}
UM.SimpleButton
{
// This button shows when the setting has an inherited function, but is overriden by profile.
id: inheritButton;
//visible: has_profile_value && base.has_inherit_function && base.is_enabled
visible: propertyProvider.properties.state == "InstanceState.User" && propertyProvider.stackLevel > 0
// Inherit button needs to be visible if;
// - User made changes that override any loaded settings
// - This setting item uses inherit button at all
// - The type of the value of any deeper container is an "object" (eg; is a function)
visible:
{
var state = base.state == "InstanceState.User";
var has_setting_function = false;
for (var i = 1; i < base.stackLevels.length; i++)
{
has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object";
if(has_setting_function)
{
break;
}
}
return state && base.showInheritButton && has_setting_function && typeof(propertyProvider.getPropertyValue("value", base.stackLevels[0])) != "object"
}
height: parent.height;
width: height;
onClicked: {
focus = true;
propertyProvider.removeFromContainer(propertyProvider.stackLevel)
// Get the most shallow function value (eg not a number) that we can find.
var last_entry = propertyProvider.stackLevels[propertyProvider.stackLevels.length]
for (var i = 1; i < base.stackLevels.length; i++)
{
var has_setting_function = typeof(propertyProvider.getPropertyValue("value", base.stackLevels[i])) == "object";
if(has_setting_function)
{
last_entry = propertyProvider.stackLevels[i]
break;
}
}
if(last_entry == 4 && base.stackLevel == 0 && base.stackLevels.length == 2)
{
// Special case of the inherit reset. If only the definition (4th container) and the first
// entry (user container) are set, we can simply remove the container.
propertyProvider.removeFromContainer(0)
}
else if(last_entry - 1 == base.stackLevel)
{
// Another special case. The setting that is overriden is only 1 instance container deeper,
// so we can remove it.
propertyProvider.removeFromContainer(0)
}
else
{
// Put that entry into the "top" instance container.
// This ensures that the value in any of the deeper containers need not be removed, which is
// needed for the reset button (which deletes the top value) to correctly go back to profile
// defaults.
propertyProvider.setPropertyValue("value", propertyProvider.getPropertyValue("value", last_entry))
propertyProvider.setPropertyValue("state", "InstanceState.Calculated")
}
}
backgroundColor: UM.Theme.getColor("setting_control");
@ -133,8 +225,8 @@ Item {
iconSource: UM.Theme.getIcon("notice");
onEntered: base.showTooltip(catalog.i18nc("@label", "This setting is normally calculated, but it currently has an absolute value set.\n\nClick to restore the calculated value."))
onExited: base.showTooltip(definition.description);
onEntered: { hoverTimer.stop(); base.showTooltip(catalog.i18nc("@label", "This setting is normally calculated, but it currently has an absolute value set.\n\nClick to restore the calculated value.")) }
onExited: base.showTooltip(base.tooltipText);
}
}
@ -143,6 +235,8 @@ Item {
{
id: controlContainer;
enabled: provider.isValueUsed
anchors.right: parent.right;
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter;

View file

@ -16,8 +16,6 @@ SettingItem
anchors.fill: parent
property alias hovered: mouseArea.containsMouse;
border.width: UM.Theme.getSize("default_lining").width
border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
@ -74,7 +72,7 @@ SettingItem
{
id: mouseArea
anchors.fill: parent;
hoverEnabled: true;
//hoverEnabled: true;
cursorShape: Qt.IBeamCursor
}
@ -92,21 +90,11 @@ SettingItem
Keys.onReleased:
{
// text = text.replace(",", ".") // User convenience. We use dots for decimal values
// if(parseFloat(text) != base.parentValue)
// {
// base.valueChanged(parseFloat(text));
// }
propertyProvider.setPropertyValue("value", text)
}
onEditingFinished:
{
// if(parseFloat(text) != base.parentValue)
// {
// base.valueChanged(parseFloat(text));
// }
propertyProvider.setPropertyValue("value", text)
}
@ -123,33 +111,9 @@ SettingItem
{
target: input
property: "text"
value: control.format(propertyProvider.properties.value)
value: propertyProvider.properties.value
when: !input.activeFocus
}
}
//Rounds a floating point number to 4 decimals. This prevents floating
//point rounding errors.
//
//input: The number to round.
//decimals: The number of decimals (digits after the radix) to round to.
//return: The rounded number.
function roundFloat(input, decimals)
{
//First convert to fixed-point notation to round the number to 4 decimals and not introduce new floating point errors.
//Then convert to a string (is implicit). The fixed-point notation will be something like "3.200".
//Then remove any trailing zeroes and the radix.
return input.toFixed(decimals).replace(/\.?0*$/, ""); //Match on periods, if any ( \.? ), followed by any number of zeros ( 0* ), then the end of string ( $ ).
}
//Formats a value for display in the text field.
//
//This correctly handles formatting of float values.
//
//input: The string value to format.
//return: The formatted string.
function format(inputValue) {
return parseFloat(inputValue) ? roundFloat(parseFloat(inputValue), 4) : inputValue //If it's a float, round to four decimals.
}
}
}

View file

@ -9,8 +9,6 @@ import QtQuick.Layouts 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
import ".."
ScrollView
{
id: base;
@ -26,11 +24,22 @@ ScrollView
{
id: contents
spacing: UM.Theme.getSize("default_lining").height;
cacheBuffer: 1000000; // Set a large cache to effectively just cache every list item.
model: UM.SettingDefinitionsModel {
id: definitionsModel;
containerId: Cura.MachineManager.activeDefinitionId
visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
exclude: ["machine_settings"]
visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
filter:
{
if(ExtruderManager.activeExtruderStackId)
{
return { "settable_per_extruder": true }
}
return { }
}
}
delegate: Loader
@ -50,8 +59,9 @@ ScrollView
//Qt5.4.2 and earlier has a bug where this causes a crash: https://bugreports.qt.io/browse/QTBUG-35989
//In addition, while it works for 5.5 and higher, the ordering of the actual combo box drop down changes,
//causing nasty issues when selecting differnt options. So disable asynchronous loading of enum type completely.
asynchronous: model.type != "enum"
//causing nasty issues when selecting different options. So disable asynchronous loading of enum type completely.
asynchronous: model.type != "enum" && model.type != "extruder"
active: model.type != undefined
source:
{
@ -63,6 +73,8 @@ ScrollView
return "SettingTextField.qml"
case "enum":
return "SettingComboBox.qml"
case "extruder":
return "SettingExtruder.qml"
case "bool":
return "SettingCheckBox.qml"
case "str":
@ -78,8 +90,8 @@ ScrollView
{
id: provider
containerStackId: Cura.MachineManager.activeMachineId
key: model.key
containerStackId: ExtruderManager.activeExtruderStackId ? ExtruderManager.activeExtruderStackId : Cura.MachineManager.activeMachineId
key: model.key ? model.key : ""
watchedProperties: [ "value", "enabled", "state", "validationState" ]
storeIndex: 0
}
@ -134,7 +146,7 @@ ScrollView
//: Settings context menu action
text: catalog.i18nc("@action:menu", "Configure setting visiblity...");
onTriggered: Actions.configureSettingVisibility.trigger(contextMenu);
onTriggered: Cura.Actions.configureSettingVisibility.trigger(contextMenu);
}
}
}

View file

@ -1,119 +0,0 @@
// Copyright (c) 2015 Ultimaker B.V.
// Uranium is released under the terms of the AGPLv3 or higher.
import QtQuick 2.1
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1
import QtQuick.Controls.Styles 1.1
import QtQml 2.2
import UM 1.1 as UM
import "../Preferences"
PreferencesPage
{
//: Machine configuration page title.
title: catalog.i18nc("@title:tab","Machine");
id: base
contents: ColumnLayout
{
z: base.z
anchors.fill: parent;
UM.I18nCatalog { id: catalog; name:"uranium"}
RowLayout
{
//: Active machine combo box label
Label { text: catalog.i18nc("@label:listbox","Active Machine:"); }
ComboBox
{
id: machineCombo;
Layout.fillWidth: true;
model: UM.Models.machinesModel;
textRole: "name";
onActivated:
{
if(index != -1)
UM.Models.machinesModel.setActive(index);
}
Connections
{
id: machineChange
target: UM.Application
onMachineChanged: machineCombo.currentIndex = machineCombo.find(UM.Application.machineName);
}
Component.onCompleted: machineCombo.currentIndex = machineCombo.find(UM.Application.machineName);
}
//: Remove active machine button
Button { text: catalog.i18nc("@action:button","Remove"); onClicked: confirmRemoveDialog.open(); }
}
ScrollView
{
id: settingsScrollView
Layout.fillWidth: true;
Layout.fillHeight: true;
ListView
{
id: settingsListView
delegate: settingDelegate
model: UM.Models.settingsModel
x: 0
section.property: "category"
section.delegate: Label { text: section }
}
}
}
Component
{
id: settingDelegate
CheckBox
{
z:0
id: settingCheckBox
text: model.name;
x: depth * 25
checked: model.visibility
onClicked: ListView.view.model.setVisibility(model.key, checked)
//enabled: !model.disabled
onHoveredChanged:
{
if(hovered)
{
var xPos = parent.x + settingCheckBox.width;
var yPos = parent.y;
toolTip.show(model.description, 1000, 200, undefined, undefined) //tooltip-text, hover-delay in msec, animation-length in msec, position X, position Y (both y en x == undefined: gives the tooltip a standard placement in the right corner)
} else
{
toolTip.hide(0, 0)//hover-delay in msec, animation-length in msec
}
}
}
}
PreferencesToolTip
{
id: toolTip;
}
MessageDialog
{
id: confirmRemoveDialog;
icon: StandardIcon.Question;
//: Remove machine confirmation dialog title
title: catalog.i18nc("@title:window","Confirm Machine Deletion");
//: Remove machine confirmation dialog text
text: catalog.i18nc("@label","Are you sure you wish to remove the machine?");
standardButtons: StandardButton.Yes | StandardButton.No;
onYes: UM.Models.machinesModel.removeMachine(machineCombo.currentIndex);
}
}

View file

@ -12,13 +12,6 @@ Rectangle
{
id: base;
property Action addMachineAction;
property Action configureMachinesAction;
property Action addProfileAction;
property Action updateProfileAction;
property Action resetProfileAction;
property Action manageProfilesAction;
property Action configureSettingsAction;
property int currentModeIndex;
color: UM.Theme.getColor("sidebar");
@ -52,20 +45,8 @@ Rectangle
width: parent.width
height: totalHeightHeader
addMachineAction: base.addMachineAction;
configureMachinesAction: base.configureMachinesAction;
}
ProfileSetup {
id: profileItem
addProfileAction: base.addProfileAction
updateProfileAction: base.updateProfileAction
resetProfileAction: base.resetProfileAction
manageProfilesAction: base.manageProfilesAction
anchors.top: header.bottom
anchors.top: parent.top
anchors.topMargin: UM.Theme.getSize("default_margin").height
width: parent.width
height: totalHeightProfileSetup
onShowTooltip: base.showTooltip(item, location, text)
onHideTooltip: base.hideTooltip()
@ -76,7 +57,7 @@ Rectangle
width: parent.width
height: UM.Theme.getSize("sidebar_lining").height
color: UM.Theme.getColor("sidebar_lining")
anchors.top: profileItem.bottom
anchors.top: header.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
}

View file

@ -8,54 +8,54 @@ import QtQuick.Controls.Styles 1.1
import UM 1.2 as UM
import Cura 1.0 as Cura
Item
Column
{
id: base;
// Machine Setup
property Action addMachineAction;
property Action configureMachinesAction;
UM.I18nCatalog { id: catalog; name:"cura"}
property int totalHeightHeader: childrenRect.height
property int currentExtruderIndex;
Rectangle {
id: sidebarTabRow
width: base.width
height: 0
anchors.top: parent.top
color: UM.Theme.getColor("sidebar_header_bar")
}
spacing: UM.Theme.getSize("default_margin").height
Rectangle {
signal showTooltip(Item item, point location, string text)
signal hideTooltip()
Row
{
id: machineSelectionRow
width: base.width
height: UM.Theme.getSize("sidebar_setup").height
anchors.top: sidebarTabRow.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.horizontalCenter: parent.horizontalCenter
Label{
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
}
Label
{
id: machineSelectionLabel
//: Machine selection label
text: catalog.i18nc("@label:listbox","Printer:");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@label:listbox", "Printer:");
anchors.verticalCenter: parent.verticalCenter
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
}
ToolButton {
ToolButton
{
id: machineSelection
text: Cura.MachineManager.activeMachineName;
width: parent.width/100*55
height: UM.Theme.getSize("setting_control").height
tooltip: Cura.MachineManager.activeMachineName;
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter
style: UM.Theme.styles.sidebar_header_button
width: parent.width * 0.55 + UM.Theme.getSize("default_margin").width
menu: Menu
{
id: machineSelectionMenu
@ -81,119 +81,114 @@ Item
MenuSeparator { }
MenuItem { action: base.addMachineAction; }
MenuItem { action: base.configureMachinesAction; }
MenuItem { action: Cura.Actions.addMachine; }
MenuItem { action: Cura.Actions.configureMachines; }
}
}
}
Rectangle {
id: extruderSelection
width: parent.width/100*55
ListView
{
id: extrudersList
property var index: 0
visible: machineExtruderCount.properties.value > 1
height: visible ? UM.Theme.getSize("sidebar_header_mode_toggle").height : 0
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.top: machineSelectionRow.bottom
anchors.topMargin: visible ? UM.Theme.getSize("default_margin").height : 0
Component{
id: wizardDelegate
Button {
height: extruderSelection.height
anchors.left: parent.left
anchors.leftMargin: model.index * (extruderSelection.width / machineExtruderCount.properties.value)
anchors.verticalCenter: parent.verticalCenter
width: parent.width / machineExtruderCount.properties.value
text: model.text
exclusiveGroup: extruderMenuGroup;
checkable: true;
checked: base.currentExtruderIndex == index
onClicked: base.currentExtruderIndex = index
height: UM.Theme.getSize("sidebar_header_mode_toggle").height
style: ButtonStyle {
background: Rectangle {
border.width: UM.Theme.getSize("default_lining").width
border.color: control.checked ? UM.Theme.getColor("toggle_checked_border") :
control.pressed ? UM.Theme.getColor("toggle_active_border") :
control.hovered ? UM.Theme.getColor("toggle_hovered_border") : UM.Theme.getColor("toggle_unchecked_border")
color: control.checked ? UM.Theme.getColor("toggle_checked") :
control.pressed ? UM.Theme.getColor("toggle_active") :
control.hovered ? UM.Theme.getColor("toggle_hovered") : UM.Theme.getColor("toggle_unchecked")
Behavior on color { ColorAnimation { duration: 50; } }
Label {
anchors.centerIn: parent
color: control.checked ? UM.Theme.getColor("toggle_checked_text") :
control.pressed ? UM.Theme.getColor("toggle_active_text") :
control.hovered ? UM.Theme.getColor("toggle_hovered_text") : UM.Theme.getColor("toggle_unchecked_text")
font: UM.Theme.getFont("default")
text: control.text;
}
boundsBehavior: Flickable.StopAtBounds
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
}
ExclusiveGroup { id: extruderMenuGroup; }
orientation: ListView.Horizontal
model: Cura.ExtrudersModel { id: extrudersModel; addGlobal: true }
delegate: Button
{
height: ListView.view.height
width: ListView.view.width / extrudersModel.rowCount()
text: model.name
exclusiveGroup: extruderMenuGroup;
checkable: true;
checked: base.currentExtruderIndex == index
onClicked:
{
focus = true; //Changing focus applies the currently-being-typed values so it can change the displayed setting values.
base.currentExtruderIndex = index;
ExtruderManager.setActiveExtruderIndex(index);
}
style: ButtonStyle
{
background: Rectangle
{
border.width: UM.Theme.getSize("default_lining").width
border.color: control.checked ? UM.Theme.getColor("toggle_checked_border") :
control.pressed ? UM.Theme.getColor("toggle_active_border") :
control.hovered ? UM.Theme.getColor("toggle_hovered_border") : UM.Theme.getColor("toggle_unchecked_border")
color: control.checked ? UM.Theme.getColor("toggle_checked") :
control.pressed ? UM.Theme.getColor("toggle_active") :
control.hovered ? UM.Theme.getColor("toggle_hovered") : UM.Theme.getColor("toggle_unchecked")
Behavior on color { ColorAnimation { duration: 50; } }
Label
{
anchors.centerIn: parent
color: control.checked ? UM.Theme.getColor("toggle_checked_text") :
control.pressed ? UM.Theme.getColor("toggle_active_text") :
control.hovered ? UM.Theme.getColor("toggle_hovered_text") : UM.Theme.getColor("toggle_unchecked_text")
font: UM.Theme.getFont("default")
text: control.text;
}
label: Item { }
}
label: Item { }
}
}
ExclusiveGroup { id: extruderMenuGroup; }
ListView{
id: extrudersList
property var index: 0
model: extrudersListModel
delegate: wizardDelegate
anchors.top: parent.top
anchors.left: parent.left
width: parent.width
}
}
ListModel
Row
{
id: extrudersListModel
Component.onCompleted: populateExtruderModel()
}
Connections
{
id: machineChange
target: Cura.MachineManager
onGlobalContainerChanged: populateExtruderModel()
}
function populateExtruderModel()
{
extrudersListModel.clear();
for(var extruder = 0; extruder < machineExtruderCount.properties.value ; extruder++) {
extrudersListModel.append({
text: catalog.i18nc("@label", "Extruder %1").arg(extruder + 1)
})
}
}
Rectangle {
id: variantRow
anchors.top: extruderSelection.visible ? extruderSelection.bottom : machineSelectionRow.bottom
anchors.topMargin: visible ? UM.Theme.getSize("default_margin").height : 0
width: base.width
height: visible ? UM.Theme.getSize("sidebar_setup").height : 0
height: UM.Theme.getSize("sidebar_setup").height
visible: Cura.MachineManager.hasVariants || Cura.MachineManager.hasMaterials
Label{
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
}
Label
{
id: variantLabel
text: (Cura.MachineManager.hasVariants && Cura.MachineManager.hasMaterials) ? catalog.i18nc("@label","Nozzle & Material:"):
Cura.MachineManager.hasVariants ? catalog.i18nc("@label","Nozzle:") : catalog.i18nc("@label","Material:");
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter
width: parent.width/100*45
width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
Rectangle
{
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: parent.verticalCenter
width: parent.width/100*55
width: parent.width * 0.55 + UM.Theme.getSize("default_margin").width
height: UM.Theme.getSize("setting_control").height
ToolButton {
@ -230,13 +225,6 @@ Item
onTriggered:
{
Cura.MachineManager.setActiveVariant(model.id);
/*if (typeof(model) !== "undefined" && !model.active) {
//Selecting a variant was canceled; undo menu selection
variantSelectionInstantiator.model.setProperty(index, "active", false);
var activeMachineVariantName = UM.MachineManager.activeMachineVariant;
var activeMachineVariantIndex = variantSelectionInstantiator.model.find("name", activeMachineVariantName);
variantSelectionInstantiator.model.setProperty(activeMachineVariantIndex, "active", true);
}*/
}
}
onObjectAdded: variantsSelectionMenu.insertItem(index, object)
@ -266,7 +254,23 @@ Item
id: materialSelectionInstantiator
model: UM.InstanceContainersModel
{
filter: { "type": "material", "definition": Cura.MachineManager.activeDefinitionId }
filter:
{
var result = { "type": "material" }
if(Cura.MachineManager.filterMaterialsByMachine)
{
result.definition = Cura.MachineManager.activeDefinitionId
if(Cura.MachineManager.hasVariants)
{
result.variant = Cura.MachineManager.activeVariantId
}
}
else
{
result.definition = "fdmprinter"
}
return result
}
}
MenuItem
{
@ -277,13 +281,6 @@ Item
onTriggered:
{
Cura.MachineManager.setActiveMaterial(model.id);
/*if (typeof(model) !== "undefined" && !model.active) {
//Selecting a material was canceled; undo menu selection
materialSelectionInstantiator.model.setProperty(index, "active", false);
var activeMaterialName = Cura.MachineManager.activeMaterialName
var activeMaterialIndex = materialSelectionInstantiator.model.find("name", activeMaterialName);
materialSelectionInstantiator.model.setProperty(activeMaterialIndex, "active", true);
}*/
}
}
onObjectAdded: materialSelectionMenu.insertItem(index, object)
@ -296,6 +293,147 @@ Item
}
}
Row
{
id: globalProfileRow
height: UM.Theme.getSize("sidebar_setup").height
anchors
{
left: parent.left
leftMargin: UM.Theme.getSize("default_margin").width
right: parent.right
rightMargin: UM.Theme.getSize("default_margin").width
}
Label
{
id: globalProfileLabel
text: catalog.i18nc("@label","Profile:");
width: parent.width * 0.45 - UM.Theme.getSize("default_margin").width
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
ToolButton
{
id: globalProfileSelection
text: Cura.MachineManager.activeQualityName
width: parent.width * 0.55 + UM.Theme.getSize("default_margin").width
height: UM.Theme.getSize("setting_control").height
tooltip: Cura.MachineManager.activeQualityName
style: UM.Theme.styles.sidebar_header_button
menu: Menu
{
id: profileSelectionMenu
Instantiator
{
id: profileSelectionInstantiator
model: UM.InstanceContainersModel
{
filter:
{
var result = { "type": "quality" };
if(Cura.MachineManager.filterQualityByMachine)
{
result.definition = Cura.MachineManager.activeDefinitionId;
if(Cura.MachineManager.hasMaterials)
{
result.material = Cura.MachineManager.activeMaterialId;
}
}
else
{
result.definition = "fdmprinter"
}
return result
}
}
property int separatorIndex: -1
Loader {
property QtObject model_data: model
property int model_index: index
sourceComponent: menuItemDelegate
}
onObjectAdded:
{
//Insert a separator between readonly and custom profiles
if(separatorIndex < 0 && index > 0)
{
if(model.getItem(index-1).readOnly != model.getItem(index).readOnly)
{
profileSelectionMenu.insertSeparator(index);
separatorIndex = index;
}
}
//Because of the separator, custom profiles move one index lower
profileSelectionMenu.insertItem((model.getItem(index).readOnly) ? index : index + 1, object.item);
}
onObjectRemoved:
{
//When adding a profile, the menu is rebuilt by removing all items.
//If a separator was added, we need to remove that too.
if(separatorIndex >= 0)
{
profileSelectionMenu.removeItem(profileSelectionMenu.items[separatorIndex])
separatorIndex = -1;
}
profileSelectionMenu.removeItem(object.item);
}
}
ExclusiveGroup { id: profileSelectionMenuGroup; }
Component
{
id: menuItemDelegate
MenuItem
{
id: item
text: model_data ? model_data.name : ""
checkable: true
checked: model_data != null ? Cura.MachineManager.activeQualityId == model_data.id : false
exclusiveGroup: profileSelectionMenuGroup;
onTriggered: Cura.MachineManager.setActiveQuality(model_data.id)
}
}
MenuSeparator { }
MenuItem { action: Cura.Actions.addProfile }
MenuItem { action: Cura.Actions.updateProfile }
MenuItem { action: Cura.Actions.resetProfile }
MenuSeparator { }
MenuItem { action: Cura.Actions.manageProfiles }
}
UM.SimpleButton
{
id: customisedSettings
visible: Cura.MachineManager.hasUserSettings
height: parent.height * 0.6
width: parent.height * 0.6
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: UM.Theme.getSize("setting_preferences_button_margin").width - UM.Theme.getSize("default_margin").width
color: hovered ? UM.Theme.getColor("setting_control_button_hover") : UM.Theme.getColor("setting_control_button");
iconSource: UM.Theme.getIcon("star");
onClicked: Cura.Actions.manageProfiles.trigger()
onEntered:
{
var content = catalog.i18nc("@tooltip","Some setting values are different from the values stored in the profile.\n\nClick to open the profile manager.")
base.showTooltip(globalProfileRow, Qt.point(0, globalProfileRow.height / 2), content)
}
onExited: base.hideTooltip()
}
}
}
UM.SettingPropertyProvider
{
id: machineExtruderCount
@ -305,4 +443,6 @@ Item
watchedProperties: [ "value" ]
storeIndex: 0
}
UM.I18nCatalog { id: catalog; name:"cura" }
}

View file

@ -28,13 +28,13 @@ Item
id: infillCellLeft
anchors.top: parent.top
anchors.left: parent.left
width: base.width/100* 35 - UM.Theme.getSize("default_margin").width
width: base.width / 100 * 35 - UM.Theme.getSize("default_margin").width
height: childrenRect.height
Label{
id: infillLabel
//: Infill selection label
text: catalog.i18nc("@label","Infill:");
text: catalog.i18nc("@label", "Infill:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
anchors.top: parent.top
@ -85,7 +85,7 @@ Item
{
return UM.Theme.getColor("setting_control_selected")
}
else if(mousearea.containsMouse)
else if(infillMouseArea.containsMouse)
{
return UM.Theme.getColor("setting_control_border_highlight")
}
@ -106,7 +106,7 @@ Item
}
MouseArea {
id: mousearea
id: infillMouseArea
anchors.fill: parent
hoverEnabled: true
onClicked: {
@ -187,28 +187,29 @@ Item
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: brimCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
width: parent.width / 100 * 35 - 3 * UM.Theme.getSize("default_margin").width
//: Bed adhesion label
text: catalog.i18nc("@label:listbox","Bed Adhesion:");
text: catalog.i18nc("@label:listbox", "Bed Adhesion:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
CheckBox{
id: brimCheckBox
property bool hovered_ex: false
property alias _hovered: brimMouseArea.containsMouse
anchors.top: parent.top
anchors.left: adhesionHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable skirt adhesion checkbox
text: catalog.i18nc("@option:check","Print Brim");
text: catalog.i18nc("@option:check", "Print Brim");
style: UM.Theme.styles.checkbox;
checked: platformAdhesionType.properties.value == "brim"
MouseArea {
id: brimMouseArea
anchors.fill: parent
hoverEnabled: true
onClicked:
@ -217,13 +218,11 @@ Item
}
onEntered:
{
parent.hovered_ex = true
base.showTooltip(brimCheckBox, Qt.point(-brimCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing a brim. This will add a single-layer-thick flat area around your object which is easy to cut off afterwards."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
@ -234,9 +233,9 @@ Item
anchors.left: parent.left
anchors.leftMargin: UM.Theme.getSize("default_margin").width
anchors.verticalCenter: supportCheckBox.verticalCenter
width: parent.width/100*35 - 3 * UM.Theme.getSize("default_margin").width
width: parent.width / 100 * 35 - 3 * UM.Theme.getSize("default_margin").width
//: Support label
text: catalog.i18nc("@label:listbox","Support:");
text: catalog.i18nc("@label:listbox", "Support:");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
}
@ -244,7 +243,7 @@ Item
CheckBox{
id: supportCheckBox
visible: machineExtruderCount.properties.value <= 1
property bool hovered_ex: false
property alias _hovered: supportMouseArea.containsMouse
anchors.top: brimCheckBox.bottom
anchors.topMargin: UM.Theme.getSize("default_margin").height
@ -252,11 +251,12 @@ Item
anchors.leftMargin: UM.Theme.getSize("default_margin").width
//: Setting enable support checkbox
text: catalog.i18nc("@option:check","Print Support Structure");
text: catalog.i18nc("@option:check", "Print Support Structure");
style: UM.Theme.styles.checkbox;
checked: supportEnabled.properties.value == "True"
MouseArea {
id: supportMouseArea
anchors.fill: parent
hoverEnabled: true
onClicked:
@ -265,13 +265,11 @@ Item
}
onEntered:
{
parent.hovered_ex = true
base.showTooltip(supportCheckBox, Qt.point(-supportCheckBox.x, 0),
catalog.i18nc("@label", "Enable printing support structures. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
@ -286,10 +284,10 @@ Item
anchors.topMargin: UM.Theme.getSize("default_margin").height
anchors.left: supportHelperLabel.right
anchors.leftMargin: UM.Theme.getSize("default_margin").width
width: parent.width/100*45
width: parent.width / 100 * 45
style: UM.Theme.styles.combobox
property bool hovered_ex: false
property alias _hovered: supportExtruderMouseArea.containsMouse
currentIndex: supportEnabled.properties.value == "True" ? parseFloat(supportExtruderNr.properties.value) + 1 : 0
onActivated: {
@ -301,18 +299,17 @@ Item
}
}
MouseArea {
id: supportExtruderMouseArea
anchors.fill: parent
hoverEnabled: true
acceptedButtons: Qt.NoButton
onEntered:
{
parent.hovered_ex = true
base.showTooltip(supportExtruderCombobox, Qt.point(-supportExtruderCombobox.x, 0),
catalog.i18nc("@label", "Select which extruder to use for support. This will build up supporting structures below the model to prevent the model from sagging or printing in mid air."));
}
onExited:
{
parent.hovered_ex = false
base.hideTooltip();
}
}
@ -358,7 +355,7 @@ Item
anchors.rightMargin: UM.Theme.getSize("default_margin").width
wrapMode: Text.WordWrap
//: Tips label
text: catalog.i18nc("@label","Need help improving your prints? Read the <a href='%1'>Ultimaker Troubleshooting Guides</a>").arg("https://ultimaker.com/en/troubleshooting");
text: catalog.i18nc("@label", "Need help improving your prints? Read the <a href='%1'>Ultimaker Troubleshooting Guides</a>").arg("https://ultimaker.com/en/troubleshooting");
font: UM.Theme.getFont("default");
color: UM.Theme.getColor("text");
linkColor: UM.Theme.getColor("text_link")
@ -374,8 +371,6 @@ Item
key: "infill_sparse_density"
watchedProperties: [ "value" ]
storeIndex: 0
onPropertiesChanged: console.log(properties.value)
}
UM.SettingPropertyProvider

View file

@ -19,6 +19,7 @@ UM.PreferencesPage
{
UM.Preferences.resetPreference("view/show_overhang");
UM.Preferences.resetPreference("view/center_on_select");
UM.Preferences.resetPreference("view/top_layer_count");
}
Column
@ -57,12 +58,38 @@ UM.PreferencesPage
}
}
UM.TooltipArea {
width: childrenRect.width;
height: childrenRect.height;
text: catalog.i18nc("@info:tooltip","Display 5 top layers in layer view or only the top-most layer. Rendering 5 layers takes longer, but may show more information.")
CheckBox
{
id: topLayerCheckbox
text: catalog.i18nc("@action:button","Display five top layers in layer view.");
checked: UM.Preferences.getValue("view/top_layer_count") == 5
onClicked:
{
if(UM.Preferences.getValue("view/top_layer_count") == 5)
{
UM.Preferences.setValue("view/top_layer_count", 1)
}
else
{
UM.Preferences.setValue("view/top_layer_count", 5)
}
}
}
}
Connections {
target: UM.Preferences
onPreferenceChanged:
{
overhangCheckbox.checked = boolCheck(UM.Preferences.getValue("view/show_overhang"))
centerCheckbox.checked = boolCheck(UM.Preferences.getValue("view/center_on_select"))
topLayerCheckbox = UM.Preferences.getValue("view/top_layer_count") == 5
}
}
}

View file

@ -1,3 +0,0 @@
module Cura
singleton Actions 1.0 Actions.qml

View file

@ -5,6 +5,9 @@ definition = fdmprinter
[metadata]
type = quality
weight = -3
[values]
layer_height = 0.06
speed_topbottom = 15
speed_infill = 80

View file

@ -1,9 +1,13 @@
[general]
version = 1
version = 2
name = Low Quality
definition = fdmprinter
[metadata]
type = quality
weight = -1
[settings]
[values]
infill_sparse_density = 10
layer_height = 0.15
cool_min_layer_time = 3
@ -12,4 +16,3 @@ speed_wall_x = 80
speed_infill = 100
wall_thickness = 1
speed_topbottom = 30

View file

@ -5,5 +5,6 @@ definition = fdmprinter
[metadata]
type = quality
weight = -2
[values]

View file

@ -0,0 +1,22 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.25_mm
weight = -2
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,25 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -1
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 55
speed_wall = 40
speed_topbottom = 30
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,22 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -3
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,21 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.4_mm
weight = -2
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,23 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.6_mm
weight = -2
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
speed_infill = 55
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_min_speed = 20
cool_min_layer_time_fan_speed_max = 20

View file

@ -0,0 +1,21 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_extended_plus_0.8_mm
weight = -2
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 25

View file

@ -0,0 +1,21 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.25_mm
weight = -2
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 2
cool_fan_speed_min = 20
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,25 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -1
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 45
speed_wall = 40
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,21 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -3
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 2
cool_fan_speed_min = 80
cool_min_speed = 15
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,22 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.4_mm
weight = -2
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 10
cool_min_layer_time_fan_speed_max = 15

View file

@ -0,0 +1,20 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.6_mm
weight = -2
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 5
cool_fan_speed_min = 80
cool_min_speed = 8
cool_min_layer_time_fan_speed_max = 20

View file

@ -0,0 +1,20 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_extended_plus_0.8_mm
weight = -2
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 8
cool_min_layer_time_fan_speed_max = 25

View file

@ -0,0 +1,18 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.25_mm
weight = -2
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 30
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = PLA
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -1
[settings]
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = PLA
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -3
[settings]
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = PLA
definition = ultimaker2_extended_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_extended_plus_0.4_mm
weight = -2
[settings]
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.6 mm
material = PLA
definition = ultimaker2_extended_plus
[metadata]
material = generic_pla_ultimaker2_extended_plus_0.6_mm
type = quality
weight = -2
[settings]
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.8 mm
material = PLA
definition = ultimaker2_extended_plus
[metadata]
material = generic_pla_ultimaker2_extended_plus_0.8_mm
type = quality
weight = -2
[settings]
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.25 mm
material = PLA
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_plus_0.25_mm
weight = -2
[settings]
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72

View file

@ -0,0 +1,22 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_plus_0.4_mm
weight = -1
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 60
speed_wall = 50
speed_topbottom = 30
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -0,0 +1,19 @@
[general]
version = 2
name = High Quality
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_plus_0.4_mm
weight = -3
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 50
speed_topbottom = 20
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -0,0 +1,19 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_pla_ultimaker2_plus_0.4_mm
weight = -2
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 50
speed_topbottom = 20
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -0,0 +1,21 @@
[general]
version = 2
name = Normal Quality
definition = ultimaker2_plus
[metadata]
material = generic_pla_ultimaker2_plus_0.6_mm
type = quality
weight = -2
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 55
speed_wall = 40
speed_wall_0 = 25
speed_topbottom = 20
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -0,0 +1,19 @@
[general]
version = 2
name = Fast Print
definition = ultimaker2_plus
[metadata]
material = generic_pla_ultimaker2_plus_0.8_mm
type = quality
weight = -2
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
speed_wall_0 = 25
cool_min_layer_time = 5
cool_min_speed = 10

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.25 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.25_mm
weight = -2
[settings]
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72

View file

@ -1,17 +1,21 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.4_mm
weight = -1
[settings]
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 55
speed_wall = 40
speed_topbottom = 30
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.4_mm
weight = -3
[settings]
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.4_mm
weight = -2
[settings]
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 20
cool_min_speed = 10

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.6 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.6_mm
weight = -2
[settings]
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2
infill_sparse_density = 20
speed_print = 40
speed_infill = 55
cool_min_layer_time = 3
cool_fan_speed_min = 50
cool_min_speed = 20

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.8 mm
material = ABS
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_abs_ultimaker2_plus_0.8_mm
weight = -2
[settings]
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.25 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.25_mm
weight = -2
[settings]
[values]
layer_height = 0.06
wall_thickness = 0.88
top_bottom_thickness = 0.72

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.4_mm
weight = -1
[settings]
[values]
layer_height = 0.15
wall_thickness = 0.7
top_bottom_thickness = 0.75
infill_sparse_density = 18
speed_print = 45
speed_wall = 40
speed_travel = 150
speed_layer_0 = 30
cool_min_layer_time = 3

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = High Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.4_mm
weight = -3
[settings]
[values]
layer_height = 0.06
wall_thickness = 1.05
top_bottom_thickness = 0.72
infill_sparse_density = 22
speed_print = 45
speed_wall = 30
cool_min_layer_time = 2
cool_fan_speed_min = 80
cool_min_speed = 15

View file

@ -1,17 +1,20 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.4 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.4_mm
weight = -2
[settings]
[values]
layer_height = 0.1
wall_thickness = 1.05
top_bottom_thickness = 0.8
infill_sparse_density = 20
speed_print = 45
speed_wall = 30
cool_min_layer_time = 3
cool_fan_speed_min = 80
cool_min_speed = 10

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Normal Quality
machine_type = ultimaker2plus
machine_variant = 0.6 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.6_mm
weight = -2
[settings]
[values]
layer_height = 0.15
wall_thickness = 1.59
top_bottom_thickness = 1.2

View file

@ -1,12 +1,14 @@
[general]
version = 1
version = 2
name = Fast Print
machine_type = ultimaker2plus
machine_variant = 0.8 mm
material = CPE
definition = ultimaker2_plus
[metadata]
type = quality
material = generic_cpe_ultimaker2_plus_0.8_mm
weight = -2
[settings]
[values]
layer_height = 0.2
wall_thickness = 2.1
top_bottom_thickness = 1.2

View file

@ -283,14 +283,14 @@ QtObject {
property Component combobox: Component {
ComboBoxStyle {
background: Rectangle {
implicitHeight: UM.Theme.getSize("setting_control").height;
implicitWidth: UM.Theme.getSize("setting_control").width;
implicitHeight: Theme.getSize("setting_control").height;
implicitWidth: Theme.getSize("setting_control").width;
color: (control.hovered || control.hovered_ex) ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control");
color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_highlight") : Theme.getColor("setting_control");
Behavior on color { ColorAnimation { duration: 50; } }
border.width: Theme.getSize("default_lining").width;
border.color: (control.hovered || control.hovered_ex) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border");
border.color: (control.hovered || control._hovered) ? Theme.getColor("setting_control_border_highlight") : Theme.getColor("setting_control_border");
}
label: Item {
Label {
@ -301,7 +301,7 @@ QtObject {
anchors.verticalCenter: parent.verticalCenter;
text: control.currentText;
font: UM.Theme.getFont("default");
font: Theme.getFont("default");
color: !enabled ? Theme.getColor("setting_control_disabled_text") : Theme.getColor("setting_control_text");
elide: Text.ElideRight;
@ -314,9 +314,9 @@ QtObject {
anchors.rightMargin: Theme.getSize("default_lining").width * 2;
anchors.verticalCenter: parent.verticalCenter;
source: UM.Theme.getIcon("arrow_bottom")
width: UM.Theme.getSize("standard_arrow").width
height: UM.Theme.getSize("standard_arrow").height
source: Theme.getIcon("arrow_bottom")
width: Theme.getSize("standard_arrow").width
height: Theme.getSize("standard_arrow").height
sourceSize.width: width + 5
sourceSize.height: width + 5
@ -333,13 +333,13 @@ QtObject {
implicitWidth: Theme.getSize("checkbox").width;
implicitHeight: Theme.getSize("checkbox").height;
color: (control.hovered || control.hovered_ex) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox");
color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_hover") : Theme.getColor("checkbox");
Behavior on color { ColorAnimation { duration: 50; } }
radius: control.exclusiveGroup ? Theme.getSize("checkbox").width / 2 : 0
border.width: Theme.getSize("default_lining").width;
border.color: (control.hovered || control.hovered_ex) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border");
border.color: (control.hovered || control._hovered) ? Theme.getColor("checkbox_border_hover") : Theme.getColor("checkbox_border");
UM.RecolorImage {
anchors.verticalCenter: parent.verticalCenter

View file

@ -176,7 +176,7 @@
"section_icon": [1.6, 1.6],
"section_icon_column": [2.8, 0.0],
"setting": [19.0, 1.8],
"setting": [25.0, 1.8],
"setting_control": [10.0, 2.0],
"setting_control_depth_margin": [1.4, 0.0],
"setting_preferences_button_margin": [3.3, 0.0],