mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-19 03:37:29 +08:00
Merge branch 'WIP_onboarding' of github.com:Ultimaker/Cura into WIP_onboarding
This commit is contained in:
commit
1b8b5415f7
@ -10,7 +10,7 @@ import Cura 1.1 as Cura
|
||||
Column
|
||||
{
|
||||
property bool installed: toolbox.isInstalled(model.id)
|
||||
property bool canUpdate: toolbox.canUpdate(model.id)
|
||||
property bool canUpdate: CuraApplication.getPackageManager().packagesWithUpdate.indexOf(model.id) != -1
|
||||
property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn
|
||||
property var packageData
|
||||
|
||||
@ -112,11 +112,9 @@ Column
|
||||
{
|
||||
target: toolbox
|
||||
onInstallChanged: installed = toolbox.isInstalled(model.id)
|
||||
onMetadataChanged: canUpdate = toolbox.canUpdate(model.id)
|
||||
onFilterChanged:
|
||||
{
|
||||
installed = toolbox.isInstalled(model.id)
|
||||
canUpdate = toolbox.canUpdate(model.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,11 @@
|
||||
// Copyright (c) 2018 Ultimaker B.V.
|
||||
// Toolbox is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 1.4
|
||||
import UM 1.1 as UM
|
||||
|
||||
import UM 1.4 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
Item
|
||||
{
|
||||
@ -50,6 +52,7 @@ Item
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ToolboxTabButton
|
||||
{
|
||||
id: installedTabButton
|
||||
@ -62,7 +65,25 @@ Item
|
||||
rightMargin: UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
onClicked: toolbox.viewCategory = "installed"
|
||||
width: UM.Theme.getSize("toolbox_header_tab").width + marketplaceNotificationIcon.width - UM.Theme.getSize("default_margin").width
|
||||
}
|
||||
|
||||
Cura.NotificationIcon
|
||||
{
|
||||
id: marketplaceNotificationIcon
|
||||
|
||||
visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0
|
||||
|
||||
anchors.right: installedTabButton.right
|
||||
anchors.verticalCenter: installedTabButton.verticalCenter
|
||||
|
||||
labelText:
|
||||
{
|
||||
const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length
|
||||
return itemCount > 9 ? "9+" : itemCount
|
||||
}
|
||||
}
|
||||
|
||||
ToolboxShadow
|
||||
{
|
||||
anchors.top: bar.bottom
|
||||
|
@ -10,7 +10,7 @@ import Cura 1.1 as Cura
|
||||
|
||||
Column
|
||||
{
|
||||
property bool canUpdate: false
|
||||
property bool canUpdate: CuraApplication.getPackageManager().packagesWithUpdate.indexOf(model.id) != -1
|
||||
property bool canDowngrade: false
|
||||
property bool loginRequired: model.login_required && !Cura.API.account.isLoggedIn
|
||||
width: UM.Theme.getSize("toolbox_action_button").width
|
||||
@ -83,7 +83,6 @@ Column
|
||||
target: toolbox
|
||||
onMetadataChanged:
|
||||
{
|
||||
canUpdate = toolbox.canUpdate(model.id)
|
||||
canDowngrade = toolbox.canDowngrade(model.id)
|
||||
}
|
||||
}
|
||||
|
@ -9,14 +9,17 @@ Button
|
||||
{
|
||||
id: control
|
||||
property bool active: false
|
||||
hoverEnabled: true
|
||||
|
||||
implicitWidth: UM.Theme.getSize("toolbox_header_tab").width
|
||||
implicitHeight: UM.Theme.getSize("toolbox_header_tab").height
|
||||
|
||||
background: Item
|
||||
{
|
||||
implicitWidth: UM.Theme.getSize("toolbox_header_tab").width
|
||||
implicitHeight: UM.Theme.getSize("toolbox_header_tab").height
|
||||
id: backgroundItem
|
||||
Rectangle
|
||||
{
|
||||
id: highlight
|
||||
|
||||
visible: control.active
|
||||
color: UM.Theme.getColor("primary")
|
||||
anchors.bottom: parent.bottom
|
||||
@ -24,28 +27,42 @@ Button
|
||||
height: UM.Theme.getSize("toolbox_header_highlight").height
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
id: label
|
||||
text: control.text
|
||||
color:
|
||||
{
|
||||
if(control.hovered)
|
||||
{
|
||||
return UM.Theme.getColor("toolbox_header_button_text_hovered");
|
||||
}
|
||||
if(control.active)
|
||||
{
|
||||
return UM.Theme.getColor("toolbox_header_button_text_active");
|
||||
}
|
||||
else
|
||||
{
|
||||
return UM.Theme.getColor("toolbox_header_button_text_inactive");
|
||||
}
|
||||
}
|
||||
font: control.enabled ? (control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")) : UM.Theme.getFont("default_italic")
|
||||
color: UM.Theme.getColor("toolbox_header_button_text_inactive")
|
||||
font: UM.Theme.getFont("medium")
|
||||
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
states:
|
||||
[
|
||||
State
|
||||
{
|
||||
name: "disabled"
|
||||
when: !control.enabled
|
||||
PropertyChanges
|
||||
{
|
||||
target: label
|
||||
font: UM.Theme.getFont("default_italic")
|
||||
}
|
||||
},
|
||||
State
|
||||
{
|
||||
name: "active"
|
||||
when: control.active
|
||||
PropertyChanges
|
||||
{
|
||||
target: label
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
color: UM.Theme.getColor("toolbox_header_button_text_active")
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -189,8 +189,10 @@ class Toolbox(QObject, Extension):
|
||||
"packages": QUrl("{base_url}/packages".format(base_url = self._api_url))
|
||||
}
|
||||
|
||||
@pyqtSlot()
|
||||
def browsePackages(self) -> None:
|
||||
# Request the latest and greatest!
|
||||
self._fetchPackageData()
|
||||
|
||||
def _fetchPackageData(self):
|
||||
# Create the network manager:
|
||||
# This was formerly its own function but really had no reason to be as
|
||||
# it was never called more than once ever.
|
||||
@ -208,6 +210,10 @@ class Toolbox(QObject, Extension):
|
||||
# Gather installed packages:
|
||||
self._updateInstalledModels()
|
||||
|
||||
@pyqtSlot()
|
||||
def browsePackages(self) -> None:
|
||||
self._fetchPackageData()
|
||||
|
||||
if not self._dialog:
|
||||
self._dialog = self._createDialog("Toolbox.qml")
|
||||
|
||||
@ -454,36 +460,6 @@ class Toolbox(QObject, Extension):
|
||||
break
|
||||
return remote_package
|
||||
|
||||
# Checks
|
||||
# --------------------------------------------------------------------------
|
||||
@pyqtSlot(str, result = bool)
|
||||
def canUpdate(self, package_id: str) -> bool:
|
||||
local_package = self._package_manager.getInstalledPackageInfo(package_id)
|
||||
if local_package is None:
|
||||
local_package = self.getOldPluginPackageMetadata(package_id)
|
||||
if local_package is None:
|
||||
return False
|
||||
|
||||
remote_package = self.getRemotePackage(package_id)
|
||||
if remote_package is None:
|
||||
return False
|
||||
|
||||
local_version = Version(local_package["package_version"])
|
||||
remote_version = Version(remote_package["package_version"])
|
||||
can_upgrade = False
|
||||
if remote_version > local_version:
|
||||
can_upgrade = True
|
||||
# A package with the same version can be built to have different SDK versions. So, for a package with the same
|
||||
# version, we also need to check if the current one has a lower SDK version. If so, this package should also
|
||||
# be upgradable.
|
||||
elif remote_version == local_version:
|
||||
# First read sdk_version_semver. If that doesn't exist, read just sdk_version (old version system).
|
||||
remote_sdk_version = Version(remote_package.get("sdk_version_semver", remote_package.get("sdk_version", 0)))
|
||||
local_sdk_version = Version(local_package.get("sdk_version_semver", local_package.get("sdk_version", 0)))
|
||||
can_upgrade = local_sdk_version < remote_sdk_version
|
||||
|
||||
return can_upgrade
|
||||
|
||||
@pyqtSlot(str, result = bool)
|
||||
def canDowngrade(self, package_id: str) -> bool:
|
||||
# If the currently installed version is higher than the bundled version (if present), the we can downgrade
|
||||
@ -635,6 +611,7 @@ class Toolbox(QObject, Extension):
|
||||
self._models[response_type].setFilter({"type": "plugin"})
|
||||
self.reBuildMaterialsModels()
|
||||
self.reBuildPluginsModels()
|
||||
self._notifyPackageManager()
|
||||
elif response_type is "authors":
|
||||
self._models[response_type].setFilter({"package_types": "material"})
|
||||
self._models[response_type].setFilter({"tags": "generic"})
|
||||
@ -655,6 +632,11 @@ class Toolbox(QObject, Extension):
|
||||
# Ignore any operation that is not a get operation
|
||||
pass
|
||||
|
||||
# This function goes through all known remote versions of a package and notifies the package manager of this change
|
||||
def _notifyPackageManager(self):
|
||||
for package in self._server_response_data["packages"]:
|
||||
self._package_manager.addAvailablePackageVersion(package["package_id"], Version(package["package_version"]))
|
||||
|
||||
def _onDownloadProgress(self, bytes_sent: int, bytes_total: int) -> None:
|
||||
if bytes_total > 0:
|
||||
new_progress = bytes_sent / bytes_total * 100
|
||||
|
@ -459,6 +459,7 @@
|
||||
"label": "Gantry height",
|
||||
"description": "The height difference between the tip of the nozzle and the gantry system (X and Y axes).",
|
||||
"default_value": 99999999999,
|
||||
"value": "machine_height",
|
||||
"type": "float",
|
||||
"settable_per_mesh": false,
|
||||
"settable_per_extruder": false,
|
||||
|
163
resources/definitions/hms434.def.json
Normal file
163
resources/definitions/hms434.def.json
Normal file
@ -0,0 +1,163 @@
|
||||
{
|
||||
"name": "HMS434",
|
||||
"version": 2,
|
||||
"inherits": "fdmprinter",
|
||||
"metadata": {
|
||||
"visible": true,
|
||||
"author": "Scheepers",
|
||||
"manufacturer": "MaukCC",
|
||||
"file_formats": "text/x-gcode",
|
||||
|
||||
"has_materials": true,
|
||||
"has_machine_materials": false,
|
||||
"preferred_material": "generic_pla",
|
||||
"exclude_materials": [ "chromatik_pla", "fabtotum_abs", "fabtotum_nylon", "fabtotum_pla", "fabtotum_tpu", "fiberlogy_hd_pla", "filo3d_pla", "filo3d_pla_green", "filo3d_pla_red", "imade3d_petg_green", "imade3d_petg_pink", "imade3d_pla_green", "imade3d_pla_pink", "innofill_innoflex60_175", "octofiber_pla", "imade3d_pla", "polyflex_pla", "polymax_pla", "polyplus_pla", "polywood_pla", "tizyx_abs", "tizyx_pla", "tizyx_pla_bois", "verbatim_bvoh_175", "Vertex_Delta_ABS", "Vertex_Delta_PET", "Vertex_Delta_PLA", "Vertex_Delta_TPU", "zyyx_pro_flex", "zyyx_pro_pla", "generic_cpe_175", "generic_nylon_175", "dsm_arnitel2045_175", "dsm_novamid1070_175", "generic_tpu_175", "generic_pc_175" ],
|
||||
|
||||
"has_variants": true,
|
||||
"variants_name": "Tool",
|
||||
"preferred_variant_name": "0.8mm TP extruder",
|
||||
|
||||
"has_machine_quality": true,
|
||||
"preferred_quality_type": "normal",
|
||||
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "hms434_tool_1",
|
||||
"1": "hms434_tool_2",
|
||||
"2": "hms434_tool_3",
|
||||
"3": "hms434_tool_4",
|
||||
"4": "hms434_tool_5",
|
||||
"5": "hms434_tool_6",
|
||||
"6": "hms434_tool_7",
|
||||
"7": "hms434_tool_8"
|
||||
},
|
||||
"platform": "hms_platform.obj",
|
||||
"platform_offset": [ 26, -13.2, 162.5],
|
||||
"platform_texture": "hms434.png",
|
||||
"first_start_actions": ["MachineSettingsAction"],
|
||||
"supported_actions": ["MachineSettingsAction"]
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"machine_extruder_count": {"default_value": 1 },
|
||||
"material_diameter": {"default_value": 1.75 },
|
||||
"machine_heated_bed": {"default_value": true },
|
||||
"machine_center_is_zero": {"default_value": false },
|
||||
"gantry_height": {"default_value": 35 },
|
||||
"machine_height": {"default_value": 400 },
|
||||
"machine_depth": {"default_value": 325 },
|
||||
"machine_width": {"default_value": 450 },
|
||||
"machine_gcode_flavor": {"default_value": "RepRap (RepRap)" },
|
||||
"material_print_temp_wait": {"default_value": true},
|
||||
"material_bed_temp_wait": {"default_value": true },
|
||||
"prime_tower_enable": {"default_value": false },
|
||||
"prime_tower_size": {"value": 20.6 },
|
||||
"prime_tower_position_x": {"value": 125 },
|
||||
"prime_tower_position_y": {"value": 70 },
|
||||
"prime_blob_enable": {"default_value": false },
|
||||
"machine_max_feedrate_z": {"default_value": 1200 },
|
||||
"machine_start_gcode": {"default_value": "\n;Neither HMS434 nor any of HMS434 Subsidiaries has any liabilities or gives any warrenties on this .gcode file,\n\n;or on any or all objects made with this .gcode file \nM117 Homing Y ......\nG28 Y\nM117 Homing X ......\nG28 X\nM117 Homing Z ......\nG28 Z F100\nG1 Z10 F600\n\nG1 X-71 F9000;go to wipe point\nG1 Y-100 F9000\nG1 Z0 F900\n\nG1 Z0.2 F900\n\nG1 Y-65 F12000\nG1 X50 Y0 F9000\nM117 HMS434 Printing ...\n\n" },
|
||||
"machine_end_gcode": {"default_value": "" },
|
||||
|
||||
"retraction_extra_prime_amount": {"minimum_value_warning": "-2.0" },
|
||||
"optimize_wall_printing_order": {"default_value": true },
|
||||
"machine_nozzle_heat_up_speed": {"default_value": 12},
|
||||
"machine_nozzle_cool_down_speed": {"default_value": 20},
|
||||
"machine_min_cool_heat_time_window": {"default_value": 5},
|
||||
|
||||
"layer_height": {"maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" },
|
||||
"layer_height_0": {"maximum_value": "(0.8 * min(extruderValues('machine_nozzle_size')))" },
|
||||
"line_width": {"value": "(machine_nozzle_size + layer_height)" },
|
||||
"infill_line_width": {"value": "(line_width)" },
|
||||
"initial_layer_line_width_factor": {"value": 110 },
|
||||
|
||||
"wall_thickness": {"value": "(line_width * 3) if infill_sparse_density < 95 else line_width" },
|
||||
"roofing_layer_count": {"value": "4" },
|
||||
"top_bottom_thickness": {"value": "(layer_height_0 + (layer_height * 3))" },
|
||||
"top_layers": {"value": "4" },
|
||||
"bottom_layers": {"value": "(top_layers)" },
|
||||
"wall_0_inset": {"value": "0" },
|
||||
"alternate_extra_perimeter": {"value": false },
|
||||
"filter_out_tiny_gaps": {"value": false },
|
||||
"fill_outline_gaps": {"value": true },
|
||||
"skin_outline_count": {"value": "0"},
|
||||
|
||||
"infill_sparse_density": {"value": 30},
|
||||
"infill_pattern": {"value": "'lines'"},
|
||||
"infill_overlap": {"value": 5},
|
||||
"skin_overlap": {"value": 5},
|
||||
"infill_wipe_dist": {"value": 0.0},
|
||||
"infill_before_walls": {"value": false},
|
||||
|
||||
"material_print_temperature_layer_0": {"value": "material_print_temperature + 5"},
|
||||
"material_initial_print_temperature": {"value": "material_print_temperature",
|
||||
"maximum_value_warning": "material_print_temperature + 15"},
|
||||
"material_final_print_temperature": {"value": "material_print_temperature"},
|
||||
"material_bed_temperature_layer_0": {"value": "material_bed_temperature + 1"},
|
||||
"material_flow": {"value": "120 if infill_sparse_density < 95 else 115"},
|
||||
"retraction_amount": {"value": "1"},
|
||||
"retraction_speed": {"value": "20"},
|
||||
"retraction_prime_speed": {"value": "8"},
|
||||
"retraction_min_travel": {"value": "(round(line_width * 10))"},
|
||||
"switch_extruder_retraction_amount": {"value": 2},
|
||||
"switch_extruder_retraction_speeds": {"value": "(retraction_speed)"},
|
||||
"switch_extruder_prime_speed": {"value": "(retraction_prime_speed)"},
|
||||
|
||||
"speed_print": {"value": "50"},
|
||||
"speed_infill": {"value": "speed_print"},
|
||||
"speed_wall": {"value": "(speed_print/5*3) if speed_print < 51 else speed_print"},
|
||||
"speed_wall_x": {"value": "speed_wall"},
|
||||
"speed_layer_0": {"value": "(speed_print/5*4) if speed_print < 51 else speed_print"},
|
||||
"speed_topbottom": {"value": "speed_layer_0"},
|
||||
"speed_travel": {"value": "100"},
|
||||
"speed_travel_layer_0": {"value": "speed_travel"},
|
||||
"speed_support_interface": {"value": "speed_topbottom"},
|
||||
"max_feedrate_z_override": {"value": 10},
|
||||
"speed_slowdown_layers": {"value": 1},
|
||||
"acceleration_print": {"value": 200},
|
||||
"acceleration_travel": {"value": 200},
|
||||
"jerk_print": {"value": 5},
|
||||
"jerk_travel": {"value": 5},
|
||||
|
||||
"retraction_hop_enabled": {"value": false},
|
||||
"retraction_hop": {"value": 1},
|
||||
"retraction_combing": {"value": "off"},
|
||||
|
||||
"cool_fan_speed": {"value": 0},
|
||||
"cool_fan_enabled": {"value": true},
|
||||
"cool_min_layer_time_fan_speed_max": {"value": "cool_min_layer_time"},
|
||||
"cool_min_layer_time": {"value": 20},
|
||||
"cool_min_speed": {"value": "speed_wall_x"},
|
||||
"cool_lift_head": {"value": false},
|
||||
|
||||
"support_z_distance": {"value": 0},
|
||||
"support_xy_distance": {"value": 1},
|
||||
"support_join_distance": {"value": 10},
|
||||
"support_interface_enable": {"value": true},
|
||||
"support_interface_height": {"value": 0.5},
|
||||
"support_interface_pattern": {"value": "'lines'"},
|
||||
|
||||
"adhesion_type": {"value": "'skirt'"},
|
||||
"skirt_gap": {"value": 1},
|
||||
"skirt_brim_minimal_length": {"value": 50},
|
||||
|
||||
"coasting_enable": {"value": true},
|
||||
"coasting_volume": {"value": 0.1},
|
||||
"coasting_min_volume": {"value": 0.17},
|
||||
"coasting_speed": {"value": 90},
|
||||
"bridge_settings_enabled": {"value": true},
|
||||
"bridge_wall_min_length": {"value": 3},
|
||||
"bridge_skin_support_threshold": {"value": 90},
|
||||
"bridge_wall_speed": {"value": 15},
|
||||
"bridge_wall_material_flow": {"value": 130},
|
||||
"bridge_skin_speed": {"value": 15},
|
||||
"bridge_skin_material_flow": {"value": 130},
|
||||
"bridge_fan_speed": {"value": 0},
|
||||
"bridge_skin_density_2": {"value": 100},
|
||||
"bridge_skin_density_3": {"value": 100},
|
||||
"bridge_skin_material_flow_2": {"value": 110},
|
||||
"bridge_skin_material_flow_3": {"value": 100},
|
||||
"bridge_skin_speed_2": {"value": 20},
|
||||
"bridge_skin_speed_3": {"value": 30}
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
"has_materials": true,
|
||||
"has_machine_materials": true,
|
||||
"has_variants": true,
|
||||
"exclude_materials": [ "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ],
|
||||
"exclude_materials": [ "generic_hips", "generic_petg", "generic_cffcpe", "generic_cffpa", "generic_gffcpe", "generic_gffpa", "structur3d_dap100silicone" ],
|
||||
"preferred_variant_name": "AA 0.4",
|
||||
"preferred_quality_type": "normal",
|
||||
"variants_name": "Print core",
|
||||
|
26
resources/extruders/hms434_tool_1.def.json
Normal file
26
resources/extruders/hms434_tool_1.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_1",
|
||||
"version": 2,
|
||||
"name": "Tool 1",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "0"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 0,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM117 changing tool....\nM109 T0 S{material_print_temperature}\n\nG1 Y-47 F9000; wipe\nG1 X150 Y10 F9000\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X150 Y10 F9000\nG1 X-47 Y47 F9000 ; go to wipe position\nG1 X0 Y-100 F3000; wipe\nG1 X-44 F9000\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_2.def.json
Normal file
26
resources/extruders/hms434_tool_2.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_2",
|
||||
"version": 2,
|
||||
"name": "Tool 2",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "1"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 1,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 20.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T1\n\nM117 changing tool....\nM109 T1 S{material_print_temperature}\n\nG1 Y-47 F9000; wipe\nG1 X150 Y10 F9000\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T1 S{material_standby_temperature}\nG1 X150 Y10 F9000\nG1 X-47 Y47 F9000 ; go to wipe position\nG1 X0 Y-100 F3000; wipe\nG1 X-44 F9000\n;end T1\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_3.def.json
Normal file
26
resources/extruders/hms434_tool_3.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_3",
|
||||
"version": 2,
|
||||
"name": "Tool 3",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "2"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 2,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start Tool 3\n\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\n;end Tool 3\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_4.def.json
Normal file
26
resources/extruders/hms434_tool_4.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_4",
|
||||
"version": 2,
|
||||
"name": "Tool 4",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "3"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 3,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_5.def.json
Normal file
26
resources/extruders/hms434_tool_5.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_5",
|
||||
"version": 2,
|
||||
"name": "Tool 5",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "4"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 4,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_6.def.json
Normal file
26
resources/extruders/hms434_tool_6.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_6",
|
||||
"version": 2,
|
||||
"name": "Tool 6",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "5"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 5,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_7.def.json
Normal file
26
resources/extruders/hms434_tool_7.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_7",
|
||||
"version": 2,
|
||||
"name": "Tool 7",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "6"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 6,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
26
resources/extruders/hms434_tool_8.def.json
Normal file
26
resources/extruders/hms434_tool_8.def.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"id": "hms434_tool_8",
|
||||
"version": 2,
|
||||
"name": "Tool 8",
|
||||
"inherits": "fdmextruder",
|
||||
"metadata": {
|
||||
"machine": "hms434",
|
||||
"position": "7"
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
"extruder_nr": {
|
||||
"default_value": 7,
|
||||
"maximum_value": "8"
|
||||
},
|
||||
"machine_nozzle_offset_x": { "default_value": 0.0 },
|
||||
"machine_nozzle_offset_y": { "default_value": 0.0 },
|
||||
"material_diameter": { "default_value": 1.75 },
|
||||
"machine_extruder_start_code": {
|
||||
"default_value": "\n;start T0\n\nM104 T0 S{material_print_temperature_layer_0}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 S{material_print_temperature_layer_0}; wait for temp\nG1 E10 F300; prime\nG92 E0\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\nM117 printing...\n"
|
||||
},
|
||||
"machine_extruder_end_code": {
|
||||
"default_value": "\nM104 T0 S{material_standby_temperature}\nG1 X65 Y35 F9000 ; go to wipe position\nM109 T0 R{material_standby_temperature}; wait for temp\nG1 X45 Y15 F3000; wipe\nG1 X55 F9000\nG1 Y35 F6000; wipe again\n\n;end T0\n\n"
|
||||
}
|
||||
}
|
||||
}
|
BIN
resources/images/hms434.png
Normal file
BIN
resources/images/hms434.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
44753
resources/meshes/hms_platform.obj
Normal file
44753
resources/meshes/hms_platform.obj
Normal file
File diff suppressed because it is too large
Load Diff
@ -117,6 +117,25 @@ Item
|
||||
rightMargin: UM.Theme.getSize("default_margin").width
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Cura.NotificationIcon
|
||||
{
|
||||
id: marketplaceNotificationIcon
|
||||
anchors
|
||||
{
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
rightMargin: (-0.5 * width) | 0
|
||||
topMargin: (-0.5 * height) | 0
|
||||
}
|
||||
visible: CuraApplication.getPackageManager().packagesWithUpdate.length > 0
|
||||
|
||||
labelText:
|
||||
{
|
||||
const itemCount = CuraApplication.getPackageManager().packagesWithUpdate.length
|
||||
return itemCount > 9 ? "9+" : itemCount
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AccountWidget
|
||||
|
@ -62,14 +62,19 @@ Item
|
||||
|
||||
var tooltip = "<b>%1</b>\n<p>%2</p>".arg(definition.label).arg(definition.description)
|
||||
|
||||
if(!propertyProvider.isValueUsed)
|
||||
{
|
||||
tooltip += "<i>%1</i><br/><br/>".arg(catalog.i18nc("@label", "This setting is not used because all the settings that it influences are overriden."))
|
||||
}
|
||||
|
||||
if (affects_list != "")
|
||||
{
|
||||
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label Header for list of settings.", "Affects")).arg(affects_list)
|
||||
tooltip += "<b>%1</b><ul>%2</ul>".arg(catalog.i18nc("@label Header for list of settings.", "Affects")).arg(affects_list)
|
||||
}
|
||||
|
||||
if (affected_by_list != "")
|
||||
{
|
||||
tooltip += "<br/><b>%1</b>\n<ul>\n%2</ul>".arg(catalog.i18nc("@label Header for list of settings.", "Affected By")).arg(affected_by_list)
|
||||
tooltip += "<b>%1</b><ul>%2</ul>".arg(catalog.i18nc("@label Header for list of settings.", "Affected By")).arg(affected_by_list)
|
||||
}
|
||||
|
||||
return tooltip
|
||||
|
35
resources/qml/Widgets/NotificationIcon.qml
Normal file
35
resources/qml/Widgets/NotificationIcon.qml
Normal file
@ -0,0 +1,35 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.4 as UM
|
||||
|
||||
|
||||
//
|
||||
// A notification icon which is a circle with a number at the center, that can be used to indicate, for example, how
|
||||
// many new messages that are available.
|
||||
//
|
||||
Rectangle
|
||||
{
|
||||
id: notificationIcon
|
||||
color: UM.Theme.getColor("notification_icon")
|
||||
width: UM.Theme.getSize("notification_icon").width
|
||||
height: UM.Theme.getSize("notification_icon").height
|
||||
radius: (0.5 * width) | 0
|
||||
|
||||
property alias labelText: notificationLabel.text
|
||||
property alias labelFont: notificationLabel.font
|
||||
|
||||
Label
|
||||
{
|
||||
id: notificationLabel
|
||||
anchors.centerIn: parent
|
||||
anchors.fill: parent
|
||||
color: UM.Theme.getColor("primary_text")
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font: UM.Theme.getFont("small")
|
||||
}
|
||||
}
|
@ -23,6 +23,7 @@ ToolTip 1.0 ToolTip.qml
|
||||
|
||||
CheckBox 1.0 CheckBox.qml
|
||||
ComboBox 1.0 ComboBox.qml
|
||||
NotificationIcon 1.0 NotificationIcon.qml
|
||||
ProgressBar 1.0 ProgressBar.qml
|
||||
RadioButton 1.0 RadioButton.qml
|
||||
TabButton 1.0 TabButton.qml
|
||||
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = Coarse
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = coarse
|
||||
weight = -3
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 0.4
|
||||
layer_height_0 = 0.4
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = Extra Coarse
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = extra coarse
|
||||
weight = -4
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 0.6
|
||||
layer_height_0 = 0.6
|
16
resources/quality/hms434/hms434_global_High_Quality.inst.cfg
Normal file
16
resources/quality/hms434/hms434_global_High_Quality.inst.cfg
Normal file
@ -0,0 +1,16 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = High
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = high
|
||||
weight = 1
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 0.1
|
||||
layer_height_0 = 0.2
|
||||
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = Normal
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = normal
|
||||
weight = 0
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 0.2
|
||||
layer_height_0 = 0.2
|
@ -0,0 +1,16 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = Super Coarse
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = super coarse
|
||||
weight = -4
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 0.8
|
||||
layer_height_0 = 0.8
|
||||
|
@ -0,0 +1,15 @@
|
||||
[general]
|
||||
version = 4
|
||||
name = Ultra Coarse
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = quality
|
||||
quality_type = ultra coarse
|
||||
weight = -4
|
||||
global_quality = True
|
||||
|
||||
[values]
|
||||
layer_height = 1.0
|
||||
layer_height_0 = 1.0
|
@ -214,7 +214,6 @@
|
||||
|
||||
"toolbox_header_button_text_active": [255, 255, 255, 255],
|
||||
"toolbox_header_button_text_inactive": [128, 128, 128, 255],
|
||||
"toolbox_header_button_text_hovered": [255, 255, 255, 255],
|
||||
|
||||
"monitor_printer_family_tag": [86, 86, 106, 255],
|
||||
"monitor_text_primary": [229, 229, 229, 255],
|
||||
|
@ -191,6 +191,8 @@
|
||||
|
||||
"toolbar_background": [255, 255, 255, 255],
|
||||
|
||||
"notification_icon": [255, 0, 0, 255],
|
||||
|
||||
"printer_type_label_background": [228, 228, 242, 255],
|
||||
|
||||
"window_disabled_background": [0, 0, 0, 255],
|
||||
@ -388,7 +390,6 @@
|
||||
|
||||
"toolbox_header_button_text_active": [0, 0, 0, 255],
|
||||
"toolbox_header_button_text_inactive": [0, 0, 0, 255],
|
||||
"toolbox_header_button_text_hovered": [0, 0, 0, 255],
|
||||
|
||||
"favorites_header_bar": [245, 245, 245, 255],
|
||||
"favorites_header_hover": [245, 245, 245, 255],
|
||||
@ -602,6 +603,8 @@
|
||||
"toolbox_action_button": [8.0, 2.5],
|
||||
"toolbox_loader": [2.0, 2.0],
|
||||
|
||||
"notification_icon": [1.4, 1.4],
|
||||
|
||||
"avatar_image": [6.8, 6.8],
|
||||
|
||||
"monitor_config_override_box": [1.0, 14.0],
|
||||
|
13
resources/variants/hms434_0.25tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_0.25tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 0.25mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 0.25
|
||||
machine_nozzle_tip_outer_diameter = 1.05
|
13
resources/variants/hms434_0.4tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_0.4tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 0.4mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 0.4
|
||||
machine_nozzle_tip_outer_diameter = 1.05
|
13
resources/variants/hms434_0.6tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_0.6tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 0.6mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 0.6
|
||||
machine_nozzle_tip_outer_diameter = 1.05
|
13
resources/variants/hms434_0.8tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_0.8tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 0.8mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 0.8
|
||||
machine_nozzle_tip_outer_diameter = 1.05
|
13
resources/variants/hms434_1.2tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_1.2tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 1.2mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 1.2
|
||||
machine_nozzle_tip_outer_diameter = 1.3
|
13
resources/variants/hms434_1.5tpnozzle.inst.cfg
Normal file
13
resources/variants/hms434_1.5tpnozzle.inst.cfg
Normal file
@ -0,0 +1,13 @@
|
||||
[general]
|
||||
name = 1.5mm TP extruder
|
||||
version = 4
|
||||
definition = hms434
|
||||
|
||||
[metadata]
|
||||
setting_version = 7
|
||||
type = variant
|
||||
hardware_type = nozzle
|
||||
|
||||
[values]
|
||||
machine_nozzle_size = 1.5
|
||||
machine_nozzle_tip_outer_diameter = 1.6
|
@ -7,25 +7,31 @@ from cura.Settings.ExtruderManager import ExtruderManager
|
||||
from cura.Settings.MachineManager import MachineManager
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def global_stack():
|
||||
return MagicMock(name="Global Stack")
|
||||
|
||||
@pytest.fixture()
|
||||
def container_registry() -> ContainerRegistry:
|
||||
return MagicMock()
|
||||
return MagicMock(name = "ContainerRegistry")
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def extruder_manager(application, container_registry) -> ExtruderManager:
|
||||
if ExtruderManager.getInstance() is not None:
|
||||
# Reset the data
|
||||
ExtruderManager._ExtruderManager__instance = None
|
||||
|
||||
with patch("cura.CuraApplication.CuraApplication.getInstance", MagicMock(return_value=application)):
|
||||
with patch("UM.Settings.ContainerRegistry.ContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
|
||||
manager = ExtruderManager.getInstance()
|
||||
if manager is None:
|
||||
manager = ExtruderManager()
|
||||
|
||||
return manager
|
||||
|
||||
|
||||
@pytest.fixture()
|
||||
def machine_manager(application, extruder_manager, container_registry) -> MachineManager:
|
||||
def machine_manager(application, extruder_manager, container_registry, global_stack) -> MachineManager:
|
||||
application.getExtruderManager = MagicMock(return_value = extruder_manager)
|
||||
application.getGlobalContainerStack = MagicMock(return_value = global_stack)
|
||||
with patch("cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance", MagicMock(return_value=container_registry)):
|
||||
manager = MachineManager(application)
|
||||
|
||||
@ -45,3 +51,14 @@ def test_setActiveMachine(machine_manager):
|
||||
|
||||
# Although we mocked the application away, we still want to know if it was notified about the attempted change.
|
||||
machine_manager._application.setGlobalContainerStack.assert_called_with(mocked_global_stack)
|
||||
|
||||
|
||||
def test_hasUserSettings(machine_manager, application):
|
||||
mocked_stack = application.getGlobalContainerStack()
|
||||
|
||||
mocked_instance_container = MagicMock(name="UserSettingContainer")
|
||||
mocked_instance_container.getNumInstances = MagicMock(return_value = 12)
|
||||
mocked_stack.getTop = MagicMock(return_value = mocked_instance_container)
|
||||
|
||||
assert machine_manager.numUserSettings == 12
|
||||
assert machine_manager.hasUserSettings
|
||||
|
Loading…
x
Reference in New Issue
Block a user