Browse Source

Fix merge conflicts

Lipu Fei 6 years ago
parent
commit
9575c6b3b3

+ 1 - 3
plugins/Toolbox/resources/qml/ToolboxDetailTileActions.qml

@@ -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)
         }
     }
 }

+ 23 - 2
plugins/Toolbox/resources/qml/ToolboxHeader.qml

@@ -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

+ 1 - 2
plugins/Toolbox/resources/qml/ToolboxInstalledTileActions.qml

@@ -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)
             }
         }

+ 34 - 17
plugins/Toolbox/resources/qml/ToolboxTabButton.qml

@@ -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:
+        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
         {
-            if(control.hovered)
-            {
-                return UM.Theme.getColor("toolbox_header_button_text_hovered");
-            }
-            if(control.active)
+            name: "disabled"
+            when: !control.enabled
+            PropertyChanges
             {
-                return UM.Theme.getColor("toolbox_header_button_text_active");
+                target: label
+                font: UM.Theme.getFont("default_italic")
             }
-            else
+        },
+        State
+        {
+            name: "active"
+            when: control.active
+            PropertyChanges
             {
-                return UM.Theme.getColor("toolbox_header_button_text_inactive");
+                target: label
+                font: UM.Theme.getFont("medium_bold")
+                color: UM.Theme.getColor("toolbox_header_button_text_active")
             }
         }
-        font: control.enabled ? (control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")) : UM.Theme.getFont("default_italic")
-        verticalAlignment: Text.AlignVCenter
-        horizontalAlignment: Text.AlignHCenter
-        renderType: Text.NativeRendering
-    }
+    ]
 }

+ 14 - 32
plugins/Toolbox/src/Toolbox.py

@@ -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

+ 1 - 0
resources/definitions/fdmprinter.def.json

@@ -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,

+ 166 - 0
resources/definitions/hms434.def.json

@@ -0,0 +1,166 @@
+{
+    "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_wall_thickness": {"resolve": 0.7 },
+        "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 },
+        "material_initial_print_temperature": {"maximum_value_warning": "material_print_temperature + 15" },
+        "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"},
+        "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}
+    }
+}

+ 1 - 1
resources/definitions/ultimaker3.def.json

@@ -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 - 0
resources/extruders/hms434_tool_1.def.json

@@ -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 - 0
resources/extruders/hms434_tool_2.def.json

@@ -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"
+        }
+    }
+}

Some files were not shown because too many files changed in this diff