diff --git a/cura/BuildVolume.py b/cura/BuildVolume.py index 6da8f33fff..98e087707a 100755 --- a/cura/BuildVolume.py +++ b/cura/BuildVolume.py @@ -187,7 +187,7 @@ class BuildVolume(SceneNode): self._grid_shader.setUniformValue("u_gridColor1", Color(*theme.getColor("buildplate_grid_minor").getRgb())) renderer.queueNode(self, mode = RenderBatch.RenderMode.Lines) - renderer.queueNode(self, mesh = self._origin_mesh) + renderer.queueNode(self, mesh = self._origin_mesh, backface_cull = True) renderer.queueNode(self, mesh = self._grid_mesh, shader = self._grid_shader, backface_cull = True) if self._disallowed_area_mesh: renderer.queueNode(self, mesh = self._disallowed_area_mesh, shader = self._shader, transparent = True, backface_cull = True, sort = -9) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index d85050f824..441b0153e5 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -100,7 +100,6 @@ from PyQt5.QtWidgets import QMessageBox from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qmlRegisterType import sys -import os.path import numpy import copy import os @@ -133,20 +132,21 @@ class CuraApplication(QtApplication): QmlFiles = Resources.UserType + 1 Firmware = Resources.UserType + 2 QualityInstanceContainer = Resources.UserType + 3 - MaterialInstanceContainer = Resources.UserType + 4 - VariantInstanceContainer = Resources.UserType + 5 - UserInstanceContainer = Resources.UserType + 6 - MachineStack = Resources.UserType + 7 - ExtruderStack = Resources.UserType + 8 - DefinitionChangesContainer = Resources.UserType + 9 - SettingVisibilityPreset = Resources.UserType + 10 + QualityChangesInstanceContainer = Resources.UserType + 4 + MaterialInstanceContainer = Resources.UserType + 5 + VariantInstanceContainer = Resources.UserType + 6 + UserInstanceContainer = Resources.UserType + 7 + MachineStack = Resources.UserType + 8 + ExtruderStack = Resources.UserType + 9 + DefinitionChangesContainer = Resources.UserType + 10 + SettingVisibilityPreset = Resources.UserType + 11 Q_ENUMS(ResourceTypes) def __init__(self, **kwargs): self._boot_loading_time = time.time() # this list of dir names will be used by UM to detect an old cura directory - for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "user", "variants"]: + for dir_name in ["extruders", "machine_instances", "materials", "plugins", "quality", "quality_changes", "user", "variants"]: Resources.addExpectedDirNameInData(dir_name) Resources.addSearchPath(os.path.join(QtApplication.getInstallPrefix(), "share", "cura", "resources")) @@ -182,6 +182,7 @@ class CuraApplication(QtApplication): ## Add the 4 types of profiles to storage. Resources.addStorageType(self.ResourceTypes.QualityInstanceContainer, "quality") + Resources.addStorageType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") Resources.addStorageType(self.ResourceTypes.VariantInstanceContainer, "variants") Resources.addStorageType(self.ResourceTypes.MaterialInstanceContainer, "materials") Resources.addStorageType(self.ResourceTypes.UserInstanceContainer, "user") @@ -191,7 +192,7 @@ class CuraApplication(QtApplication): Resources.addStorageType(self.ResourceTypes.SettingVisibilityPreset, "setting_visibility") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality") - ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityInstanceContainer, "quality_changes") + ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.QualityChangesInstanceContainer, "quality_changes") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.VariantInstanceContainer, "variant") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.MaterialInstanceContainer, "material") ContainerRegistry.getInstance().addResourceType(self.ResourceTypes.UserInstanceContainer, "user") @@ -205,7 +206,7 @@ class CuraApplication(QtApplication): UM.VersionUpgradeManager.VersionUpgradeManager.getInstance().setCurrentVersions( { - ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityInstanceContainer, "application/x-uranium-instancecontainer"), + ("quality_changes", InstanceContainer.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.QualityChangesInstanceContainer, "application/x-uranium-instancecontainer"), ("machine_stack", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.MachineStack, "application/x-cura-globalstack"), ("extruder_train", ContainerStack.Version * 1000000 + self.SettingVersion): (self.ResourceTypes.ExtruderStack, "application/x-cura-extruderstack"), ("preferences", Preferences.Version * 1000000 + self.SettingVersion): (Resources.Preferences, "application/x-uranium-preferences"), @@ -241,6 +242,13 @@ class CuraApplication(QtApplication): tray_icon_name = "cura-icon-32.png", **kwargs) + # Initialize the package manager to remove and install scheduled packages. + from cura.CuraPackageManager import CuraPackageManager + self._cura_package_manager = CuraPackageManager(self) + self._cura_package_manager.initialize() + + self.initialize() + # FOR TESTING ONLY if kwargs["parsed_command_line"].get("trigger_early_crash", False): assert not "This crash is triggered by the trigger_early_crash command line argument." @@ -252,21 +260,33 @@ class CuraApplication(QtApplication): self.setWindowIcon(QIcon(Resources.getPath(Resources.Images, "cura-icon.png"))) self.setRequiredPlugins([ + # Misc.: + "ConsoleLogger", "CuraEngineBackend", "UserAgreement", - "SolidView", - "SimulationView", - "STLReader", - "SelectionTool", - "CameraTool", - "GCodeWriter", - "LocalFileOutputDevice", - "TranslateTool", "FileLogger", "XmlMaterialProfile", - "PluginBrowser", + "Toolbox", "PrepareStage", - "MonitorStage" + "MonitorStage", + "LocalFileOutputDevice", + + # Views: + "SimpleView", + "SimulationView", + "SolidView", + + # Readers & Writers: + "GCodeWriter", + "STLReader", + + # Tools: + "CameraTool", + "MirrorTool", + "RotateTool", + "ScaleTool", + "SelectionTool", + "TranslateTool" ]) self._physics = None self._volume = None @@ -388,8 +408,6 @@ class CuraApplication(QtApplication): self.globalContainerStackChanged.connect(self._onGlobalContainerChanged) self._onGlobalContainerChanged() - self._plugin_registry.addSupportedPluginExtension("curaplugin", "Cura Plugin") - self.getCuraSceneController().setActiveBuildPlate(0) # Initialize self._quality_profile_drop_down_menu_model = None @@ -397,7 +415,6 @@ class CuraApplication(QtApplication): CuraApplication.Created = True - def _onEngineCreated(self): self._engine.addImageProvider("camera", CameraImageProvider.CameraImageProvider()) @@ -526,7 +543,9 @@ class CuraApplication(QtApplication): self._plugins_loaded = True @classmethod - def addCommandLineOptions(self, parser, parsed_command_line = {}): + def addCommandLineOptions(cls, parser, parsed_command_line = None): + if parsed_command_line is None: + parsed_command_line = {} super().addCommandLineOptions(parser, parsed_command_line = parsed_command_line) parser.add_argument("file", nargs="*", help="Files to load after starting the application.") parser.add_argument("--single-instance", action="store_true", default=False) @@ -583,7 +602,10 @@ class CuraApplication(QtApplication): # This should be called directly before creating an instance of CuraApplication. # \returns \type{bool} True if the whole Cura app should continue running. @classmethod - def preStartUp(cls, parser = None, parsed_command_line = {}): + def preStartUp(cls, parser = None, parsed_command_line = None): + if parsed_command_line is None: + parsed_command_line = {} + # Peek the arguments and look for the 'single-instance' flag. if not parser: parser = argparse.ArgumentParser(prog = "cura", add_help = False) # pylint: disable=bad-whitespace @@ -700,7 +722,6 @@ class CuraApplication(QtApplication): self._post_start_timer.timeout.connect(self._onPostStart) self._post_start_timer.start() - Logger.log("d", "Booting Cura took %s seconds", time.time() - self._boot_loading_time) self.exec_() def _onPostStart(self): @@ -789,6 +810,10 @@ class CuraApplication(QtApplication): self._extruder_manager = ExtruderManager.createExtruderManager() return self._extruder_manager + @pyqtSlot(result = QObject) + def getCuraPackageManager(self, *args): + return self._cura_package_manager + def getVariantManager(self, *args): return self._variant_manager diff --git a/cura/CuraPackageManager.py b/cura/CuraPackageManager.py new file mode 100644 index 0000000000..e90b776e28 --- /dev/null +++ b/cura/CuraPackageManager.py @@ -0,0 +1,360 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from typing import Optional +import json +import os +import shutil +import zipfile +import tempfile + +from PyQt5.QtCore import pyqtSlot, QObject, pyqtSignal + +from UM.Application import Application +from UM.Logger import Logger +from UM.Resources import Resources +from UM.Version import Version + +class CuraPackageManager(QObject): + + # The prefix that's added to all files for an installed package to avoid naming conflicts with user created + # files. + PREFIX_PLACE_HOLDER = "-CP;" + + def __init__(self, parent = None): + super().__init__(parent) + + self._application = parent + self._container_registry = self._application.getContainerRegistry() + self._plugin_registry = self._application.getPluginRegistry() + + # JSON file that keeps track of all installed packages. + self._package_management_file_path = os.path.join(os.path.abspath(Resources.getDataStoragePath()), + "packages.json") + self._installed_package_dict = {} # a dict of all installed packages + self._to_remove_package_set = set() # a set of packages that need to be removed at the next start + self._to_install_package_dict = {} # a dict of packages that need to be installed at the next start + + installedPackagesChanged = pyqtSignal() # Emitted whenever the installed packages collection have been changed. + + def initialize(self): + self._loadManagementData() + self._removeAllScheduledPackages() + self._installAllScheduledPackages() + + # (for initialize) Loads the package management file if exists + def _loadManagementData(self) -> None: + if not os.path.exists(self._package_management_file_path): + Logger.log("i", "Package management file %s doesn't exist, do nothing", self._package_management_file_path) + return + + # Need to use the file lock here to prevent concurrent I/O from other processes/threads + container_registry = self._application.getContainerRegistry() + with container_registry.lockFile(): + with open(self._package_management_file_path, "r", encoding = "utf-8") as f: + management_dict = json.load(f, encoding = "utf-8") + + self._installed_package_dict = management_dict.get("installed", {}) + self._to_remove_package_set = set(management_dict.get("to_remove", [])) + self._to_install_package_dict = management_dict.get("to_install", {}) + + Logger.log("i", "Package management file %s is loaded", self._package_management_file_path) + + def _saveManagementData(self) -> None: + # Need to use the file lock here to prevent concurrent I/O from other processes/threads + container_registry = self._application.getContainerRegistry() + with container_registry.lockFile(): + with open(self._package_management_file_path, "w", encoding = "utf-8") as f: + data_dict = {"installed": self._installed_package_dict, + "to_remove": list(self._to_remove_package_set), + "to_install": self._to_install_package_dict} + data_dict["to_remove"] = list(data_dict["to_remove"]) + json.dump(data_dict, f) + Logger.log("i", "Package management file %s is saved", self._package_management_file_path) + + # (for initialize) Removes all packages that have been scheduled to be removed. + def _removeAllScheduledPackages(self) -> None: + for package_id in self._to_remove_package_set: + self._purgePackage(package_id) + self._to_remove_package_set.clear() + self._saveManagementData() + + # (for initialize) Installs all packages that have been scheduled to be installed. + def _installAllScheduledPackages(self) -> None: + for package_id, installation_package_data in self._to_install_package_dict.items(): + self._installPackage(installation_package_data) + self._to_install_package_dict.clear() + self._saveManagementData() + + # Checks the given package is installed. If so, return a dictionary that contains the package's information. + def getInstalledPackageInfo(self, package_id: str) -> Optional[dict]: + if package_id in self._to_remove_package_set: + return None + + if package_id in self._to_install_package_dict: + package_info = self._to_install_package_dict[package_id]["package_info"] + package_info["is_bundled"] = False + return package_info + + if package_id in self._installed_package_dict: + package_info = self._installed_package_dict.get(package_id) + package_info["is_bundled"] = False + return package_info + + for section, packages in self.getAllInstalledPackagesInfo().items(): + for package in packages: + if package["package_id"] == package_id: + package_info = package + return package_info + + return None + + def getAllInstalledPackagesInfo(self) -> dict: + installed_package_id_set = set(self._installed_package_dict.keys()) | set(self._to_install_package_dict.keys()) + installed_package_id_set = installed_package_id_set.difference(self._to_remove_package_set) + + managed_package_id_set = set(installed_package_id_set) | self._to_remove_package_set + + # TODO: For absolutely no reason, this function seems to run in a loop + # even though no loop is ever called with it. + + # map of -> -> + installed_packages_dict = {} + for package_id in installed_package_id_set: + if package_id in Application.getInstance().getRequiredPlugins(): + continue + if package_id in self._to_install_package_dict: + package_info = self._to_install_package_dict[package_id]["package_info"] + else: + package_info = self._installed_package_dict[package_id] + package_info["is_bundled"] = False + + package_type = package_info["package_type"] + if package_type not in installed_packages_dict: + installed_packages_dict[package_type] = [] + installed_packages_dict[package_type].append( package_info ) + + # We also need to get information from the plugin registry such as if a plugin is active + package_info["is_active"] = self._plugin_registry.isActivePlugin(package_id) + + # Also get all bundled plugins + all_metadata = self._plugin_registry.getAllMetaData() + for item in all_metadata: + plugin_package_info = self.__convertPluginMetadataToPackageMetadata(item) + # Only gather the bundled plugins here. + package_id = plugin_package_info["package_id"] + if package_id in managed_package_id_set: + continue + if package_id in Application.getInstance().getRequiredPlugins(): + continue + + plugin_package_info["is_bundled"] = True if plugin_package_info["author"]["display_name"] == "Ultimaker B.V." else False + plugin_package_info["is_active"] = self._plugin_registry.isActivePlugin(package_id) + package_type = "plugin" + if package_type not in installed_packages_dict: + installed_packages_dict[package_type] = [] + installed_packages_dict[package_type].append( plugin_package_info ) + + return installed_packages_dict + + def __convertPluginMetadataToPackageMetadata(self, plugin_metadata: dict) -> dict: + package_metadata = { + "package_id": plugin_metadata["id"], + "package_type": "plugin", + "display_name": plugin_metadata["plugin"]["name"], + "description": plugin_metadata["plugin"].get("description"), + "package_version": plugin_metadata["plugin"]["version"], + "cura_version": int(plugin_metadata["plugin"]["api"]), + "website": "", + "author_id": plugin_metadata["plugin"].get("author", "UnknownID"), + "author": { + "author_id": plugin_metadata["plugin"].get("author", "UnknownID"), + "display_name": plugin_metadata["plugin"].get("author", ""), + "email": "", + "website": "", + }, + "tags": ["plugin"], + } + return package_metadata + + # Checks if the given package is installed. + def isPackageInstalled(self, package_id: str) -> bool: + return self.getInstalledPackageInfo(package_id) is not None + + # Schedules the given package file to be installed upon the next start. + @pyqtSlot(str) + def installPackage(self, filename: str) -> None: + # Get package information + package_info = self.getPackageInfo(filename) + package_id = package_info["package_id"] + + has_changes = False + # Check the delayed installation and removal lists first + if package_id in self._to_remove_package_set: + self._to_remove_package_set.remove(package_id) + has_changes = True + + # Check if it is installed + installed_package_info = self.getInstalledPackageInfo(package_info["package_id"]) + to_install_package = installed_package_info is None # Install if the package has not been installed + if installed_package_info is not None: + # Compare versions and only schedule the installation if the given package is newer + new_version = package_info["package_version"] + installed_version = installed_package_info["package_version"] + if Version(new_version) > Version(installed_version): + Logger.log("i", "Package [%s] version [%s] is newer than the installed version [%s], update it.", + package_id, new_version, installed_version) + to_install_package = True + + if to_install_package: + Logger.log("i", "Package [%s] version [%s] is scheduled to be installed.", + package_id, package_info["package_version"]) + # Copy the file to cache dir so we don't need to rely on the original file to be present + package_cache_dir = os.path.join(os.path.abspath(Resources.getCacheStoragePath()), "cura_packages") + if not os.path.exists(package_cache_dir): + os.makedirs(package_cache_dir, exist_ok=True) + + target_file_path = os.path.join(package_cache_dir, package_id + ".curapackage") + shutil.copy2(filename, target_file_path) + + self._to_install_package_dict[package_id] = {"package_info": package_info, + "filename": target_file_path} + has_changes = True + + self._saveManagementData() + if has_changes: + self.installedPackagesChanged.emit() + + # Schedules the given package to be removed upon the next start. + @pyqtSlot(str) + def removePackage(self, package_id: str) -> None: + # Check the delayed installation and removal lists first + if not self.isPackageInstalled(package_id): + Logger.log("i", "Attempt to remove package [%s] that is not installed, do nothing.", package_id) + return + + # Remove from the delayed installation list if present + if package_id in self._to_install_package_dict: + del self._to_install_package_dict[package_id] + + # Schedule for a delayed removal: + self._to_remove_package_set.add(package_id) + + self._saveManagementData() + self.installedPackagesChanged.emit() + + # Removes everything associated with the given package ID. + def _purgePackage(self, package_id: str) -> None: + # Iterate through all directories in the data storage directory and look for sub-directories that belong to + # the package we need to remove, that is the sub-dirs with the package_id as names, and remove all those dirs. + data_storage_dir = os.path.abspath(Resources.getDataStoragePath()) + + for root, dir_names, _ in os.walk(data_storage_dir): + for dir_name in dir_names: + package_dir = os.path.join(root, dir_name, package_id) + if os.path.exists(package_dir): + Logger.log("i", "Removing '%s' for package [%s]", package_dir, package_id) + shutil.rmtree(package_dir) + break + + # Installs all files associated with the given package. + def _installPackage(self, installation_package_data: dict): + package_info = installation_package_data["package_info"] + filename = installation_package_data["filename"] + + package_id = package_info["package_id"] + + if not os.path.exists(filename): + Logger.log("w", "Package [%s] file '%s' is missing, cannot install this package", package_id, filename) + return + + Logger.log("i", "Installing package [%s] from file [%s]", package_id, filename) + + # If it's installed, remove it first and then install + if package_id in self._installed_package_dict: + self._purgePackage(package_id) + + # Install the package + archive = zipfile.ZipFile(filename, "r") + + temp_dir = tempfile.TemporaryDirectory() + archive.extractall(temp_dir.name) + + from cura.CuraApplication import CuraApplication + installation_dirs_dict = { + "materials": Resources.getStoragePath(CuraApplication.ResourceTypes.MaterialInstanceContainer), + "quality": Resources.getStoragePath(CuraApplication.ResourceTypes.QualityInstanceContainer), + "plugins": os.path.abspath(Resources.getStoragePath(Resources.Plugins)), + } + + for sub_dir_name, installation_root_dir in installation_dirs_dict.items(): + src_dir_path = os.path.join(temp_dir.name, "files", sub_dir_name) + dst_dir_path = os.path.join(installation_root_dir, package_id) + + if not os.path.exists(src_dir_path): + continue + + # Need to rename the container files so they don't get ID conflicts + to_rename_files = sub_dir_name not in ("plugins",) + self.__installPackageFiles(package_id, src_dir_path, dst_dir_path, need_to_rename_files= to_rename_files) + + archive.close() + + # Remove the file + os.remove(filename) + + def __installPackageFiles(self, package_id: str, src_dir: str, dst_dir: str, need_to_rename_files: bool = True) -> None: + shutil.move(src_dir, dst_dir) + + # Rename files if needed + if not need_to_rename_files: + return + for root, _, file_names in os.walk(dst_dir): + for filename in file_names: + new_filename = self.PREFIX_PLACE_HOLDER + package_id + "-" + filename + old_file_path = os.path.join(root, filename) + new_file_path = os.path.join(root, new_filename) + os.rename(old_file_path, new_file_path) + + # Gets package information from the given file. + def getPackageInfo(self, filename: str) -> dict: + archive = zipfile.ZipFile(filename, "r") + try: + # All information is in package.json + with archive.open("package.json", "r") as f: + package_info_dict = json.loads(f.read().decode("utf-8")) + return package_info_dict + except Exception as e: + raise RuntimeError("Could not get package information from file '%s': %s" % (filename, e)) + finally: + archive.close() + + # Gets the license file content if present in the given package file. + # Returns None if there is no license file found. + def getPackageLicense(self, filename: str) -> Optional[str]: + license_string = None + archive = zipfile.ZipFile(filename) + try: + # Go through all the files and use the first successful read as the result + for file_info in archive.infolist(): + if file_info.is_dir() or not file_info.filename.startswith("files/"): + continue + + filename_parts = os.path.basename(file_info.filename.lower()).split(".") + stripped_filename = filename_parts[0] + if stripped_filename in ("license", "licence"): + Logger.log("i", "Found potential license file '%s'", file_info.filename) + try: + with archive.open(file_info.filename, "r") as f: + data = f.read() + license_string = data.decode("utf-8") + break + except: + Logger.logException("e", "Failed to load potential license file '%s' as text file.", + file_info.filename) + license_string = None + except Exception as e: + raise RuntimeError("Could not get package license from file '%s': %s" % (filename, e)) + finally: + archive.close() + return license_string diff --git a/cura/ProfileReader.py b/cura/ReaderWriters/ProfileReader.py similarity index 100% rename from cura/ProfileReader.py rename to cura/ReaderWriters/ProfileReader.py diff --git a/cura/ProfileWriter.py b/cura/ReaderWriters/ProfileWriter.py similarity index 100% rename from cura/ProfileWriter.py rename to cura/ReaderWriters/ProfileWriter.py diff --git a/cura/ReaderWriters/__init__.py b/cura/ReaderWriters/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/cura/Settings/CuraContainerRegistry.py b/cura/Settings/CuraContainerRegistry.py index f7153e479f..6d8ed7c037 100644 --- a/cura/Settings/CuraContainerRegistry.py +++ b/cura/Settings/CuraContainerRegistry.py @@ -2,7 +2,6 @@ # Cura is released under the terms of the LGPLv3 or higher. import os -import os.path import re import configparser @@ -29,7 +28,7 @@ from . import GlobalStack from cura.CuraApplication import CuraApplication from cura.Machines.QualityManager import getMachineDefinitionIDForQualitySearch -from cura.ProfileReader import NoProfileException +from cura.ReaderWriters.ProfileReader import NoProfileException from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") @@ -676,7 +675,7 @@ class CuraContainerRegistry(ContainerRegistry): return extruder_stack def _findQualityChangesContainerInCuraFolder(self, name): - quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityInstanceContainer) + quality_changes_dir = Resources.getPath(CuraApplication.ResourceTypes.QualityChangesInstanceContainer) instance_container = None diff --git a/cura_app.py b/cura_app.py index 6c2d1c2937..8a04b8fe09 100755 --- a/cura_app.py +++ b/cura_app.py @@ -46,11 +46,15 @@ import faulthandler if Platform.isLinux(): # Needed for platform.linux_distribution, which is not available on Windows and OSX # For Ubuntu: https://bugs.launchpad.net/ubuntu/+source/python-qt4/+bug/941826 linux_distro_name = platform.linux_distribution()[0].lower() - # TODO: Needs a "if X11_GFX == 'nvidia'" here. The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix. - import ctypes - from ctypes.util import find_library - libGL = find_library("GL") - ctypes.CDLL(libGL, ctypes.RTLD_GLOBAL) + # The workaround is only needed on Ubuntu+NVidia drivers. Other drivers are not affected, but fine with this fix. + try: + import ctypes + from ctypes.util import find_library + libGL = find_library("GL") + ctypes.CDLL(libGL, ctypes.RTLD_GLOBAL) + except: + # GLES-only systems (e.g. ARM Mali) do not have libGL, ignore error + pass # When frozen, i.e. installer version, don't let PYTHONPATH mess up the search path for DLLs. if Platform.isWindows() and hasattr(sys, "frozen"): diff --git a/plugins/CuraProfileReader/CuraProfileReader.py b/plugins/CuraProfileReader/CuraProfileReader.py index 8630e885a5..d7370326e4 100644 --- a/plugins/CuraProfileReader/CuraProfileReader.py +++ b/plugins/CuraProfileReader/CuraProfileReader.py @@ -6,7 +6,7 @@ from UM.PluginRegistry import PluginRegistry from UM.Logger import Logger from UM.Settings.ContainerFormatError import ContainerFormatError from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make. -from cura.ProfileReader import ProfileReader +from cura.ReaderWriters.ProfileReader import ProfileReader import zipfile diff --git a/plugins/CuraProfileWriter/CuraProfileWriter.py b/plugins/CuraProfileWriter/CuraProfileWriter.py index 864a9b602c..78f0b078d9 100644 --- a/plugins/CuraProfileWriter/CuraProfileWriter.py +++ b/plugins/CuraProfileWriter/CuraProfileWriter.py @@ -3,8 +3,7 @@ # Uranium is released under the terms of the LGPLv3 or higher. from UM.Logger import Logger -from UM.SaveFile import SaveFile -from cura.ProfileWriter import ProfileWriter +from cura.ReaderWriters.ProfileWriter import ProfileWriter import zipfile ## Writes profiles to Cura's own profile format with config files. diff --git a/plugins/GCodeGzReader/GCodeGzReader.py b/plugins/GCodeGzReader/GCodeGzReader.py index 0843f8f3c0..86c0af89a2 100644 --- a/plugins/GCodeGzReader/GCodeGzReader.py +++ b/plugins/GCodeGzReader/GCodeGzReader.py @@ -3,11 +3,10 @@ import gzip -from io import TextIOWrapper - from UM.Mesh.MeshReader import MeshReader #The class we're extending/implementing. from UM.PluginRegistry import PluginRegistry + ## A file reader that reads gzipped g-code. # # If you're zipping g-code, you might as well use gzip! diff --git a/plugins/GCodeGzReader/__init__.py b/plugins/GCodeGzReader/__init__.py index 98965c00aa..6e720b1ed1 100644 --- a/plugins/GCodeGzReader/__init__.py +++ b/plugins/GCodeGzReader/__init__.py @@ -1,21 +1,24 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from UM.i18n import i18nCatalog +from UM.Platform import Platform + from . import GCodeGzReader -from UM.i18n import i18nCatalog i18n_catalog = i18nCatalog("cura") def getMetaData(): + file_extension = "gz" if Platform.isOSX() else "gcode.gz" return { "mesh_reader": [ { - "extension": "gcode.gz", + "extension": file_extension, "description": i18n_catalog.i18nc("@item:inlistbox", "Compressed G-code File") } ] } def register(app): - app.addNonSliceableExtension(".gcode.gz") + app.addNonSliceableExtension(".gz") return { "mesh_reader": GCodeGzReader.GCodeGzReader() } diff --git a/plugins/GCodeGzWriter/__init__.py b/plugins/GCodeGzWriter/__init__.py index c001467b3d..a4d576aef6 100644 --- a/plugins/GCodeGzWriter/__init__.py +++ b/plugins/GCodeGzWriter/__init__.py @@ -1,16 +1,19 @@ # Copyright (c) 2018 Ultimaker B.V. # Cura is released under the terms of the LGPLv3 or higher. +from UM.i18n import i18nCatalog +from UM.Platform import Platform + from . import GCodeGzWriter -from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") def getMetaData(): + file_extension = "gz" if Platform.isOSX() else "gcode.gz" return { "mesh_writer": { "output": [{ - "extension": "gcode.gz", + "extension": file_extension, "description": catalog.i18nc("@item:inlistbox", "Compressed G-code File"), "mime_type": "application/gzip", "mode": GCodeGzWriter.GCodeGzWriter.OutputMode.BinaryMode diff --git a/plugins/GCodeProfileReader/GCodeProfileReader.py b/plugins/GCodeProfileReader/GCodeProfileReader.py index 3ffbb9d910..4b50a600ba 100644 --- a/plugins/GCodeProfileReader/GCodeProfileReader.py +++ b/plugins/GCodeProfileReader/GCodeProfileReader.py @@ -10,7 +10,7 @@ from UM.Logger import Logger from UM.i18n import i18nCatalog catalog = i18nCatalog("cura") -from cura.ProfileReader import ProfileReader, NoProfileException +from cura.ReaderWriters.ProfileReader import ProfileReader, NoProfileException ## A class that reads profile data from g-code files. # diff --git a/plugins/LegacyProfileReader/LegacyProfileReader.py b/plugins/LegacyProfileReader/LegacyProfileReader.py index 824fc959a1..3c2b9bfa76 100644 --- a/plugins/LegacyProfileReader/LegacyProfileReader.py +++ b/plugins/LegacyProfileReader/LegacyProfileReader.py @@ -12,8 +12,7 @@ from UM.Logger import Logger # Logging errors. from UM.PluginRegistry import PluginRegistry # For getting the path to this plugin's directory. from UM.Settings.ContainerRegistry import ContainerRegistry #To create unique profile IDs. from UM.Settings.InstanceContainer import InstanceContainer # The new profile to make. -from cura.ProfileReader import ProfileReader # The plug-in type to implement. -from cura.Settings.ExtruderManager import ExtruderManager #To get the current extruder definition. +from cura.ReaderWriters.ProfileReader import ProfileReader # The plug-in type to implement. ## A plugin that reads profile data from legacy Cura versions. diff --git a/plugins/PluginBrowser/PluginBrowser.py b/plugins/PluginBrowser/PluginBrowser.py deleted file mode 100644 index bf18aa7a86..0000000000 --- a/plugins/PluginBrowser/PluginBrowser.py +++ /dev/null @@ -1,389 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# PluginBrowser is released under the terms of the LGPLv3 or higher. - -from PyQt5.QtCore import QUrl, QObject, pyqtProperty, pyqtSignal, pyqtSlot -from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply - -from UM.Application import Application -from UM.Logger import Logger -from UM.PluginError import PluginNotFoundError -from UM.PluginRegistry import PluginRegistry -from UM.Qt.Bindings.PluginsModel import PluginsModel -from UM.Extension import Extension -from UM.i18n import i18nCatalog - -from UM.Version import Version -from UM.Message import Message - -import json -import os -import tempfile -import platform -import zipfile - -from cura.CuraApplication import CuraApplication - -i18n_catalog = i18nCatalog("cura") - -class PluginBrowser(QObject, Extension): - def __init__(self, parent=None): - super().__init__(parent) - - self._api_version = 4 - self._api_url = "http://software.ultimaker.com/cura/v%s/" % self._api_version - - self._plugin_list_request = None - self._download_plugin_request = None - - self._download_plugin_reply = None - - self._network_manager = None - self._plugin_registry = Application.getInstance().getPluginRegistry() - - self._plugins_metadata = [] - self._plugins_model = None - - # Can be 'installed' or 'available' - self._view = "available" - - self._restart_required = False - - self._dialog = None - self._restartDialog = None - self._download_progress = 0 - - self._is_downloading = False - - self._request_header = [b"User-Agent", - str.encode("%s/%s (%s %s)" % (Application.getInstance().getApplicationName(), - Application.getInstance().getVersion(), - platform.system(), - platform.machine(), - ) - ) - ] - - # Installed plugins are really installed after reboot. In order to - # prevent the user from downloading the same file over and over again, - # we keep track of the upgraded plugins. - - # NOTE: This will be depreciated in favor of the 'status' system. - self._newly_installed_plugin_ids = [] - self._newly_uninstalled_plugin_ids = [] - - self._plugin_statuses = {} # type: Dict[str, str] - - # variables for the license agreement dialog - self._license_dialog_plugin_name = "" - self._license_dialog_license_content = "" - self._license_dialog_plugin_file_location = "" - self._restart_dialog_message = "" - - showLicenseDialog = pyqtSignal() - showRestartDialog = pyqtSignal() - pluginsMetadataChanged = pyqtSignal() - onDownloadProgressChanged = pyqtSignal() - onIsDownloadingChanged = pyqtSignal() - restartRequiredChanged = pyqtSignal() - viewChanged = pyqtSignal() - - @pyqtSlot(result = str) - def getLicenseDialogPluginName(self): - return self._license_dialog_plugin_name - - @pyqtSlot(result = str) - def getLicenseDialogPluginFileLocation(self): - return self._license_dialog_plugin_file_location - - @pyqtSlot(result = str) - def getLicenseDialogLicenseContent(self): - return self._license_dialog_license_content - - @pyqtSlot(result = str) - def getRestartDialogMessage(self): - return self._restart_dialog_message - - def openLicenseDialog(self, plugin_name, license_content, plugin_file_location): - self._license_dialog_plugin_name = plugin_name - self._license_dialog_license_content = license_content - self._license_dialog_plugin_file_location = plugin_file_location - self.showLicenseDialog.emit() - - def openRestartDialog(self, message): - self._restart_dialog_message = message - self.showRestartDialog.emit() - - @pyqtProperty(bool, notify = onIsDownloadingChanged) - def isDownloading(self): - return self._is_downloading - - @pyqtSlot() - def browsePlugins(self): - self._createNetworkManager() - self.requestPluginList() - - if not self._dialog: - self._dialog = self._createDialog("PluginBrowser.qml") - self._dialog.show() - - @pyqtSlot() - def requestPluginList(self): - Logger.log("i", "Requesting plugin list") - url = QUrl(self._api_url + "plugins") - self._plugin_list_request = QNetworkRequest(url) - self._plugin_list_request.setRawHeader(*self._request_header) - self._network_manager.get(self._plugin_list_request) - - def _createDialog(self, qml_name): - Logger.log("d", "Creating dialog [%s]", qml_name) - path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), qml_name) - dialog = Application.getInstance().createQmlComponent(path, {"manager": self}) - return dialog - - def setIsDownloading(self, is_downloading): - if self._is_downloading != is_downloading: - self._is_downloading = is_downloading - self.onIsDownloadingChanged.emit() - - def _onDownloadPluginProgress(self, bytes_sent, bytes_total): - if bytes_total > 0: - new_progress = bytes_sent / bytes_total * 100 - self.setDownloadProgress(new_progress) - if new_progress == 100.0: - self.setIsDownloading(False) - self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress) - - # must not delete the temporary file on Windows - self._temp_plugin_file = tempfile.NamedTemporaryFile(mode = "w+b", suffix = ".curaplugin", delete = False) - location = self._temp_plugin_file.name - - # write first and close, otherwise on Windows, it cannot read the file - self._temp_plugin_file.write(self._download_plugin_reply.readAll()) - self._temp_plugin_file.close() - - self._checkPluginLicenseOrInstall(location) - return - - ## Checks if the downloaded plugin ZIP file contains a license file or not. - # If it does, it will show a popup dialog displaying the license to the user. The plugin will be installed if the - # user accepts the license. - # If there is no license file, the plugin will be directory installed. - def _checkPluginLicenseOrInstall(self, file_path): - with zipfile.ZipFile(file_path, "r") as zip_ref: - plugin_id = None - for file in zip_ref.infolist(): - if file.filename.endswith("/"): - plugin_id = file.filename.strip("/") - break - - if plugin_id is None: - msg = i18n_catalog.i18nc("@info:status", "Failed to get plugin ID from {0}", file_path) - msg_title = i18n_catalog.i18nc("@info:tile", "Warning") - self._progress_message = Message(msg, lifetime=0, dismissable=False, title = msg_title) - return - - # find a potential license file - plugin_root_dir = plugin_id + "/" - license_file = None - for f in zip_ref.infolist(): - # skip directories (with file_size = 0) and files not in the plugin directory - if f.file_size == 0 or not f.filename.startswith(plugin_root_dir): - continue - file_name = os.path.basename(f.filename).lower() - file_base_name, file_ext = os.path.splitext(file_name) - if file_base_name in ["license", "licence"]: - license_file = f.filename - break - - # show a dialog for user to read and accept/decline the license - if license_file is not None: - Logger.log("i", "Found license file for plugin [%s], showing the license dialog to the user", plugin_id) - license_content = zip_ref.read(license_file).decode('utf-8') - self.openLicenseDialog(plugin_id, license_content, file_path) - return - - # there is no license file, directly install the plugin - self.installPlugin(file_path) - - @pyqtSlot(str) - def installPlugin(self, file_path): - # Ensure that it starts with a /, as otherwise it doesn't work on windows. - if not file_path.startswith("/"): - location = "/" + file_path - else: - location = file_path - - result = PluginRegistry.getInstance().installPlugin("file://" + location) - - self._newly_installed_plugin_ids.append(result["id"]) - self.pluginsMetadataChanged.emit() - - self.openRestartDialog(result["message"]) - self._restart_required = True - self.restartRequiredChanged.emit() - # Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Plugin browser"), result["message"]) - - @pyqtSlot(str) - def removePlugin(self, plugin_id): - result = PluginRegistry.getInstance().uninstallPlugin(plugin_id) - - self._newly_uninstalled_plugin_ids.append(result["id"]) - self.pluginsMetadataChanged.emit() - - self._restart_required = True - self.restartRequiredChanged.emit() - - Application.getInstance().messageBox(i18n_catalog.i18nc("@window:title", "Plugin browser"), result["message"]) - - @pyqtSlot(str) - def enablePlugin(self, plugin_id): - self._plugin_registry.enablePlugin(plugin_id) - self.pluginsMetadataChanged.emit() - Logger.log("i", "%s was set as 'active'", id) - - @pyqtSlot(str) - def disablePlugin(self, plugin_id): - self._plugin_registry.disablePlugin(plugin_id) - self.pluginsMetadataChanged.emit() - Logger.log("i", "%s was set as 'deactive'", id) - - @pyqtProperty(int, notify = onDownloadProgressChanged) - def downloadProgress(self): - return self._download_progress - - def setDownloadProgress(self, progress): - if progress != self._download_progress: - self._download_progress = progress - self.onDownloadProgressChanged.emit() - - @pyqtSlot(str) - def downloadAndInstallPlugin(self, url): - Logger.log("i", "Attempting to download & install plugin from %s", url) - url = QUrl(url) - self._download_plugin_request = QNetworkRequest(url) - self._download_plugin_request.setRawHeader(*self._request_header) - self._download_plugin_reply = self._network_manager.get(self._download_plugin_request) - self.setDownloadProgress(0) - self.setIsDownloading(True) - self._download_plugin_reply.downloadProgress.connect(self._onDownloadPluginProgress) - - @pyqtSlot() - def cancelDownload(self): - Logger.log("i", "user cancelled the download of a plugin") - self._download_plugin_reply.abort() - self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress) - self._download_plugin_reply = None - self._download_plugin_request = None - - self.setDownloadProgress(0) - self.setIsDownloading(False) - - @pyqtSlot(str) - def setView(self, view): - self._view = view - self.viewChanged.emit() - self.pluginsMetadataChanged.emit() - - @pyqtProperty(QObject, notify=pluginsMetadataChanged) - def pluginsModel(self): - self._plugins_model = PluginsModel(None, self._view) - # self._plugins_model.update() - - # Check each plugin the registry for matching plugin from server - # metadata, and if found, compare the versions. Higher version sets - # 'can_upgrade' to 'True': - for plugin in self._plugins_model.items: - if self._checkCanUpgrade(plugin["id"], plugin["version"]): - plugin["can_upgrade"] = True - - for item in self._plugins_metadata: - if item["id"] == plugin["id"]: - plugin["update_url"] = item["file_location"] - - return self._plugins_model - - def _checkCanUpgrade(self, plugin_id, version): - if not self._plugin_registry.isInstalledPlugin(plugin_id): - return False - - try: - plugin_object = self._plugin_registry.getPluginObject(plugin_id) - except PluginNotFoundError: - # CURA-5287 - # At this point, we know that this plugin is installed because it passed the previous check, but we cannot - # get the PluginObject. This means there is a bug in the plugin or something. So, we always allow to upgrade - # this plugin and hopefully that fixes it. - Logger.log("w", "Could not find plugin %s", plugin_id) - return True - - # Scan plugin server data for plugin with the given id: - for plugin in self._plugins_metadata: - if plugin_id == plugin["id"]: - reg_version = Version(plugin_object.getVersion()) - new_version = Version(plugin["version"]) - if new_version > reg_version: - Logger.log("i", "%s has an update available: %s", plugin["id"], plugin["version"]) - return True - return False - - def _onRequestFinished(self, reply): - reply_url = reply.url().toString() - if reply.error() == QNetworkReply.TimeoutError: - Logger.log("w", "Got a timeout.") - # Reset everything. - self.setDownloadProgress(0) - self.setIsDownloading(False) - if self._download_plugin_reply: - self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress) - self._download_plugin_reply.abort() - self._download_plugin_reply = None - return - elif reply.error() == QNetworkReply.HostNotFoundError: - Logger.log("w", "Unable to reach server.") - return - - if reply.operation() == QNetworkAccessManager.GetOperation: - if reply_url == self._api_url + "plugins": - try: - json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) - - # Add metadata to the manager: - self._plugins_metadata = json_data - self._plugin_registry.addExternalPlugins(self._plugins_metadata) - self.pluginsMetadataChanged.emit() - except json.decoder.JSONDecodeError: - Logger.log("w", "Received an invalid print job state message: Not valid JSON.") - return - else: - # Ignore any operation that is not a get operation - pass - - def _onNetworkAccesibleChanged(self, accessible): - if accessible == 0: - self.setDownloadProgress(0) - self.setIsDownloading(False) - if self._download_plugin_reply: - self._download_plugin_reply.downloadProgress.disconnect(self._onDownloadPluginProgress) - self._download_plugin_reply.abort() - self._download_plugin_reply = None - - def _createNetworkManager(self): - if self._network_manager: - self._network_manager.finished.disconnect(self._onRequestFinished) - self._network_manager.networkAccessibleChanged.disconnect(self._onNetworkAccesibleChanged) - - self._network_manager = QNetworkAccessManager() - self._network_manager.finished.connect(self._onRequestFinished) - self._network_manager.networkAccessibleChanged.connect(self._onNetworkAccesibleChanged) - - @pyqtProperty(bool, notify = restartRequiredChanged) - def restartRequired(self): - return self._restart_required - - @pyqtProperty(str, notify = viewChanged) - def viewing(self): - return self._view - - @pyqtSlot() - def restart(self): - CuraApplication.getInstance().windowClosed() diff --git a/plugins/PluginBrowser/PluginBrowser.qml b/plugins/PluginBrowser/PluginBrowser.qml deleted file mode 100644 index 6e5f532709..0000000000 --- a/plugins/PluginBrowser/PluginBrowser.qml +++ /dev/null @@ -1,369 +0,0 @@ -// Copyright (c) 2017 Ultimaker B.V. -// PluginBrowser is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Dialogs 1.1 -import QtQuick.Window 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 - -// TODO: Switch to QtQuick.Controls 2.x and remove QtQuick.Controls.Styles - -import UM 1.1 as UM - -Window { - id: base - - title: catalog.i18nc("@title:tab", "Plugins"); - modality: Qt.ApplicationModal - width: 800 * screenScaleFactor - height: 640 * screenScaleFactor - minimumWidth: 350 * screenScaleFactor - minimumHeight: 350 * screenScaleFactor - color: UM.Theme.getColor("sidebar") - - Item { - id: view - anchors { - fill: parent - leftMargin: UM.Theme.getSize("default_margin").width - rightMargin: UM.Theme.getSize("default_margin").width - topMargin: UM.Theme.getSize("default_margin").height - bottomMargin: UM.Theme.getSize("default_margin").height - } - - Rectangle { - id: topBar - width: parent.width - color: "transparent" - height: childrenRect.height - - Row { - spacing: 12 - height: childrenRect.height - width: childrenRect.width - anchors.horizontalCenter: parent.horizontalCenter - - Button { - text: "Install" - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 48 - Rectangle { - visible: manager.viewing == "available" ? true : false - color: UM.Theme.getColor("primary") - anchors.bottom: parent.bottom - width: parent.width - height: 3 - } - } - label: Text { - text: control.text - color: UM.Theme.getColor("text") - font { - pixelSize: 15 - } - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: manager.setView("available") - } - - Button { - text: "Manage" - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 48 - Rectangle { - visible: manager.viewing == "installed" ? true : false - color: UM.Theme.getColor("primary") - anchors.bottom: parent.bottom - width: parent.width - height: 3 - } - } - label: Text { - text: control.text - color: UM.Theme.getColor("text") - font { - pixelSize: 15 - } - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: manager.setView("installed") - } - } - } - - // Scroll view breaks in QtQuick.Controls 2.x - ScrollView { - id: installedPluginList - width: parent.width - height: 400 - - anchors { - top: topBar.bottom - topMargin: UM.Theme.getSize("default_margin").height - bottom: bottomBar.top - bottomMargin: UM.Theme.getSize("default_margin").height - } - - frameVisible: true - - ListView { - id: pluginList - property var activePlugin - property var filter: "installed" - - anchors.fill: parent - - model: manager.pluginsModel - delegate: PluginEntry {} - } - } - - Rectangle { - id: bottomBar - width: parent.width - height: childrenRect.height - color: "transparent" - anchors.bottom: parent.bottom - - Label { - visible: manager.restartRequired - text: "You will need to restart Cura before changes in plugins have effect." - height: 30 - verticalAlignment: Text.AlignVCenter - } - Button { - id: restartChangedButton - text: "Quit Cura" - anchors.right: closeButton.left - anchors.rightMargin: UM.Theme.getSize("default_margin").width - visible: manager.restartRequired - iconName: "dialog-restart" - onClicked: manager.restart() - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: UM.Theme.getColor("primary") - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: UM.Theme.getColor("button_text") - font { - pixelSize: 13 - bold: true - } - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - - Button { - id: closeButton - text: catalog.i18nc("@action:button", "Close") - iconName: "dialog-close" - onClicked: { - if ( manager.isDownloading ) { - manager.cancelDownload() - } - base.close(); - } - anchors.right: parent.right - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 30 - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: UM.Theme.getColor("text") - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - } - - UM.I18nCatalog { id: catalog; name: "cura" } - - Connections { - target: manager - onShowLicenseDialog: { - licenseDialog.pluginName = manager.getLicenseDialogPluginName(); - licenseDialog.licenseContent = manager.getLicenseDialogLicenseContent(); - licenseDialog.pluginFileLocation = manager.getLicenseDialogPluginFileLocation(); - licenseDialog.show(); - } - } - - UM.Dialog { - id: licenseDialog - title: catalog.i18nc("@title:window", "Plugin License Agreement") - - minimumWidth: UM.Theme.getSize("license_window_minimum").width - minimumHeight: UM.Theme.getSize("license_window_minimum").height - width: minimumWidth - height: minimumHeight - - property var pluginName; - property var licenseContent; - property var pluginFileLocation; - - Item - { - anchors.fill: parent - - Label - { - id: licenseTitle - anchors.top: parent.top - anchors.left: parent.left - anchors.right: parent.right - text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") - wrapMode: Text.Wrap - } - - TextArea - { - id: licenseText - anchors.top: licenseTitle.bottom - anchors.bottom: parent.bottom - anchors.left: parent.left - anchors.right: parent.right - anchors.topMargin: UM.Theme.getSize("default_margin").height - readOnly: true - text: licenseDialog.licenseContent != null ? licenseDialog.licenseContent : "" - } - } - - rightButtons: [ - Button - { - id: acceptButton - anchors.margins: UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@action:button", "Accept") - onClicked: - { - licenseDialog.close(); - manager.installPlugin(licenseDialog.pluginFileLocation); - } - }, - Button - { - id: declineButton - anchors.margins: UM.Theme.getSize("default_margin").width - text: catalog.i18nc("@action:button", "Decline") - onClicked: - { - licenseDialog.close(); - } - } - ] - } - - Connections { - target: manager - onShowRestartDialog: { - restartDialog.message = manager.getRestartDialogMessage(); - restartDialog.show(); - } - } - - Window { - id: restartDialog - // title: catalog.i18nc("@title:tab", "Plugins"); - width: 360 * screenScaleFactor - height: 120 * screenScaleFactor - minimumWidth: 360 * screenScaleFactor - minimumHeight: 120 * screenScaleFactor - color: UM.Theme.getColor("sidebar") - property var message; - - Text { - id: message - anchors { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - top: parent.top - topMargin: UM.Theme.getSize("default_margin").height - } - text: restartDialog.message != null ? restartDialog.message : "" - } - Button { - id: laterButton - text: "Later" - onClicked: restartDialog.close(); - anchors { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - bottom: parent.bottom - bottomMargin: UM.Theme.getSize("default_margin").height - } - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 30 - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: UM.Theme.getColor("text") - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - - - Button { - id: restartButton - text: "Quit Cura" - anchors { - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - bottom: parent.bottom - bottomMargin: UM.Theme.getSize("default_margin").height - } - onClicked: manager.restart() - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: UM.Theme.getColor("primary") - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: UM.Theme.getColor("button_text") - font { - pixelSize: 13 - bold: true - } - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - } - - } -} diff --git a/plugins/PluginBrowser/PluginEntry.qml b/plugins/PluginBrowser/PluginEntry.qml deleted file mode 100644 index 9dbcb96e79..0000000000 --- a/plugins/PluginBrowser/PluginEntry.qml +++ /dev/null @@ -1,486 +0,0 @@ -// Copyright (c) 2018 Ultimaker B.V. -// PluginBrowser is released under the terms of the LGPLv3 or higher. - -import QtQuick 2.2 -import QtQuick.Dialogs 1.1 -import QtQuick.Window 2.2 -import QtQuick.Controls 1.4 -import QtQuick.Controls.Styles 1.4 - -// TODO: Switch to QtQuick.Controls 2.x and remove QtQuick.Controls.Styles - -import UM 1.1 as UM - -Component { - id: pluginDelegate - - Rectangle { - - // Don't show required plugins as they can't be managed anyway: - height: !model.required ? 84 : 0 - visible: !model.required ? true : false - color: "transparent" - anchors { - left: parent.left - leftMargin: UM.Theme.getSize("default_margin").width - right: parent.right - rightMargin: UM.Theme.getSize("default_margin").width - } - - - // Bottom border: - Rectangle { - color: UM.Theme.getColor("lining") - width: parent.width - height: 1 - anchors.bottom: parent.bottom - } - - // Plugin info - Column { - id: pluginInfo - - property var color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") - - // Styling: - height: parent.height - anchors { - left: parent.left - top: parent.top - topMargin: UM.Theme.getSize("default_margin").height - right: authorInfo.left - rightMargin: UM.Theme.getSize("default_margin").width - } - - - Label { - text: model.name - width: parent.width - height: 24 - wrapMode: Text.WordWrap - verticalAlignment: Text.AlignVCenter - font { - pixelSize: 13 - bold: true - } - color: pluginInfo.color - - } - - Text { - text: model.description - width: parent.width - height: 36 - clip: true - wrapMode: Text.WordWrap - color: pluginInfo.color - elide: Text.ElideRight - } - } - - // Author info - Column { - id: authorInfo - width: 192 - height: parent.height - anchors { - top: parent.top - topMargin: UM.Theme.getSize("default_margin").height - right: pluginActions.left - rightMargin: UM.Theme.getSize("default_margin").width - } - - Label { - text: ""+model.author+"" - width: parent.width - height: 24 - wrapMode: Text.WordWrap - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignLeft - onLinkActivated: Qt.openUrlExternally("mailto:"+model.author_email+"?Subject=Cura: "+model.name+" Plugin") - color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") - } - } - - // Plugin actions - Row { - id: pluginActions - - width: 96 - height: parent.height - anchors { - top: parent.top - right: parent.right - topMargin: UM.Theme.getSize("default_margin").height - } - layoutDirection: Qt.RightToLeft - spacing: UM.Theme.getSize("default_margin").width - - // For 3rd-Party Plugins: - Button { - id: installButton - text: { - if ( manager.isDownloading && pluginList.activePlugin == model ) { - return catalog.i18nc( "@action:button", "Cancel" ); - } else { - if (model.can_upgrade) { - return catalog.i18nc("@action:button", "Update"); - } - return catalog.i18nc("@action:button", "Install"); - } - } - enabled: - { - if ( manager.isDownloading ) - { - return pluginList.activePlugin == model ? true : false - } - else - { - return true - } - } - opacity: enabled ? 1.0 : 0.5 - visible: model.external && ((model.status !== "installed") || model.can_upgrade) - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: "transparent" - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Label { - text: control.text - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: { - if ( manager.isDownloading && pluginList.activePlugin == model ) { - manager.cancelDownload(); - } else { - pluginList.activePlugin = model; - if ( model.can_upgrade ) { - manager.downloadAndInstallPlugin( model.update_url ); - } else { - manager.downloadAndInstallPlugin( model.file_location ); - } - - } - } - } - Button { - id: removeButton - text: "Uninstall" - visible: model.can_uninstall && model.status == "installed" - enabled: !manager.isDownloading - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: "transparent" - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - text: control.text - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: manager.removePlugin( model.id ) - } - - // For Ultimaker Plugins: - Button { - id: enableButton - text: "Enable" - visible: !model.external && model.enabled == false - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: "transparent" - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - text: control.text - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: { - manager.enablePlugin(model.id); - } - } - Button { - id: disableButton - text: "Disable" - visible: !model.external && model.enabled == true - style: ButtonStyle { - background: Rectangle { - implicitWidth: 96 - implicitHeight: 30 - color: "transparent" - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - text: control.text - color: UM.Theme.getColor("text") - verticalAlignment: Text.AlignVCenter - horizontalAlignment: Text.AlignHCenter - } - } - onClicked: { - manager.disablePlugin(model.id); - } - } - /* - Rectangle { - id: removeControls - visible: model.status == "installed" && model.enabled - width: 96 - height: 30 - color: "transparent" - Button { - id: removeButton - text: "Disable" - enabled: { - if ( manager.isDownloading && pluginList.activePlugin == model ) { - return false; - } else if ( model.required ) { - return false; - } else { - return true; - } - } - onClicked: { - manager.disablePlugin(model.id); - } - style: ButtonStyle { - background: Rectangle { - color: "white" - implicitWidth: 96 - implicitHeight: 30 - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: "grey" - text: control.text - horizontalAlignment: Text.AlignLeft - } - } - } - Button { - id: removeDropDown - property bool open: false - UM.RecolorImage { - anchors.centerIn: parent - height: 10 - width: 10 - source: UM.Theme.getIcon("arrow_bottom") - color: "grey" - } - enabled: { - if ( manager.isDownloading && pluginList.activePlugin == model ) { - return false; - } else if ( model.required ) { - return false; - } else { - return true; - } - } - anchors.right: parent.right - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 30 - implicitHeight: 30 - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: "grey" - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - - - - // For the disable option: - // onClicked: pluginList.model.setEnabled(model.id, checked) - - onClicked: { - if ( !removeDropDown.open ) { - removeDropDown.open = true - } - else { - removeDropDown.open = false - } - } - } - - Rectangle { - id: divider - width: 1 - height: parent.height - anchors.right: removeDropDown.left - color: UM.Theme.getColor("lining") - } - - Column { - id: options - anchors { - top: removeButton.bottom - left: parent.left - right: parent.right - } - height: childrenRect.height - visible: removeDropDown.open - - Button { - id: disableButton - text: "Remove" - height: 30 - width: parent.width - onClicked: { - removeDropDown.open = false; - manager.removePlugin( model.id ); - } - } - } - } - */ - /* - Button { - id: enableButton - visible: !model.enabled && model.status == "installed" - onClicked: manager.enablePlugin( model.id ); - - text: "Enable" - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 30 - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: UM.Theme.getColor("text") - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - - Button { - id: updateButton - visible: model.status == "installed" && model.can_upgrade && model.enabled - // visible: model.already_installed - text: { - // If currently downloading: - if ( manager.isDownloading && pluginList.activePlugin == model ) { - return catalog.i18nc( "@action:button", "Cancel" ); - } else { - return catalog.i18nc("@action:button", "Update"); - } - } - style: ButtonStyle { - background: Rectangle { - color: UM.Theme.getColor("primary") - implicitWidth: 96 - implicitHeight: 30 - // radius: 4 - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: "white" - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - Button { - id: externalControls - visible: model.status == "available" ? true : false - text: { - // If currently downloading: - if ( manager.isDownloading && pluginList.activePlugin == model ) { - return catalog.i18nc( "@action:button", "Cancel" ); - } else { - return catalog.i18nc("@action:button", "Install"); - } - } - onClicked: { - if ( manager.isDownloading && pluginList.activePlugin == model ) { - manager.cancelDownload(); - } else { - pluginList.activePlugin = model; - manager.downloadAndInstallPlugin( model.file_location ); - } - } - style: ButtonStyle { - background: Rectangle { - color: "transparent" - implicitWidth: 96 - implicitHeight: 30 - border { - width: 1 - color: UM.Theme.getColor("lining") - } - } - label: Text { - verticalAlignment: Text.AlignVCenter - color: "grey" - text: control.text - horizontalAlignment: Text.AlignHCenter - } - } - } - */ - ProgressBar { - id: progressbar - minimumValue: 0; - maximumValue: 100 - anchors.left: installButton.left - anchors.right: installButton.right - anchors.top: installButton.bottom - anchors.topMargin: 4 - value: manager.isDownloading ? manager.downloadProgress : 0 - visible: manager.isDownloading && pluginList.activePlugin == model - style: ProgressBarStyle { - background: Rectangle { - color: "lightgray" - implicitHeight: 6 - } - progress: Rectangle { - color: UM.Theme.getColor("primary") - } - } - } - - } - } -} diff --git a/plugins/PluginBrowser/__init__.py b/plugins/PluginBrowser/__init__.py deleted file mode 100644 index d414c36a99..0000000000 --- a/plugins/PluginBrowser/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -# Copyright (c) 2017 Ultimaker B.V. -# PluginBrowser is released under the terms of the LGPLv3 or higher. - -from . import PluginBrowser - - -def getMetaData(): - return {} - - -def register(app): - return {"extension": PluginBrowser.PluginBrowser()} diff --git a/plugins/PluginBrowser/plugin.json b/plugins/PluginBrowser/plugin.json deleted file mode 100644 index 491e21f506..0000000000 --- a/plugins/PluginBrowser/plugin.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "Plugin Browser", - "author": "Ultimaker B.V.", - "version": "1.0.0", - "api": 4, - "description": "Find, manage and install new plugins." -} \ No newline at end of file diff --git a/plugins/SimulationView/layers.shader b/plugins/SimulationView/layers.shader index d340773403..30f23a3189 100644 --- a/plugins/SimulationView/layers.shader +++ b/plugins/SimulationView/layers.shader @@ -28,6 +28,13 @@ vertex = } fragment = + #ifdef GL_ES + #ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + #else + precision mediump float; + #endif // GL_FRAGMENT_PRECISION_HIGH + #endif // GL_ES varying lowp vec4 v_color; varying float v_line_type; diff --git a/plugins/SimulationView/layers_shadow.shader b/plugins/SimulationView/layers_shadow.shader index 972f18c921..7ceccff21e 100644 --- a/plugins/SimulationView/layers_shadow.shader +++ b/plugins/SimulationView/layers_shadow.shader @@ -28,6 +28,13 @@ vertex = } fragment = + #ifdef GL_ES + #ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + #else + precision mediump float; + #endif // GL_FRAGMENT_PRECISION_HIGH + #endif // GL_ES varying lowp vec4 v_color; varying float v_line_type; diff --git a/plugins/SimulationView/simulationview_composite.shader b/plugins/SimulationView/simulationview_composite.shader index dcc02acc84..1ca8778b2b 100644 --- a/plugins/SimulationView/simulationview_composite.shader +++ b/plugins/SimulationView/simulationview_composite.shader @@ -13,6 +13,13 @@ vertex = } fragment = + #ifdef GL_ES + #ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + #else + precision mediump float; + #endif // GL_FRAGMENT_PRECISION_HIGH + #endif // GL_ES uniform sampler2D u_layer0; uniform sampler2D u_layer1; uniform sampler2D u_layer2; diff --git a/plugins/Toolbox/__init__.py b/plugins/Toolbox/__init__.py new file mode 100644 index 0000000000..2f8e192764 --- /dev/null +++ b/plugins/Toolbox/__init__.py @@ -0,0 +1,12 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Toolbox is released under the terms of the LGPLv3 or higher. + +from .src import Toolbox + + +def getMetaData(): + return {} + + +def register(app): + return {"extension": Toolbox.Toolbox()} diff --git a/plugins/Toolbox/plugin.json b/plugins/Toolbox/plugin.json new file mode 100644 index 0000000000..12d4042b6b --- /dev/null +++ b/plugins/Toolbox/plugin.json @@ -0,0 +1,7 @@ +{ + "name": "Toolbox", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "api": 4, + "description": "Find, manage and install new Cura packages." +} diff --git a/plugins/Toolbox/resources/images/logobot.svg b/plugins/Toolbox/resources/images/logobot.svg new file mode 100644 index 0000000000..8234f66887 --- /dev/null +++ b/plugins/Toolbox/resources/images/logobot.svg @@ -0,0 +1,161 @@ + + + + +logo +Created with Sketch. + + + + + + + + + + + + diff --git a/plugins/Toolbox/resources/qml/Toolbox.qml b/plugins/Toolbox/resources/qml/Toolbox.qml new file mode 100644 index 0000000000..0254bb0dcd --- /dev/null +++ b/plugins/Toolbox/resources/qml/Toolbox.qml @@ -0,0 +1,93 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Dialogs 1.1 +import QtQuick.Window 2.2 +import UM 1.1 as UM + +Window +{ + id: base + property var selection: null + title: catalog.i18nc("@title", "Toolbox") + modality: Qt.ApplicationModal + width: 720 * screenScaleFactor + height: 640 * screenScaleFactor + minimumWidth: 720 * screenScaleFactor + maximumWidth: 720 * screenScaleFactor + minimumHeight: 350 * screenScaleFactor + color: UM.Theme.getColor("sidebar") + UM.I18nCatalog + { + id: catalog + name:"cura" + } + Item + { + anchors.fill: parent + ToolboxHeader + { + id: header + } + Item + { + id: mainView + width: parent.width + z: -1 + anchors + { + top: header.bottom + bottom: footer.top + } + // TODO: This could be improved using viewFilter instead of viewCategory + ToolboxLoadingPage + { + id: viewLoading + visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "loading" + } + ToolboxDownloadsPage + { + id: viewDownloads + visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "overview" + } + ToolboxDetailPage + { + id: viewDetail + visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "detail" + } + ToolboxAuthorPage + { + id: viewAuthor + visible: toolbox.viewCategory != "installed" && toolbox.viewPage == "author" + } + ToolboxInstalledPage + { + id: installedPluginList + visible: toolbox.viewCategory == "installed" + } + } + ToolboxFooter + { + id: footer + visible: toolbox.restartRequired + height: toolbox.restartRequired ? UM.Theme.getSize("toolbox_footer").height : 0 + } + // TODO: Clean this up: + Connections + { + target: toolbox + onShowLicenseDialog: + { + licenseDialog.pluginName = toolbox.getLicenseDialogPluginName(); + licenseDialog.licenseContent = toolbox.getLicenseDialogLicenseContent(); + licenseDialog.pluginFileLocation = toolbox.getLicenseDialogPluginFileLocation(); + licenseDialog.show(); + } + } + ToolboxLicenseDialog + { + id: licenseDialog + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml new file mode 100644 index 0000000000..6c87f9d2e2 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxAuthorPage.qml @@ -0,0 +1,138 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: page + property var details: base.selection + anchors.fill: parent + ToolboxBackColumn + { + id: sidebar + } + Rectangle + { + id: header + anchors + { + left: sidebar.right + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } + height: UM.Theme.getSize("toolbox_detail_header").height + Image + { + id: thumbnail + width: UM.Theme.getSize("toolbox_thumbnail_medium").width + height: UM.Theme.getSize("toolbox_thumbnail_medium").height + fillMode: Image.PreserveAspectFit + source: details.icon_url || "../images/logobot.svg" + anchors + { + top: parent.top + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + topMargin: UM.Theme.getSize("wide_margin").height + } + } + + Label + { + id: title + anchors + { + top: thumbnail.top + left: thumbnail.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + bottomMargin: UM.Theme.getSize("default_margin").height + } + text: details.name + font: UM.Theme.getFont("large") + wrapMode: Text.WordWrap + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + } + Label + { + id: description + text: details.description + anchors + { + top: title.bottom + left: title.left + topMargin: UM.Theme.getSize("default_margin").height + } + } + Column + { + id: properties + anchors + { + top: description.bottom + left: description.left + topMargin: UM.Theme.getSize("default_margin").height + } + spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) + width: childrenRect.width + Label + { + text: catalog.i18nc("@label", "Contact") + ":" + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text_medium") + } + } + Column + { + id: values + anchors + { + top: description.bottom + left: properties.right + leftMargin: UM.Theme.getSize("default_margin").width + topMargin: UM.Theme.getSize("default_margin").height + } + spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) + Label + { + text: + { + if (details.email) + { + return ""+details.name+"" + } + else + { + return ""+details.name+"" + } + } + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text") + onLinkActivated: Qt.openUrlExternally(link) + } + } + Rectangle + { + color: UM.Theme.getColor("lining") + width: parent.width + height: UM.Theme.getSize("default_lining").height + anchors.bottom: parent.bottom + } + } + ToolboxDetailList + { + anchors + { + top: header.bottom + bottom: page.bottom + left: header.left + right: page.right + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml b/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml new file mode 100644 index 0000000000..5c60e368a9 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxBackColumn.qml @@ -0,0 +1,69 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: sidebar + height: parent.height + width: UM.Theme.getSize("toolbox_back_column").width + anchors + { + top: parent.top + left: parent.left + topMargin: UM.Theme.getSize("wide_margin").height + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width + } + Button + { + id: button + text: catalog.i18nc("@action:button", "Back") + UM.RecolorImage + { + id: backArrow + anchors + { + verticalCenter: parent.verticalCenter + left: parent.left + rightMargin: UM.Theme.getSize("default_margin").width + } + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize + { + width: width + height: height + } + color: button.hovered ? UM.Theme.getColor("primary") : UM.Theme.getColor("text") + source: UM.Theme.getIcon("arrow_left") + } + width: UM.Theme.getSize("toolbox_back_button").width + height: UM.Theme.getSize("toolbox_back_button").height + onClicked: + { + toolbox.viewPage = "overview" + toolbox.filterModelByProp("packages", "type", toolbox.viewCategory) + } + style: ButtonStyle + { + background: Rectangle + { + color: "transparent" + } + label: Label + { + id: labelStyle + text: control.text + color: control.hovered ? UM.Theme.getColor("primary") : UM.Theme.getColor("text") + font: UM.Theme.getFont("default_bold") + horizontalAlignment: Text.AlignRight + width: control.width + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailList.qml b/plugins/Toolbox/resources/qml/ToolboxDetailList.qml new file mode 100644 index 0000000000..f4d6bf5458 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDetailList.qml @@ -0,0 +1,35 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: detailList + ScrollView + { + frameVisible: false + anchors.fill: detailList + style: UM.Theme.styles.scrollview + Column + { + anchors + { + right: parent.right + topMargin: UM.Theme.getSize("wide_margin").height + bottomMargin: UM.Theme.getSize("wide_margin").height + top: parent.top + } + height: childrenRect.height + 2 * UM.Theme.getSize("wide_margin").height + spacing: UM.Theme.getSize("default_margin").height + Repeater + { + model: toolbox.packagesModel + delegate: ToolboxDetailTile {} + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml new file mode 100644 index 0000000000..5a73bcc981 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDetailPage.qml @@ -0,0 +1,157 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: page + property var details: base.selection + anchors.fill: parent + width: parent.width + ToolboxBackColumn + { + id: sidebar + } + Item + { + id: header + anchors + { + left: sidebar.right + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } + height: UM.Theme.getSize("toolbox_detail_header").height + Image + { + id: thumbnail + width: UM.Theme.getSize("toolbox_thumbnail_medium").width + height: UM.Theme.getSize("toolbox_thumbnail_medium").height + fillMode: Image.PreserveAspectFit + source: details.icon_url || "../images/logobot.svg" + anchors + { + top: parent.top + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + topMargin: UM.Theme.getSize("wide_margin").height + } + } + + Label + { + id: title + anchors + { + top: thumbnail.top + left: thumbnail.right + leftMargin: UM.Theme.getSize("default_margin").width + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + bottomMargin: UM.Theme.getSize("default_margin").height + } + text: details.name + font: UM.Theme.getFont("large") + wrapMode: Text.WordWrap + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + } + + Column + { + id: properties + anchors + { + top: title.bottom + left: title.left + topMargin: UM.Theme.getSize("default_margin").height + } + spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) + width: childrenRect.width + Label + { + text: catalog.i18nc("@label", "Version") + ":" + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text_medium") + } + Label + { + text: catalog.i18nc("@label", "Last updated") + ":" + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text_medium") + } + Label + { + text: catalog.i18nc("@label", "Author") + ":" + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text_medium") + } + } + Column + { + id: values + anchors + { + top: title.bottom + left: properties.right + leftMargin: UM.Theme.getSize("default_margin").width + topMargin: UM.Theme.getSize("default_margin").height + } + spacing: Math.floor(UM.Theme.getSize("narrow_margin").height) + Label + { + text: details.version + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text") + } + Label + { + text: + { + var date = new Date(details.last_updated) + return date.toLocaleString(Qt.locale()) + } + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text") + } + Label + { + text: + { + if (details.author_email) + { + return "" + details.author_name + "" + } + else + { + return "" + details.author_name + "" + } + } + font: UM.Theme.getFont("very_small") + color: UM.Theme.getColor("text") + onLinkActivated: Qt.openUrlExternally(link) + } + } + Rectangle + { + color: UM.Theme.getColor("lining") + width: parent.width + height: UM.Theme.getSize("default_lining").height + anchors.bottom: parent.bottom + } + } + ToolboxDetailList + { + anchors + { + top: header.bottom + bottom: page.bottom + left: header.left + right: page.right + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml b/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml new file mode 100644 index 0000000000..768f382082 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDetailTile.qml @@ -0,0 +1,274 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: tile + property bool installed: toolbox.isInstalled(model.id) + width: detailList.width - UM.Theme.getSize("wide_margin").width + // TODO: Without this line, every instance of this object has 0 height. With + // it, QML spits out tons of bugs claiming a binding loop (not true). Why? + // Because QT is garbage. + height: Math.max( UM.Theme.getSize("toolbox_detail_tile").height, childrenRect.height + UM.Theme.getSize("default_margin").height) + Item + { + id: normalData + height: childrenRect.height + anchors + { + left: parent.left + right: controls.left + rightMargin: UM.Theme.getSize("default_margin").width + top: parent.top + } + Label + { + id: packageName + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + text: model.name + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("medium_bold") + } + Label + { + anchors.top: packageName.bottom + width: parent.width + text: + { + if (model.description.length > 235) + { + if (model.description.substring(234, 235) == " ") + { + return model.description.substring(0, 234) + "..." + } + else + { + return model.description.substring(0, 235) + "..." + } + } + return model.description + } + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default") + } + } + Item + { + id: controls + anchors.right: tile.right + anchors.top: tile.top + width: childrenRect.width + height: childrenRect.height + Button + { + id: installButton + text: + { + if (installed) + { + return catalog.i18nc("@action:button", "Installed") + } + else + { + if ( toolbox.isDownloading && toolbox.activePackage == model ) + { + return catalog.i18nc("@action:button", "Cancel") + } + else + { + return catalog.i18nc("@action:button", "Install") + } + } + } + enabled: + { + if (installed) + { + return true + } + if ( toolbox.isDownloading ) + { + return toolbox.activePackage == model ? true : false + } + else + { + return true + } + } + opacity: enabled ? 1.0 : 0.5 + style: ButtonStyle + { + background: Rectangle + { + implicitWidth: 96 + implicitHeight: 30 + color: + { + if (installed) + { + return UM.Theme.getColor("action_button_disabled") + } + else + { + if ( control.hovered ) + { + return UM.Theme.getColor("primary_hover") + } + else + { + return UM.Theme.getColor("primary") + } + } + + } + } + label: Label + { + text: control.text + color: + { + if (installed) + { + return UM.Theme.getColor("action_button_disabled_text") + } + else + { + if ( control.hovered ) + { + return UM.Theme.getColor("button_text_hover") + } + else + { + return UM.Theme.getColor("button_text") + } + } + } + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + font: UM.Theme.getFont("default_bold") + } + } + onClicked: + { + if (installed) + { + toolbox.viewCategory = "installed" + } + else + { + // if ( toolbox.isDownloading && toolbox.activePackage == model ) + if ( toolbox.isDownloading ) + { + toolbox.cancelDownload(); + } + else + { + toolbox.activePackage = model + // toolbox.activePackage = model; + if ( model.can_upgrade ) + { + // toolbox.downloadAndInstallPlugin( model.update_url ); + } + else + { + toolbox.startDownload( model.download_url ); + } + } + } + } + } + } + + Item + { + id: supportedConfigsChart + anchors.top: normalData.bottom + anchors.topMargin: UM.Theme.getSize("default_margin").height + height: visible ? childrenRect.height : 0 + width: normalData.width + visible: model.type == "material" && model.supported_configs.length > 0 + Label + { + id: compatibilityHeading + anchors.topMargin: UM.Theme.getSize("default_margin").height + width: parent.width + text: catalog.i18nc("@label", "Compatibility") + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("default") + } + Column + { + id: compatibilityLabels + anchors + { + top: compatibilityHeading.bottom + topMargin: UM.Theme.getSize("default_margin").height + bottomMargin: UM.Theme.getSize("default_margin").height + } + width: childrenRect.width + Label + { + text: catalog.i18nc("@label", "Machines") + ":" + font: UM.Theme.getFont("small") + } + Label + { + text: catalog.i18nc("@label", "Print Cores") + ":" + font: UM.Theme.getFont("small") + } + Label + { + text: catalog.i18nc("@label", "Quality Profiles") + ":" + font: UM.Theme.getFont("small") + } + } + Column + { + id: compatibilityValues + anchors + { + left: compatibilityLabels.right + leftMargin: UM.Theme.getSize("default_margin").height + top: compatibilityLabels.top + bottom: compatibilityLabels.bottom + } + Label + { + text: "Thingy" + font: UM.Theme.getFont("very_small") + } + Label + { + text: "Thingy" + font: UM.Theme.getFont("very_small") + } + Label + { + text: "Thingy" + font: UM.Theme.getFont("very_small") + } + } + } + + Rectangle + { + color: UM.Theme.getColor("lining") + width: tile.width + height: UM.Theme.getSize("default_lining").height + anchors.bottom: tile.bottom + } + Connections + { + target: toolbox + onInstallChanged: installed = toolbox.isInstalled(model.id) + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml new file mode 100644 index 0000000000..12578d15f6 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsGrid.qml @@ -0,0 +1,42 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.3 +import UM 1.1 as UM + +Column +{ + // HACK: GridLayouts don't render to the correct height with odd numbers of + // items, so if odd, add some extra space. + height: grid.model.items.length % 2 == 0 ? childrenRect.height : childrenRect.height + UM.Theme.getSize("toolbox_thumbnail_small").height + width: parent.width + spacing: UM.Theme.getSize("default_margin").height + Label + { + id: heading + text: toolbox.viewCategory == "material" ? catalog.i18nc("@label", "Maker Choices") : catalog.i18nc("@label", "Community Plugins") + width: parent.width + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("medium") + } + GridLayout + { + id: grid + property var model: toolbox.viewCategory == "material" ? toolbox.authorsModel : toolbox.packagesModel + width: parent.width + columns: 2 + columnSpacing: UM.Theme.getSize("default_margin").height + rowSpacing: UM.Theme.getSize("default_margin").width + Repeater + { + model: grid.model + delegate: ToolboxDownloadsGridTile + { + Layout.preferredWidth: (grid.width - (grid.columns - 1) * grid.columnSpacing) / grid.columns + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml new file mode 100644 index 0000000000..e0e25982db --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsGridTile.qml @@ -0,0 +1,99 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Layouts 1.3 +import UM 1.1 as UM + +Item +{ + height: childrenRect.height + Layout.alignment: Qt.AlignTop | Qt.AlignLeft + Rectangle + { + id: highlight + anchors.fill: parent + opacity: 0.0 + color: UM.Theme.getColor("primary") + } + Row + { + width: parent.width + height: childrenRect.height + spacing: Math.floor(UM.Theme.getSize("narrow_margin").width) + Rectangle + { + id: thumbnail + width: UM.Theme.getSize("toolbox_thumbnail_small").width + height: UM.Theme.getSize("toolbox_thumbnail_small").height + color: "white" + border.width: UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + Image + { + anchors.centerIn: parent + width: UM.Theme.getSize("toolbox_thumbnail_small").width - 26 + height: UM.Theme.getSize("toolbox_thumbnail_small").height - 26 + fillMode: Image.PreserveAspectFit + source: model.icon_url || "../images/logobot.svg" + } + } + Column + { + width: parent.width - thumbnail.width - parent.spacing + spacing: Math.floor(UM.Theme.getSize("narrow_margin").width) + Label + { + id: name + text: model.name + width: parent.width + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("default_bold") + } + Label + { + id: info + text: model.description + maximumLineCount: 2 + elide: Text.ElideRight + width: parent.width + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("very_small") + } + } + } + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onEntered: + { + thumbnail.border.color = UM.Theme.getColor("primary") + highlight.opacity = 0.1 + } + onExited: + { + thumbnail.border.color = UM.Theme.getColor("lining") + highlight.opacity = 0.0 + } + onClicked: + { + base.selection = model + switch(toolbox.viewCategory) + { + case "material": + toolbox.viewPage = "author" + toolbox.filterModelByProp("packages", "author_id", model.id) + break + default: + toolbox.viewPage = "detail" + toolbox.filterModelByProp("packages", "id", model.id) + break + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml new file mode 100644 index 0000000000..170fd10fc7 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsPage.qml @@ -0,0 +1,38 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +ScrollView +{ + frameVisible: false + width: parent.width + height: parent.height + style: UM.Theme.styles.scrollview + Column + { + width: parent.width - 2 * padding + spacing: UM.Theme.getSize("default_margin").height + padding: UM.Theme.getSize("wide_margin").height + height: childrenRect.height + 2 * padding + ToolboxDownloadsShowcase + { + id: showcase + width: parent.width + } + Rectangle + { + color: UM.Theme.getColor("lining") + width: parent.width + height: UM.Theme.getSize("default_lining").height + } + ToolboxDownloadsGrid + { + id: allPlugins + width: parent.width + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml new file mode 100644 index 0000000000..d3ce443704 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcase.qml @@ -0,0 +1,45 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Column +{ + height: childrenRect.height + spacing: UM.Theme.getSize("toolbox_showcase_spacing").width + width: parent.width + Label + { + id: heading + text: catalog.i18nc("@label", "Featured") + width: parent.width + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("medium") + } + Row + { + height: childrenRect.height + spacing: UM.Theme.getSize("wide_margin").width + anchors + { + horizontalCenter: parent.horizontalCenter + } + Repeater + { + model: { + if ( toolbox.viewCategory == "plugin" ) + { + return toolbox.pluginsShowcaseModel + } + if ( toolbox.viewCategory == "material" ) + { + return toolbox.materialsShowcaseModel + } + } + delegate: ToolboxDownloadsShowcaseTile {} + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml new file mode 100644 index 0000000000..0a2924c600 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxDownloadsShowcaseTile.qml @@ -0,0 +1,90 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + width: UM.Theme.getSize("toolbox_thumbnail_large").width + height: childrenRect.height + Rectangle + { + id: highlight + anchors.fill: parent + opacity: 0.0 + color: UM.Theme.getColor("primary") + } + Rectangle + { + id: thumbnail + color: "white" + width: UM.Theme.getSize("toolbox_thumbnail_large").width + height: UM.Theme.getSize("toolbox_thumbnail_large").height + border + { + width: UM.Theme.getSize("default_lining").width + color: UM.Theme.getColor("lining") + } + anchors + { + top: parent.top + horizontalCenter: parent.horizontalCenter + } + Image { + anchors.centerIn: parent + width: UM.Theme.getSize("toolbox_thumbnail_large").width - 2 * UM.Theme.getSize("default_margin").width + height: UM.Theme.getSize("toolbox_thumbnail_large").height - 2 * UM.Theme.getSize("default_margin").height + fillMode: Image.PreserveAspectFit + source: model.icon_url || "../images/logobot.svg" + } + } + Label + { + text: model.name + anchors + { + bottom: parent.bottom + horizontalCenter: parent.horizontalCenter + } + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + height: UM.Theme.getSize("toolbox_heading_label").height + width: parent.width + wrapMode: Text.WordWrap + color: UM.Theme.getColor("text") + font: UM.Theme.getFont("medium_bold") + } + MouseArea + { + anchors.fill: parent + hoverEnabled: true + onEntered: + { + thumbnail.border.color = UM.Theme.getColor("primary") + highlight.opacity = 0.1 + } + onExited: + { + thumbnail.border.color = UM.Theme.getColor("lining") + highlight.opacity = 0.0 + } + onClicked: + { + base.selection = model + switch(toolbox.viewCategory) + { + case "material": + toolbox.viewPage = "author" + toolbox.filterModelByProp("packages", "author_name", model.name) + break + default: + toolbox.viewPage = "detail" + toolbox.filterModelByProp("packages", "id", model.id) + break + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxFooter.qml b/plugins/Toolbox/resources/qml/ToolboxFooter.qml new file mode 100644 index 0000000000..098a52d49a --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxFooter.qml @@ -0,0 +1,68 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + id: footer + width: parent.width + anchors.bottom: parent.bottom + height: visible ? Math.floor(UM.Theme.getSize("toolbox_footer").height) : 0 + Label + { + visible: toolbox.restartRequired + text: catalog.i18nc("@info", "You will need to restart Cura before changes in plugins have effect.") + height: Math.floor(UM.Theme.getSize("toolbox_footer_button").height) + verticalAlignment: Text.AlignVCenter + anchors + { + top: restartButton.top + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + right: restartButton.right + rightMargin: UM.Theme.getSize("default_margin").width + } + } + Button + { + id: restartButton + text: catalog.i18nc("@info:button", "Quit Cura") + anchors + { + top: parent.top + topMargin: UM.Theme.getSize("default_margin").height + right: parent.right + rightMargin: UM.Theme.getSize("wide_margin").width + } + visible: toolbox.restartRequired + iconName: "dialog-restart" + onClicked: toolbox.restart() + style: ButtonStyle + { + background: Rectangle + { + implicitWidth: UM.Theme.getSize("toolbox_footer_button").width + implicitHeight: Math.floor(UM.Theme.getSize("toolbox_footer_button").height) + color: control.hovered ? UM.Theme.getColor("primary_hover") : UM.Theme.getColor("primary") + } + label: Text + { + color: UM.Theme.getColor("button_text") + font: UM.Theme.getFont("default_bold") + text: control.text + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + } + ToolboxShadow + { + visible: toolbox.restartRequired + anchors.bottom: footer.top + reversed: true + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxHeader.qml b/plugins/Toolbox/resources/qml/ToolboxHeader.qml new file mode 100644 index 0000000000..59dbe23ea4 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxHeader.qml @@ -0,0 +1,62 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import UM 1.1 as UM + +Item +{ + id: header + width: parent.width + height: UM.Theme.getSize("toolbox_header").height + Row + { + id: bar + spacing: UM.Theme.getSize("default_margin").width + height: childrenRect.height + width: childrenRect.width + anchors + { + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + } + ToolboxTabButton + { + text: catalog.i18nc("@title:tab", "Plugins") + active: toolbox.viewCategory == "plugin" + onClicked: + { + toolbox.filterModelByProp("packages", "type", "plugin") + toolbox.viewCategory = "plugin" + toolbox.viewPage = "overview" + } + } + ToolboxTabButton + { + text: catalog.i18nc("@title:tab", "Materials") + active: toolbox.viewCategory == "material" + onClicked: + { + toolbox.filterModelByProp("authors", "package_types", "material") + toolbox.viewCategory = "material" + toolbox.viewPage = "overview" + } + } + } + ToolboxTabButton + { + text: catalog.i18nc("@title:tab", "Installed") + active: toolbox.viewCategory == "installed" + anchors + { + right: parent.right + rightMargin: UM.Theme.getSize("default_margin").width + } + onClicked: toolbox.viewCategory = "installed" + } + ToolboxShadow + { + anchors.top: bar.bottom + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml new file mode 100644 index 0000000000..9d916182f6 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledPage.qml @@ -0,0 +1,106 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Dialogs 1.1 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +ScrollView +{ + id: page + frameVisible: false + width: parent.width + height: parent.height + style: UM.Theme.styles.scrollview + Column + { + spacing: UM.Theme.getSize("default_margin").height + anchors + { + right: parent.right + left: parent.left + leftMargin: UM.Theme.getSize("wide_margin").width + topMargin: UM.Theme.getSize("wide_margin").height + bottomMargin: UM.Theme.getSize("wide_margin").height + top: parent.top + } + height: childrenRect.height + 4 * UM.Theme.getSize("default_margin").height + Label + { + visible: toolbox.pluginsInstalledModel.items.length > 0 + width: parent.width + text: catalog.i18nc("@title:tab", "Plugins") + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("medium") + } + Rectangle + { + visible: toolbox.pluginsInstalledModel.items.length > 0 + color: "transparent" + width: parent.width + height: childrenRect.height + 1 * UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + Column + { + height: childrenRect.height + anchors + { + top: parent.top + right: parent.right + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width + topMargin: UM.Theme.getSize("default_lining").width + bottomMargin: UM.Theme.getSize("default_lining").width + } + Repeater + { + id: materialList + model: toolbox.pluginsInstalledModel + delegate: ToolboxInstalledTile {} + } + } + } + Label + { + visible: toolbox.materialsInstalledModel.items.length > 0 + width: page.width + text: catalog.i18nc("@title:tab", "Materials") + color: UM.Theme.getColor("text_medium") + font: UM.Theme.getFont("medium") + } + Rectangle + { + visible: toolbox.materialsInstalledModel.items.length > 0 + color: "transparent" + width: parent.width + height: childrenRect.height + 1 * UM.Theme.getSize("default_lining").width + border.color: UM.Theme.getColor("lining") + border.width: UM.Theme.getSize("default_lining").width + Column + { + height: Math.max( UM.Theme.getSize("wide_margin").height, childrenRect.height) + anchors + { + top: parent.top + right: parent.right + left: parent.left + leftMargin: UM.Theme.getSize("default_margin").width + rightMargin: UM.Theme.getSize("default_margin").width + topMargin: UM.Theme.getSize("default_lining").width + bottomMargin: UM.Theme.getSize("default_lining").width + } + Repeater + { + id: pluginList + model: toolbox.materialsInstalledModel + delegate: ToolboxInstalledTile {} + } + } + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml b/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml new file mode 100644 index 0000000000..538b0a9131 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxInstalledTile.qml @@ -0,0 +1,219 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Item +{ + property bool canUpdate: false + property bool isEnabled: true + height: UM.Theme.getSize("toolbox_installed_tile").height + anchors + { + left: parent.left + right: parent.right + } + Rectangle + { + color: UM.Theme.getColor("lining") + width: parent.width + height: UM.Theme.getSize("default_lining").height + anchors.bottom: parent.bottom + } + Column + { + id: pluginInfo + property var color: isEnabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") + height: parent.height + anchors + { + left: parent.left + top: parent.top + right: authorInfo.left + topMargin: UM.Theme.getSize("default_margin").height + rightMargin: UM.Theme.getSize("default_margin").width + } + Label + { + text: model.name + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + font: UM.Theme.getFont("default_bold") + color: pluginInfo.color + } + Text + { + text: model.description + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + clip: true + wrapMode: Text.WordWrap + color: pluginInfo.color + elide: Text.ElideRight + } + } + Column + { + id: authorInfo + height: parent.height + width: Math.floor(UM.Theme.getSize("toolbox_action_button").width * 1.25) + anchors + { + top: parent.top + topMargin: UM.Theme.getSize("default_margin").height + right: pluginActions.left + rightMargin: UM.Theme.getSize("default_margin").width + } + Label + { + text: + { + if (model.author_email) + { + return "" + model.author_name + "" + } + else + { + return model.author_name + } + } + width: parent.width + height: UM.Theme.getSize("toolbox_property_label").height + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignLeft + onLinkActivated: Qt.openUrlExternally("mailto:" + model.author_email + "?Subject=Cura: " + model.name + " Plugin") + color: model.enabled ? UM.Theme.getColor("text") : UM.Theme.getColor("lining") + } + } + Column + { + id: pluginActions + width: childrenRect.width + height: childrenRect.height + spacing: UM.Theme.getSize("default_margin").height + anchors + { + top: parent.top + right: parent.right + topMargin: UM.Theme.getSize("default_margin").height + } + Button { + id: removeButton + text: + { + if (model.is_bundled) + { + return isEnabled ? catalog.i18nc("@action:button", "Disable") : catalog.i18nc("@action:button", "Enable") + } + else + { + return catalog.i18nc("@action:button", "Uninstall") + } + } + enabled: !toolbox.isDownloading + style: ButtonStyle + { + background: Rectangle + { + implicitWidth: UM.Theme.getSize("toolbox_action_button").width + implicitHeight: UM.Theme.getSize("toolbox_action_button").height + color: "transparent" + border + { + width: UM.Theme.getSize("default_lining").width + color: UM.Theme.getColor("lining") + } + } + label: Text + { + text: control.text + color: UM.Theme.getColor("text") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } + onClicked: + { + if (model.is_bundled) + { + if (toolbox.isEnabled(model.id)) + { + toolbox.disable(model.id) + } + else + { + toolbox.enable(model.id) + } + } + else + { + toolbox.uninstall( model.id ) + } + } + } + Button + { + id: updateButton + text: catalog.i18nc("@action:button", "Update") + visible: canUpdate + style: ButtonStyle + { + background: Rectangle + { + implicitWidth: UM.Theme.getSize("toolbox_action_button").width + implicitHeight: UM.Theme.getSize("toolbox_action_button").height + color: control.hovered ? UM.Theme.getColor("primary_hover") : UM.Theme.getColor("primary") + } + label: Label + { + text: control.text + color: control.hovered ? UM.Theme.getColor("button_text") : UM.Theme.getColor("button_text_hover") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + font: UM.Theme.getFont("default_bold") + } + } + onClicked: + { + toolbox.update(model.id); + } + } + ProgressBar + { + id: progressbar + anchors + { + left: updateButton.left + right: updateButton.right + top: updateButton.bottom + topMargin: Math.floor(UM.Theme.getSize("default_margin") / 4) + } + value: toolbox.isDownloading ? toolbox.downloadProgress : 0 + visible: toolbox.isDownloading + style: ProgressBarStyle + { + background: Rectangle + { + color: UM.Theme.getColor("lining") + implicitHeight: Math.floor(UM.Theme.getSize("toolbox_progress_bar").height) + } + progress: Rectangle + { + color: UM.Theme.getColor("primary") + } + } + } + } + Connections + { + target: toolbox + onEnabledChanged: isEnabled = toolbox.isEnabled(model.id) + onMetadataChanged: canUpdate = toolbox.canUpdate(model.id) + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml b/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml new file mode 100644 index 0000000000..33bc466d29 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxLicenseDialog.qml @@ -0,0 +1,72 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Dialogs 1.1 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +// TODO: Switch to QtQuick.Controls 2.x and remove QtQuick.Controls.Styles + +import UM 1.1 as UM + +UM.Dialog +{ + title: catalog.i18nc("@title:window", "Plugin License Agreement") + minimumWidth: UM.Theme.getSize("license_window_minimum").width + minimumHeight: UM.Theme.getSize("license_window_minimum").height + width: minimumWidth + height: minimumHeight + property var pluginName; + property var licenseContent; + property var pluginFileLocation; + Item + { + anchors.fill: parent + Label + { + id: licenseTitle + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + text: licenseDialog.pluginName + catalog.i18nc("@label", "This plugin contains a license.\nYou need to accept this license to install this plugin.\nDo you agree with the terms below?") + wrapMode: Text.Wrap + } + TextArea + { + id: licenseText + anchors.top: licenseTitle.bottom + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("default_margin").height + readOnly: true + text: licenseDialog.licenseContent + } + } + rightButtons: + [ + Button + { + id: acceptButton + anchors.margins: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@action:button", "Accept") + onClicked: + { + licenseDialog.close(); + toolbox.install(licenseDialog.pluginFileLocation); + } + }, + Button + { + id: declineButton + anchors.margins: UM.Theme.getSize("default_margin").width + text: catalog.i18nc("@action:button", "Decline") + onClicked: + { + licenseDialog.close(); + } + } + ] +} diff --git a/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml b/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml new file mode 100644 index 0000000000..1ba271dcab --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxLoadingPage.qml @@ -0,0 +1,22 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.7 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +Rectangle +{ + id: page + width: parent.width + height: parent.height + color: "transparent" + Label + { + text: catalog.i18nc("@info", "Fetching packages...") + anchors + { + centerIn: parent + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxShadow.qml b/plugins/Toolbox/resources/qml/ToolboxShadow.qml new file mode 100644 index 0000000000..0f2f98beb9 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxShadow.qml @@ -0,0 +1,24 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 + +Rectangle +{ + property bool reversed: false + width: parent.width + height: 8 + gradient: Gradient + { + GradientStop + { + position: reversed ? 1.0 : 0.0 + color: reversed ? Qt.rgba(0,0,0,0.05) : Qt.rgba(0,0,0,0.2) + } + GradientStop + { + position: reversed ? 0.0 : 1.0 + color: Qt.rgba(0,0,0,0) + } + } +} diff --git a/plugins/Toolbox/resources/qml/ToolboxTabButton.qml b/plugins/Toolbox/resources/qml/ToolboxTabButton.qml new file mode 100644 index 0000000000..a61e77d241 --- /dev/null +++ b/plugins/Toolbox/resources/qml/ToolboxTabButton.qml @@ -0,0 +1,51 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Toolbox is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import UM 1.1 as UM + +Button +{ + property bool active: false + style: ButtonStyle + { + background: Rectangle + { + color: "transparent" + implicitWidth: UM.Theme.getSize("toolbox_header_tab").width + implicitHeight: UM.Theme.getSize("toolbox_header_tab").height + Rectangle + { + visible: control.active + color: UM.Theme.getColor("sidebar_header_highlight_hover") + anchors.bottom: parent.bottom + width: parent.width + height: UM.Theme.getSize("sidebar_header_highlight").height + } + } + label: Text + { + text: control.text + color: + { + if(control.hovered) + { + return UM.Theme.getColor("topbar_button_text_hovered"); + } + if(control.active) + { + return UM.Theme.getColor("topbar_button_text_active"); + } + else + { + return UM.Theme.getColor("topbar_button_text_inactive"); + } + } + font: control.active ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium") + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + } + } +} diff --git a/plugins/Toolbox/src/AuthorsModel.py b/plugins/Toolbox/src/AuthorsModel.py new file mode 100644 index 0000000000..880ecbe2a0 --- /dev/null +++ b/plugins/Toolbox/src/AuthorsModel.py @@ -0,0 +1,93 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import re +from typing import Dict + +from PyQt5.QtCore import Qt, pyqtProperty, pyqtSignal + +from UM.Qt.ListModel import ListModel + +## Model that holds cura packages. By setting the filter property the instances held by this model can be changed. +class AuthorsModel(ListModel): + def __init__(self, parent = None): + super().__init__(parent) + + self._metadata = None + + self.addRoleName(Qt.UserRole + 1, "id") + self.addRoleName(Qt.UserRole + 2, "name") + self.addRoleName(Qt.UserRole + 3, "email") + self.addRoleName(Qt.UserRole + 4, "website") + self.addRoleName(Qt.UserRole + 5, "package_count") + self.addRoleName(Qt.UserRole + 6, "package_types") + self.addRoleName(Qt.UserRole + 7, "icon_url") + self.addRoleName(Qt.UserRole + 8, "description") + + # List of filters for queries. The result is the union of the each list of results. + self._filter = {} # type: Dict[str,str] + + def setMetadata(self, data): + self._metadata = data + self._update() + + def _update(self): + items = [] + + for author in self._metadata: + items.append({ + "id": author["author_id"], + "name": author["display_name"], + "email": author["email"] if "email" in author else None, + "website": author["website"], + "package_count": author["package_count"] if "package_count" in author else 0, + "package_types": author["package_types"] if "package_types" in author else [], + "icon_url": author["icon_url"] if "icon_url" in author else None, + "description": "Material and quality profiles from {author_name}".format( author_name = author["display_name"]) + }) + + # Filter on all the key-word arguments. + for key, value in self._filter.items(): + if key is "package_types": + key_filter = lambda item, value = value: value in item["package_types"] + elif "*" in value: + key_filter = lambda item, key = key, value = value: self._matchRegExp(item, key, value) + else: + key_filter = lambda item, key = key, value = value: self._matchString(item, key, value) + items = filter(key_filter, items) + + # Execute all filters. + filtered_items = list(items) + + filtered_items.sort(key = lambda k: k["name"]) + self.setItems(filtered_items) + + ## Set the filter of this model based on a string. + # \param filter_dict \type{Dict} Dictionary to do the filtering by. + def setFilter(self, filter_dict: Dict[str, str]) -> None: + if filter_dict != self._filter: + self._filter = filter_dict + self._update() + + @pyqtProperty("QVariantMap", fset = setFilter, constant = True) + def filter(self) -> Dict[str, str]: + return self._filter + + # Check to see if a container matches with a regular expression + def _matchRegExp(self, metadata, property_name, value): + if property_name not in metadata: + return False + value = re.escape(value) #Escape for regex patterns. + value = "^" + value.replace("\\*", ".*") + "$" #Instead of (now escaped) asterisks, match on any string. Also add anchors for a complete match. + if self._ignore_case: + value_pattern = re.compile(value, re.IGNORECASE) + else: + value_pattern = re.compile(value) + + return value_pattern.match(str(metadata[property_name])) + + # Check to see if a container matches with a string + def _matchString(self, metadata, property_name, value): + if property_name not in metadata: + return False + return value.lower() == str(metadata[property_name]).lower() diff --git a/plugins/Toolbox/src/PackagesModel.py b/plugins/Toolbox/src/PackagesModel.py new file mode 100644 index 0000000000..34ea5b8d42 --- /dev/null +++ b/plugins/Toolbox/src/PackagesModel.py @@ -0,0 +1,106 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import re +from typing import Dict + +from PyQt5.QtCore import Qt, pyqtProperty + +from UM.Application import Application +from UM.Qt.ListModel import ListModel + + +## Model that holds cura packages. By setting the filter property the instances held by this model can be changed. +class PackagesModel(ListModel): + def __init__(self, parent = None): + super().__init__(parent) + + self._metadata = None + + self.addRoleName(Qt.UserRole + 1, "id") + self.addRoleName(Qt.UserRole + 2, "type") + self.addRoleName(Qt.UserRole + 3, "name") + self.addRoleName(Qt.UserRole + 4, "version") + self.addRoleName(Qt.UserRole + 5, "author_id") + self.addRoleName(Qt.UserRole + 6, "author_name") + self.addRoleName(Qt.UserRole + 7, "author_email") + self.addRoleName(Qt.UserRole + 8, "description") + self.addRoleName(Qt.UserRole + 9, "icon_url") + self.addRoleName(Qt.UserRole + 10, "image_urls") + self.addRoleName(Qt.UserRole + 11, "download_url") + self.addRoleName(Qt.UserRole + 12, "last_updated") + self.addRoleName(Qt.UserRole + 13, "is_bundled") + self.addRoleName(Qt.UserRole + 14, "supported_configs") + + # List of filters for queries. The result is the union of the each list of results. + self._filter = {} # type: Dict[str, str] + + def setMetadata(self, data): + self._metadata = data + self._update() + + def _update(self): + items = [] + + for package in self._metadata: + print(package["author"]) + items.append({ + "id": package["package_id"], + "type": package["package_type"], + "name": package["display_name"], + "version": package["package_version"], + "author_id": package["author"]["author_id"] if "author_id" in package["author"] else package["author"]["name"], + "author_name": package["author"]["display_name"] if "display_name" in package["author"] else package["author"]["name"], + "author_email": package["author"]["email"] if "email" in package["author"] else "None", + "description": package["description"], + "icon_url": package["icon_url"] if "icon_url" in package else None, + "image_urls": package["image_urls"] if "image_urls" in package else None, + "download_url": package["download_url"] if "download_url" in package else None, + "last_updated": package["last_updated"] if "last_updated" in package else None, + "is_bundled": package["is_bundled"] if "is_bundled" in package else False, + "supported_configs": package["supported_configs"] if "supported_configs" in package else [] + }) + + # Filter on all the key-word arguments. + for key, value in self._filter.items(): + if "*" in value: + key_filter = lambda candidate, key = key, value = value: self._matchRegExp(candidate, key, value) + else: + key_filter = lambda candidate, key = key, value = value: self._matchString(candidate, key, value) + items = filter(key_filter, items) + + # Execute all filters. + filtered_items = list(items) + + filtered_items.sort(key = lambda k: k["name"]) + self.setItems(filtered_items) + + ## Set the filter of this model based on a string. + # \param filter_dict \type{Dict} Dictionary to do the filtering by. + def setFilter(self, filter_dict: Dict[str, str]) -> None: + if filter_dict != self._filter: + self._filter = filter_dict + self._update() + + @pyqtProperty("QVariantMap", fset = setFilter, constant = True) + def filter(self) -> Dict[str, str]: + return self._filter + + # Check to see if a container matches with a regular expression + def _matchRegExp(self, metadata, property_name, value): + if property_name not in metadata: + return False + value = re.escape(value) #Escape for regex patterns. + value = "^" + value.replace("\\*", ".*") + "$" #Instead of (now escaped) asterisks, match on any string. Also add anchors for a complete match. + if self._ignore_case: + value_pattern = re.compile(value, re.IGNORECASE) + else: + value_pattern = re.compile(value) + + return value_pattern.match(str(metadata[property_name])) + + # Check to see if a container matches with a string + def _matchString(self, metadata, property_name, value): + if property_name not in metadata: + return False + return value.lower() == str(metadata[property_name]).lower() diff --git a/plugins/Toolbox/src/Toolbox.py b/plugins/Toolbox/src/Toolbox.py new file mode 100644 index 0000000000..2e2fb3cbb8 --- /dev/null +++ b/plugins/Toolbox/src/Toolbox.py @@ -0,0 +1,515 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Toolbox is released under the terms of the LGPLv3 or higher. + +from typing import Dict +import json +import os +import tempfile +import platform + +from PyQt5.QtCore import QUrl, QObject, pyqtProperty, pyqtSignal, pyqtSlot +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply + +from UM.Application import Application +from UM.Logger import Logger +from UM.PluginRegistry import PluginRegistry +from UM.Qt.Bindings.PluginsModel import PluginsModel +from UM.Extension import Extension +from UM.i18n import i18nCatalog +from UM.Version import Version + +from cura.CuraApplication import CuraApplication +from .AuthorsModel import AuthorsModel +from .PackagesModel import PackagesModel + +i18n_catalog = i18nCatalog("cura") + +## The Toolbox class is responsible of communicating with the server through the API +class Toolbox(QObject, Extension): + def __init__(self, parent=None): + super().__init__(parent) + + self._application = Application.getInstance() + self._package_manager = None + self._plugin_registry = Application.getInstance().getPluginRegistry() + self._packages_version = self._plugin_registry.APIVersion + self._api_version = 1 + self._api_url = "https://api-staging.ultimaker.com/cura-packages/v{api_version}/cura/v{package_version}".format( api_version = self._api_version, package_version = self._packages_version) + + # Network: + self._get_packages_request = None + self._get_showcase_request = None + self._download_request = None + self._download_reply = None + self._download_progress = 0 + self._is_downloading = False + self._network_manager = None + self._request_header = [ + b"User-Agent", + str.encode( + "%s/%s (%s %s)" % ( + Application.getInstance().getApplicationName(), + Application.getInstance().getVersion(), + platform.system(), + platform.machine(), + ) + ) + ] + self._request_urls = { + "authors": QUrl("{base_url}/authors".format(base_url = self._api_url)), + "packages": QUrl("{base_url}/packages".format(base_url = self._api_url)), + "plugins_showcase": QUrl("{base_url}/showcase".format(base_url = self._api_url)), + "materials_showcase": QUrl("{base_url}/showcase".format(base_url = self._api_url)) + } + + # Data: + self._metadata = { + "authors": [], + "packages": [], + "plugins_showcase": [], + "plugins_installed": [], + "materials_showcase": [], + "materials_installed": [] + } + + # Models: + self._models = { + "authors": AuthorsModel(self), + "packages": PackagesModel(self), + "plugins_showcase": PackagesModel(self), + "plugins_available": PackagesModel(self), + "plugins_installed": PackagesModel(self), + "materials_showcase": AuthorsModel(self), + "materials_available": PackagesModel(self), + "materials_installed": PackagesModel(self) + } + + # These properties are for keeping track of the UI state: + # ---------------------------------------------------------------------- + # View category defines which filter to use, and therefore effectively + # which category is currently being displayed. For example, possible + # values include "plugin" or "material", but also "installed". + self._view_category = "plugin" + + # View page defines which type of page layout to use. For example, + # possible values include "overview", "detail" or "author". + self._view_page = "loading" + + # Active package refers to which package is currently being downloaded, + # installed, or otherwise modified. + self._active_package = None + + self._dialog = None + self._restart_required = False + + # variables for the license agreement dialog + self._license_dialog_plugin_name = "" + self._license_dialog_license_content = "" + self._license_dialog_plugin_file_location = "" + self._restart_dialog_message = "" + + Application.getInstance().initializationFinished.connect(self._onAppInitialized) + + + + # Signals: + # -------------------------------------------------------------------------- + # Downloading changes + activePackageChanged = pyqtSignal() + onDownloadProgressChanged = pyqtSignal() + onIsDownloadingChanged = pyqtSignal() + restartRequiredChanged = pyqtSignal() + installChanged = pyqtSignal() + enabledChanged = pyqtSignal() + + # UI changes + viewChanged = pyqtSignal() + detailViewChanged = pyqtSignal() + filterChanged = pyqtSignal() + metadataChanged = pyqtSignal() + showLicenseDialog = pyqtSignal() + + @pyqtSlot(result = str) + def getLicenseDialogPluginName(self) -> str: + return self._license_dialog_plugin_name + + @pyqtSlot(result = str) + def getLicenseDialogPluginFileLocation(self) -> str: + return self._license_dialog_plugin_file_location + + @pyqtSlot(result = str) + def getLicenseDialogLicenseContent(self) -> str: + return self._license_dialog_license_content + + def openLicenseDialog(self, plugin_name: str, license_content: str, plugin_file_location: str): + self._license_dialog_plugin_name = plugin_name + self._license_dialog_license_content = license_content + self._license_dialog_plugin_file_location = plugin_file_location + self.showLicenseDialog.emit() + + # This is a plugin, so most of the components required are not ready when + # this is initialized. Therefore, we wait until the application is ready. + def _onAppInitialized(self): + self._package_manager = Application.getInstance().getCuraPackageManager() + + @pyqtSlot() + def browsePackages(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. + if self._network_manager: + self._network_manager.finished.disconnect(self._onRequestFinished) + self._network_manager.networkAccessibleChanged.disconnect(self._onNetworkAccessibleChanged) + self._network_manager = QNetworkAccessManager() + self._network_manager.finished.connect(self._onRequestFinished) + self._network_manager.networkAccessibleChanged.connect(self._onNetworkAccessibleChanged) + + # Make remote requests: + self._makeRequestByType("packages") + self._makeRequestByType("authors") + self._makeRequestByType("plugins_showcase") + self._makeRequestByType("materials_showcase") + + # Gather installed packages: + self._updateInstalledModels() + + if not self._dialog: + self._dialog = self._createDialog("Toolbox.qml") + self._dialog.show() + + # Apply enabled/disabled state to installed plugins + self.enabledChanged.emit() + + def _createDialog(self, qml_name: str): + Logger.log("d", "Toolbox: Creating dialog [%s].", qml_name) + path = os.path.join(PluginRegistry.getInstance().getPluginPath(self.getPluginId()), "resources", "qml", qml_name) + dialog = Application.getInstance().createQmlComponent(path, {"toolbox": self}) + return dialog + + @pyqtSlot() + def _updateInstalledModels(self): + all_packages = self._package_manager.getAllInstalledPackagesInfo() + if "plugin" in all_packages: + self._metadata["plugins_installed"] = all_packages["plugin"] + self._models["plugins_installed"].setMetadata(self._metadata["plugins_installed"]) + self.metadataChanged.emit() + if "material" in all_packages: + self._metadata["materials_installed"] = all_packages["material"] + self._models["materials_installed"].setMetadata(self._metadata["materials_installed"]) + self.metadataChanged.emit() + + @pyqtSlot(str) + def install(self, file_path: str): + self._package_manager.installPackage(file_path) + self.installChanged.emit() + self._updateInstalledModels() + self.metadataChanged.emit() + self._restart_required = True + self.restartRequiredChanged.emit() + + @pyqtSlot(str) + def uninstall(self, plugin_id: str): + self._package_manager.removePackage(plugin_id) + self.installChanged.emit() + self._updateInstalledModels() + self.metadataChanged.emit() + self._restart_required = True + self.restartRequiredChanged.emit() + + @pyqtSlot(str) + def enable(self, plugin_id: str): + self._plugin_registry.enablePlugin(plugin_id) + self.enabledChanged.emit() + Logger.log("i", "%s was set as 'active'.", plugin_id) + self._restart_required = True + self.restartRequiredChanged.emit() + + @pyqtSlot(str) + def disable(self, plugin_id: str): + self._plugin_registry.disablePlugin(plugin_id) + self.enabledChanged.emit() + Logger.log("i", "%s was set as 'deactive'.", plugin_id) + self._restart_required = True + self.restartRequiredChanged.emit() + + @pyqtProperty(bool, notify = metadataChanged) + def dataReady(self): + return self._packages_model is not None + + @pyqtProperty(bool, notify = restartRequiredChanged) + def restartRequired(self): + return self._restart_required + + @pyqtSlot() + def restart(self): + self._package_manager._removeAllScheduledPackages() + CuraApplication.getInstance().windowClosed() + + + + # 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: + return False + + remote_package = None + for package in self._metadata["packages"]: + if package["package_id"] == package_id: + remote_package = package + if remote_package is None: + return False + + local_version = local_package["package_version"] + remote_version = remote_package["package_version"] + return Version(remote_version) > Version(local_version) + + @pyqtSlot(str, result = bool) + def isInstalled(self, package_id: str) -> bool: + return self._package_manager.isPackageInstalled(package_id) + + @pyqtSlot(str, result = bool) + def isEnabled(self, package_id: str) -> bool: + if package_id in self._plugin_registry.getActivePlugins(): + return True + return False + + def loadingComplete(self) -> bool: + populated = 0 + for list in self._metadata.items(): + if len(list) > 0: + populated += 1 + if populated == len(self._metadata.items()): + return True + return False + + + + # Make API Calls + # -------------------------------------------------------------------------- + def _makeRequestByType(self, type: str): + Logger.log("i", "Toolbox: Requesting %s metadata from server.", type) + request = QNetworkRequest(self._request_urls[type]) + request.setRawHeader(*self._request_header) + self._network_manager.get(request) + + @pyqtSlot(str) + def startDownload(self, url: str): + Logger.log("i", "Toolbox: Attempting to download & install package from %s.", url) + url = QUrl(url) + self._download_request = QNetworkRequest(url) + self._download_request.setAttribute(QNetworkRequest.RedirectPolicyAttribute, QNetworkRequest.NoLessSafeRedirectPolicy) + self._download_request.setRawHeader(*self._request_header) + self._download_reply = self._network_manager.get(self._download_request) + self.setDownloadProgress(0) + self.setIsDownloading(True) + self._download_reply.downloadProgress.connect(self._onDownloadProgress) + + @pyqtSlot() + def cancelDownload(self): + Logger.log("i", "Toolbox: User cancelled the download of a plugin.") + self.resetDownload() + return + + def resetDownload(self): + self._download_reply.abort() + self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) + self._download_reply = None + self._download_request = None + self.setDownloadProgress(0) + self.setIsDownloading(False) + + + + # Handlers for Network Events + # -------------------------------------------------------------------------- + def _onNetworkAccessibleChanged(self, accessible: int): + if accessible == 0: + self.resetDownload() + + def _onRequestFinished(self, reply: QNetworkReply): + + if reply.error() == QNetworkReply.TimeoutError: + Logger.log("w", "Got a timeout.") + self.resetDownload() + return + + if reply.error() == QNetworkReply.HostNotFoundError: + Logger.log("w", "Unable to reach server.") + self.resetDownload() + return + + if reply.operation() == QNetworkAccessManager.GetOperation: + for type, url in self._request_urls.items(): + if reply.url() == url: + try: + json_data = json.loads(bytes(reply.readAll()).decode("utf-8")) + + # Check for errors: + if "errors" in json_data: + for error in json_data["errors"]: + Logger.log("e", "%s", error["title"]) + return + + # Create model and apply metadata: + if not self._models[type]: + Logger.log("e", "Could not find the %s model.", type) + break + + # HACK: Eventually get rid of the code from here... + if type is "plugins_showcase" or type is "materials_showcase": + self._metadata["plugins_showcase"] = json_data["data"]["plugin"]["packages"] + self._models["plugins_showcase"].setMetadata(self._metadata["plugins_showcase"]) + self._metadata["materials_showcase"] = json_data["data"]["material"]["authors"] + self._models["materials_showcase"].setMetadata(self._metadata["materials_showcase"]) + else: + # ...until here. + # This hack arises for multiple reasons but the main + # one is because there are not separate API calls + # for different kinds of showcases. + self._metadata[type] = json_data["data"] + self._models[type].setMetadata(self._metadata[type]) + + # Do some auto filtering + # TODO: Make multiple API calls in the future to handle this + if type is "packages": + self._models[type].setFilter({"type": "plugin"}) + if type is "authors": + self._models[type].setFilter({"package_types": "material"}) + + self.metadataChanged.emit() + + if self.loadingComplete() is True: + self.setViewPage("overview") + + return + except json.decoder.JSONDecodeError: + Logger.log("w", "Toolbox: Received invalid JSON for %s.", type) + break + + else: + # Ignore any operation that is not a get operation + pass + + def _onDownloadProgress(self, bytes_sent: int, bytes_total: int): + if bytes_total > 0: + new_progress = bytes_sent / bytes_total * 100 + self.setDownloadProgress(new_progress) + if bytes_sent == bytes_total: + self.setIsDownloading(False) + self._download_reply.downloadProgress.disconnect(self._onDownloadProgress) + # must not delete the temporary file on Windows + self._temp_plugin_file = tempfile.NamedTemporaryFile(mode = "w+b", suffix = ".curapackage", delete = False) + file_path = self._temp_plugin_file.name + # write first and close, otherwise on Windows, it cannot read the file + self._temp_plugin_file.write(self._download_reply.readAll()) + self._temp_plugin_file.close() + self._onDownloadComplete(file_path) + return + + def _onDownloadComplete(self, file_path: str): + Logger.log("i", "Toolbox: Download complete.") + try: + package_info = self._package_manager.getPackageInfo(file_path) + except: + Logger.logException("w", "Toolbox: Package file [%s] was not a valid CuraPackage.", file_path) + return + + license_content = self._package_manager.getPackageLicense(file_path) + if license_content is not None: + self.openLicenseDialog(package_info["package_id"], license_content, file_path) + return + + self.install(file_path) + return + + + + # Getter & Setters for Properties: + # -------------------------------------------------------------------------- + def setDownloadProgress(self, progress: int): + if progress != self._download_progress: + self._download_progress = progress + self.onDownloadProgressChanged.emit() + @pyqtProperty(int, fset = setDownloadProgress, notify = onDownloadProgressChanged) + def downloadProgress(self) -> int: + return self._download_progress + + def setIsDownloading(self, is_downloading: bool): + if self._is_downloading != is_downloading: + self._is_downloading = is_downloading + self.onIsDownloadingChanged.emit() + @pyqtProperty(bool, fset = setIsDownloading, notify = onIsDownloadingChanged) + def isDownloading(self) -> bool: + return self._is_downloading + + def setActivePackage(self, package: dict): + self._active_package = package + self.activePackageChanged.emit() + @pyqtProperty(QObject, fset = setActivePackage, notify = activePackageChanged) + def activePackage(self) -> dict: + return self._active_package + + def setViewCategory(self, category: str = "plugin"): + self._view_category = category + self.viewChanged.emit() + @pyqtProperty(str, fset = setViewCategory, notify = viewChanged) + def viewCategory(self) -> str: + return self._view_category + + def setViewPage(self, page: str = "overview"): + self._view_page = page + self.viewChanged.emit() + @pyqtProperty(str, fset = setViewPage, notify = viewChanged) + def viewPage(self) -> str: + return self._view_page + + + + # Expose Models: + # -------------------------------------------------------------------------- + @pyqtProperty(QObject, notify = metadataChanged) + def authorsModel(self) -> AuthorsModel: + return self._models["authors"] + + @pyqtProperty(QObject, notify = metadataChanged) + def packagesModel(self) -> PackagesModel: + return self._models["packages"] + + @pyqtProperty(QObject, notify = metadataChanged) + def pluginsShowcaseModel(self) -> PackagesModel: + return self._models["plugins_showcase"] + + @pyqtProperty(QObject, notify = metadataChanged) + def pluginsInstalledModel(self) -> PackagesModel: + return self._models["plugins_installed"] + + @pyqtProperty(QObject, notify = metadataChanged) + def materialsShowcaseModel(self) -> PackagesModel: + return self._models["materials_showcase"] + + @pyqtProperty(QObject, notify = metadataChanged) + def materialsInstalledModel(self) -> PackagesModel: + return self._models["materials_installed"] + + + + # Filter Models: + # -------------------------------------------------------------------------- + @pyqtSlot(str, str, str) + def filterModelByProp(self, modelType: str, filterType: str, parameter: str): + if not self._models[modelType]: + Logger.log("w", "Toolbox: Couldn't filter %s model because it doesn't exist.", modelType) + return + self._models[modelType].setFilter({ filterType: parameter }) + self.filterChanged.emit() + + @pyqtSlot() + def removeFilters(self, modelType: str): + if not self._models[modelType]: + Logger.log("w", "Toolbox: Couldn't remove filters on %s model because it doesn't exist.", modelType) + return + self._models[modelType].setFilter({}) + self.filterChanged.emit() diff --git a/plugins/Toolbox/src/__init__.py b/plugins/Toolbox/src/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/plugins/UserAgreementPlugin/UserAgreement.py b/plugins/UserAgreement/UserAgreement.py similarity index 100% rename from plugins/UserAgreementPlugin/UserAgreement.py rename to plugins/UserAgreement/UserAgreement.py diff --git a/plugins/UserAgreementPlugin/UserAgreement.qml b/plugins/UserAgreement/UserAgreement.qml similarity index 100% rename from plugins/UserAgreementPlugin/UserAgreement.qml rename to plugins/UserAgreement/UserAgreement.qml diff --git a/plugins/UserAgreementPlugin/__init__.py b/plugins/UserAgreement/__init__.py similarity index 100% rename from plugins/UserAgreementPlugin/__init__.py rename to plugins/UserAgreement/__init__.py diff --git a/plugins/UserAgreementPlugin/plugin.json b/plugins/UserAgreement/plugin.json similarity index 100% rename from plugins/UserAgreementPlugin/plugin.json rename to plugins/UserAgreement/plugin.json diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py new file mode 100644 index 0000000000..4e7b09564a --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/VersionUpgrade33to34.py @@ -0,0 +1,43 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +import configparser #To parse preference files. +import io #To serialise the preference files afterwards. + +from UM.VersionUpgrade import VersionUpgrade #We're inheriting from this. + + +## Upgrades configurations from the state they were in at version 3.2 to the +# state they should be in at version 3.3. +class VersionUpgrade33to34(VersionUpgrade): + + ## Gets the version number from a CFG file in Uranium's 3.2 format. + # + # Since the format may change, this is implemented for the 3.2 format only + # and needs to be included in the version upgrade system rather than + # globally in Uranium. + # + # \param serialised The serialised form of a CFG file. + # \return The version number stored in the CFG file. + # \raises ValueError The format of the version number in the file is + # incorrect. + # \raises KeyError The format of the file is incorrect. + def getCfgVersion(self, serialised): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialised) + format_version = int(parser.get("general", "version")) #Explicitly give an exception when this fails. That means that the file format is not recognised. + setting_version = int(parser.get("metadata", "setting_version", fallback = 0)) + return format_version * 1000000 + setting_version + + ## Upgrades instance containers to have the new version + # number. + def upgradeInstanceContainer(self, serialized, filename): + parser = configparser.ConfigParser(interpolation = None) + parser.read_string(serialized) + + # Update version number. + parser["general"]["version"] = "4" + + result = io.StringIO() + parser.write(result) + return [filename], [result.getvalue()] diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py new file mode 100644 index 0000000000..c36247353f --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/__init__.py @@ -0,0 +1,35 @@ +# Copyright (c) 2018 Ultimaker B.V. +# Cura is released under the terms of the LGPLv3 or higher. + +from . import VersionUpgrade33to34 + +upgrade = VersionUpgrade33to34.VersionUpgrade33to34() + + +def getMetaData(): + return { + "version_upgrade": { + # From To Upgrade function + ("definition_changes", 3000004): ("definition_changes", 4000004, upgrade.upgradeInstanceContainer), + ("quality_changes", 3000004): ("quality_changes", 4000004, upgrade.upgradeInstanceContainer), + ("user", 3000004): ("user", 4000004, upgrade.upgradeInstanceContainer), + }, + "sources": { + "definition_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./definition_changes"} + }, + "quality_changes": { + "get_version": upgrade.getCfgVersion, + "location": {"./quality"} + }, + "user": { + "get_version": upgrade.getCfgVersion, + "location": {"./user"} + } + } + } + + +def register(app): + return { "version_upgrade": upgrade } diff --git a/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json new file mode 100644 index 0000000000..164b79d504 --- /dev/null +++ b/plugins/VersionUpgrade/VersionUpgrade33to34/plugin.json @@ -0,0 +1,8 @@ + { + "name": "Version Upgrade 3.3 to 3.4", + "author": "Ultimaker B.V.", + "version": "1.0.0", + "description": "Upgrades configurations from Cura 3.3 to Cura 3.4.", + "api": 4, + "i18n-catalog": "cura" +} diff --git a/plugins/XRayView/xray_composite.shader b/plugins/XRayView/xray_composite.shader index 0a8f6364d7..7ea5287f96 100644 --- a/plugins/XRayView/xray_composite.shader +++ b/plugins/XRayView/xray_composite.shader @@ -13,6 +13,13 @@ vertex = } fragment = + #ifdef GL_ES + #ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + #else + precision mediump float; + #endif // GL_FRAGMENT_PRECISION_HIGH + #endif // GL_ES uniform sampler2D u_layer0; //Default pass. uniform sampler2D u_layer1; //Selection pass. uniform sampler2D u_layer2; //X-ray pass. diff --git a/resources/definitions/fdmprinter.def.json b/resources/definitions/fdmprinter.def.json index 628a4cf341..e3bcda9f95 100644 --- a/resources/definitions/fdmprinter.def.json +++ b/resources/definitions/fdmprinter.def.json @@ -3288,6 +3288,18 @@ "settable_per_mesh": false, "settable_per_extruder": false }, + "retraction_combing_max_distance": + { + "label": "Max Comb Distance With No Retract", + "description": "When non-zero, combing travel moves that are longer than this distance will use retraction.", + "unit": "mm", + "type": "float", + "default_value": 0, + "minimum_value": "0", + "enabled": "resolveOrValue('retraction_combing') != 'off'", + "settable_per_mesh": false, + "settable_per_extruder": true + }, "travel_retract_before_outer_wall": { "label": "Retract Before Outer Wall", diff --git a/resources/qml/Actions.qml b/resources/qml/Actions.qml index 7002711614..21e6eebf58 100644 --- a/resources/qml/Actions.qml +++ b/resources/qml/Actions.qml @@ -68,7 +68,7 @@ Item property alias configureSettingVisibility: configureSettingVisibilityAction - property alias browsePlugins: browsePluginsAction + property alias browsePackages: browsePackagesAction UM.I18nCatalog{id: catalog; name:"cura"} @@ -429,8 +429,8 @@ Item Action { - id: browsePluginsAction - text: catalog.i18nc("@action:menu", "Browse plugins...") + id: browsePackagesAction + text: catalog.i18nc("@action:menu", "Browse packages...") iconName: "plugins_browse" } diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index b5b4c3941a..ac37cce10a 100644 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -271,9 +271,9 @@ UM.MainWindow Menu { id: plugin_menu - title: catalog.i18nc("@title:menu menubar:toplevel", "P&lugins") + title: catalog.i18nc("@title:menu menubar:toplevel", "&Toolbox") - MenuItem { action: Cura.Actions.browsePlugins } + MenuItem { action: Cura.Actions.browsePackages } } Menu @@ -323,31 +323,6 @@ UM.MainWindow { if (drop.urls.length > 0) { - // As the drop area also supports plugins, first check if it's a plugin that was dropped. - if (drop.urls.length == 1) - { - if (PluginRegistry.isPluginFile(drop.urls[0])) - { - // Try to install plugin & close. - var result = PluginRegistry.installPlugin(drop.urls[0]); - pluginInstallDialog.text = result.message; - if (result.status == "ok") - { - pluginInstallDialog.icon = StandardIcon.Information; - } - else if (result.status == "duplicate") - { - pluginInstallDialog.icon = StandardIcon.Warning; - } - else - { - pluginInstallDialog.icon = StandardIcon.Critical; - } - pluginInstallDialog.open(); - return; - } - } - openDialog.handleOpenFileUrls(drop.urls); } } @@ -669,9 +644,9 @@ UM.MainWindow // show the plugin browser dialog Connections { - target: Cura.Actions.browsePlugins + target: Cura.Actions.browsePackages onTriggered: { - curaExtensions.callExtensionMethod("Plugin Browser", "browsePlugins") + curaExtensions.callExtensionMethod("Toolbox", "browsePackages") } } @@ -814,14 +789,6 @@ UM.MainWindow } } - MessageDialog - { - id: pluginInstallDialog - title: catalog.i18nc("@window:title", "Install Plugin"); - standardButtons: StandardButton.Ok - modality: Qt.ApplicationModal - } - MessageDialog { id: infoMultipleFilesWithGcodeDialog title: catalog.i18nc("@title:window", "Open File(s)") diff --git a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg index 50ff90670f..b46e2473af 100644 --- a/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_pri3 diff --git a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg index 0bcd5ef77d..a12d8d1b72 100644 --- a/resources/quality/abax_pri3/apri3_pla_high.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = abax_pri3 diff --git a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg index 5ef275652d..3cea7931aa 100644 --- a/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg +++ b/resources/quality/abax_pri3/apri3_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_pri3 diff --git a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg index 922da8e88e..ba1de97b89 100644 --- a/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_pri5 diff --git a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg index 2b1c6b017b..d1ea040f93 100644 --- a/resources/quality/abax_pri5/apri5_pla_high.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = abax_pri5 diff --git a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg index 23b21f597b..c2bb8d343b 100644 --- a/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg +++ b/resources/quality/abax_pri5/apri5_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_pri5 diff --git a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg index 5d935a915a..ec54c373c9 100644 --- a/resources/quality/abax_titan/atitan_pla_fast.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_titan diff --git a/resources/quality/abax_titan/atitan_pla_high.inst.cfg b/resources/quality/abax_titan/atitan_pla_high.inst.cfg index 8bd45034e3..f8d016f6d0 100644 --- a/resources/quality/abax_titan/atitan_pla_high.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = abax_titan diff --git a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg index 081e5ad977..b25a0ff47e 100644 --- a/resources/quality/abax_titan/atitan_pla_normal.inst.cfg +++ b/resources/quality/abax_titan/atitan_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = abax_titan diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg index 821205ca69..ae18246f3f 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = anycubic_i3_mega diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg index e686ce50ac..bbaa9c63b1 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = anycubic_i3_mega diff --git a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg index 3e855c1bbc..d319b09952 100644 --- a/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg +++ b/resources/quality/anycubic_i3_mega/anycubic_i3_mega_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = anycubic_i3_mega diff --git a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg index c5a92e3c93..8fc7946102 100644 --- a/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg index 72ce4f3555..bc245b2a9e 100644 --- a/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg index daa1d8bc78..296551d8ef 100644 --- a/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_BVOH_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg index 827c726071..d18a79671b 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg index 4c84d0ddfe..4b12d944ad 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg index 23813f85b9..8a968130c5 100644 --- a/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_Innoflex60_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg index da0d40393c..231b5f1aed 100644 --- a/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg index b78a5a29d7..264642a45f 100644 --- a/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg index 600fbed476..1d740db41e 100644 --- a/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PET_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg index d1c1d4d563..5e0b1c4337 100644 --- a/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg index 1063342b89..651de64134 100644 --- a/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg index 6612c704f3..075cdc7921 100644 --- a/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PLA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg index 2717ffe998..d6c5338c31 100644 --- a/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg index 3ab782af5c..4b26f98cea 100644 --- a/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg index fe24e976c7..f8abfe3347 100644 --- a/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_PVA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg index 708a135847..727b64b57e 100644 --- a/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg index 0c96206a7d..8b40d11cc0 100644 --- a/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = builder_premium_small diff --git a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg index 833e7e8905..1ae3561550 100644 --- a/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg +++ b/resources/quality/builder_premium/bp_global_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = builder_premium_small diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg index 5e713275c6..6fa0c5e9e4 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg index d35dcf1c18..000cb24d31 100644 --- a/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.25_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg index 06ef74108b..24c301f7e8 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg index 8e5b6aadc0..dd52f51b82 100644 --- a/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.4_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg index 5da823a2d8..137f7e4453 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg index 267857cff1..292b1cb9b5 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg index e3219d145c..2054a82b7b 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg index 111bef11dc..a813357fbd 100644 --- a/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg +++ b/resources/quality/cartesio/abs/cartesio_0.8_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg index 35dddeca91..da53c2f3c5 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg index 3234881c72..76f8d29453 100644 --- a/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg +++ b/resources/quality/cartesio/arnitel/cartesio_0.4_arnitel2045_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg index 017483f79a..964290c854 100644 --- a/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg index aadb582309..8bad7659f6 100644 --- a/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Extra_Coarse_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg index e4131dc3a2..965229a38d 100644 --- a/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg index e29a98c980..48b8dbb093 100644 --- a/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg +++ b/resources/quality/cartesio/cartesio_global_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg index b2dc76479f..21bea8a361 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg index c18167b97a..292777c7cc 100644 --- a/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.25_hips_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg index 506ff1807b..127eeeb34e 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg index 1f2ee24064..5300b3d883 100644 --- a/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.4_hips_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg index d117df88a6..afafe024de 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg index e833abcdad..beb7537575 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg index eee5862fea..8201acae75 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg index b0057d5b03..61eb1687a9 100644 --- a/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg +++ b/resources/quality/cartesio/hips/cartesio_0.8_hips_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg index 6dce2b7ea2..c32409606f 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg index 169a7cab65..4955e918a3 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.25_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg index 101fb595d5..26d83494dc 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg index dc5522bda3..6d508f785d 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.4_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg index 0b4ef88282..0b26ee6113 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg index 2fd9aa3220..5027141d1b 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg index 26f749e357..efc2577550 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg index 4843c9cbf4..47ae239bd0 100644 --- a/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg +++ b/resources/quality/cartesio/nylon/cartesio_0.8_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg index d29c8c6801..92645c1e3c 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg index 35168f8ed7..7478c8492c 100644 --- a/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.25_pc_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg index 05bb623a90..83a0222c29 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg index 569ecb069a..b082d8be85 100644 --- a/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.4_pc_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg index b35681187d..efad533ca7 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg index 75fe030443..20de51380f 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg index 05232ac1b3..82eb3c3a94 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg index 106afcf992..d22b9497e0 100644 --- a/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg +++ b/resources/quality/cartesio/pc/cartesio_0.8_pc_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg index edeb791847..cf4bb68e6b 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg index ca95ba4d55..fdf309674d 100644 --- a/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.25_petg_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg index 47e4e74fba..2013524368 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg index 737289f778..6f59633430 100644 --- a/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.4_petg_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg index 54abbbeb46..be37fa8cf1 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg index 75ef0ed89b..60b6bfc957 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg index 2a9542ce56..c45f2bb6aa 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg index 9f27c3c8d1..541dbc3908 100644 --- a/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg +++ b/resources/quality/cartesio/petg/cartesio_0.8_petg_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg index 62cf3194c0..d249e1aec5 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg index 5dd27477e1..08363203f3 100644 --- a/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.25_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg index b6bf3808be..3c6738e02f 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg index a03b316e6f..f87af2f1c2 100644 --- a/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.4_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg index 6284ab3325..83cefd98f9 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg index 58b4c347f3..6a38ef849c 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg index f0d22251bb..57a36b73d7 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg index 44ed46ddd3..cf4df1f09a 100644 --- a/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg +++ b/resources/quality/cartesio/pla/cartesio_0.8_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg index aa9ac8393d..0f01d381a7 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg index b4de6b5730..d5496756c4 100644 --- a/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.25_pva_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg index 5a60dfbe17..97a41d8df0 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg index 9cc57ac16a..344ac13fe1 100644 --- a/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.4_pva_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg index df1bffeb41..a563e67c5c 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg index 30ade55494..2014870980 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg index c8ab571baf..7efa837d65 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = cartesio diff --git a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg index 815694e410..cb3e1f564b 100644 --- a/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg +++ b/resources/quality/cartesio/pva/cartesio_0.8_pva_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = cartesio diff --git a/resources/quality/coarse.inst.cfg b/resources/quality/coarse.inst.cfg index 9dff2a02b3..ffbd57263b 100644 --- a/resources/quality/coarse.inst.cfg +++ b/resources/quality/coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse Quality definition = fdmprinter diff --git a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg index 3863cb6940..49f5c01d2c 100644 --- a/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = Fast Quality (beta) diff --git a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg index 715d8a6841..404e19f714 100644 --- a/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = High Quality (beta) diff --git a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg index 7cddbb154a..511d8ac653 100644 --- a/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = Normal Quality (beta) diff --git a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg index 72d2b30199..e5718fdc95 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast Quality (beta) definition = deltacomb diff --git a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg index 2cd71a96b1..2b29b49c68 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality (beta) definition = deltacomb diff --git a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg index d42fdee730..9853831b12 100644 --- a/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal Quality (beta) definition = deltacomb diff --git a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg index 11fefbaed1..aef76ea72a 100644 --- a/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = Fast Quality diff --git a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg index 4b7125dbb9..45f7065deb 100644 --- a/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = High Quality diff --git a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg index e935c45567..54c976cef1 100644 --- a/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg +++ b/resources/quality/deltacomb/deltacomb_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = deltacomb name = Normal Quality diff --git a/resources/quality/draft.inst.cfg b/resources/quality/draft.inst.cfg index 211525e7d6..2e0e97e812 100644 --- a/resources/quality/draft.inst.cfg +++ b/resources/quality/draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft Quality definition = fdmprinter diff --git a/resources/quality/extra_coarse.inst.cfg b/resources/quality/extra_coarse.inst.cfg index e25b813f2f..98aeecbc79 100644 --- a/resources/quality/extra_coarse.inst.cfg +++ b/resources/quality/extra_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Coarse Quality definition = fdmprinter diff --git a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg index 78a4eb6f9f..f92c000b14 100644 --- a/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Fast Quality diff --git a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg index 786ae18fa5..9a47542645 100644 --- a/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = High Quality diff --git a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg index da75417c87..e7dd3e4cb4 100644 --- a/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Normal Quality diff --git a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg index db86543322..88985a7918 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast Quality definition = fabtotum diff --git a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg index 010298c472..cef9b6023a 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High Quality definition = fabtotum diff --git a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg index b9a80d82b3..63b2baf019 100644 --- a/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal Quality definition = fabtotum diff --git a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg index bea0ea4aff..8c07d21094 100644 --- a/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Fast Quality diff --git a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg index b77a0d8300..9a39a4f8b9 100644 --- a/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = High Quality diff --git a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg index 11e5890cc5..7179e67601 100644 --- a/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Normal Quality diff --git a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg index d689f704aa..3a70155981 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Fast Quality diff --git a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg index 6193b3b573..32743651c4 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = High Quality diff --git a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg index 7ccbe296e3..e75caadb34 100644 --- a/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg +++ b/resources/quality/fabtotum/fabtotum_tpu_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 definition = fabtotum name = Normal Quality diff --git a/resources/quality/fast.inst.cfg b/resources/quality/fast.inst.cfg index 56bc6be48d..a725947eba 100644 --- a/resources/quality/fast.inst.cfg +++ b/resources/quality/fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Quality definition = fdmprinter diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg index ae31f92447..09196ee34c 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Dual Normal Layers definition = gmax15plus_dual diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg index 4e262d8ecf..ea395647fc 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_thick.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Dual Thick Layers definition = gmax15plus_dual diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg index a1b43d5d08..941c909101 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_thin.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Dual Thin Layers definition = gmax15plus_dual diff --git a/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg index 1d5c7eca91..54343e57a1 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_dual_very_thick.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Dual Very Thick Layers definition = gmax15plus_dual diff --git a/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg index 1d01b82d3c..f851119f0b 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Normal Layers definition = gmax15plus diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg index dd6b3e702b..f1e5e838e4 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_thick.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Thick Layers definition = gmax15plus diff --git a/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg index f90cb27647..682b714533 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_thin.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Thin Layers definition = gmax15plus diff --git a/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg b/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg index 171cf2f28d..4c5bc82715 100644 --- a/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg +++ b/resources/quality/gmax15plus/gmax15plus_pla_very_thick.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = gMax 1.5+ Very Thick Layers definition = gmax15plus diff --git a/resources/quality/high.inst.cfg b/resources/quality/high.inst.cfg index bb9e77ad38..673ce56f04 100644 --- a/resources/quality/high.inst.cfg +++ b/resources/quality/high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = fdmprinter diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg index 020e9d9b0f..25b6f1155a 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg index 3aba34126e..2d975b1240 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_coarse_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg index b235662e9f..c510473c3d 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Medium definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg index d5a9b09ed7..682f850c83 100644 --- a/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_petg_0.4_medium_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Medium definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg index 797f77fa72..264878f9d9 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg index 61bb573a25..8427144478 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_coarse_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg index 3c37910112..335e62c698 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg index eb31b07794..bb4f9f0570 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_fine_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg index b8bbd674e0..8bb391bdaa 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Medium definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg index 56ae48379f..9e4d8efddc 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_medium_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Medium definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg index 16fb70252b..aac761463d 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = UltraFine definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg index 2cab1fad46..8df712f8ee 100644 --- a/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg +++ b/resources/quality/imade3d_jellybox/generic_pla_0.4_ultrafine_2-fans.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = UltraFine definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg index 7a778a788f..1a4d51c25b 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_coarse.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Coarse definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg index 51767e0c93..b2926f271f 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg index 407ae608a4..52687b9ab5 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Medium definition = imade3d_jellybox diff --git a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg index f531d84234..b5e8be3841 100644 --- a/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg +++ b/resources/quality/imade3d_jellybox/imade3d_jellybox_ultrafine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = UltraFine definition = imade3d_jellybox diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg index 69c2b328cf..38a5208905 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg index 0bb72ce073..9438ecbfa7 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_extra_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg index 1fd5874b70..16d3367472 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg index 78f80c576d..d0b15cf47b 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_low.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg index 626de7bde6..2d32a0cc87 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg index 63a49e6bc1..373b92a0b7 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg index 2d49b01b92..32ad90dbb0 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_extra_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg index e79a3188d7..e77994fb83 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg index db391b95ca..09a3b7d748 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_low.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg index 336b1f47b9..687095d841 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_beta_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = kemiq_q2_beta diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg index 6044fa25a4..3fb2c90b30 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = kemiq_q2_gama diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg index 9962c554ca..8c0d1cf9ca 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_extra_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = kemiq_q2_gama diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg index 4b5b3b62ed..b1e576f162 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_fine.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = kemiq_q2_gama diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg index a187507632..654936deff 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_low.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low definition = kemiq_q2_gama diff --git a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg index 281f73393a..da6d2d89ae 100644 --- a/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg +++ b/resources/quality/kemiq_q2/kemiq_q2_gama_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = kemiq_q2_gama diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg index 104b747aea..cff97f1480 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg index 3f2eec9867..5413880b98 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg index 55a6c0d4ba..732da71f86 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg index 98587bdf7d..af8f5a7a2b 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg index 49fcd1e935..1c97c7c1d5 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg index f9a9fe3d98..cf9352bced 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg index dcc2813031..08c5457d8f 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg index 251d024a85..f9f3f5aaa0 100644 --- a/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/abs/malyan_m200_abs_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg index c9dd72f5f5..18625e80eb 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.04375.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M1 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg index 65d7d0d0b8..311a797b27 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.0875.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M2 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg index 89aea54fdc..1fe974f6d2 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.13125.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M3 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg index 613988a437..091035d137 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.175.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M4 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg index 75d7601af3..1a22bbc236 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.21875.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M5 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg index 470af78595..d89eb9e6d8 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.2625.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M6 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg index 32fa8c5641..2e71c79b49 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.30625.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M7 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg b/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg index 1e168e7690..362d4b9539 100644 --- a/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_0.35.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = M8 Quality definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg index 12796a140f..91153f57f7 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Draft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg index 78f014bd9e..6b29fc3649 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Fast_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg index bf2f25b418..c32814152f 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg index cd9609cc2d..eb29cfa8a5 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg index 880eb5068d..47bd154d90 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_SuperDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg index 9ebc812738..c7b6a0b44d 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_ThickerDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg index f1841970af..f3917e23f7 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_Ultra_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg index 7da342c437..281374a7f1 100644 --- a/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/malyan_m200/malyan_m200_global_VeryDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg index 0434decedc..d6ade3b912 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg index 2049403af4..42b04050ca 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg index 00882f2418..a17645c080 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg index 58ad4a1085..afdd638487 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg index 09a72e261a..b95822412b 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg index e57b1d24f2..469ff538e6 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg index 0c3de72835..1f8f8de58b 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg index 0139e972f6..713e2492fd 100644 --- a/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/petg/malyan_m200_petg_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg index c30df8a9b3..a02d814db8 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg index 8e1b0478ad..5c5d517d59 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg index 44713b2386..3ca06f8c2d 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg index cd6497d9bf..e17e99af9a 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg index 447de8a48b..c17276ab75 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg index f2c5e3c9cc..ba275d1b49 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg index 63f19bef41..d5411cc417 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = malyan_m200 diff --git a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg index 6a96b3d678..7c88294458 100644 --- a/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg +++ b/resources/quality/malyan_m200/pla/malyan_m200_pla_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = malyan_m200 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg index 6fec85b563..e9daac1b9c 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg index 0d79f2cc72..fb5fb56521 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg index f02e3b5838..4a3b1f612a 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg index a046cfa561..6087dae505 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg index f5861ce734..916c235233 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg index b63fd3cfad..d712976d17 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg index 6aed450961..95b32a8877 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg index 1c462fd435..5fe71b14f2 100644 --- a/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/abs/monoprice_select_mini_v2_abs_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg index c70ccc9946..002784bf21 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Draft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg index 1bc10e2186..31965ff4ef 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Fast_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg index 24d5d5819f..a828a3466f 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg index 0a884c80ca..560a98eedd 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg index 9a0928186c..32aab452b9 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_SuperDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg index 994ec14a3e..d591899d58 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_ThickerDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg index 813d156588..2d1cb39569 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_Ultra_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg index 0a461945f5..41e6553b52 100644 --- a/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/monoprice_select_mini_v2_global_VeryDraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg index d5ccd3070b..43a8a0793c 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg index aca8884024..933c536a3b 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg index 080a06d84f..aa89cac1af 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg index 7f3222d229..4b995dac7c 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg index 88777be100..96650de3e1 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg index 8880d6defa..dfac9f911c 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg index 945964cfac..e143bfc3c9 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg index fbebffde3a..d3fd94fe0d 100644 --- a/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/nylon/monoprice_select_mini_v2_nylon_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg index be4f438df5..e9bf91dc3d 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg index c81f19a03e..1532f6f631 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg index 714cd66c1f..cf27cd71ca 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg index a314288364..8bd29b694e 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg index 4889d3fc7d..63a9493338 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg index 12a5c2ac6f..ec528de08a 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg index 3b70904476..1b830538bf 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg index 2ea13105ef..58e21a33de 100644 --- a/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pc/monoprice_select_mini_v2_pc_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg index da8f6a7c9a..e40e29274b 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg index bc151b9635..6e47686483 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg index bc1101603e..2a60451428 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg index 932bfdf97a..342294d018 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg index 77fb261821..d16e60dfa9 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg index 096ff5c2f6..9819054c68 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg index 9a3cc19a0c..46de625a99 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg index c9e0aae2c4..e553e1088b 100644 --- a/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/petg/monoprice_select_mini_v2_petg_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg index 8f85c598bd..116d5f70d2 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg index 09e741ad07..279e7955e5 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg index cf00fb02b0..623cdbb163 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Finer definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg index eaa85450d8..1fc4376572 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg index 66f888cd6e..1ebe9c63d4 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_superdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Lowest Quality Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg index c4c2a0c2d1..0c12759bf8 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_thickerdraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg index b9b0fea26e..04289aa6c7 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_ultra.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Ultra Fine definition = monoprice_select_mini_v2 diff --git a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg index bd6febd83c..e8b72e1630 100644 --- a/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg +++ b/resources/quality/monoprice_select_mini_v2/pla/monoprice_select_mini_v2_pla_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Detail Draft definition = monoprice_select_mini_v2 diff --git a/resources/quality/normal.inst.cfg b/resources/quality/normal.inst.cfg index 0f1a4d6905..09f063cde3 100644 --- a/resources/quality/normal.inst.cfg +++ b/resources/quality/normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = fdmprinter diff --git a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg index 57c955f4b7..dfb07a0eef 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = peopoly_moai diff --git a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg index 4cce7e2d85..eb5e621310 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_max.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Maximum Quality definition = peopoly_moai diff --git a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg index a1465a86c9..1edc852385 100644 --- a/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg +++ b/resources/quality/peopoly_moai/peopoly_moai_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = peopoly_moai diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg index 184205b1cd..29de7591bf 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft definition = tevo_blackwidow diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg index d158af4123..e495d2d74b 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = tevo_blackwidow diff --git a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg index a44ff8bcdb..4df87784ef 100644 --- a/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg +++ b/resources/quality/tevo_blackwidow/tevo_blackwidow_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = tevo_blackwidow diff --git a/resources/quality/ultimaker2/um2_draft.inst.cfg b/resources/quality/ultimaker2/um2_draft.inst.cfg index dc761afc0b..faf2b68208 100644 --- a/resources/quality/ultimaker2/um2_draft.inst.cfg +++ b/resources/quality/ultimaker2/um2_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Draft Quality definition = ultimaker2 diff --git a/resources/quality/ultimaker2/um2_fast.inst.cfg b/resources/quality/ultimaker2/um2_fast.inst.cfg index 04c24dc4c2..99ddb540cc 100644 --- a/resources/quality/ultimaker2/um2_fast.inst.cfg +++ b/resources/quality/ultimaker2/um2_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Low Quality definition = ultimaker2 diff --git a/resources/quality/ultimaker2/um2_high.inst.cfg b/resources/quality/ultimaker2/um2_high.inst.cfg index 1c83ea350b..f54700bf70 100644 --- a/resources/quality/ultimaker2/um2_high.inst.cfg +++ b/resources/quality/ultimaker2/um2_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2 diff --git a/resources/quality/ultimaker2/um2_normal.inst.cfg b/resources/quality/ultimaker2/um2_normal.inst.cfg index bddbe6e243..c069d2490b 100644 --- a/resources/quality/ultimaker2/um2_normal.inst.cfg +++ b/resources/quality/ultimaker2/um2_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2 diff --git a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg index eecaa2fa0f..f9357010b2 100644 --- a/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.25_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg index 207d237fa3..b50de37b47 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg index 83ffa99d07..9481e3427a 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg index 683eab7166..875db4959f 100644 --- a/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg index 80dea5f5fd..b07b4931ca 100644 --- a/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg index 5c898c74ec..0e76e53316 100644 --- a/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/pla_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg index 275a4595a0..43bdbb117e 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.25_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg index a95417c711..ded9319b3e 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg index 97d35fe6bf..c94333555c 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg index 162805f5c2..6adb9c9caf 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg index 5291356b4e..332608a2f9 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg index 01c0b5467b..f09979c212 100644 --- a/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_abs_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg index 1b656eb4f1..bd6d9d1aa8 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.25_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg index 8385800e15..b9ec279e07 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg index 6d810ee231..e929d9f545 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg index 1b6ab4edc5..7637f6440a 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg index 7f79c013b3..7c9598c7d8 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg index df92d3e2dd..41d531097b 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpe_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg index e83ae78d36..fe975128a0 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg index ee0b659b91..e7bb7b3449 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg index 0773a81834..9751bef5fe 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg index 4cea2db94e..203d122de5 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg index 27c3052885..b80949a627 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg index 26d44f332b..4f96db3c3b 100644 --- a/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_cpep_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg index d2c9c9d8d3..d31c23a5c0 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg index 115e4dd0d3..0f9fd57197 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.25_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg index 917715ef33..0d8371760f 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg index 125930991a..3ac77b3642 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg index 3602182288..d6332e5688 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg index c41a8b3612..22250e1147 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg index 6e68d79f34..0ba3a33812 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg index e01006cf58..5e0d64ec12 100644 --- a/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_nylon_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg index 91bc5e523a..d7cafd20a5 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg index 5407edf56d..bdaed6745a 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.25_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg index 5e0cef44cc..aaf4812786 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg index 9e400a46e7..a54ce9d946 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg index 1741eb47e9..2d50f96661 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg index 17df729157..a19483c39a 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.6_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg index 87bad0bd64..fb269e67ef 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg index e1f208b2f1..bf530cccf6 100644 --- a/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pc_0.8_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg index cbb4f2f881..16c4a47340 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg index ee38faa33a..d318275700 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg index 9fe8c72397..dd150d903a 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg index ba9052818c..8cb602b7eb 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.6_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg index 2a6b4d1de8..3e38caa1ec 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_draft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg index 92f605f557..39408477af 100644 --- a/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_pp_0.8_verydraft.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg index b6fe1515c0..3e5f8f8180 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.25_high.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg index 27e09bdf10..84065dbfdf 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.4_normal.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker2_plus diff --git a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg index 6d0b1ef8de..ec424a6f40 100644 --- a/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg +++ b/resources/quality/ultimaker2_plus/um2p_tpu_0.6_fast.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker2_plus diff --git a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg index c79c831984..e1cd7e77a9 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_ABS_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg index 278d681863..fabe67cc27 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_CPE_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg index c3ead92b51..568b7d0f73 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_Nylon_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg index bd95837fee..8444d0faef 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PC_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg index 7f6fb9fa4d..14345dc626 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PLA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg index 6bdd94f58f..4a3572a1c5 100644 --- a/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.25_PP_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg index 4b05943b64..f7748e3903 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg index 3b441942ac..50fb12eaa4 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg index 79cdb4069d..6215afc9df 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg index 412bc4c5a8..a7683fb249 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_ABS_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg index e4ef572efb..f9a2bd88a4 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg index c896c74233..d181e7e4c9 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg index 9fdcfb4cf3..4a8bde54b3 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_BAM_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg index 14263ee800..8f071b18d7 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg index 05d8988c36..fc6eee65bc 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg index 6a6fa94730..3559ed5e67 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg index 402e23436a..02a807c7b8 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPEP_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg index c6fa46f82d..7a54e34f6d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg index 3c4439c598..94476b33d1 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg index 84ee673caa..d8899f1bca 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg index fc1cf4a3dc..4f144ca92e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_CPE_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg index 8ade8d4fe4..91600ed6fa 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg index 2fef1fb2a2..7db3683333 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg index 9a320ecde3..fd9ffb53b4 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg index 34efb4df95..c8ed69342d 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_Nylon_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg index 1f1fe1d8ae..2f05384abd 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg index 47f2fd3be7..ef6f5978ad 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg index cbce8a690d..cbba3ffddb 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg index 24b396fa9f..ac78470b03 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PC_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg index 3805d7a396..735dac3b76 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg index 3a8c6df621..b69fa30a8b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg index 543391fd6b..325d22fe5a 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg index c3c2a8d624..910f3cec4b 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PLA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg index 1db33d9073..23d44b8442 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg index fe7da92bbe..c86a9f5578 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg index 8bbb0118b5..54406c1f55 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_PP_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg index 25e7c2c0ab..59c650ef0e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg index 0b7fa6501e..f0a889c12e 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg index 9afecb8987..1b6ac261cf 100644 --- a/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.4_TPU_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg index 85e1415147..9b28f51745 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg index 3167473cc6..e79e505270 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg index 0414bf724c..477ee60492 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_ABS_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg index 87728c2297..961e127a57 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg index 603f32a688..b112bf8f4f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg index 432d502245..c51ee3a90f 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPEP_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg index b4f4a0f102..e50b05af27 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg index d8fdf49451..2aeb54f073 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg index 8cd56b1541..68ecc4f04a 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_CPE_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg index e205720539..73016046b6 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg index f2853a8781..5940bf3ab9 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg index 442323877c..ea809095ac 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_Nylon_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg index d8460c6971..fba7e2c824 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg index 53f613ec70..5838a48fb7 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg index a4fdaaa791..83a331e801 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PC_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast - Experimental definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg index 3293fa8382..a852bb9b47 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg index b989d7e11a..61e142a254 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg index 684eb11c5b..cb4d3ad915 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PLA_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg index 8ed11c1946..3e204ab623 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg index 01b947995d..1a6e469015 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg index ba1aa89c91..db5bb4e70b 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_PP_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg index e133d335f8..25dd942fbe 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg index c835de26f4..d3a28c42a0 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg index 2e3ad5cf44..bf17bc5edc 100644 --- a/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_aa0.8_TPU_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg index 4fff8be5ee..153e1afd58 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg index 8abce151bf..2660680d81 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Fast_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg index 0caf36e51b..9cdedaf480 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg index 0a8304a743..d92a062bc8 100644 --- a/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.4_PVA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg index d59f283eb6..6aacd137b6 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Draft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg index 4039d39d6a..69ec326466 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Superdraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg index 247ee3d4da..7f1f18f38b 100644 --- a/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg +++ b/resources/quality/ultimaker3/um3_bb0.8_PVA_Verydraft_Print.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg index 49a514bff3..c9f519af47 100644 --- a/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Draft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg index 69a94be93a..ffcfd450dd 100644 --- a/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Fast_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg index 2aebb18ab5..eaad3e8a92 100644 --- a/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg index 5effc44fc5..e8ffaad679 100644 --- a/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Fine definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg index 55f5796240..69d9e59690 100644 --- a/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Superdraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Sprint definition = ultimaker3 diff --git a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg index 5d72a76c7c..db914aec6d 100644 --- a/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg +++ b/resources/quality/ultimaker3/um3_global_Verydraft_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extra Fast definition = ultimaker3 diff --git a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg b/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg deleted file mode 100644 index ecc31f22de..0000000000 --- a/resources/quality/ultimaker_s5/um_s5_global_Normal_Quality.inst.cfg +++ /dev/null @@ -1,14 +0,0 @@ -[general] -version = 3 -name = Fine -definition = ultimaker_s5 - -[metadata] -setting_version = 4 -type = quality -quality_type = normal -weight = 0 -global_quality = True - -[values] -layer_height = 0.1 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg index e5eb35bede..0c5964f9ee 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Extreme_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extreme definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg index 82cb6e1dd8..175b07f3f1 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg index 274adf3faf..0ca08ad52b 100644 --- a/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_ABS_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg index 08f8d03c78..bf63870c20 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Extreme_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extreme definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg index f9b33153c0..d23d2ebfbe 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg index 38d6513fe5..8e3e091e2d 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PET_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg index bcd0b97c9d..7cca60952b 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Extreme_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extreme definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg index 6399e47ce7..5f27d8d9ed 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg index 4b6d47e242..cd68e250b4 100644 --- a/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_PLA_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg index 53fa411dc5..099aed647a 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Extreme_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Extreme definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg index b782c39cbf..b444c80265 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_High_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = High definition = vertex_delta_k8800 diff --git a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg index d8898ed203..f1c0a7f0b6 100644 --- a/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg +++ b/resources/quality/vertex_delta_k8800/k8800_TPU_Normal_Quality.inst.cfg @@ -1,5 +1,5 @@ [general] -version = 3 +version = 4 name = Normal definition = vertex_delta_k8800 diff --git a/resources/shaders/grid.shader b/resources/shaders/grid.shader index 07cb1a01a6..0510686889 100644 --- a/resources/shaders/grid.shader +++ b/resources/shaders/grid.shader @@ -14,6 +14,14 @@ vertex = } fragment = + #ifdef GL_ES + #extension GL_OES_standard_derivatives : enable + #ifdef GL_FRAGMENT_PRECISION_HIGH + precision highp float; + #else + precision mediump float; + #endif // GL_FRAGMENT_PRECISION_HIGH + #endif // GL_ES uniform lowp vec4 u_plateColor; uniform lowp vec4 u_gridColor0; uniform lowp vec4 u_gridColor1; diff --git a/resources/shaders/striped.shader b/resources/shaders/striped.shader index 7cf5a62c3f..d816fed74d 100644 --- a/resources/shaders/striped.shader +++ b/resources/shaders/striped.shader @@ -32,7 +32,7 @@ fragment = uniform highp vec3 u_viewPosition; uniform mediump float u_width; - uniform mediump bool u_vertical_stripes; + uniform bool u_vertical_stripes; varying highp vec3 v_position; varying highp vec3 v_vertex; diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 0fde7f3bc9..ee0b163185 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -68,6 +68,9 @@ }, "colors": { + + + "sidebar": [255, 255, 255, 255], "lining": [192, 193, 194, 255], "viewport_overlay": [0, 0, 0, 192], @@ -92,6 +95,7 @@ "text_hover": [70, 84, 113, 255], "text_pressed": [12, 169, 227, 255], "text_subtext": [0, 0, 0, 255], + "text_medium": [128, 128, 128, 255], "text_emphasis": [255, 255, 255, 255], "text_scene": [31, 36, 39, 255], "text_scene_hover": [70, 84, 113, 255], @@ -318,12 +322,16 @@ "sizes": { "window_minimum_size": [70, 50], - "window_margin": [1.0, 1.0], - "default_margin": [1.0, 1.0], + "default_lining": [0.08, 0.08], "default_arrow": [0.8, 0.8], "logo": [7.6, 1.6], + "default_margin": [1.0, 1.0], + "wide_margin": [2.0, 2.0], + "narrow_margin": [0.5, 0.5], + "window_margin": [1.0, 1.0], + "extruder_button_material_margin": [0.70, 0.9], "extruder_button_material": [0.75, 0.75], @@ -433,6 +441,24 @@ "objects_menu_size": [20, 40], "objects_menu_size_collapsed": [20, 17], "build_plate_selection_size": [15, 5], - "objects_menu_button": [0.3, 2.7] + "objects_menu_button": [0.3, 2.7], + + "toolbox_thumbnail_small": [6.0, 6.0], + "toolbox_thumbnail_medium": [8.0, 8.0], + "toolbox_thumbnail_large": [12.0, 12.0], + "toolbox_footer": [1.0, 4.5], + "toolbox_footer_button": [8.0, 2.5], + "toolbox_showcase_spacing": [1.0, 1.0], + "toolbox_header_tab": [8.0, 4.0], + "toolbox_detail_header": [1.0, 12.0], + "toolbox_detail_tile": [1.0, 8.0], + "toolbox_back_column": [6.0, 1.0], + "toolbox_back_button": [4.0, 2.0], + "toolbox_installed_tile": [1.0, 8.0], + "toolbox_property_label": [1.0, 2.0], + "toolbox_heading_label": [1.0, 4.0], + "toolbox_header": [1.0, 4.0], + "toolbox_action_button": [8.0, 2.5], + "toolbox_progress_bar": [8.0, 0.5] } } diff --git a/resources/variants/cartesio_0.25.inst.cfg b/resources/variants/cartesio_0.25.inst.cfg index a3fbe67606..79d3a33d66 100644 --- a/resources/variants/cartesio_0.25.inst.cfg +++ b/resources/variants/cartesio_0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25 mm -version = 3 +version = 4 definition = cartesio [metadata] diff --git a/resources/variants/cartesio_0.4.inst.cfg b/resources/variants/cartesio_0.4.inst.cfg index d5fbc4dc26..680eea64b0 100644 --- a/resources/variants/cartesio_0.4.inst.cfg +++ b/resources/variants/cartesio_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = cartesio [metadata] diff --git a/resources/variants/cartesio_0.8.inst.cfg b/resources/variants/cartesio_0.8.inst.cfg index a309c47424..348595aa54 100644 --- a/resources/variants/cartesio_0.8.inst.cfg +++ b/resources/variants/cartesio_0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8 mm -version = 3 +version = 4 definition = cartesio [metadata] diff --git a/resources/variants/fabtotum_hyb35.inst.cfg b/resources/variants/fabtotum_hyb35.inst.cfg index d96189e88e..fa9133129a 100644 --- a/resources/variants/fabtotum_hyb35.inst.cfg +++ b/resources/variants/fabtotum_hyb35.inst.cfg @@ -1,6 +1,6 @@ [general] name = Hybrid 0.35 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_lite04.inst.cfg b/resources/variants/fabtotum_lite04.inst.cfg index 0309b81733..c35beba052 100644 --- a/resources/variants/fabtotum_lite04.inst.cfg +++ b/resources/variants/fabtotum_lite04.inst.cfg @@ -1,6 +1,6 @@ [general] name = Lite 0.4 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_lite06.inst.cfg b/resources/variants/fabtotum_lite06.inst.cfg index c92e621bd2..6d91977a24 100644 --- a/resources/variants/fabtotum_lite06.inst.cfg +++ b/resources/variants/fabtotum_lite06.inst.cfg @@ -1,6 +1,6 @@ [general] name = Lite 0.6 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_pro02.inst.cfg b/resources/variants/fabtotum_pro02.inst.cfg index 29d245a24a..ead17fc1b1 100644 --- a/resources/variants/fabtotum_pro02.inst.cfg +++ b/resources/variants/fabtotum_pro02.inst.cfg @@ -1,6 +1,6 @@ [general] name = Pro 0.2 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_pro04.inst.cfg b/resources/variants/fabtotum_pro04.inst.cfg index 42be71b89d..c6d8c9b082 100644 --- a/resources/variants/fabtotum_pro04.inst.cfg +++ b/resources/variants/fabtotum_pro04.inst.cfg @@ -1,6 +1,6 @@ [general] name = Pro 0.4 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_pro06.inst.cfg b/resources/variants/fabtotum_pro06.inst.cfg index 9c17d83f47..ee7ec5eea6 100644 --- a/resources/variants/fabtotum_pro06.inst.cfg +++ b/resources/variants/fabtotum_pro06.inst.cfg @@ -1,6 +1,6 @@ [general] name = Pro 0.6 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/fabtotum_pro08.inst.cfg b/resources/variants/fabtotum_pro08.inst.cfg index 2fc5507024..cd226056eb 100644 --- a/resources/variants/fabtotum_pro08.inst.cfg +++ b/resources/variants/fabtotum_pro08.inst.cfg @@ -1,6 +1,6 @@ [general] name = Pro 0.8 mm -version = 3 +version = 4 definition = fabtotum [metadata] diff --git a/resources/variants/gmax15plus_025_e3d.inst.cfg b/resources/variants/gmax15plus_025_e3d.inst.cfg index 53e6a14b23..eed2123e25 100644 --- a/resources/variants/gmax15plus_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_025_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25mm E3D (Difficult) -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_04_e3d.inst.cfg b/resources/variants/gmax15plus_04_e3d.inst.cfg index a0b0d58b92..4dc9a9ffdd 100644 --- a/resources/variants/gmax15plus_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_04_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4mm E3D -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_05_e3d.inst.cfg b/resources/variants/gmax15plus_05_e3d.inst.cfg index 333ab55f81..d7eeb44096 100644 --- a/resources/variants/gmax15plus_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_05_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.5mm E3D (Default) -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_05_jhead.inst.cfg b/resources/variants/gmax15plus_05_jhead.inst.cfg index 51902ffa0c..e146b31ae7 100644 --- a/resources/variants/gmax15plus_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_05_jhead.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.5mm J-Head -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_06_e3d.inst.cfg b/resources/variants/gmax15plus_06_e3d.inst.cfg index 3452e5e81f..a4de943b4c 100644 --- a/resources/variants/gmax15plus_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_06_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6mm E3D -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_08_e3d.inst.cfg b/resources/variants/gmax15plus_08_e3d.inst.cfg index cdee755efc..163fbf0639 100644 --- a/resources/variants/gmax15plus_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_08_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8mm E3D -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_10_jhead.inst.cfg b/resources/variants/gmax15plus_10_jhead.inst.cfg index ee60c71cc2..519a432423 100644 --- a/resources/variants/gmax15plus_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_10_jhead.inst.cfg @@ -1,6 +1,6 @@ [general] name = 1.0mm J-Head -version = 3 +version = 4 definition = gmax15plus [metadata] diff --git a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg index 002af1a0c5..f972c5d72c 100644 --- a/resources/variants/gmax15plus_dual_025_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_025_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25mm E3D (Difficult) -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg index a98637e9e1..0be4501ecb 100644 --- a/resources/variants/gmax15plus_dual_04_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_04_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4mm E3D -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg index dc7d711043..c80ed97be7 100644 --- a/resources/variants/gmax15plus_dual_05_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.5mm E3D (Default) -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg index fc4f17d057..0c2c8de793 100644 --- a/resources/variants/gmax15plus_dual_05_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_05_jhead.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.5mm J-Head -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg index 506f2df06e..ab7080e929 100644 --- a/resources/variants/gmax15plus_dual_06_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_06_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6mm E3D -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg index d008df70f6..bd031e430a 100644 --- a/resources/variants/gmax15plus_dual_08_e3d.inst.cfg +++ b/resources/variants/gmax15plus_dual_08_e3d.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8mm E3D -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg index 825810997e..f81a2d5d39 100644 --- a/resources/variants/gmax15plus_dual_10_jhead.inst.cfg +++ b/resources/variants/gmax15plus_dual_10_jhead.inst.cfg @@ -1,6 +1,6 @@ [general] name = 1.0mm J-Head -version = 3 +version = 4 definition = gmax15plus_dual [metadata] diff --git a/resources/variants/imade3d_jellybox_0.4.inst.cfg b/resources/variants/imade3d_jellybox_0.4.inst.cfg index 99b55866c7..5f696425a6 100644 --- a/resources/variants/imade3d_jellybox_0.4.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = imade3d_jellybox [metadata] diff --git a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg index 890c394a36..410a0fee0a 100644 --- a/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg +++ b/resources/variants/imade3d_jellybox_0.4_2-fans.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm 2-fans -version = 3 +version = 4 definition = imade3d_jellybox [metadata] diff --git a/resources/variants/ultimaker2_0.25.inst.cfg b/resources/variants/ultimaker2_0.25.inst.cfg index c4d778e5cf..931bddafe2 100644 --- a/resources/variants/ultimaker2_0.25.inst.cfg +++ b/resources/variants/ultimaker2_0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25 mm -version = 3 +version = 4 definition = ultimaker2 [metadata] diff --git a/resources/variants/ultimaker2_0.4.inst.cfg b/resources/variants/ultimaker2_0.4.inst.cfg index 2ce766a1ac..b65ac26483 100644 --- a/resources/variants/ultimaker2_0.4.inst.cfg +++ b/resources/variants/ultimaker2_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = ultimaker2 [metadata] diff --git a/resources/variants/ultimaker2_0.6.inst.cfg b/resources/variants/ultimaker2_0.6.inst.cfg index 0c5bdca240..db4f21a3e8 100644 --- a/resources/variants/ultimaker2_0.6.inst.cfg +++ b/resources/variants/ultimaker2_0.6.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6 mm -version = 3 +version = 4 definition = ultimaker2 [metadata] diff --git a/resources/variants/ultimaker2_0.8.inst.cfg b/resources/variants/ultimaker2_0.8.inst.cfg index fd11520eca..f9117aa5d5 100644 --- a/resources/variants/ultimaker2_0.8.inst.cfg +++ b/resources/variants/ultimaker2_0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8 mm -version = 3 +version = 4 definition = ultimaker2 [metadata] diff --git a/resources/variants/ultimaker2_extended_0.25.inst.cfg b/resources/variants/ultimaker2_extended_0.25.inst.cfg index b8a31641e3..8efa86af23 100644 --- a/resources/variants/ultimaker2_extended_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25 mm -version = 3 +version = 4 definition = ultimaker2_extended [metadata] diff --git a/resources/variants/ultimaker2_extended_0.4.inst.cfg b/resources/variants/ultimaker2_extended_0.4.inst.cfg index dbceac2890..3b5f99c4f6 100644 --- a/resources/variants/ultimaker2_extended_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = ultimaker2_extended [metadata] diff --git a/resources/variants/ultimaker2_extended_0.6.inst.cfg b/resources/variants/ultimaker2_extended_0.6.inst.cfg index 6fbb489160..184f08c876 100644 --- a/resources/variants/ultimaker2_extended_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.6.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6 mm -version = 3 +version = 4 definition = ultimaker2_extended [metadata] diff --git a/resources/variants/ultimaker2_extended_0.8.inst.cfg b/resources/variants/ultimaker2_extended_0.8.inst.cfg index 94b38de8f2..8e87bdd230 100644 --- a/resources/variants/ultimaker2_extended_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8 mm -version = 3 +version = 4 definition = ultimaker2_extended [metadata] diff --git a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg index 89916470bb..c2dcd1ea31 100644 --- a/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25 mm -version = 3 +version = 4 definition = ultimaker2_extended_plus [metadata] diff --git a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg index 0de416da11..0a85b710b7 100644 --- a/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = ultimaker2_extended_plus [metadata] diff --git a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg index 4e6ace5a59..b47dc55a6b 100644 --- a/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.6.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6 mm -version = 3 +version = 4 definition = ultimaker2_extended_plus [metadata] diff --git a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg index 7540d5783a..dca992e45e 100644 --- a/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_extended_plus_0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8 mm -version = 3 +version = 4 definition = ultimaker2_extended_plus [metadata] diff --git a/resources/variants/ultimaker2_plus_0.25.inst.cfg b/resources/variants/ultimaker2_plus_0.25.inst.cfg index d59476a4f7..45168fcc5e 100644 --- a/resources/variants/ultimaker2_plus_0.25.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.25 mm -version = 3 +version = 4 definition = ultimaker2_plus [metadata] diff --git a/resources/variants/ultimaker2_plus_0.4.inst.cfg b/resources/variants/ultimaker2_plus_0.4.inst.cfg index a188d10d4a..27a9aad065 100644 --- a/resources/variants/ultimaker2_plus_0.4.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.4.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.4 mm -version = 3 +version = 4 definition = ultimaker2_plus [metadata] diff --git a/resources/variants/ultimaker2_plus_0.6.inst.cfg b/resources/variants/ultimaker2_plus_0.6.inst.cfg index b3aad334c3..5fe0b91ed1 100644 --- a/resources/variants/ultimaker2_plus_0.6.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.6.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.6 mm -version = 3 +version = 4 definition = ultimaker2_plus [metadata] diff --git a/resources/variants/ultimaker2_plus_0.8.inst.cfg b/resources/variants/ultimaker2_plus_0.8.inst.cfg index 3c5dec79f6..316a0270cd 100644 --- a/resources/variants/ultimaker2_plus_0.8.inst.cfg +++ b/resources/variants/ultimaker2_plus_0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = 0.8 mm -version = 3 +version = 4 definition = ultimaker2_plus [metadata] diff --git a/resources/variants/ultimaker3_aa0.25.inst.cfg b/resources/variants/ultimaker3_aa0.25.inst.cfg index 447bf0e49c..2f1b93c627 100644 --- a/resources/variants/ultimaker3_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_aa0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.25 -version = 3 +version = 4 definition = ultimaker3 [metadata] diff --git a/resources/variants/ultimaker3_aa0.8.inst.cfg b/resources/variants/ultimaker3_aa0.8.inst.cfg index 97ee3587cf..025c346377 100644 --- a/resources/variants/ultimaker3_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_aa0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.8 -version = 3 +version = 4 definition = ultimaker3 [metadata] diff --git a/resources/variants/ultimaker3_aa04.inst.cfg b/resources/variants/ultimaker3_aa04.inst.cfg index 0e0187e4df..84b137df60 100644 --- a/resources/variants/ultimaker3_aa04.inst.cfg +++ b/resources/variants/ultimaker3_aa04.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.4 -version = 3 +version = 4 definition = ultimaker3 [metadata] diff --git a/resources/variants/ultimaker3_bb0.8.inst.cfg b/resources/variants/ultimaker3_bb0.8.inst.cfg index 2f745ca3db..32f9dc6fd2 100644 --- a/resources/variants/ultimaker3_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_bb0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = BB 0.8 -version = 3 +version = 4 definition = ultimaker3 [metadata] diff --git a/resources/variants/ultimaker3_bb04.inst.cfg b/resources/variants/ultimaker3_bb04.inst.cfg index 0854a56a6e..8c94ce1e19 100644 --- a/resources/variants/ultimaker3_bb04.inst.cfg +++ b/resources/variants/ultimaker3_bb04.inst.cfg @@ -1,6 +1,6 @@ [general] name = BB 0.4 -version = 3 +version = 4 definition = ultimaker3 [metadata] diff --git a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg index b06ec0830b..6e61372453 100644 --- a/resources/variants/ultimaker3_extended_aa0.25.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.25.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.25 -version = 3 +version = 4 definition = ultimaker3_extended [metadata] diff --git a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg index 149b832514..ea2e92478a 100644 --- a/resources/variants/ultimaker3_extended_aa0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.8 -version = 3 +version = 4 definition = ultimaker3_extended [metadata] diff --git a/resources/variants/ultimaker3_extended_aa04.inst.cfg b/resources/variants/ultimaker3_extended_aa04.inst.cfg index 8a2f061224..e653616c89 100644 --- a/resources/variants/ultimaker3_extended_aa04.inst.cfg +++ b/resources/variants/ultimaker3_extended_aa04.inst.cfg @@ -1,6 +1,6 @@ [general] name = AA 0.4 -version = 3 +version = 4 definition = ultimaker3_extended [metadata] diff --git a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg index eaa06f6a66..da47f6eb28 100644 --- a/resources/variants/ultimaker3_extended_bb0.8.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb0.8.inst.cfg @@ -1,6 +1,6 @@ [general] name = BB 0.8 -version = 3 +version = 4 definition = ultimaker3_extended [metadata] diff --git a/resources/variants/ultimaker3_extended_bb04.inst.cfg b/resources/variants/ultimaker3_extended_bb04.inst.cfg index 18b71b154d..04e625f87e 100644 --- a/resources/variants/ultimaker3_extended_bb04.inst.cfg +++ b/resources/variants/ultimaker3_extended_bb04.inst.cfg @@ -1,6 +1,6 @@ [general] name = BB 0.4 -version = 3 +version = 4 definition = ultimaker3_extended [metadata] diff --git a/resources/variants/ultimaker_s5_aa04.inst.cfg b/resources/variants/ultimaker_s5_aa04.inst.cfg deleted file mode 100644 index 2984695985..0000000000 --- a/resources/variants/ultimaker_s5_aa04.inst.cfg +++ /dev/null @@ -1,42 +0,0 @@ -[general] -name = AA 0.4 -version = 3 -definition = ultimaker_s5 - -[metadata] -setting_version = 4 -type = variant -hardware_type = nozzle - -[values] -brim_width = 7 -machine_nozzle_cool_down_speed = 0.9 -machine_nozzle_id = AA 0.4 -machine_nozzle_tip_outer_diameter = 1.0 -raft_acceleration = =acceleration_print -raft_airgap = 0.3 -raft_base_thickness = =resolveOrValue('layer_height_0') * 1.2 -raft_interface_line_spacing = =raft_interface_line_width + 0.2 -raft_interface_line_width = =line_width * 2 -raft_interface_thickness = =layer_height * 1.5 -raft_jerk = =jerk_print -raft_margin = 15 -raft_surface_layers = 2 -retraction_amount = 6.5 -retraction_count_max = 25 -retraction_min_travel = =line_width * 2 -retraction_prime_speed = =retraction_speed -skin_overlap = 15 -speed_print = 70 -speed_topbottom = =math.ceil(speed_print * 30 / 70) -speed_wall = =math.ceil(speed_print * 30 / 70) -support_angle = 60 -support_bottom_distance = =support_z_distance / 2 -support_pattern = zigzag -support_top_distance = =support_z_distance -support_use_towers = True -support_z_distance = =layer_height * 2 -switch_extruder_prime_speed = =switch_extruder_retraction_speeds -switch_extruder_retraction_amount = =machine_heat_zone_length -top_bottom_thickness = 1.2 -wall_thickness = 1.3 diff --git a/resources/variants/ultimaker_s5_glass.inst.cfg b/resources/variants/ultimaker_s5_glass.inst.cfg deleted file mode 100644 index 49e032d387..0000000000 --- a/resources/variants/ultimaker_s5_glass.inst.cfg +++ /dev/null @@ -1,13 +0,0 @@ -[general] -name = Glass -version = 3 -definition = ultimaker_s5 - -[metadata] -setting_version = 4 -type = variant -hardware_type = buildplate - -[values] -material_bed_temperature = =default_material_bed_temperature -machine_buildplate_type = glass