mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-09-26 15:03:11 +08:00
Merge pull request #5470 from Ultimaker/WIP_onboarding_machine_action
New onboarding flow - machine action
This commit is contained in:
commit
84de34341d
@ -13,79 +13,106 @@ from PyQt5.QtGui import QColor, QIcon
|
||||
from PyQt5.QtWidgets import QMessageBox
|
||||
from PyQt5.QtQml import qmlRegisterUncreatableType, qmlRegisterSingletonType, qmlRegisterType
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Application import Application
|
||||
from UM.Decorators import override
|
||||
from UM.FlameProfiler import pyqtSlot
|
||||
from UM.Logger import Logger
|
||||
from UM.Message import Message
|
||||
from UM.Platform import Platform
|
||||
from UM.PluginError import PluginNotFoundError
|
||||
from UM.Scene.SceneNode import SceneNode
|
||||
from UM.Scene.Camera import Camera
|
||||
from UM.Math.Vector import Vector
|
||||
from UM.Math.Quaternion import Quaternion
|
||||
from UM.Resources import Resources
|
||||
from UM.Preferences import Preferences
|
||||
from UM.Qt.QtApplication import QtApplication # The class we're inheriting from.
|
||||
import UM.Util
|
||||
from UM.View.SelectionPass import SelectionPass # For typing.
|
||||
|
||||
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
||||
from UM.Math.Matrix import Matrix
|
||||
from UM.Platform import Platform
|
||||
from UM.Resources import Resources
|
||||
from UM.Scene.ToolHandle import ToolHandle
|
||||
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
||||
from UM.Math.Quaternion import Quaternion
|
||||
from UM.Math.Vector import Vector
|
||||
|
||||
from UM.Mesh.ReadMeshJob import ReadMeshJob
|
||||
from UM.Logger import Logger
|
||||
from UM.Preferences import Preferences
|
||||
from UM.Qt.QtApplication import QtApplication #The class we're inheriting from.
|
||||
from UM.View.SelectionPass import SelectionPass #For typing.
|
||||
from UM.Scene.Selection import Selection
|
||||
from UM.Scene.GroupDecorator import GroupDecorator
|
||||
from UM.Settings.ContainerStack import ContainerStack
|
||||
from UM.Settings.InstanceContainer import InstanceContainer
|
||||
from UM.Settings.Validator import Validator
|
||||
from UM.Message import Message
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Workspace.WorkspaceReader import WorkspaceReader
|
||||
import UM.Util
|
||||
|
||||
from UM.Operations.AddSceneNodeOperation import AddSceneNodeOperation
|
||||
from UM.Operations.GroupedOperation import GroupedOperation
|
||||
from UM.Operations.SetTransformOperation import SetTransformOperation
|
||||
|
||||
from UM.Scene.Camera import Camera
|
||||
from UM.Scene.GroupDecorator import GroupDecorator
|
||||
from UM.Scene.Iterator.DepthFirstIterator import DepthFirstIterator
|
||||
from UM.Scene.SceneNode import SceneNode
|
||||
from UM.Scene.Selection import Selection
|
||||
from UM.Scene.ToolHandle import ToolHandle
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.ContainerStack import ContainerStack
|
||||
from UM.Settings.InstanceContainer import InstanceContainer
|
||||
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType
|
||||
from UM.Settings.SettingFunction import SettingFunction
|
||||
from UM.Settings.Validator import Validator
|
||||
|
||||
from UM.Workspace.WorkspaceReader import WorkspaceReader
|
||||
|
||||
from cura.API import CuraAPI
|
||||
|
||||
from cura.Arranging.Arrange import Arrange
|
||||
from cura.Arranging.ArrangeObjectsJob import ArrangeObjectsJob
|
||||
from cura.Arranging.ArrangeObjectsAllBuildPlatesJob import ArrangeObjectsAllBuildPlatesJob
|
||||
from cura.Arranging.ShapeArray import ShapeArray
|
||||
from cura.Machines.Models.GlobalStacksModel import GlobalStacksModel
|
||||
from cura.Scene.ConvexHullDecorator import ConvexHullDecorator
|
||||
|
||||
from cura.Operations.SetParentOperation import SetParentOperation
|
||||
from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator
|
||||
|
||||
from cura.Scene.BlockSlicingDecorator import BlockSlicingDecorator
|
||||
from cura.Scene.BuildPlateDecorator import BuildPlateDecorator
|
||||
from cura.Scene.CuraSceneNode import CuraSceneNode
|
||||
|
||||
from cura.Scene.ConvexHullDecorator import ConvexHullDecorator
|
||||
from cura.Scene.CuraSceneController import CuraSceneController
|
||||
|
||||
from cura.UI.WelcomePagesModel import WelcomePagesModel
|
||||
|
||||
from UM.Settings.SettingDefinition import SettingDefinition, DefinitionPropertyType
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.SettingFunction import SettingFunction
|
||||
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
|
||||
from cura.Settings.MachineNameValidator import MachineNameValidator
|
||||
|
||||
from cura.Machines.Models.BuildPlateModel import BuildPlateModel
|
||||
from cura.Machines.Models.NozzleModel import NozzleModel
|
||||
from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel
|
||||
from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel
|
||||
from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel
|
||||
from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel
|
||||
from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel
|
||||
from cura.Machines.Models.MaterialBrandsModel import MaterialBrandsModel
|
||||
from cura.Machines.Models.QualityManagementModel import QualityManagementModel
|
||||
from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel
|
||||
from cura.Machines.Models.MachineManagementModel import MachineManagementModel
|
||||
from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel
|
||||
from cura.Scene.CuraSceneNode import CuraSceneNode
|
||||
from cura.Scene.SliceableObjectDecorator import SliceableObjectDecorator
|
||||
from cura.Scene import ZOffsetDecorator
|
||||
|
||||
from cura.Machines.MachineErrorChecker import MachineErrorChecker
|
||||
from cura.Machines.VariantManager import VariantManager
|
||||
|
||||
from cura.Machines.Models.BuildPlateModel import BuildPlateModel
|
||||
from cura.Machines.Models.CustomQualityProfilesDropDownMenuModel import CustomQualityProfilesDropDownMenuModel
|
||||
from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel
|
||||
from cura.Machines.Models.ExtrudersModel import ExtrudersModel
|
||||
from cura.Machines.Models.FavoriteMaterialsModel import FavoriteMaterialsModel
|
||||
from cura.Machines.Models.FirstStartMachineActionsModel import FirstStartMachineActionsModel
|
||||
from cura.Machines.Models.GenericMaterialsModel import GenericMaterialsModel
|
||||
from cura.Machines.Models.GlobalStacksModel import GlobalStacksModel
|
||||
from cura.Machines.Models.MaterialBrandsModel import MaterialBrandsModel
|
||||
from cura.Machines.Models.MultiBuildPlateModel import MultiBuildPlateModel
|
||||
from cura.Machines.Models.NozzleModel import NozzleModel
|
||||
from cura.Machines.Models.QualityManagementModel import QualityManagementModel
|
||||
from cura.Machines.Models.QualityProfilesDropDownMenuModel import QualityProfilesDropDownMenuModel
|
||||
from cura.Machines.Models.QualitySettingsModel import QualitySettingsModel
|
||||
from cura.Machines.Models.SettingVisibilityPresetsModel import SettingVisibilityPresetsModel
|
||||
from cura.Machines.Models.UserChangesModel import UserChangesModel
|
||||
|
||||
from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice
|
||||
from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage
|
||||
|
||||
import cura.Settings.cura_empty_instance_containers
|
||||
from cura.Settings.ContainerManager import ContainerManager
|
||||
from cura.Settings.CuraContainerRegistry import CuraContainerRegistry
|
||||
from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions
|
||||
from cura.Settings.ExtruderManager import ExtruderManager
|
||||
from cura.Settings.MachineManager import MachineManager
|
||||
from cura.Settings.MachineNameValidator import MachineNameValidator
|
||||
from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler
|
||||
from cura.Settings.SettingInheritanceManager import SettingInheritanceManager
|
||||
from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel
|
||||
from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager
|
||||
|
||||
from cura.Machines.VariantManager import VariantManager
|
||||
from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager
|
||||
|
||||
from cura.UI import CuraSplashScreen, MachineActionManager, PrintInformation
|
||||
from cura.UI.MachineSettingsManager import MachineSettingsManager
|
||||
from cura.UI.ObjectsModel import ObjectsModel
|
||||
from cura.UI.TextManager import TextManager
|
||||
from cura.UI.WelcomePagesModel import WelcomePagesModel
|
||||
|
||||
from .SingleInstance import SingleInstance
|
||||
from .AutoSave import AutoSave
|
||||
@ -93,35 +120,10 @@ from . import PlatformPhysics
|
||||
from . import BuildVolume
|
||||
from . import CameraAnimation
|
||||
from . import CuraActions
|
||||
from cura.Scene import ZOffsetDecorator
|
||||
from cura.UI import CuraSplashScreen, MachineActionManager, PrintInformation
|
||||
from . import PrintJobPreviewImageProvider
|
||||
|
||||
from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager
|
||||
|
||||
from cura.Settings.MachineManager import MachineManager
|
||||
from cura.Settings.ExtruderManager import ExtruderManager
|
||||
from cura.Machines.Models.UserChangesModel import UserChangesModel
|
||||
from cura.Machines.Models.ExtrudersModel import ExtrudersModel
|
||||
from cura.Settings.MaterialSettingsVisibilityHandler import MaterialSettingsVisibilityHandler
|
||||
from cura.Settings.ContainerManager import ContainerManager
|
||||
from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel
|
||||
import cura.Settings.cura_empty_instance_containers
|
||||
from cura.Settings.CuraFormulaFunctions import CuraFormulaFunctions
|
||||
|
||||
from cura.UI.ObjectsModel import ObjectsModel
|
||||
from cura.UI.TextManager import TextManager
|
||||
|
||||
from cura.Machines.Models.DiscoveredPrintersModel import DiscoveredPrintersModel
|
||||
|
||||
from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice
|
||||
from cura.PrinterOutput.NetworkMJPGImage import NetworkMJPGImage
|
||||
|
||||
from cura import ApplicationMetadata, UltimakerCloudAuthentication
|
||||
|
||||
from UM.FlameProfiler import pyqtSlot
|
||||
from UM.Decorators import override
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from cura.Machines.MaterialManager import MaterialManager
|
||||
from cura.Machines.QualityManager import QualityManager
|
||||
@ -210,8 +212,10 @@ class CuraApplication(QtApplication):
|
||||
self._cura_scene_controller = None
|
||||
self._machine_error_checker = None
|
||||
|
||||
self._discovered_printer_model = DiscoveredPrintersModel(self)
|
||||
self._machine_settings_manager = MachineSettingsManager(self)
|
||||
|
||||
self._discovered_printer_model = DiscoveredPrintersModel(self)
|
||||
self._first_start_machine_actions_model = FirstStartMachineActionsModel(self)
|
||||
self._welcome_pages_model = WelcomePagesModel(self)
|
||||
self._text_manager = TextManager(self)
|
||||
|
||||
@ -857,6 +861,10 @@ class CuraApplication(QtApplication):
|
||||
def getDiscoveredPrintersModel(self, *args) -> "DiscoveredPrintersModel":
|
||||
return self._discovered_printer_model
|
||||
|
||||
@pyqtSlot(result = QObject)
|
||||
def getFirstStartMachineActionsModel(self, *args) -> "FirstStartMachineActionsModel":
|
||||
return self._first_start_machine_actions_model
|
||||
|
||||
@pyqtSlot(result = QObject)
|
||||
def getSettingVisibilityPresetsModel(self, *args) -> SettingVisibilityPresetsModel:
|
||||
return self._setting_visibility_presets_model
|
||||
@ -865,6 +873,10 @@ class CuraApplication(QtApplication):
|
||||
def getWelcomePagesModel(self, *args) -> "WelcomePagesModel":
|
||||
return self._welcome_pages_model
|
||||
|
||||
@pyqtSlot(result = QObject)
|
||||
def getMachineSettingsManager(self, *args) -> "MachineSettingsManager":
|
||||
return self._machine_settings_manager
|
||||
|
||||
@pyqtSlot(result = QObject)
|
||||
def getTextManager(self, *args) -> "TextManager":
|
||||
return self._text_manager
|
||||
@ -1017,7 +1029,6 @@ class CuraApplication(QtApplication):
|
||||
qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel")
|
||||
qmlRegisterType(MaterialBrandsModel, "Cura", 1, 0, "MaterialBrandsModel")
|
||||
qmlRegisterType(QualityManagementModel, "Cura", 1, 0, "QualityManagementModel")
|
||||
qmlRegisterType(MachineManagementModel, "Cura", 1, 0, "MachineManagementModel")
|
||||
|
||||
qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel")
|
||||
|
||||
@ -1030,6 +1041,7 @@ class CuraApplication(QtApplication):
|
||||
qmlRegisterType(MaterialSettingsVisibilityHandler, "Cura", 1, 0, "MaterialSettingsVisibilityHandler")
|
||||
qmlRegisterType(SettingVisibilityPresetsModel, "Cura", 1, 0, "SettingVisibilityPresetsModel")
|
||||
qmlRegisterType(QualitySettingsModel, "Cura", 1, 0, "QualitySettingsModel")
|
||||
qmlRegisterType(FirstStartMachineActionsModel, "Cura", 1, 0, "FirstStartMachineActionsModel")
|
||||
qmlRegisterType(MachineNameValidator, "Cura", 1, 0, "MachineNameValidator")
|
||||
qmlRegisterType(UserChangesModel, "Cura", 1, 0, "UserChangesModel")
|
||||
qmlRegisterSingletonType(ContainerManager, "Cura", 1, 0, "ContainerManager", ContainerManager.getInstance)
|
||||
|
102
cura/Machines/Models/FirstStartMachineActionsModel.py
Normal file
102
cura/Machines/Models/FirstStartMachineActionsModel.py
Normal file
@ -0,0 +1,102 @@
|
||||
# Copyright (c) 2019 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from typing import Optional, Dict, Any
|
||||
|
||||
from PyQt5.QtCore import QObject, Qt, pyqtProperty, pyqtSignal, pyqtSlot
|
||||
|
||||
from UM.Qt.ListModel import ListModel
|
||||
|
||||
|
||||
#
|
||||
# This model holds all first-start machine actions for the currently active machine. It has 2 roles:
|
||||
# - title : the title/name of the action
|
||||
# - content : the QObject of the QML content of the action
|
||||
# - action : the MachineAction object itself
|
||||
#
|
||||
class FirstStartMachineActionsModel(ListModel):
|
||||
|
||||
TitleRole = Qt.UserRole + 1
|
||||
ContentRole = Qt.UserRole + 2
|
||||
ActionRole = Qt.UserRole + 3
|
||||
|
||||
def __init__(self, parent: Optional[QObject] = None) -> None:
|
||||
super().__init__(parent)
|
||||
|
||||
self.addRoleName(self.TitleRole, "title")
|
||||
self.addRoleName(self.ContentRole, "content")
|
||||
self.addRoleName(self.ActionRole, "action")
|
||||
|
||||
self._current_action_index = 0
|
||||
|
||||
from cura.CuraApplication import CuraApplication
|
||||
self._application = CuraApplication.getInstance()
|
||||
|
||||
self._application.initializationFinished.connect(self._initialize)
|
||||
|
||||
def _initialize(self) -> None:
|
||||
self._application.getMachineManager().globalContainerChanged.connect(self._update)
|
||||
self._update()
|
||||
|
||||
currentActionIndexChanged = pyqtSignal()
|
||||
allFinished = pyqtSignal() # Emitted when all actions have been finished.
|
||||
|
||||
@pyqtProperty(int, notify = currentActionIndexChanged)
|
||||
def currentActionIndex(self) -> int:
|
||||
return self._current_action_index
|
||||
|
||||
@pyqtProperty("QVariantMap", notify = currentActionIndexChanged)
|
||||
def currentItem(self) -> Optional[Dict[str, Any]]:
|
||||
if self._current_action_index >= self.count:
|
||||
return dict()
|
||||
else:
|
||||
return self.getItem(self._current_action_index)
|
||||
|
||||
@pyqtProperty(bool, notify = currentActionIndexChanged)
|
||||
def hasMoreActions(self) -> bool:
|
||||
return self._current_action_index < self.count - 1
|
||||
|
||||
@pyqtSlot()
|
||||
def goToNextAction(self) -> None:
|
||||
# finish the current item
|
||||
if "action" in self.currentItem:
|
||||
self.currentItem["action"].setFinished()
|
||||
|
||||
if not self.hasMoreActions:
|
||||
self.allFinished.emit()
|
||||
self.reset()
|
||||
return
|
||||
|
||||
self._current_action_index += 1
|
||||
self.currentActionIndexChanged.emit()
|
||||
|
||||
# Resets the current action index to 0 so the wizard panel can show actions from the beginning.
|
||||
@pyqtSlot()
|
||||
def reset(self) -> None:
|
||||
self._current_action_index = 0
|
||||
self.currentActionIndexChanged.emit()
|
||||
|
||||
if self.count == 0:
|
||||
self.allFinished.emit()
|
||||
|
||||
def _update(self) -> None:
|
||||
global_stack = self._application.getMachineManager().activeMachine
|
||||
if global_stack is None:
|
||||
self.setItems([])
|
||||
return
|
||||
|
||||
definition_id = global_stack.definition.getId()
|
||||
first_start_actions = self._application.getMachineActionManager().getFirstStartActions(definition_id)
|
||||
|
||||
item_list = []
|
||||
for item in first_start_actions:
|
||||
item_list.append({"title": item.label,
|
||||
"content": item.displayItem,
|
||||
"action": item,
|
||||
})
|
||||
|
||||
self.setItems(item_list)
|
||||
self.reset()
|
||||
|
||||
|
||||
__all__ = ["FirstStartMachineActionsModel"]
|
@ -1,82 +0,0 @@
|
||||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from UM.Qt.ListModel import ListModel
|
||||
|
||||
from PyQt5.QtCore import Qt
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.ContainerStack import ContainerStack
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
#
|
||||
# This the QML model for the quality management page.
|
||||
#
|
||||
class MachineManagementModel(ListModel):
|
||||
NameRole = Qt.UserRole + 1
|
||||
IdRole = Qt.UserRole + 2
|
||||
MetaDataRole = Qt.UserRole + 3
|
||||
GroupRole = Qt.UserRole + 4
|
||||
|
||||
def __init__(self, parent = None):
|
||||
super().__init__(parent)
|
||||
self.addRoleName(self.NameRole, "name")
|
||||
self.addRoleName(self.IdRole, "id")
|
||||
self.addRoleName(self.MetaDataRole, "metadata")
|
||||
self.addRoleName(self.GroupRole, "group")
|
||||
self._local_container_stacks = []
|
||||
self._network_container_stacks = []
|
||||
|
||||
# Listen to changes
|
||||
ContainerRegistry.getInstance().containerAdded.connect(self._onContainerChanged)
|
||||
ContainerRegistry.getInstance().containerMetaDataChanged.connect(self._onContainerChanged)
|
||||
ContainerRegistry.getInstance().containerRemoved.connect(self._onContainerChanged)
|
||||
self._filter_dict = {}
|
||||
self._update()
|
||||
|
||||
## Handler for container added/removed events from registry
|
||||
def _onContainerChanged(self, container):
|
||||
# We only need to update when the added / removed container is a stack.
|
||||
if isinstance(container, ContainerStack) and container.getMetaDataEntry("type") == "machine":
|
||||
self._update()
|
||||
|
||||
## Private convenience function to reset & repopulate the model.
|
||||
def _update(self):
|
||||
items = []
|
||||
|
||||
# Get first the network enabled printers
|
||||
network_filter_printers = {"type": "machine",
|
||||
"um_network_key": "*",
|
||||
"hidden": "False"}
|
||||
self._network_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**network_filter_printers)
|
||||
self._network_container_stacks.sort(key = lambda i: i.getMetaDataEntry("group_name", ""))
|
||||
|
||||
for container in self._network_container_stacks:
|
||||
metadata = container.getMetaData().copy()
|
||||
if container.getBottom():
|
||||
metadata["definition_name"] = container.getBottom().getName()
|
||||
|
||||
items.append({"name": metadata.get("group_name", ""),
|
||||
"id": container.getId(),
|
||||
"metadata": metadata,
|
||||
"group": catalog.i18nc("@info:title", "Network enabled printers")})
|
||||
|
||||
# Get now the local printers
|
||||
local_filter_printers = {"type": "machine", "um_network_key": None}
|
||||
self._local_container_stacks = ContainerRegistry.getInstance().findContainerStacks(**local_filter_printers)
|
||||
self._local_container_stacks.sort(key = lambda i: i.getName())
|
||||
|
||||
for container in self._local_container_stacks:
|
||||
metadata = container.getMetaData().copy()
|
||||
if container.getBottom():
|
||||
metadata["definition_name"] = container.getBottom().getName()
|
||||
|
||||
items.append({"name": container.getName(),
|
||||
"id": container.getId(),
|
||||
"metadata": metadata,
|
||||
"group": catalog.i18nc("@info:title", "Local printers")})
|
||||
|
||||
self.setItems(items)
|
@ -64,6 +64,10 @@ class GlobalStack(CuraContainerStack):
|
||||
machine_extruder_count = self.getProperty("machine_extruder_count", "value")
|
||||
return result_list[:machine_extruder_count]
|
||||
|
||||
@pyqtProperty(int, constant = True)
|
||||
def maxExtruderCount(self):
|
||||
return len(self.getMetaDataEntry("machine_extruder_trains"))
|
||||
|
||||
@classmethod
|
||||
def getLoadingPriority(cls) -> int:
|
||||
return 2
|
||||
|
@ -41,6 +41,22 @@ empty_quality_changes_container.setMetaDataEntry("type", "quality_changes")
|
||||
empty_quality_changes_container.setMetaDataEntry("quality_type", "not_supported")
|
||||
|
||||
|
||||
# All empty container IDs set
|
||||
ALL_EMPTY_CONTAINER_ID_SET = {
|
||||
EMPTY_CONTAINER_ID,
|
||||
EMPTY_DEFINITION_CHANGES_CONTAINER_ID,
|
||||
EMPTY_VARIANT_CONTAINER_ID,
|
||||
EMPTY_MATERIAL_CONTAINER_ID,
|
||||
EMPTY_QUALITY_CONTAINER_ID,
|
||||
EMPTY_QUALITY_CHANGES_CONTAINER_ID,
|
||||
}
|
||||
|
||||
|
||||
# Convenience function to check if a container ID represents an empty container.
|
||||
def isEmptyContainer(container_id: str) -> bool:
|
||||
return container_id in ALL_EMPTY_CONTAINER_ID_SET
|
||||
|
||||
|
||||
__all__ = ["EMPTY_CONTAINER_ID",
|
||||
"empty_container", # For convenience
|
||||
"EMPTY_DEFINITION_CHANGES_CONTAINER_ID",
|
||||
@ -52,5 +68,7 @@ __all__ = ["EMPTY_CONTAINER_ID",
|
||||
"EMPTY_QUALITY_CHANGES_CONTAINER_ID",
|
||||
"empty_quality_changes_container",
|
||||
"EMPTY_QUALITY_CONTAINER_ID",
|
||||
"empty_quality_container"
|
||||
"empty_quality_container",
|
||||
"ALL_EMPTY_CONTAINER_ID_SET",
|
||||
"isEmptyContainer",
|
||||
]
|
||||
|
@ -136,7 +136,7 @@ class MachineActionManager(QObject):
|
||||
# action multiple times).
|
||||
# \param definition_id The ID of the definition that you want to get the "on added" actions for.
|
||||
# \returns List of actions.
|
||||
@pyqtSlot(str, result="QVariantList")
|
||||
@pyqtSlot(str, result = "QVariantList")
|
||||
def getFirstStartActions(self, definition_id: str) -> List["MachineAction"]:
|
||||
if definition_id in self._first_start_actions:
|
||||
return self._first_start_actions[definition_id]
|
||||
|
72
cura/UI/MachineSettingsManager.py
Normal file
72
cura/UI/MachineSettingsManager.py
Normal file
@ -0,0 +1,72 @@
|
||||
|
||||
from typing import Any, Dict, Optional, TYPE_CHECKING
|
||||
|
||||
from PyQt5.QtCore import Qt, QObject, pyqtSlot
|
||||
|
||||
from UM.i18n import i18nCatalog
|
||||
|
||||
|
||||
class MachineSettingsManager(QObject):
|
||||
|
||||
def __init__(self, parent: Optional["QObject"] = None) -> None:
|
||||
super().__init__(parent)
|
||||
self._i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
from cura.CuraApplication import CuraApplication
|
||||
self._application = CuraApplication.getInstance()
|
||||
|
||||
# Force rebuilding the build volume by reloading the global container stack. This is a bit of a hack, but it seems
|
||||
# quite enough.
|
||||
@pyqtSlot()
|
||||
def forceUpdate(self) -> None:
|
||||
self._application.getMachineManager().globalContainerChanged.emit()
|
||||
|
||||
# Function for the Machine Settings panel (QML) to update the compatible material diameter after a user has changed
|
||||
# an extruder's compatible material diameter. This ensures that after the modification, changes can be notified
|
||||
# and updated right away.
|
||||
@pyqtSlot(int)
|
||||
def updateMaterialForDiameter(self, extruder_position: int) -> None:
|
||||
# Updates the material container to a material that matches the material diameter set for the printer
|
||||
self._application.getMachineManager().updateMaterialWithVariant(str(extruder_position))
|
||||
|
||||
@pyqtSlot(int)
|
||||
def setMachineExtruderCount(self, extruder_count: int) -> None:
|
||||
# Note: this method was in this class before, but since it's quite generic and other plugins also need it
|
||||
# it was moved to the machine manager instead. Now this method just calls the machine manager.
|
||||
self._application.getMachineManager().setActiveMachineExtruderCount(extruder_count)
|
||||
|
||||
# FIXME(Lipu): Better document what this function does, especially the fuzzy gcode flavor and has_materials logic
|
||||
# regarding UM2 and UM2+
|
||||
# Function for the Machine Settings panel (QML) to update after the usre changes "Number of Extruders".
|
||||
@pyqtSlot()
|
||||
def updateHasMaterialsMetadata(self):
|
||||
machine_manager = self._application.getMachineManager()
|
||||
material_manager = self._application.getMaterialManager()
|
||||
|
||||
global_stack = machine_manager.activeMachine
|
||||
|
||||
definition = global_stack.definition
|
||||
if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or definition.getMetaDataEntry(
|
||||
"has_materials", False):
|
||||
# In other words: only continue for the UM2 (extended), but not for the UM2+
|
||||
return
|
||||
|
||||
extruder_positions = list(global_stack.extruders.keys())
|
||||
has_materials = global_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode"
|
||||
|
||||
material_node = None
|
||||
if has_materials:
|
||||
global_stack.setMetaDataEntry("has_materials", True)
|
||||
else:
|
||||
# The metadata entry is stored in an ini, and ini files are parsed as strings only.
|
||||
# Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False.
|
||||
if "has_materials" in global_stack.getMetaData():
|
||||
global_stack.removeMetaDataEntry("has_materials")
|
||||
|
||||
# set materials
|
||||
for position in extruder_positions:
|
||||
if has_materials:
|
||||
material_node = material_manager.getDefaultMaterial(global_stack, position, None)
|
||||
machine_manager.setMaterial(position, material_node)
|
||||
|
||||
self.forceUpdate()
|
@ -51,12 +51,14 @@ class ObjectsModel(ListModel):
|
||||
group_nr = 1
|
||||
name_count_dict = defaultdict(int) # type: Dict[str, int]
|
||||
|
||||
for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()):
|
||||
for node in DepthFirstIterator(Application.getInstance().getController().getScene().getRoot()): # type: ignore
|
||||
if not isinstance(node, SceneNode):
|
||||
continue
|
||||
if (not node.getMeshData() and not node.callDecoration("getLayerData")) and not node.callDecoration("isGroup"):
|
||||
continue
|
||||
if node.getParent() and node.getParent().callDecoration("isGroup"):
|
||||
|
||||
parent = node.getParent()
|
||||
if parent and parent.callDecoration("isGroup"):
|
||||
continue # Grouped nodes don't need resetting as their parent (the group) is resetted)
|
||||
if not node.callDecoration("isSliceable") and not node.callDecoration("isGroup"):
|
||||
continue
|
||||
@ -72,7 +74,7 @@ class ObjectsModel(ListModel):
|
||||
group_nr += 1
|
||||
|
||||
if hasattr(node, "isOutsideBuildArea"):
|
||||
is_outside_build_area = node.isOutsideBuildArea()
|
||||
is_outside_build_area = node.isOutsideBuildArea() # type: ignore
|
||||
else:
|
||||
is_outside_build_area = False
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import collections
|
||||
from typing import Optional
|
||||
from typing import Optional, Dict, List, cast
|
||||
|
||||
from PyQt5.QtCore import QObject, pyqtSlot
|
||||
|
||||
@ -29,9 +29,9 @@ class TextManager(QObject):
|
||||
def _loadChangeLogText(self) -> str:
|
||||
# Load change log texts and organize them with a dict
|
||||
file_path = Resources.getPath(Resources.Texts, "change_log.txt")
|
||||
change_logs_dict = {}
|
||||
change_logs_dict = {} # type: Dict[Version, Dict[str, List[str]]]
|
||||
with open(file_path, "r", encoding = "utf-8") as f:
|
||||
open_version = None
|
||||
open_version = None # type: Optional[Version]
|
||||
open_header = "" # Initialise to an empty header in case there is no "*" in the first line of the changelog
|
||||
for line in f:
|
||||
line = line.replace("\n", "")
|
||||
@ -43,11 +43,11 @@ class TextManager(QObject):
|
||||
change_logs_dict[open_version] = collections.OrderedDict()
|
||||
elif line.startswith("*"):
|
||||
open_header = line.replace("*", "")
|
||||
change_logs_dict[open_version][open_header] = []
|
||||
change_logs_dict[cast(Version, open_version)][open_header] = []
|
||||
elif line != "":
|
||||
if open_header not in change_logs_dict[open_version]:
|
||||
change_logs_dict[open_version][open_header] = []
|
||||
change_logs_dict[open_version][open_header].append(line)
|
||||
if open_header not in change_logs_dict[cast(Version, open_version)]:
|
||||
change_logs_dict[cast(Version, open_version)][open_header] = []
|
||||
change_logs_dict[cast(Version, open_version)][open_header].append(line)
|
||||
|
||||
# Format changelog text
|
||||
content = ""
|
||||
|
@ -13,7 +13,20 @@ from UM.Resources import Resources
|
||||
if TYPE_CHECKING:
|
||||
from PyQt5.QtCore import QObject
|
||||
|
||||
|
||||
#
|
||||
# This is the Qt ListModel that contains all welcome pages data. Each page is a page that can be shown as a step in the
|
||||
# welcome wizard dialog. Each item in this ListModel represents a page, which contains the following fields:
|
||||
#
|
||||
# - id : A unique page_id which can be used in function goToPage(page_id)
|
||||
# - page_url : The QUrl to the QML file that contains the content of this page
|
||||
# - next_page_id : (OPTIONAL) The next page ID to go to when this page finished. This is optional. If this is not
|
||||
# provided, it will go to the page with the current index + 1
|
||||
# - should_show_function : (OPTIONAL) An optional function that returns True/False indicating if this page should be
|
||||
# shown. By default all pages should be shown. If a function returns False, that page will
|
||||
# be skipped and its next page will be shown.
|
||||
#
|
||||
# Note that in any case, a page that has its "should_show_function" == False will ALWAYS be skipped.
|
||||
#
|
||||
class WelcomePagesModel(ListModel):
|
||||
|
||||
IdRole = Qt.UserRole + 1 # Page ID
|
||||
@ -57,26 +70,40 @@ class WelcomePagesModel(ListModel):
|
||||
self.currentPageIndexChanged.emit()
|
||||
|
||||
# Goes to the next page.
|
||||
# If "from_index" is given, it will look for the next page to show starting from the "from_index" page instead of
|
||||
# the "self._current_page_index".
|
||||
@pyqtSlot()
|
||||
def goToNextPage(self) -> None:
|
||||
page_item = self._items[self._current_page_index]
|
||||
# Check if there's a "next_page_id" assigned. If so, go to that page. Otherwise, go to the page with the
|
||||
# current index + 1.
|
||||
next_page_id = page_item.get("next_page_id")
|
||||
next_page_index = self._current_page_index + 1
|
||||
if next_page_id:
|
||||
idx = self.getPageIndexById(next_page_id)
|
||||
if idx is None:
|
||||
# FIXME: If we cannot find the next page, we cannot do anything here.
|
||||
Logger.log("e", "Cannot find page with ID [%s]", next_page_id)
|
||||
return
|
||||
next_page_index = idx
|
||||
def goToNextPage(self, from_index: Optional[int] = None) -> None:
|
||||
# Look for the next page that should be shown
|
||||
current_index = self._current_page_index if from_index is None else from_index
|
||||
while True:
|
||||
page_item = self._items[current_index]
|
||||
|
||||
# If we have reached the last page, emit allFinished signal and reset.
|
||||
if next_page_index == len(self._items):
|
||||
self.allFinished.emit()
|
||||
self.resetState()
|
||||
return
|
||||
# Check if there's a "next_page_id" assigned. If so, go to that page. Otherwise, go to the page with the
|
||||
# current index + 1.
|
||||
next_page_id = page_item.get("next_page_id")
|
||||
next_page_index = current_index + 1
|
||||
if next_page_id:
|
||||
idx = self.getPageIndexById(next_page_id)
|
||||
if idx is None:
|
||||
# FIXME: If we cannot find the next page, we cannot do anything here.
|
||||
Logger.log("e", "Cannot find page with ID [%s]", next_page_id)
|
||||
return
|
||||
next_page_index = idx
|
||||
|
||||
# If we have reached the last page, emit allFinished signal and reset.
|
||||
if next_page_index == len(self._items):
|
||||
self.allFinished.emit()
|
||||
self.resetState()
|
||||
return
|
||||
|
||||
# Check if the this page should be shown (default yes), if not, keep looking for the next one.
|
||||
next_page_item = self.getItem(next_page_index)
|
||||
if self._shouldPageBeShown(next_page_index):
|
||||
break
|
||||
|
||||
Logger.log("d", "Page [%s] should not be displayed, look for the next page.", next_page_item["id"])
|
||||
current_index = next_page_index
|
||||
|
||||
# Move to the next page
|
||||
self._setCurrentPageIndex(next_page_index)
|
||||
@ -101,8 +128,19 @@ class WelcomePagesModel(ListModel):
|
||||
Logger.log("e", "Cannot find page with ID [%s]", page_index)
|
||||
return
|
||||
|
||||
# Move to that page
|
||||
self._setCurrentPageIndex(page_index)
|
||||
if self._shouldPageBeShown(page_index):
|
||||
# Move to that page if it should be shown
|
||||
self._setCurrentPageIndex(page_index)
|
||||
else:
|
||||
# Find the next page to show starting from the "page_index"
|
||||
self.goToNextPage(from_index = page_index)
|
||||
|
||||
# Checks if the page with the given index should be shown by calling the "should_show_function" associated with it.
|
||||
# If the function is not present, returns True (show page by default).
|
||||
def _shouldPageBeShown(self, page_index: int) -> bool:
|
||||
next_page_item = self.getItem(page_index)
|
||||
should_show_function = next_page_item.get("should_show_function", lambda: True)
|
||||
return should_show_function()
|
||||
|
||||
# Resets the state of the WelcomePagesModel. This functions does the following:
|
||||
# - Resets current_page_index to 0
|
||||
@ -145,11 +183,16 @@ class WelcomePagesModel(ListModel):
|
||||
})
|
||||
self._pages.append({"id": "add_network_or_local_printer",
|
||||
"page_url": self._getBuiltinWelcomePagePath("AddNetworkOrLocalPrinterContent.qml"),
|
||||
"next_page_id": "cloud",
|
||||
"next_page_id": "machine_actions",
|
||||
})
|
||||
self._pages.append({"id": "add_printer_by_ip",
|
||||
"page_url": self._getBuiltinWelcomePagePath("AddPrinterByIpContent.qml"),
|
||||
"next_page_id": "machine_actions",
|
||||
})
|
||||
self._pages.append({"id": "machine_actions",
|
||||
"page_url": self._getBuiltinWelcomePagePath("FirstStartMachineActionsContent.qml"),
|
||||
"next_page_id": "cloud",
|
||||
"should_show_function": self.shouldShowMachineActions,
|
||||
})
|
||||
self._pages.append({"id": "cloud",
|
||||
"page_url": self._getBuiltinWelcomePagePath("CloudContent.qml"),
|
||||
@ -157,6 +200,19 @@ class WelcomePagesModel(ListModel):
|
||||
|
||||
self.setItems(self._pages)
|
||||
|
||||
# Indicates if the machine action panel should be shown by checking if there's any first start machine actions
|
||||
# available.
|
||||
def shouldShowMachineActions(self) -> bool:
|
||||
from cura.CuraApplication import CuraApplication
|
||||
application = CuraApplication.getInstance()
|
||||
global_stack = application.getMachineManager().activeMachine
|
||||
if global_stack is None:
|
||||
return False
|
||||
|
||||
definition_id = global_stack.definition.getId()
|
||||
first_start_actions = application.getMachineActionManager().getFirstStartActions(definition_id)
|
||||
return len(first_start_actions) > 0
|
||||
|
||||
def addPage(self) -> None:
|
||||
pass
|
||||
|
||||
|
@ -1,16 +1,21 @@
|
||||
# Copyright (c) 2017 Ultimaker B.V.
|
||||
# Copyright (c) 2019 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from PyQt5.QtCore import pyqtProperty, pyqtSignal
|
||||
from typing import Optional, TYPE_CHECKING
|
||||
|
||||
from PyQt5.QtCore import pyqtProperty
|
||||
|
||||
import UM.i18n
|
||||
from UM.FlameProfiler import pyqtSlot
|
||||
from UM.Application import Application
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.Settings.DefinitionContainer import DefinitionContainer
|
||||
|
||||
from cura.MachineAction import MachineAction
|
||||
from cura.Settings.CuraStackBuilder import CuraStackBuilder
|
||||
from cura.Settings.cura_empty_instance_containers import isEmptyContainer
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from PyQt5.QtCore import QObject
|
||||
|
||||
catalog = UM.i18n.i18nCatalog("cura")
|
||||
|
||||
@ -18,139 +23,102 @@ catalog = UM.i18n.i18nCatalog("cura")
|
||||
## This action allows for certain settings that are "machine only") to be modified.
|
||||
# It automatically detects machine definitions that it knows how to change and attaches itself to those.
|
||||
class MachineSettingsAction(MachineAction):
|
||||
def __init__(self, parent = None):
|
||||
def __init__(self, parent: Optional["QObject"] = None) -> None:
|
||||
super().__init__("MachineSettingsAction", catalog.i18nc("@action", "Machine Settings"))
|
||||
self._qml_url = "MachineSettingsAction.qml"
|
||||
|
||||
self._application = Application.getInstance()
|
||||
|
||||
self._global_container_stack = None
|
||||
from cura.CuraApplication import CuraApplication
|
||||
self._application = CuraApplication.getInstance()
|
||||
|
||||
from cura.Settings.CuraContainerStack import _ContainerIndexes
|
||||
self._container_index = _ContainerIndexes.DefinitionChanges
|
||||
self._store_container_index = _ContainerIndexes.DefinitionChanges
|
||||
|
||||
self._container_registry = ContainerRegistry.getInstance()
|
||||
self._container_registry.containerAdded.connect(self._onContainerAdded)
|
||||
self._container_registry.containerRemoved.connect(self._onContainerRemoved)
|
||||
self._application.globalContainerStackChanged.connect(self._onGlobalContainerChanged)
|
||||
|
||||
# The machine settings dialog blocks auto-slicing when it's shown, and re-enables it when it's finished.
|
||||
self._backend = self._application.getBackend()
|
||||
self.onFinished.connect(self._onFinished)
|
||||
|
||||
self._empty_definition_container_id_list = []
|
||||
|
||||
def _isEmptyDefinitionChanges(self, container_id: str):
|
||||
if not self._empty_definition_container_id_list:
|
||||
self._empty_definition_container_id_list = [self._application.empty_container.getId(),
|
||||
self._application.empty_definition_changes_container.getId()]
|
||||
return container_id in self._empty_definition_container_id_list
|
||||
# Which container index in a stack to store machine setting changes.
|
||||
@pyqtProperty(int, constant = True)
|
||||
def storeContainerIndex(self) -> int:
|
||||
return self._store_container_index
|
||||
|
||||
def _onContainerAdded(self, container):
|
||||
# Add this action as a supported action to all machine definitions
|
||||
if isinstance(container, DefinitionContainer) and container.getMetaDataEntry("type") == "machine":
|
||||
self._application.getMachineActionManager().addSupportedAction(container.getId(), self.getKey())
|
||||
|
||||
def _onContainerRemoved(self, container):
|
||||
# Remove definition_changes containers when a stack is removed
|
||||
if container.getMetaDataEntry("type") in ["machine", "extruder_train"]:
|
||||
definition_changes_id = container.definitionChanges.getId()
|
||||
if self._isEmptyDefinitionChanges(definition_changes_id):
|
||||
return
|
||||
|
||||
def _reset(self):
|
||||
if not self._global_container_stack:
|
||||
global_stack = self._application.getMachineManager().activeMachine
|
||||
if not global_stack:
|
||||
return
|
||||
|
||||
# Make sure there is a definition_changes container to store the machine settings
|
||||
definition_changes_id = self._global_container_stack.definitionChanges.getId()
|
||||
if self._isEmptyDefinitionChanges(definition_changes_id):
|
||||
CuraStackBuilder.createDefinitionChangesContainer(self._global_container_stack,
|
||||
self._global_container_stack.getName() + "_settings")
|
||||
|
||||
# Notify the UI in which container to store the machine settings data
|
||||
from cura.Settings.CuraContainerStack import _ContainerIndexes
|
||||
|
||||
container_index = _ContainerIndexes.DefinitionChanges
|
||||
if container_index != self._container_index:
|
||||
self._container_index = container_index
|
||||
self.containerIndexChanged.emit()
|
||||
definition_changes_id = global_stack.definitionChanges.getId()
|
||||
if isEmptyContainer(definition_changes_id):
|
||||
CuraStackBuilder.createDefinitionChangesContainer(global_stack,
|
||||
global_stack.getName() + "_settings")
|
||||
|
||||
# Disable auto-slicing while the MachineAction is showing
|
||||
if self._backend: # This sometimes triggers before backend is loaded.
|
||||
self._backend.disableTimer()
|
||||
|
||||
@pyqtSlot()
|
||||
def onFinishAction(self):
|
||||
# Restore autoslicing when the machineaction is dismissed
|
||||
def _onFinished(self):
|
||||
# Restore auto-slicing when the machine action is dismissed
|
||||
if self._backend and self._backend.determineAutoSlicing():
|
||||
self._backend.enableTimer()
|
||||
self._backend.tickle()
|
||||
|
||||
containerIndexChanged = pyqtSignal()
|
||||
|
||||
@pyqtProperty(int, notify = containerIndexChanged)
|
||||
def containerIndex(self):
|
||||
return self._container_index
|
||||
|
||||
def _onGlobalContainerChanged(self):
|
||||
self._global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||
|
||||
# This additional emit is needed because we cannot connect a UM.Signal directly to a pyqtSignal
|
||||
self.globalContainerChanged.emit()
|
||||
|
||||
globalContainerChanged = pyqtSignal()
|
||||
|
||||
@pyqtProperty(int, notify = globalContainerChanged)
|
||||
def definedExtruderCount(self):
|
||||
if not self._global_container_stack:
|
||||
return 0
|
||||
|
||||
return len(self._global_container_stack.getMetaDataEntry("machine_extruder_trains"))
|
||||
|
||||
@pyqtSlot(int)
|
||||
def setMachineExtruderCount(self, extruder_count):
|
||||
def setMachineExtruderCount(self, extruder_count: int) -> None:
|
||||
# Note: this method was in this class before, but since it's quite generic and other plugins also need it
|
||||
# it was moved to the machine manager instead. Now this method just calls the machine manager.
|
||||
self._application.getMachineManager().setActiveMachineExtruderCount(extruder_count)
|
||||
|
||||
@pyqtSlot()
|
||||
def forceUpdate(self):
|
||||
def forceUpdate(self) -> None:
|
||||
# Force rebuilding the build volume by reloading the global container stack.
|
||||
# This is a bit of a hack, but it seems quick enough.
|
||||
self._application.globalContainerStackChanged.emit()
|
||||
self._application.getMachineManager().globalContainerChanged.emit()
|
||||
|
||||
@pyqtSlot()
|
||||
def updateHasMaterialsMetadata(self):
|
||||
def updateHasMaterialsMetadata(self) -> None:
|
||||
global_stack = self._application.getMachineManager().activeMachine
|
||||
|
||||
# Updates the has_materials metadata flag after switching gcode flavor
|
||||
if not self._global_container_stack:
|
||||
if not global_stack:
|
||||
return
|
||||
|
||||
definition = self._global_container_stack.getBottom()
|
||||
definition = global_stack.getDefinition()
|
||||
if definition.getProperty("machine_gcode_flavor", "value") != "UltiGCode" or definition.getMetaDataEntry("has_materials", False):
|
||||
# In other words: only continue for the UM2 (extended), but not for the UM2+
|
||||
return
|
||||
|
||||
machine_manager = self._application.getMachineManager()
|
||||
material_manager = self._application.getMaterialManager()
|
||||
extruder_positions = list(self._global_container_stack.extruders.keys())
|
||||
has_materials = self._global_container_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode"
|
||||
extruder_positions = list(global_stack.extruders.keys())
|
||||
has_materials = global_stack.getProperty("machine_gcode_flavor", "value") != "UltiGCode"
|
||||
|
||||
material_node = None
|
||||
if has_materials:
|
||||
self._global_container_stack.setMetaDataEntry("has_materials", True)
|
||||
global_stack.setMetaDataEntry("has_materials", True)
|
||||
else:
|
||||
# The metadata entry is stored in an ini, and ini files are parsed as strings only.
|
||||
# Because any non-empty string evaluates to a boolean True, we have to remove the entry to make it False.
|
||||
if "has_materials" in self._global_container_stack.getMetaData():
|
||||
self._global_container_stack.removeMetaDataEntry("has_materials")
|
||||
if "has_materials" in global_stack.getMetaData():
|
||||
global_stack.removeMetaDataEntry("has_materials")
|
||||
|
||||
# set materials
|
||||
for position in extruder_positions:
|
||||
if has_materials:
|
||||
material_node = material_manager.getDefaultMaterial(self._global_container_stack, position, None)
|
||||
material_node = material_manager.getDefaultMaterial(global_stack, position, None)
|
||||
machine_manager.setMaterial(position, material_node)
|
||||
|
||||
self._application.globalContainerStackChanged.emit()
|
||||
|
||||
@pyqtSlot(int)
|
||||
def updateMaterialForDiameter(self, extruder_position: int):
|
||||
def updateMaterialForDiameter(self, extruder_position: int) -> None:
|
||||
# Updates the material container to a material that matches the material diameter set for the printer
|
||||
self._application.getMachineManager().updateMaterialWithVariant(str(extruder_position))
|
||||
|
File diff suppressed because it is too large
Load Diff
180
plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml
Normal file
180
plugins/MachineSettingsAction/MachineSettingsExtruderTab.qml
Normal file
@ -0,0 +1,180 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This component contains the content for the "Welcome" page of the welcome on-boarding process.
|
||||
//
|
||||
Item
|
||||
{
|
||||
id: base
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
|
||||
property int labelWidth: 180
|
||||
property int controlWidth: UM.Theme.getSize("setting_control").width * 3 / 4
|
||||
property var labelFont: UM.Theme.getFont("medium")
|
||||
|
||||
property int columnWidth: (parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2
|
||||
property int columnSpacing: 3
|
||||
property int propertyStoreIndex: manager.storeContainerIndex // definition_changes
|
||||
|
||||
property string extruderStackId: ""
|
||||
property int extruderPosition: 0
|
||||
property var forceUpdateFunction: manager.forceUpdate
|
||||
|
||||
function updateMaterialDiameter()
|
||||
{
|
||||
manager.updateMaterialForDiameter(extruderPosition)
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: upperBlock
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
|
||||
height: childrenRect.height
|
||||
|
||||
// =======================================
|
||||
// Left-side column "Nozzle Settings"
|
||||
// =======================================
|
||||
Column
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
width: parent.width * 2 / 3
|
||||
|
||||
spacing: base.columnSpacing
|
||||
|
||||
Label // Title Label
|
||||
{
|
||||
text: catalog.i18nc("@title:label", "Nozzle Settings")
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Nozzle size"
|
||||
{
|
||||
id: extruderNozzleSizeField
|
||||
visible: !Cura.MachineManager.hasVariants
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_nozzle_size"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Nozzle size")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Compatible material diameter"
|
||||
{
|
||||
id: extruderCompatibleMaterialDiameterField
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "material_diameter"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Compatible material diameter")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
// Other modules won't automatically respond after the user changes the value, so we need to force it.
|
||||
afterOnEditingFinishedFunction: updateMaterialDiameter
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Nozzle offset X"
|
||||
{
|
||||
id: extruderNozzleOffsetXField
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_nozzle_offset_x"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Nozzle offset X")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Nozzle offset Y"
|
||||
{
|
||||
id: extruderNozzleOffsetYField
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_nozzle_offset_y"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Nozzle offset Y")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Cooling Fan Number"
|
||||
{
|
||||
id: extruderNozzleCoolingFanNumberField
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_extruder_cooling_fan_number"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Cooling Fan Number")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: ""
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item // Extruder Start and End G-code
|
||||
{
|
||||
id: lowerBlock
|
||||
anchors.top: upperBlock.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
|
||||
Cura.GcodeTextArea // "Extruder Start G-code"
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.left: parent.left
|
||||
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||
|
||||
labelText: catalog.i18nc("@title:label", "Extruder Start G-code")
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_extruder_start_code"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
}
|
||||
|
||||
Cura.GcodeTextArea // "Extruder End G-code"
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.right: parent.right
|
||||
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||
|
||||
labelText: catalog.i18nc("@title:label", "Extruder End G-code")
|
||||
containerStackId: base.extruderStackId
|
||||
settingKey: "machine_extruder_end_code"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
}
|
||||
}
|
||||
}
|
339
plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml
Normal file
339
plugins/MachineSettingsAction/MachineSettingsPrinterTab.qml
Normal file
@ -0,0 +1,339 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This the content in the "Printer" tab in the Machine Settings dialog.
|
||||
//
|
||||
Item
|
||||
{
|
||||
id: base
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
|
||||
property int labelWidth: 130
|
||||
property int controlWidth: UM.Theme.getSize("setting_control").width * 3 / 4
|
||||
property var labelFont: UM.Theme.getFont("medium")
|
||||
|
||||
property int columnWidth: (parent.width - 2 * UM.Theme.getSize("default_margin").width) / 2
|
||||
property int columnSpacing: 3
|
||||
property int propertyStoreIndex: manager.storeContainerIndex // definition_changes
|
||||
|
||||
property string machineStackId: Cura.MachineManager.activeMachineId
|
||||
|
||||
property var forceUpdateFunction: manager.forceUpdate
|
||||
|
||||
Item
|
||||
{
|
||||
id: upperBlock
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
|
||||
height: childrenRect.height
|
||||
|
||||
// =======================================
|
||||
// Left-side column for "Printer Settings"
|
||||
// =======================================
|
||||
Column
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
width: base.columnWidth
|
||||
|
||||
spacing: base.columnSpacing
|
||||
|
||||
Label // Title Label
|
||||
{
|
||||
text: catalog.i18nc("@title:label", "Printer Settings")
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "X (Width)"
|
||||
{
|
||||
id: machineXWidthField
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_width"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "X (Width)")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Y (Depth)"
|
||||
{
|
||||
id: machineYDepthField
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_depth"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Y (Depth)")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Z (Height)"
|
||||
{
|
||||
id: machineZHeightField
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_height"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Z (Height)")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.ComboBoxWithOptions // "Build plate shape"
|
||||
{
|
||||
id: buildPlateShapeComboBox
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_shape"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Build plate shape")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.SimpleCheckBox // "Origin at center"
|
||||
{
|
||||
id: originAtCenterCheckBox
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_center_is_zero"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Origin at center")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.SimpleCheckBox // "Heated bed"
|
||||
{
|
||||
id: heatedBedCheckBox
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_heated_bed"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Heated bed")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.ComboBoxWithOptions // "G-code flavor"
|
||||
{
|
||||
id: gcodeFlavorComboBox
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_gcode_flavor"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "G-code flavor")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
// FIXME(Lipu): better document this.
|
||||
// This has something to do with UM2 and UM2+ regarding "has_material" and the gcode flavor settings.
|
||||
// I don't remember exactly what.
|
||||
afterOnEditingFinishedFunction: manager.updateHasMaterialsMetadata
|
||||
}
|
||||
}
|
||||
|
||||
// =======================================
|
||||
// Right-side column for "Printhead Settings"
|
||||
// =======================================
|
||||
Column
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
width: base.columnWidth
|
||||
|
||||
spacing: base.columnSpacing
|
||||
|
||||
Label // Title Label
|
||||
{
|
||||
text: catalog.i18nc("@title:label", "Printhead Settings")
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.PrintHeadMinMaxTextField // "X min"
|
||||
{
|
||||
id: machineXMinField
|
||||
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "X min")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
|
||||
axisName: "x"
|
||||
axisMinOrMax: "min"
|
||||
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.PrintHeadMinMaxTextField // "Y min"
|
||||
{
|
||||
id: machineYMinField
|
||||
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "Y min")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
|
||||
axisName: "y"
|
||||
axisMinOrMax: "min"
|
||||
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.PrintHeadMinMaxTextField // "X max"
|
||||
{
|
||||
id: machineXMaxField
|
||||
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "X max")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
|
||||
axisName: "x"
|
||||
axisMinOrMax: "max"
|
||||
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.PrintHeadMinMaxTextField // "Y max"
|
||||
{
|
||||
id: machineYMaxField
|
||||
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_head_with_fans_polygon"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
|
||||
labelText: catalog.i18nc("@label", "Y max")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
|
||||
axisName: "y"
|
||||
axisMinOrMax: "max"
|
||||
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.NumericTextFieldWithUnit // "Gantry Height"
|
||||
{
|
||||
id: machineGantryHeightField
|
||||
containerStackId: machineStackId
|
||||
settingKey: "gantry_height"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Gantry Height")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
unitText: catalog.i18nc("@label", "mm")
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
}
|
||||
|
||||
Cura.ComboBoxWithOptions // "Number of Extruders"
|
||||
{
|
||||
id: numberOfExtrudersComboBox
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_extruder_count"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
labelText: catalog.i18nc("@label", "Number of Extruders")
|
||||
labelFont: base.labelFont
|
||||
labelWidth: base.labelWidth
|
||||
controlWidth: base.controlWidth
|
||||
forceUpdateOnChangeFunction: forceUpdateFunction
|
||||
// FIXME(Lipu): better document this.
|
||||
// This has something to do with UM2 and UM2+ regarding "has_material" and the gcode flavor settings.
|
||||
// I don't remember exactly what.
|
||||
afterOnEditingFinishedFunction: manager.updateHasMaterialsMetadata
|
||||
setValueFunction: manager.setMachineExtruderCount
|
||||
|
||||
optionModel: ListModel
|
||||
{
|
||||
id: extruderCountModel
|
||||
Component.onCompleted:
|
||||
{
|
||||
extruderCountModel.clear()
|
||||
for (var i = 1; i <= Cura.MachineManager.activeMachine.maxExtruderCount; i++)
|
||||
{
|
||||
// Use String as value. JavaScript only has Number. PropertyProvider.setPropertyValue()
|
||||
// takes a QVariant as value, and Number gets translated into a float. This will cause problem
|
||||
// for integer settings such as "Number of Extruders".
|
||||
extruderCountModel.append({ text: String(i), value: String(i) })
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item // Start and End G-code
|
||||
{
|
||||
id: lowerBlock
|
||||
anchors.top: upperBlock.bottom
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
|
||||
Cura.GcodeTextArea // "Start G-code"
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.left: parent.left
|
||||
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||
|
||||
labelText: catalog.i18nc("@title:label", "Start G-code")
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_start_gcode"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
}
|
||||
|
||||
Cura.GcodeTextArea // "End G-code"
|
||||
{
|
||||
anchors.top: parent.top
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.right: parent.right
|
||||
width: base.columnWidth - UM.Theme.getSize("default_margin").width
|
||||
|
||||
labelText: catalog.i18nc("@title:label", "End G-code")
|
||||
containerStackId: machineStackId
|
||||
settingKey: "machine_end_gcode"
|
||||
settingStoreIndex: propertyStoreIndex
|
||||
}
|
||||
}
|
||||
}
|
@ -50,7 +50,6 @@ class Toolbox(QObject, Extension):
|
||||
self._request_headers = [] # type: List[Tuple[bytes, bytes]]
|
||||
self._updateRequestHeader()
|
||||
|
||||
|
||||
self._request_urls = {} # type: Dict[str, QUrl]
|
||||
self._to_update = [] # type: List[str] # Package_ids that are waiting to be updated
|
||||
self._old_plugin_ids = set() # type: Set[str]
|
||||
|
@ -28,14 +28,15 @@ from UM.Version import Version
|
||||
from . import ClusterUM3OutputDevice, LegacyUM3OutputDevice
|
||||
from .Cloud.CloudOutputDeviceManager import CloudOutputDeviceManager
|
||||
|
||||
|
||||
if TYPE_CHECKING:
|
||||
from PyQt5.QtNetwork import QNetworkReply
|
||||
from cura.Settings.GlobalStack import GlobalStack
|
||||
from UM.OutputDevice.OutputDevicePlugin import OutputDevicePlugin
|
||||
|
||||
|
||||
i18n_catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
## This plugin handles the connection detection & creation of output device objects for the UM3 printer.
|
||||
# Zero-Conf is used to detect printers, which are saved in a dict.
|
||||
# If we discover a printer that has the same key as the active machine instance a connection is made.
|
||||
@ -454,7 +455,6 @@ class UM3OutputDevicePlugin(OutputDevicePlugin):
|
||||
# Pre-Check: Skip if active machine already has been cloud connected or you said don't ask again
|
||||
active_machine = self._application.getMachineManager().activeMachine # type: Optional[GlobalStack]
|
||||
if active_machine:
|
||||
|
||||
# Check 1A: Printer isn't already configured for cloud
|
||||
if ConnectionType.CloudConnection.value in active_machine.configuredConnectionTypes:
|
||||
Logger.log("d", "Active machine was already configured for cloud.")
|
||||
|
@ -1,24 +1,27 @@
|
||||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import UM 1.2 as UM
|
||||
import Cura 1.0 as Cura
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
Cura.MachineAction
|
||||
{
|
||||
anchors.fill: parent;
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
Item
|
||||
{
|
||||
id: bedLevelMachineAction
|
||||
anchors.fill: parent;
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height * 3
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: parent.width * 3 / 4
|
||||
|
||||
Label
|
||||
{
|
||||
@ -26,17 +29,21 @@ Cura.MachineAction
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@title", "Build Plate Leveling")
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: 18;
|
||||
font.pointSize: 18
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: pageDescription
|
||||
anchors.top: pageTitle.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height * 3
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label", "To make sure your prints will come out great, you can now adjust your buildplate. When you click 'Move to Next Position' the nozzle will move to the different positions that can be adjusted.")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: bedlevelingText
|
||||
@ -45,37 +52,38 @@ Cura.MachineAction
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label", "For every position; insert a piece of paper under the nozzle and adjust the print build plate height. The print build plate height is right when the paper is slightly gripped by the tip of the nozzle.")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Row
|
||||
{
|
||||
id: bedlevelingWrapper
|
||||
anchors.top: bedlevelingText.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height * 3
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: childrenRect.width
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
|
||||
Button
|
||||
Cura.ActionButton
|
||||
{
|
||||
id: startBedLevelingButton
|
||||
text: catalog.i18nc("@action:button","Start Build Plate Leveling")
|
||||
text: catalog.i18nc("@action:button", "Start Build Plate Leveling")
|
||||
onClicked:
|
||||
{
|
||||
startBedLevelingButton.visible = false;
|
||||
bedlevelingButton.visible = true;
|
||||
manager.startBedLeveling();
|
||||
startBedLevelingButton.visible = false
|
||||
bedlevelingButton.visible = true
|
||||
manager.startBedLeveling()
|
||||
}
|
||||
}
|
||||
|
||||
Button
|
||||
Cura.ActionButton
|
||||
{
|
||||
id: bedlevelingButton
|
||||
text: catalog.i18nc("@action:button","Move to Next Position")
|
||||
text: catalog.i18nc("@action:button", "Move to Next Position")
|
||||
visible: false
|
||||
onClicked:
|
||||
{
|
||||
manager.moveToNextLevelPosition();
|
||||
manager.moveToNextLevelPosition()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,15 @@
|
||||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Uranium is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from cura.MachineAction import MachineAction
|
||||
from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty
|
||||
from PyQt5.QtCore import pyqtSignal, pyqtProperty
|
||||
|
||||
from UM.Settings.ContainerRegistry import ContainerRegistry
|
||||
from UM.i18n import i18nCatalog
|
||||
from UM.Application import Application
|
||||
from UM.Util import parseBool
|
||||
|
||||
from cura.MachineAction import MachineAction
|
||||
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
|
@ -1,32 +1,24 @@
|
||||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.2 as UM
|
||||
import Cura 1.0 as Cura
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
Cura.MachineAction
|
||||
{
|
||||
anchors.fill: parent;
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
anchors.fill: parent
|
||||
|
||||
Item
|
||||
{
|
||||
id: upgradeSelectionMachineAction
|
||||
anchors.fill: parent
|
||||
|
||||
Label
|
||||
{
|
||||
id: pageTitle
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@title", "Select Printer Upgrades")
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: 18;
|
||||
}
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").width * 5
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width * 4
|
||||
|
||||
Label
|
||||
{
|
||||
@ -35,15 +27,19 @@ Cura.MachineAction
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker 2.");
|
||||
text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker 2.")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
CheckBox
|
||||
Cura.CheckBox
|
||||
{
|
||||
id: olssonBlockCheckBox
|
||||
anchors.top: pageDescription.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
|
||||
height: UM.Theme.getSize("setting_control").height
|
||||
|
||||
text: catalog.i18nc("@label", "Olsson Block")
|
||||
checked: manager.hasVariants
|
||||
onClicked: manager.hasVariants = checked
|
||||
@ -54,7 +50,5 @@ Cura.MachineAction
|
||||
onHasVariantsChanged: olssonBlockCheckBox.checked = manager.hasVariants
|
||||
}
|
||||
}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,193 +0,0 @@
|
||||
from cura.MachineAction import MachineAction
|
||||
from cura.PrinterOutput.PrinterOutputDevice import PrinterOutputDevice
|
||||
from UM.Application import Application
|
||||
from PyQt5.QtCore import pyqtSlot, pyqtSignal, pyqtProperty
|
||||
|
||||
from UM.Logger import Logger
|
||||
from UM.i18n import i18nCatalog
|
||||
catalog = i18nCatalog("cura")
|
||||
|
||||
|
||||
## Action to check up if the self-built UMO was done correctly.
|
||||
class UMOCheckupMachineAction(MachineAction):
|
||||
def __init__(self):
|
||||
super().__init__("UMOCheckup", catalog.i18nc("@action", "Checkup"))
|
||||
self._qml_url = "UMOCheckupMachineAction.qml"
|
||||
self._hotend_target_temp = 180
|
||||
self._bed_target_temp = 60
|
||||
self._output_device = None
|
||||
self._bed_test_completed = False
|
||||
self._hotend_test_completed = False
|
||||
|
||||
# Endstop tests
|
||||
self._x_min_endstop_test_completed = False
|
||||
self._y_min_endstop_test_completed = False
|
||||
self._z_min_endstop_test_completed = False
|
||||
|
||||
self._check_started = False
|
||||
|
||||
Application.getInstance().getOutputDeviceManager().outputDevicesChanged.connect(self._onOutputDevicesChanged)
|
||||
|
||||
onBedTestCompleted = pyqtSignal()
|
||||
onHotendTestCompleted = pyqtSignal()
|
||||
|
||||
onXMinEndstopTestCompleted = pyqtSignal()
|
||||
onYMinEndstopTestCompleted = pyqtSignal()
|
||||
onZMinEndstopTestCompleted = pyqtSignal()
|
||||
|
||||
bedTemperatureChanged = pyqtSignal()
|
||||
hotendTemperatureChanged = pyqtSignal()
|
||||
|
||||
def _onOutputDevicesChanged(self):
|
||||
# Check if this action was started, but no output device was found the first time.
|
||||
# If so, re-try now that an output device has been added/removed.
|
||||
if self._output_device is None and self._check_started:
|
||||
self.startCheck()
|
||||
|
||||
def _getPrinterOutputDevices(self):
|
||||
return [printer_output_device for printer_output_device in
|
||||
Application.getInstance().getOutputDeviceManager().getOutputDevices() if
|
||||
isinstance(printer_output_device, PrinterOutputDevice)]
|
||||
|
||||
def _reset(self):
|
||||
if self._output_device:
|
||||
self._output_device.bedTemperatureChanged.disconnect(self.bedTemperatureChanged)
|
||||
self._output_device.hotendTemperaturesChanged.disconnect(self.hotendTemperatureChanged)
|
||||
self._output_device.bedTemperatureChanged.disconnect(self._onBedTemperatureChanged)
|
||||
self._output_device.hotendTemperaturesChanged.disconnect(self._onHotendTemperatureChanged)
|
||||
self._output_device.endstopStateChanged.disconnect(self._onEndstopStateChanged)
|
||||
try:
|
||||
self._output_device.stopPollEndstop()
|
||||
except AttributeError as e: # Connection is probably not a USB connection. Something went pretty wrong if this happens.
|
||||
Logger.log("e", "An exception occurred while stopping end stop polling: %s" % str(e))
|
||||
|
||||
self._output_device = None
|
||||
|
||||
self._check_started = False
|
||||
self.checkStartedChanged.emit()
|
||||
|
||||
# Ensure everything is reset (and right signals are emitted again)
|
||||
self._bed_test_completed = False
|
||||
self.onBedTestCompleted.emit()
|
||||
self._hotend_test_completed = False
|
||||
self.onHotendTestCompleted.emit()
|
||||
|
||||
self._x_min_endstop_test_completed = False
|
||||
self.onXMinEndstopTestCompleted.emit()
|
||||
self._y_min_endstop_test_completed = False
|
||||
self.onYMinEndstopTestCompleted.emit()
|
||||
self._z_min_endstop_test_completed = False
|
||||
self.onZMinEndstopTestCompleted.emit()
|
||||
|
||||
self.heatedBedChanged.emit()
|
||||
|
||||
@pyqtProperty(bool, notify = onBedTestCompleted)
|
||||
def bedTestCompleted(self):
|
||||
return self._bed_test_completed
|
||||
|
||||
@pyqtProperty(bool, notify = onHotendTestCompleted)
|
||||
def hotendTestCompleted(self):
|
||||
return self._hotend_test_completed
|
||||
|
||||
@pyqtProperty(bool, notify = onXMinEndstopTestCompleted)
|
||||
def xMinEndstopTestCompleted(self):
|
||||
return self._x_min_endstop_test_completed
|
||||
|
||||
@pyqtProperty(bool, notify=onYMinEndstopTestCompleted)
|
||||
def yMinEndstopTestCompleted(self):
|
||||
return self._y_min_endstop_test_completed
|
||||
|
||||
@pyqtProperty(bool, notify=onZMinEndstopTestCompleted)
|
||||
def zMinEndstopTestCompleted(self):
|
||||
return self._z_min_endstop_test_completed
|
||||
|
||||
@pyqtProperty(float, notify = bedTemperatureChanged)
|
||||
def bedTemperature(self):
|
||||
if not self._output_device:
|
||||
return 0
|
||||
return self._output_device.bedTemperature
|
||||
|
||||
@pyqtProperty(float, notify=hotendTemperatureChanged)
|
||||
def hotendTemperature(self):
|
||||
if not self._output_device:
|
||||
return 0
|
||||
return self._output_device.hotendTemperatures[0]
|
||||
|
||||
def _onHotendTemperatureChanged(self):
|
||||
if not self._output_device:
|
||||
return
|
||||
if not self._hotend_test_completed:
|
||||
if self._output_device.hotendTemperatures[0] + 10 > self._hotend_target_temp and self._output_device.hotendTemperatures[0] - 10 < self._hotend_target_temp:
|
||||
self._hotend_test_completed = True
|
||||
self.onHotendTestCompleted.emit()
|
||||
|
||||
def _onBedTemperatureChanged(self):
|
||||
if not self._output_device:
|
||||
return
|
||||
if not self._bed_test_completed:
|
||||
if self._output_device.bedTemperature + 5 > self._bed_target_temp and self._output_device.bedTemperature - 5 < self._bed_target_temp:
|
||||
self._bed_test_completed = True
|
||||
self.onBedTestCompleted.emit()
|
||||
|
||||
def _onEndstopStateChanged(self, switch_type, state):
|
||||
if state:
|
||||
if switch_type == "x_min":
|
||||
self._x_min_endstop_test_completed = True
|
||||
self.onXMinEndstopTestCompleted.emit()
|
||||
elif switch_type == "y_min":
|
||||
self._y_min_endstop_test_completed = True
|
||||
self.onYMinEndstopTestCompleted.emit()
|
||||
elif switch_type == "z_min":
|
||||
self._z_min_endstop_test_completed = True
|
||||
self.onZMinEndstopTestCompleted.emit()
|
||||
|
||||
checkStartedChanged = pyqtSignal()
|
||||
|
||||
@pyqtProperty(bool, notify = checkStartedChanged)
|
||||
def checkStarted(self):
|
||||
return self._check_started
|
||||
|
||||
@pyqtSlot()
|
||||
def startCheck(self):
|
||||
self._check_started = True
|
||||
self.checkStartedChanged.emit()
|
||||
output_devices = self._getPrinterOutputDevices()
|
||||
if output_devices:
|
||||
self._output_device = output_devices[0]
|
||||
try:
|
||||
self._output_device.sendCommand("M18") # Turn off all motors so the user can move the axes
|
||||
self._output_device.startPollEndstop()
|
||||
self._output_device.bedTemperatureChanged.connect(self.bedTemperatureChanged)
|
||||
self._output_device.hotendTemperaturesChanged.connect(self.hotendTemperatureChanged)
|
||||
self._output_device.bedTemperatureChanged.connect(self._onBedTemperatureChanged)
|
||||
self._output_device.hotendTemperaturesChanged.connect(self._onHotendTemperatureChanged)
|
||||
self._output_device.endstopStateChanged.connect(self._onEndstopStateChanged)
|
||||
except AttributeError as e: # Connection is probably not a USB connection. Something went pretty wrong if this happens.
|
||||
Logger.log("e", "An exception occurred while starting end stop polling: %s" % str(e))
|
||||
|
||||
@pyqtSlot()
|
||||
def cooldownHotend(self):
|
||||
if self._output_device is not None:
|
||||
self._output_device.setTargetHotendTemperature(0, 0)
|
||||
|
||||
@pyqtSlot()
|
||||
def cooldownBed(self):
|
||||
if self._output_device is not None:
|
||||
self._output_device.setTargetBedTemperature(0)
|
||||
|
||||
@pyqtSlot()
|
||||
def heatupHotend(self):
|
||||
if self._output_device is not None:
|
||||
self._output_device.setTargetHotendTemperature(0, self._hotend_target_temp)
|
||||
|
||||
@pyqtSlot()
|
||||
def heatupBed(self):
|
||||
if self._output_device is not None:
|
||||
self._output_device.setTargetBedTemperature(self._bed_target_temp)
|
||||
|
||||
heatedBedChanged = pyqtSignal()
|
||||
|
||||
@pyqtProperty(bool, notify = heatedBedChanged)
|
||||
def hasHeatedBed(self):
|
||||
global_container_stack = Application.getInstance().getGlobalContainerStack()
|
||||
return global_container_stack.getProperty("machine_heated_bed", "value")
|
@ -1,288 +0,0 @@
|
||||
import UM 1.2 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
|
||||
Cura.MachineAction
|
||||
{
|
||||
anchors.fill: parent;
|
||||
Item
|
||||
{
|
||||
id: checkupMachineAction
|
||||
anchors.fill: parent;
|
||||
property int leftRow: (checkupMachineAction.width * 0.40) | 0
|
||||
property int rightRow: (checkupMachineAction.width * 0.60) | 0
|
||||
property bool heatupHotendStarted: false
|
||||
property bool heatupBedStarted: false
|
||||
property bool printerConnected: Cura.MachineManager.printerConnected
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"}
|
||||
Label
|
||||
{
|
||||
id: pageTitle
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@title", "Check Printer")
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: 18;
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: pageDescription
|
||||
anchors.top: pageTitle.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label", "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional");
|
||||
}
|
||||
|
||||
Row
|
||||
{
|
||||
id: startStopButtons
|
||||
anchors.top: pageDescription.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: childrenRect.width
|
||||
spacing: UM.Theme.getSize("default_margin").width
|
||||
Button
|
||||
{
|
||||
id: startCheckButton
|
||||
text: catalog.i18nc("@action:button","Start Printer Check");
|
||||
onClicked:
|
||||
{
|
||||
checkupMachineAction.heatupHotendStarted = false;
|
||||
checkupMachineAction.heatupBedStarted = false;
|
||||
manager.startCheck();
|
||||
startCheckButton.visible = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
id: checkupContent
|
||||
anchors.top: startStopButtons.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
visible: manager.checkStarted
|
||||
width: parent.width
|
||||
height: 250
|
||||
//////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: connectionLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Connection: ")
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: connectionStatus
|
||||
width: checkupMachineAction.rightRow
|
||||
anchors.left: connectionLabel.right
|
||||
anchors.top: parent.top
|
||||
wrapMode: Text.WordWrap
|
||||
text: checkupMachineAction.printerConnected ? catalog.i18nc("@info:status","Connected"): catalog.i18nc("@info:status","Not connected")
|
||||
}
|
||||
//////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: endstopXLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
anchors.left: parent.left
|
||||
anchors.top: connectionLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Min endstop X: ")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: endstopXStatus
|
||||
width: checkupMachineAction.rightRow
|
||||
anchors.left: endstopXLabel.right
|
||||
anchors.top: connectionLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.xMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
//////////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: endstopYLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
anchors.left: parent.left
|
||||
anchors.top: endstopXLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Min endstop Y: ")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: endstopYStatus
|
||||
width: checkupMachineAction.rightRow
|
||||
anchors.left: endstopYLabel.right
|
||||
anchors.top: endstopXLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.yMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: endstopZLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
anchors.left: parent.left
|
||||
anchors.top: endstopYLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Min endstop Z: ")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: endstopZStatus
|
||||
width: checkupMachineAction.rightRow
|
||||
anchors.left: endstopZLabel.right
|
||||
anchors.top: endstopYLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.zMinEndstopTestCompleted ? catalog.i18nc("@info:status","Works") : catalog.i18nc("@info:status","Not checked")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
////////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: nozzleTempLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
height: nozzleTempButton.height
|
||||
anchors.left: parent.left
|
||||
anchors.top: endstopZLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Nozzle temperature check: ")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: nozzleTempStatus
|
||||
width: (checkupMachineAction.rightRow * 0.4) | 0
|
||||
anchors.top: nozzleTempLabel.top
|
||||
anchors.left: nozzleTempLabel.right
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@info:status","Not checked")
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
Item
|
||||
{
|
||||
id: nozzleTempButton
|
||||
width: (checkupMachineAction.rightRow * 0.3) | 0
|
||||
height: childrenRect.height
|
||||
anchors.top: nozzleTempLabel.top
|
||||
anchors.left: bedTempStatus.right
|
||||
anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2)
|
||||
visible: checkupMachineAction.printerConnected
|
||||
Button
|
||||
{
|
||||
text: checkupMachineAction.heatupHotendStarted ? catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating")
|
||||
onClicked:
|
||||
{
|
||||
if (checkupMachineAction.heatupHotendStarted)
|
||||
{
|
||||
manager.cooldownHotend()
|
||||
checkupMachineAction.heatupHotendStarted = false
|
||||
} else
|
||||
{
|
||||
manager.heatupHotend()
|
||||
checkupMachineAction.heatupHotendStarted = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: nozzleTemp
|
||||
anchors.top: nozzleTempLabel.top
|
||||
anchors.left: nozzleTempButton.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
width: (checkupMachineAction.rightRow * 0.2) | 0
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.hotendTemperature + "°C"
|
||||
font.bold: true
|
||||
visible: checkupMachineAction.printerConnected
|
||||
}
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
Label
|
||||
{
|
||||
id: bedTempLabel
|
||||
width: checkupMachineAction.leftRow
|
||||
height: bedTempButton.height
|
||||
anchors.left: parent.left
|
||||
anchors.top: nozzleTempLabel.bottom
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Build plate temperature check:")
|
||||
visible: checkupMachineAction.printerConnected && manager.hasHeatedBed
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: bedTempStatus
|
||||
width: (checkupMachineAction.rightRow * 0.4) | 0
|
||||
anchors.top: bedTempLabel.top
|
||||
anchors.left: bedTempLabel.right
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.bedTestCompleted ? catalog.i18nc("@info:status","Not checked"): catalog.i18nc("@info:status","Checked")
|
||||
visible: checkupMachineAction.printerConnected && manager.hasHeatedBed
|
||||
}
|
||||
Item
|
||||
{
|
||||
id: bedTempButton
|
||||
width: (checkupMachineAction.rightRow * 0.3) | 0
|
||||
height: childrenRect.height
|
||||
anchors.top: bedTempLabel.top
|
||||
anchors.left: bedTempStatus.right
|
||||
anchors.leftMargin: Math.round(UM.Theme.getSize("default_margin").width/2)
|
||||
visible: checkupMachineAction.printerConnected && manager.hasHeatedBed
|
||||
Button
|
||||
{
|
||||
text: checkupMachineAction.heatupBedStarted ?catalog.i18nc("@action:button","Stop Heating") : catalog.i18nc("@action:button","Start Heating")
|
||||
onClicked:
|
||||
{
|
||||
if (checkupMachineAction.heatupBedStarted)
|
||||
{
|
||||
manager.cooldownBed()
|
||||
checkupMachineAction.heatupBedStarted = false
|
||||
} else
|
||||
{
|
||||
manager.heatupBed()
|
||||
checkupMachineAction.heatupBedStarted = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: bedTemp
|
||||
width: (checkupMachineAction.rightRow * 0.2) | 0
|
||||
anchors.top: bedTempLabel.top
|
||||
anchors.left: bedTempButton.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
wrapMode: Text.WordWrap
|
||||
text: manager.bedTemperature + "°C"
|
||||
font.bold: true
|
||||
visible: checkupMachineAction.printerConnected && manager.hasHeatedBed
|
||||
}
|
||||
Label
|
||||
{
|
||||
id: resultText
|
||||
visible: false
|
||||
anchors.top: bedTemp.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.left: parent.left
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label", "Everything is in order! You're done with your CheckUp.")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,43 +1,38 @@
|
||||
// Copyright (c) 2016 Ultimaker B.V.
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.2
|
||||
import QtQuick.Controls 1.1
|
||||
import QtQuick.Layouts 1.1
|
||||
import QtQuick.Window 2.1
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.2 as UM
|
||||
import Cura 1.0 as Cura
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
Cura.MachineAction
|
||||
{
|
||||
anchors.fill: parent;
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
anchors.fill: parent
|
||||
|
||||
Item
|
||||
{
|
||||
id: upgradeSelectionMachineAction
|
||||
anchors.fill: parent
|
||||
|
||||
Label
|
||||
{
|
||||
id: pageTitle
|
||||
width: parent.width
|
||||
text: catalog.i18nc("@title", "Select Printer Upgrades")
|
||||
wrapMode: Text.WordWrap
|
||||
font.pointSize: 18;
|
||||
}
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").width * 5
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width * 4
|
||||
|
||||
Label
|
||||
{
|
||||
id: pageDescription
|
||||
anchors.top: pageTitle.bottom
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
width: parent.width
|
||||
wrapMode: Text.WordWrap
|
||||
text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker Original");
|
||||
text: catalog.i18nc("@label","Please select any upgrades made to this Ultimaker Original")
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
CheckBox
|
||||
Cura.CheckBox
|
||||
{
|
||||
anchors.top: pageDescription.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
@ -46,7 +41,5 @@ Cura.MachineAction
|
||||
checked: manager.hasHeatedBed
|
||||
onClicked: manager.setHeatedBed(checked)
|
||||
}
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -12,8 +12,8 @@
|
||||
"has_materials": true,
|
||||
"has_machine_quality": true,
|
||||
"exclude_materials": ["generic_hips", "generic_petg", "generic_bam", "ultimaker_bam", "generic_pva", "ultimaker_pva", "generic_tough_pla", "ultimaker_tough_pla_black", "ultimaker_tough_pla_green", "ultimaker_tough_pla_red", "ultimaker_tough_pla_white"],
|
||||
"first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"],
|
||||
"supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"],
|
||||
"first_start_actions": ["UMOUpgradeSelection", "BedLevel"],
|
||||
"supported_actions": ["UMOUpgradeSelection", "BedLevel"],
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "ultimaker_original_extruder_0"
|
||||
|
@ -20,8 +20,8 @@
|
||||
},
|
||||
"firmware_file": "MarlinUltimaker-{baudrate}-dual.hex",
|
||||
"firmware_hbk_file": "MarlinUltimaker-HBK-{baudrate}-dual.hex",
|
||||
"first_start_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"],
|
||||
"supported_actions": ["UMOUpgradeSelection", "UMOCheckup", "BedLevel"]
|
||||
"first_start_actions": ["UMOUpgradeSelection", "BedLevel"],
|
||||
"supported_actions": ["UMOUpgradeSelection", "BedLevel"]
|
||||
},
|
||||
|
||||
"overrides": {
|
||||
|
@ -10,8 +10,8 @@
|
||||
"platform": "ultimaker2_platform.obj",
|
||||
"platform_texture": "UltimakerPlusbackplate.png",
|
||||
"quality_definition": "ultimaker_original",
|
||||
"first_start_actions": ["UMOCheckup", "BedLevel"],
|
||||
"supported_actions": ["UMOCheckup", "BedLevel"],
|
||||
"first_start_actions": ["BedLevel"],
|
||||
"supported_actions": ["BedLevel"],
|
||||
"machine_extruder_trains":
|
||||
{
|
||||
"0": "ultimaker_original_plus_extruder_0"
|
||||
|
@ -966,11 +966,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -3085,101 +3080,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid ""
|
||||
"It's a good idea to do a few sanity checks on your Ultimaker. You can skip "
|
||||
"this step if you know your machine is functional"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr ""
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -923,11 +923,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Upgrades wählen"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Check-up"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2956,99 +2951,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Beheizte Druckplatte (offizielles Kit oder Eigenbau)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Drucker prüfen"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Sie sollten einige Sanity Checks bei Ihrem Ultimaker durchführen. Sie können diesen Schritt überspringen, wenn Sie wissen, dass Ihr Gerät funktionsfähig ist"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Überprüfung des Druckers starten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Verbindung: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Verbunden"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Nicht verbunden"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Min. Endstopp X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Funktionsfähig"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Nicht überprüft"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Min. Endstopp Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Min. Endstopp Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Temperaturprüfung der Düse: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Aufheizen stoppen"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Aufheizen starten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Temperaturprüfung der Druckplatte:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Geprüft"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Alles ist in Ordnung! Der Check-up ist abgeschlossen."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -923,11 +923,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Seleccionar actualizaciones"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Comprobación"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2956,99 +2951,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Placa de impresión caliente (kit oficial o construida por usted mismo)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Comprobar impresora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Es una buena idea hacer un par de comprobaciones en su Ultimaker. Puede omitir este paso si usted sabe que su máquina funciona correctamente"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Iniciar comprobación de impresora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Conexión: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Conectado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Sin conexión"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Parada final mín. en X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Funciona"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Sin comprobar"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Parada final mín. en Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Parada final mín. en Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Comprobación de la temperatura de la tobera: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Detener calentamiento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Iniciar calentamiento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Comprobación de la temperatura de la placa de impresión:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Comprobada"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "¡Todo correcto! Ha terminado con la comprobación."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -921,11 +921,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Valitse päivitykset"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Tarkastus"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2957,99 +2952,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Lämmitettävä alusta (virallinen sarja tai itse rakennettu)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Tarkista tulostin"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Ultimakerille on hyvä tehdä muutamia toimintatarkastuksia. Voit jättää tämän vaiheen väliin, jos tiedät laitteesi olevan toimintakunnossa"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Aloita tulostintarkistus"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Yhteys: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Yhdistetty"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Ei yhteyttä"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Min. päätyraja X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Toimii"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Ei tarkistettu"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Min. päätyraja Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Min. päätyraja Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Suuttimen lämpötilatarkistus: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Lopeta lämmitys"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Aloita lämmitys"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Alustan lämpötilan tarkistus:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Tarkistettu"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Kaikki on kunnossa! CheckUp on valmis."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -923,11 +923,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Sélectionner les mises à niveau"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Check-up"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2956,99 +2951,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Plateau chauffant (kit officiel ou fabriqué soi-même)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Tester l'imprimante"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Il est préférable de procéder à quelques tests de fonctionnement sur votre Ultimaker. Vous pouvez passer cette étape si vous savez que votre machine est fonctionnelle"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Démarrer le test de l'imprimante"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Connexion : "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Connecté"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Non connecté"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Fin de course X : "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Fonctionne"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Non testé"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Fin de course Y : "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Fin de course Z : "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Test de la température de la buse : "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Arrêter le chauffage"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Démarrer le chauffage"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Contrôle de la température du plateau :"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Contrôlée"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Tout est en ordre ! Vous avez terminé votre check-up."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -927,11 +927,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Seleziona aggiornamenti"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Controllo"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2977,99 +2972,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Piano di stampa riscaldato (kit ufficiale o integrato)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Controllo stampante"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "È consigliabile eseguire alcuni controlli di integrità sulla Ultimaker. È possibile saltare questo passaggio se si è certi che la macchina funziona correttamente"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Avvia controllo stampante"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Collegamento: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Collegato"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Non collegato"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Endstop min. asse X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Funziona"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Controllo non selezionato"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Endstop min. asse Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Endstop min. asse Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Controllo temperatura ugello: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Arresto riscaldamento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Avvio riscaldamento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Controllo temperatura piano di stampa:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Controllo eseguito"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "È tutto in ordine! Controllo terminato."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -928,11 +928,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "アップグレードを選択する"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "チェックアップ"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2976,99 +2971,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "ヒーティッドビルドプレート(オフィシャルキットまたはセルフビルド)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "プリンターチェック"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "お持ちのUltimkaerにてサニティーチェックを数回行うことは推奨します。もしプリンター機能に問題ない場合はこの項目をスキップしてください"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "プリンターチェックを開始する"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "コネクション: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "接続済"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "プリンターにつながっていません"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "エンドストップ X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "作品"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "チェックされていません"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "エンドストップ Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "エンドストップ Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "ノズル温度チェック: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "ヒーティングストップ"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "ヒーティング開始"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "ビルドプレートの温度チェック:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "チェック済"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "すべてに異常はありません。チェックアップを終了しました。"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -927,11 +927,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "업그레이드 선택"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "검사"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2974,99 +2969,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "히팅 빌드 플레이트 (공식 키트 또는 자체 조립식)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "프린터 확인"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Ultimaker에서 몇 가지 검사를 하는 것이 좋습니다. 기기가 제대로 작동한다고 생각이 되면 이 단계를 건너 뛸 수 있습니다"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "프린터 체 시작"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "연결 "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "연결됨"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "연결되지 않음"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "최소 엔드 스톱 X "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "작업"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "확인되지 않음"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "최소 엔드 스톱 Y "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "최소 엔드 스톱 Z "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "노즐 온도 확인 "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "가열 중지"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "가열 시작"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "빌드 플레이트 온도 확인 :"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "체크 됨"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "모든 점검이 순조롭게 끝났습니다."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -923,11 +923,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Upgrades selecteren"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Controle"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2951,99 +2946,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Verwarmd Platform (officiële kit of eigenbouw)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Printer Controleren"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Het wordt aangeraden een controle uit te voeren op de Ultimaker. U kunt deze stap overslaan als u zeker weet dat de machine correct functioneert"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Printercontrole Starten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Verbinding: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Aangesloten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Niet aangesloten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Min. eindstop X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Werkt"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Niet gecontroleerd"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Min. eindstop Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Min. eindstop Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Temperatuurcontrole nozzle: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Verwarmen Stoppen"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Verwarmen Starten"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Temperatuurcontrole platform:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Gecontroleerd"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Alles is in orde! De controle is voltooid."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -928,11 +928,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Wybierz aktualizacje"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Sprawdzanie"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2978,99 +2973,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Płyta grzewcza (zestaw oficjalny lub własnej roboty)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Sprawdź drukarkę"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Dobrym pomysłem jest zrobienie kilku testów na swoim Ultimakera. Możesz pominąć ten krok, jeśli wiesz, że urządzenie jest funkcjonalne"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Rozpocznij sprawdzanie drukarki"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Połączenie: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Połączono"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Nie połączono"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Krańcówka min. X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Pracuje"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Niesprawdzone"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Krańcówka min. Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Krańcówka min. Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Sprawdzanie temperatury dyszy: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Zatrzymaj ogrzewanie"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Rozpocznij ogrzewanie"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Kontrola temperatury płyty konstrukcyjnej:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Sprawdzone"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Wszystko w porządku! Skończono sprawdzenie."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -927,11 +927,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Selecionar Atualizações"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Verificação"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2977,99 +2972,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Mesa de Impressão Aquecida (kit Oficial ou auto-construído)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Verificar Impressora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "É uma boa idéia fazer algumas verificações de sanidade em sua Ultimaker. Você pode pular este passo se você sabe que sua máquina está funcional"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Iniciar Verificação da Impressora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Conexão: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Conectado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Desconectado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Fim de curso mín. em X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Funciona"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Não verificado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Fim de curso mín. em Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Fim de curso mín. em Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Verificação da temperatura do bico: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Parar Aquecimento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Iniciar Aquecimento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Verificação da temperatura da mesa de impressão:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Verificado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Tudo está em ordem! A verificação terminou."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -941,11 +941,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Selecionar atualizações"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Checkup"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2990,106 +2985,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Base de Construção Aquecida (kit oficial ou de construção própria)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Verificar Impressora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "É recomendado efetuar algumas verificações de teste à sua Ultimaker. Pode ignorar este passo se souber que a sua máquina está funcional"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Iniciar Verificação da Impressora"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Ligação: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Ligado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Sem ligação"
|
||||
|
||||
# rever!
|
||||
# contexto?!
|
||||
# X mín. de posição final:
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Mín. endstop X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Trabalhos"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Não verificado"
|
||||
|
||||
# rever!
|
||||
# contexto?!
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Mín. endstop Y: "
|
||||
|
||||
# rever!
|
||||
# contexto?!
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Mín. endstop Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Verificação da temperatura do nozzle: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Parar Aquecimento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Iniciar Aquecimento"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Verificação da temperatura da base de construção:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Verificado"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Está tudo em ordem! A verificação está concluída."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -927,11 +927,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Выбор обновлений"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Проверка"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2980,99 +2975,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Нагреваемый стол (официальный набор или самодельный)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Проверка принтера"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Хорошей идеей будет выполнить несколько проверок вашего Ultimaker. Вы можете пропустить этот шаг, если уверены в функциональности своего принтера"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Начать проверку принтера"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Соединение: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Подключен"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Не подключен"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Минимальный концевик на оси X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "Работает"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Не проверен"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Минимальный концевик на оси Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Минимальный концевик на оси Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Проверка температуры сопла: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Завершение нагрева"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Начало нагрева"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Проверка температуры стола:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Проверена"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Всё в порядке! Проверка завершена."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -923,11 +923,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "Yükseltmeleri seçin"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "Kontrol"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2956,99 +2951,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "Isıtılmış Yapı Levhası (orijinal donanım veya şahsen yapılan)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "Yazıcıyı kontrol et"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "Ultimaker’ınızda birkaç uygunluk testi yapmak faydalı olabilir. Makinenizin işlevlerini yerine getirdiğini düşünüyorsanız bu adımı atlayabilirsiniz"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "Yazıcı Kontrolünü Başlat"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "Bağlantı: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "Bağlı"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "Bağlı değil"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "Min. Kapama X: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "İşlemler"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "Kontrol edilmedi"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Min. kapama Y: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Min. kapama Z: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "Nozül sıcaklık kontrolü: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "Isıtmayı Durdur"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "Isıtmayı Başlat"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "Yapı levhası sıcaklık kontrolü:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "Kontrol edildi"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "Her şey yolunda! Kontrol işlemini tamamladınız."
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -927,11 +927,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "选择升级"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "检查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2974,99 +2969,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "热床(官方版本或自制)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "检查打印机"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "对 Ultimaker 进行几项正确性检查是很好的做法。如果您知道您的机器功能正常,则可跳过此步骤"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "开始打印机检查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "连接: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "已连接"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "未连接"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "X Min 限位开关: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "工作"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "未检查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Y Min 限位开关: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Z Min 限位开关: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "检查喷嘴温度: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "停止加热"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "开始加热"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "打印平台温度检查:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "已检查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "一切正常!你已经完成检查。"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -928,11 +928,6 @@ msgctxt "@action"
|
||||
msgid "Select upgrades"
|
||||
msgstr "選擇升級"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.py:14
|
||||
msgctxt "@action"
|
||||
msgid "Checkup"
|
||||
msgstr "檢查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/BedLevelMachineAction.py:21
|
||||
msgctxt "@action"
|
||||
msgid "Level build plate"
|
||||
@ -2975,99 +2970,6 @@ msgctxt "@label"
|
||||
msgid "Heated Build Plate (official kit or self-built)"
|
||||
msgstr "熱床(官方版本或自製版本)"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:27
|
||||
msgctxt "@title"
|
||||
msgid "Check Printer"
|
||||
msgstr "檢查印表機"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:39
|
||||
msgctxt "@label"
|
||||
msgid "It's a good idea to do a few sanity checks on your Ultimaker. You can skip this step if you know your machine is functional"
|
||||
msgstr "對 Ultimaker 進行幾項正確性檢查是很好的做法。如果你知道你的機器功能正常,則可跳過此步驟"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:53
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Printer Check"
|
||||
msgstr "開始印表機檢查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:80
|
||||
msgctxt "@label"
|
||||
msgid "Connection: "
|
||||
msgstr "連線: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Connected"
|
||||
msgstr "已連線"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:89
|
||||
msgctxt "@info:status"
|
||||
msgid "Not connected"
|
||||
msgstr "未連線"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:99
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop X: "
|
||||
msgstr "X Min 限位開關: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
msgctxt "@info:status"
|
||||
msgid "Works"
|
||||
msgstr "正常"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:109
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:130
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:151
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:173
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Not checked"
|
||||
msgstr "未檢查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:120
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Y: "
|
||||
msgstr "Y Min 限位開關: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:141
|
||||
msgctxt "@label"
|
||||
msgid "Min endstop Z: "
|
||||
msgstr "Z Min 限位開關: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:163
|
||||
msgctxt "@label"
|
||||
msgid "Nozzle temperature check: "
|
||||
msgstr "檢查噴頭溫度: "
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Stop Heating"
|
||||
msgstr "停止加熱"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:187
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:248
|
||||
msgctxt "@action:button"
|
||||
msgid "Start Heating"
|
||||
msgstr "開始加熱"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:223
|
||||
msgctxt "@label"
|
||||
msgid "Build plate temperature check:"
|
||||
msgstr "熱床溫度檢查:"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:234
|
||||
msgctxt "@info:status"
|
||||
msgid "Checked"
|
||||
msgstr "已檢查"
|
||||
|
||||
#: /home/ruben/Projects/Cura/plugins/UltimakerMachineActions/UMOCheckupMachineAction.qml:284
|
||||
msgctxt "@label"
|
||||
msgid "Everything is in order! You're done with your CheckUp."
|
||||
msgstr "一切正常!你已經完成檢查。"
|
||||
|
||||
#: /home/ruben/Projects/Cura/resources/qml/MonitorButton.qml:119
|
||||
msgctxt "@label:MonitorStatus"
|
||||
msgid "Not connected to a printer"
|
||||
|
@ -9,8 +9,6 @@ import QtQuick.Controls 1.4 as Controls1
|
||||
import UM 1.1 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
import "../Widgets"
|
||||
|
||||
|
||||
// This element contains all the elements the user needs to create a printjob from the
|
||||
// model(s) that is(are) on the buildplate. Mainly the button to start/stop the slicing
|
||||
@ -66,7 +64,7 @@ Column
|
||||
}
|
||||
|
||||
// Progress bar, only visible when the backend is in the process of slice the printjob
|
||||
CuraProgressBar
|
||||
Cura.ProgressBar
|
||||
{
|
||||
id: progressBar
|
||||
width: parent.width
|
||||
|
138
resources/qml/MachineSettings/ComboBoxWithOptions.qml
Normal file
138
resources/qml/MachineSettings/ComboBoxWithOptions.qml
Normal file
@ -0,0 +1,138 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
import "../Widgets"
|
||||
|
||||
|
||||
//
|
||||
// ComboBox with dropdown options in the Machine Settings dialog.
|
||||
//
|
||||
UM.TooltipArea
|
||||
{
|
||||
id: comboBoxWithOptions
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
height: childrenRect.height
|
||||
width: childrenRect.width
|
||||
text: tooltipText
|
||||
|
||||
property int controlWidth: UM.Theme.getSize("setting_control").width
|
||||
property int controlHeight: UM.Theme.getSize("setting_control").height
|
||||
|
||||
property alias containerStackId: propertyProvider.containerStackId
|
||||
property alias settingKey: propertyProvider.key
|
||||
property alias settingStoreIndex: propertyProvider.storeIndex
|
||||
|
||||
property alias labelText: fieldLabel.text
|
||||
property alias labelFont: fieldLabel.font
|
||||
property alias labelWidth: fieldLabel.width
|
||||
property alias optionModel: comboBox.model
|
||||
|
||||
property string tooltipText: propertyProvider.properties.description
|
||||
|
||||
// callback functions
|
||||
property var forceUpdateOnChangeFunction: dummy_func
|
||||
property var afterOnEditingFinishedFunction: dummy_func
|
||||
property var setValueFunction: null
|
||||
|
||||
// a dummy function for default property values
|
||||
function dummy_func() {}
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
id: propertyProvider
|
||||
watchedProperties: [ "value", "options", "description" ]
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: fieldLabel
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: comboBox.verticalCenter
|
||||
visible: text != ""
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
ListModel
|
||||
{
|
||||
id: defaultOptionsModel
|
||||
|
||||
function updateModel()
|
||||
{
|
||||
clear()
|
||||
// Options come in as a string-representation of an OrderedDict
|
||||
var options = propertyProvider.properties.options.match(/^OrderedDict\(\[\((.*)\)\]\)$/)
|
||||
if (options)
|
||||
{
|
||||
options = options[1].split("), (")
|
||||
for (var i = 0; i < options.length; i++)
|
||||
{
|
||||
var option = options[i].substring(1, options[i].length - 1).split("', '")
|
||||
append({ text: option[1], value: option[0] })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: updateModel()
|
||||
}
|
||||
|
||||
// Remake the model when the model is bound to a different container stack
|
||||
Connections
|
||||
{
|
||||
target: propertyProvider
|
||||
onContainerStackChanged: defaultOptionsModel.updateModel()
|
||||
}
|
||||
|
||||
Cura.ComboBox
|
||||
{
|
||||
id: comboBox
|
||||
anchors.left: fieldLabel.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
width: comboBoxWithOptions.controlWidth
|
||||
height: comboBoxWithOptions.controlHeight
|
||||
model: defaultOptionsModel
|
||||
textRole: "text"
|
||||
|
||||
currentIndex:
|
||||
{
|
||||
var currentValue = propertyProvider.properties.value
|
||||
var index = 0
|
||||
for (var i = 0; i < model.count; i++)
|
||||
{
|
||||
if (model.get(i).value == currentValue)
|
||||
{
|
||||
index = i
|
||||
break
|
||||
}
|
||||
}
|
||||
return index
|
||||
}
|
||||
|
||||
onActivated:
|
||||
{
|
||||
var newValue = model.get(index).value
|
||||
if (propertyProvider.properties.value != newValue)
|
||||
{
|
||||
if (setValueFunction !== null)
|
||||
{
|
||||
setValueFunction(newValue)
|
||||
}
|
||||
else
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", newValue)
|
||||
}
|
||||
forceUpdateOnChangeFunction()
|
||||
afterOnEditingFinishedFunction()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
88
resources/qml/MachineSettings/GcodeTextArea.qml
Normal file
88
resources/qml/MachineSettings/GcodeTextArea.qml
Normal file
@ -0,0 +1,88 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// TextArea widget for editing Gcode in the Machine Settings dialog.
|
||||
//
|
||||
UM.TooltipArea
|
||||
{
|
||||
id: control
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
text: tooltip
|
||||
|
||||
property alias containerStackId: propertyProvider.containerStackId
|
||||
property alias settingKey: propertyProvider.key
|
||||
property alias settingStoreIndex: propertyProvider.storeIndex
|
||||
|
||||
property string tooltip: propertyProvider.properties.description
|
||||
|
||||
property alias labelText: titleLabel.text
|
||||
property alias labelFont: titleLabel.font
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
id: propertyProvider
|
||||
watchedProperties: [ "value", "description" ]
|
||||
}
|
||||
|
||||
Label // Title Label
|
||||
{
|
||||
id: titleLabel
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
font: UM.Theme.getFont("medium_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
TextArea
|
||||
{
|
||||
id: gcodeTextArea
|
||||
anchors.top: titleLabel.bottom
|
||||
anchors.topMargin: UM.Theme.getSize("default_margin").height
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
hoverEnabled: true
|
||||
selectByMouse: true
|
||||
|
||||
font: UM.Theme.getFont("fixed")
|
||||
renderType: Text.NativeRendering
|
||||
text: (propertyProvider.properties.value) ? propertyProvider.properties.value : ""
|
||||
wrapMode: TextEdit.NoWrap
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
border.color:
|
||||
{
|
||||
if (!gcodeTextArea.enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if (gcodeTextArea.hovered || gcodeTextArea.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if (!activeFocus)
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", text)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
202
resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
Normal file
202
resources/qml/MachineSettings/NumericTextFieldWithUnit.qml
Normal file
@ -0,0 +1,202 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// TextField widget with validation for editing numeric data in the Machine Settings dialog.
|
||||
//
|
||||
UM.TooltipArea
|
||||
{
|
||||
id: numericTextFieldWithUnit
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
height: childrenRect.height
|
||||
width: childrenRect.width
|
||||
|
||||
property int controlWidth: UM.Theme.getSize("setting_control").width
|
||||
property int controlHeight: UM.Theme.getSize("setting_control").height
|
||||
|
||||
text: tooltipText
|
||||
|
||||
property alias containerStackId: propertyProvider.containerStackId
|
||||
property alias settingKey: propertyProvider.key
|
||||
property alias settingStoreIndex: propertyProvider.storeIndex
|
||||
|
||||
property alias propertyProvider: propertyProvider
|
||||
property alias labelText: fieldLabel.text
|
||||
property alias labelFont: fieldLabel.font
|
||||
property alias labelWidth: fieldLabel.width
|
||||
property alias unitText: unitLabel.text
|
||||
|
||||
property alias valueText: textFieldWithUnit.text
|
||||
property alias valueValidator: textFieldWithUnit.validator
|
||||
property alias editingFinishedFunction: textFieldWithUnit.editingFinishedFunction
|
||||
|
||||
property string tooltipText: propertyProvider.properties.description
|
||||
|
||||
// whether negative value is allowed. This affects the validation of the input field.
|
||||
property bool allowNegativeValue: false
|
||||
|
||||
// callback functions
|
||||
property var afterOnEditingFinishedFunction: dummy_func
|
||||
property var forceUpdateOnChangeFunction: dummy_func
|
||||
property var setValueFunction: null
|
||||
|
||||
// a dummy function for default property values
|
||||
function dummy_func() {}
|
||||
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
id: propertyProvider
|
||||
watchedProperties: [ "value", "description" ]
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: fieldLabel
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: textFieldWithUnit.verticalCenter
|
||||
visible: text != ""
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
TextField
|
||||
{
|
||||
id: textFieldWithUnit
|
||||
anchors.left: fieldLabel.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
|
||||
width: numericTextFieldWithUnit.controlWidth
|
||||
height: numericTextFieldWithUnit.controlHeight
|
||||
|
||||
// Background is a rounded-cornered box with filled color as state indication (normal, warning, error, etc.)
|
||||
background: Rectangle
|
||||
{
|
||||
anchors.fill: parent
|
||||
anchors.margins: Math.round(UM.Theme.getSize("default_lining").width)
|
||||
radius: UM.Theme.getSize("setting_control_radius").width
|
||||
|
||||
border.color:
|
||||
{
|
||||
if (!textFieldWithUnit.enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
switch (propertyProvider.properties.validationState)
|
||||
{
|
||||
case "ValidatorState.Exception":
|
||||
case "ValidatorState.MinimumError":
|
||||
case "ValidatorState.MaximumError":
|
||||
return UM.Theme.getColor("setting_validation_error")
|
||||
case "ValidatorState.MinimumWarning":
|
||||
case "ValidatorState.MaximumWarning":
|
||||
return UM.Theme.getColor("setting_validation_warning")
|
||||
}
|
||||
// Validation is OK.
|
||||
if (textFieldWithUnit.hovered || textFieldWithUnit.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
|
||||
color:
|
||||
{
|
||||
if (!textFieldWithUnit.enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
switch (propertyProvider.properties.validationState)
|
||||
{
|
||||
case "ValidatorState.Exception":
|
||||
case "ValidatorState.MinimumError":
|
||||
case "ValidatorState.MaximumError":
|
||||
return UM.Theme.getColor("setting_validation_error_background")
|
||||
case "ValidatorState.MinimumWarning":
|
||||
case "ValidatorState.MaximumWarning":
|
||||
return UM.Theme.getColor("setting_validation_warning_background")
|
||||
case "ValidatorState.Valid":
|
||||
return UM.Theme.getColor("setting_validation_ok")
|
||||
default:
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
hoverEnabled: true
|
||||
selectByMouse: true
|
||||
font: UM.Theme.getFont("default")
|
||||
renderType: Text.NativeRendering
|
||||
|
||||
// When the textbox gets focused by TAB, select all text
|
||||
onActiveFocusChanged:
|
||||
{
|
||||
if (activeFocus && (focusReason == Qt.TabFocusReason || focusReason == Qt.BacktabFocusReason))
|
||||
{
|
||||
selectAll()
|
||||
}
|
||||
}
|
||||
|
||||
text:
|
||||
{
|
||||
const value = propertyProvider.properties.value
|
||||
return value ? value : ""
|
||||
}
|
||||
validator: RegExpValidator { regExp: allowNegativeValue ? /-?[0-9\.,]{0,6}/ : /[0-9\.,]{0,6}/ }
|
||||
|
||||
onEditingFinished: editingFinishedFunction()
|
||||
|
||||
property var editingFinishedFunction: defaultEditingFinishedFunction
|
||||
|
||||
function defaultEditingFinishedFunction()
|
||||
{
|
||||
if (propertyProvider && text != propertyProvider.properties.value)
|
||||
{
|
||||
// For some properties like the extruder-compatible material diameter, they need to
|
||||
// trigger many updates, such as the available materials, the current material may
|
||||
// need to be switched, etc. Although setting the diameter can be done directly via
|
||||
// the provider, all the updates that need to be triggered then need to depend on
|
||||
// the metadata update, a signal that can be fired way too often. The update functions
|
||||
// can have if-checks to filter out the irrelevant updates, but still it incurs unnecessary
|
||||
// overhead.
|
||||
// The ExtruderStack class has a dedicated function for this call "setCompatibleMaterialDiameter()",
|
||||
// and it triggers the diameter update signals only when it is needed. Here it is optionally
|
||||
// choose to use setCompatibleMaterialDiameter() or other more specific functions that
|
||||
// are available.
|
||||
if (setValueFunction !== null)
|
||||
{
|
||||
setValueFunction(text)
|
||||
}
|
||||
else
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", text)
|
||||
}
|
||||
forceUpdateOnChangeFunction()
|
||||
afterOnEditingFinishedFunction()
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: unitLabel
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: Math.round(UM.Theme.getSize("setting_unit_margin").width)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: unitText
|
||||
textFormat: Text.PlainText
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
renderType: Text.NativeRendering
|
||||
color: UM.Theme.getColor("setting_unit")
|
||||
font: UM.Theme.getFont("default")
|
||||
}
|
||||
}
|
||||
}
|
81
resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml
Normal file
81
resources/qml/MachineSettings/PrintHeadMinMaxTextField.qml
Normal file
@ -0,0 +1,81 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This is the widget for editing min and max X and Y for the print head.
|
||||
// The print head is internally stored as a JSON array or array, representing a polygon of the print head.
|
||||
// The polygon array is stored in the format illustrated below:
|
||||
// [ [ -x_min, y_max ],
|
||||
// [ -x_min, -y_min ],
|
||||
// [ x_max, y_max ],
|
||||
// [ x_max, -y_min ],
|
||||
// ]
|
||||
//
|
||||
// In order to modify each field, the widget is configurable via "axisName" and "axisMinOrMax", where
|
||||
// - axisName is "x" or "y"
|
||||
// - axisMinOrMax is "min" or "max"
|
||||
//
|
||||
NumericTextFieldWithUnit
|
||||
{
|
||||
id: machineXMaxField
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
containerStackId: Cura.MachineManager.activeMachineId
|
||||
settingKey: "machine_head_with_fans_polygon"
|
||||
settingStoreIndex: 1
|
||||
|
||||
property string axisName: "x"
|
||||
property string axisMinOrMax: "min"
|
||||
property var axisValue:
|
||||
{
|
||||
var polygon = JSON.parse(propertyProvider.properties.value)
|
||||
var item = (axisName == "x") ? 0 : 1
|
||||
var result = polygon[0][item]
|
||||
var func = (axisMinOrMax == "min") ? Math.min : Math.max
|
||||
for (var i = 1; i < polygon.length; i++)
|
||||
{
|
||||
result = func(result, polygon[i][item])
|
||||
}
|
||||
result = Math.abs(result)
|
||||
return result
|
||||
}
|
||||
|
||||
valueValidator: RegExpValidator { regExp: /[0-9\.,]{0,6}/ }
|
||||
valueText: axisValue
|
||||
|
||||
editingFinishedFunction: function()
|
||||
{
|
||||
var polygon = JSON.parse(propertyProvider.properties.value)
|
||||
|
||||
var newValue = parseFloat(valueText.replace(',', '.'))
|
||||
if (axisName == "x") // x min/x max
|
||||
{
|
||||
var start_i1 = (axisMinOrMax == "min") ? 0 : 2
|
||||
var factor = (axisMinOrMax == "min") ? -1 : 1
|
||||
polygon[start_i1][0] = newValue * factor
|
||||
polygon[start_i1 + 1][0] = newValue * factor
|
||||
}
|
||||
else // y min/y max
|
||||
{
|
||||
var start_i1 = (axisMinOrMax == "min") ? 1 : 0
|
||||
var factor = (axisMinOrMax == "min") ? -1 : 1
|
||||
polygon[start_i1][1] = newValue * factor
|
||||
polygon[start_i1 + 2][1] = newValue * factor
|
||||
}
|
||||
var polygon_string = JSON.stringify(polygon)
|
||||
if (polygon_string != propertyProvider.properties.value)
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", polygon_string)
|
||||
forceUpdateOnChangeFunction()
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: add forceUpdateOnChangeFunction:
|
||||
}
|
73
resources/qml/MachineSettings/SimpleCheckBox.qml
Normal file
73
resources/qml/MachineSettings/SimpleCheckBox.qml
Normal file
@ -0,0 +1,73 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
import QtQuick.Layouts 1.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// CheckBox widget for the on/off or true/false settings in the Machine Settings Dialog.
|
||||
//
|
||||
UM.TooltipArea
|
||||
{
|
||||
id: simpleCheckBox
|
||||
|
||||
UM.I18nCatalog { id: catalog; name: "cura"; }
|
||||
|
||||
property int controlHeight: UM.Theme.getSize("setting_control").height
|
||||
|
||||
height: childrenRect.height
|
||||
width: childrenRect.width
|
||||
text: tooltip
|
||||
|
||||
property alias containerStackId: propertyProvider.containerStackId
|
||||
property alias settingKey: propertyProvider.key
|
||||
property alias settingStoreIndex: propertyProvider.storeIndex
|
||||
|
||||
property alias labelText: fieldLabel.text
|
||||
property alias labelFont: fieldLabel.font
|
||||
property alias labelWidth: fieldLabel.width
|
||||
|
||||
property string tooltip: propertyProvider.properties.description
|
||||
|
||||
// callback functions
|
||||
property var forceUpdateOnChangeFunction: dummy_func
|
||||
|
||||
// a dummy function for default property values
|
||||
function dummy_func() {}
|
||||
|
||||
UM.SettingPropertyProvider
|
||||
{
|
||||
id: propertyProvider
|
||||
watchedProperties: [ "value", "description" ]
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: fieldLabel
|
||||
anchors.left: parent.left
|
||||
anchors.verticalCenter: checkBox.verticalCenter
|
||||
visible: text != ""
|
||||
font: UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Cura.CheckBox
|
||||
{
|
||||
id: checkBox
|
||||
anchors.left: fieldLabel.right
|
||||
anchors.leftMargin: UM.Theme.getSize("default_margin").width
|
||||
checked: String(propertyProvider.properties.value).toLowerCase() != 'false'
|
||||
height: simpleCheckBox.controlHeight
|
||||
text: ""
|
||||
onClicked:
|
||||
{
|
||||
propertyProvider.setPropertyValue("value", checked)
|
||||
forceUpdateOnChangeFunction()
|
||||
}
|
||||
}
|
||||
}
|
@ -14,12 +14,14 @@ Menu
|
||||
|
||||
PrinterMenu { title: catalog.i18nc("@title:menu menubar:settings", "&Printer") }
|
||||
|
||||
property var activeMachine: Cura.MachineManager.activeMachine
|
||||
|
||||
onAboutToShow: extruderInstantiator.active = true
|
||||
onAboutToHide: extruderInstantiator.active = false
|
||||
Instantiator
|
||||
{
|
||||
id: extruderInstantiator
|
||||
model: Cura.MachineManager.activeMachine.extruderList
|
||||
model: activeMachine == null ? null : activeMachine.extruderList
|
||||
active: false
|
||||
asynchronous: true
|
||||
Menu
|
||||
|
@ -1,17 +1,19 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.7
|
||||
import QtQuick.Controls 2.0
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
import UM 1.1 as UM
|
||||
|
||||
SettingItem
|
||||
{
|
||||
id: base
|
||||
property var focusItem: control
|
||||
|
||||
contents: ComboBox
|
||||
contents: Cura.ComboBox
|
||||
{
|
||||
id: control
|
||||
|
||||
@ -20,125 +22,6 @@ SettingItem
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
|
||||
radius: UM.Theme.getSize("setting_control_radius").width
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
||||
indicator: UM.RecolorImage
|
||||
{
|
||||
id: downArrow
|
||||
x: control.width - width - control.rightPadding
|
||||
y: control.topPadding + Math.round((control.availableHeight - height) / 2)
|
||||
|
||||
source: UM.Theme.getIcon("arrow_bottom")
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
height: UM.Theme.getSize("standard_arrow").height
|
||||
sourceSize.width: width + 5 * screenScaleFactor
|
||||
sourceSize.height: width + 5 * screenScaleFactor
|
||||
|
||||
color: UM.Theme.getColor("setting_control_button")
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: downArrow.left
|
||||
|
||||
text: control.currentText
|
||||
textFormat: Text.PlainText
|
||||
renderType: Text.NativeRendering
|
||||
font: UM.Theme.getFont("default")
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
popup: Popup
|
||||
{
|
||||
y: control.height - UM.Theme.getSize("default_lining").height
|
||||
width: control.width
|
||||
implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
|
||||
padding: UM.Theme.getSize("default_lining").width
|
||||
|
||||
contentItem: ListView
|
||||
{
|
||||
clip: true
|
||||
implicitHeight: contentHeight
|
||||
model: control.popup.visible ? control.delegateModel : null
|
||||
currentIndex: control.highlightedIndex
|
||||
|
||||
ScrollIndicator.vertical: ScrollIndicator { }
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color: UM.Theme.getColor("setting_control")
|
||||
border.color: UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
||||
delegate: ItemDelegate
|
||||
{
|
||||
width: control.width - 2 * UM.Theme.getSize("default_lining").width
|
||||
height: control.height
|
||||
highlighted: control.highlightedIndex == index
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
// FIXME: Somehow the top/bottom anchoring is not correct on Linux and it results in invisible texts.
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
|
||||
text: modelData.value
|
||||
textFormat: Text.PlainText
|
||||
renderType: Text.NativeRendering
|
||||
color: control.contentItem.color
|
||||
font: UM.Theme.getFont("default")
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
|
||||
border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
|
||||
}
|
||||
}
|
||||
|
||||
onActivated:
|
||||
{
|
||||
forceActiveFocus()
|
||||
@ -170,29 +53,29 @@ SettingItem
|
||||
value:
|
||||
{
|
||||
// FIXME this needs to go away once 'resolve' is combined with 'value' in our data model.
|
||||
var value = undefined;
|
||||
var value = undefined
|
||||
if ((base.resolve != "None") && (base.stackLevel != 0) && (base.stackLevel != 1))
|
||||
{
|
||||
// We have a resolve function. Indicates that the setting is not settable per extruder and that
|
||||
// we have to choose between the resolved value (default) and the global value
|
||||
// (if user has explicitly set this).
|
||||
value = base.resolve;
|
||||
value = base.resolve
|
||||
}
|
||||
|
||||
if (value == undefined)
|
||||
{
|
||||
value = propertyProvider.properties.value;
|
||||
value = propertyProvider.properties.value
|
||||
}
|
||||
|
||||
for(var i = 0; i < control.model.length; ++i)
|
||||
for (var i = 0; i < control.model.length; i++)
|
||||
{
|
||||
if(control.model[i].key == value)
|
||||
if (control.model[i].key == value)
|
||||
{
|
||||
return i;
|
||||
return i
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
return -1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,7 @@ ScrollView
|
||||
{
|
||||
id: machineButton
|
||||
|
||||
RadioButton
|
||||
Cura.RadioButton
|
||||
{
|
||||
id: radioButton
|
||||
anchors.left: parent.left
|
||||
@ -140,47 +140,7 @@ ScrollView
|
||||
|
||||
checked: ListView.view.currentIndex == index
|
||||
text: name
|
||||
font: UM.Theme.getFont("default")
|
||||
visible: base.currentSection == section
|
||||
|
||||
background: Item
|
||||
{
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
indicator: Rectangle
|
||||
{
|
||||
implicitWidth: UM.Theme.getSize("radio_button").width
|
||||
implicitHeight: UM.Theme.getSize("radio_button").height
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
radius: (width / 2) | 0
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: radioButton.hovered ? UM.Theme.getColor("small_button_text") : UM.Theme.getColor("small_button_text_hover")
|
||||
|
||||
Rectangle
|
||||
{
|
||||
width: (parent.width / 2) | 0
|
||||
height: width
|
||||
anchors.centerIn: parent
|
||||
radius: (width / 2) | 0
|
||||
color: radioButton.hovered ? UM.Theme.getColor("primary_button_hover") : UM.Theme.getColor("primary_button")
|
||||
visible: radioButton.checked
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
leftPadding: radioButton.indicator.width + radioButton.spacing
|
||||
text: radioButton.text
|
||||
font: radioButton.font
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
onClicked:
|
||||
{
|
||||
ListView.view.currentIndex = index
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,7 @@ Item
|
||||
}
|
||||
|
||||
text: catalog.i18nc("@button", "Next")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked:
|
||||
{
|
||||
@ -135,18 +135,18 @@ Item
|
||||
// Create a network printer
|
||||
const networkPrinterItem = addNetworkPrinterDropDown.contentItem.currentItem
|
||||
CuraApplication.getDiscoveredPrintersModel().createMachineFromDiscoveredPrinter(networkPrinterItem)
|
||||
|
||||
// If we have created a machine, go to the last page, which is the "cloud" page.
|
||||
base.goToPage("cloud")
|
||||
}
|
||||
else
|
||||
{
|
||||
// Create a local printer
|
||||
const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem
|
||||
Cura.MachineManager.addMachine(localPrinterItem.id)
|
||||
|
||||
base.showNextPage()
|
||||
}
|
||||
|
||||
// TODO: implement machine actions
|
||||
|
||||
// If we have created a machine, go to the last page, which is the "cloud" page.
|
||||
base.goToPage("cloud")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ Item
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Finish")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
@ -115,7 +115,7 @@ Item
|
||||
anchors.verticalCenter: finishButton.verticalCenter
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Create an account")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: Qt.openUrlExternally(CuraApplication.ultimakerCloudAccountRootUrl + "/app/create")
|
||||
}
|
||||
|
@ -89,7 +89,7 @@ Item
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Next")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
@ -0,0 +1,80 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process.
|
||||
//
|
||||
Item
|
||||
{
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
||||
property var machineActionsModel: CuraApplication.getFirstStartMachineActionsModel()
|
||||
|
||||
Component.onCompleted:
|
||||
{
|
||||
// Reset the action to start from the beginning when it is shown.
|
||||
machineActionsModel.reset()
|
||||
}
|
||||
|
||||
// Go to the next page when all machine actions have been finished
|
||||
Connections
|
||||
{
|
||||
target: machineActionsModel
|
||||
onAllFinished:
|
||||
{
|
||||
if (visible)
|
||||
{
|
||||
base.showNextPage()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label
|
||||
{
|
||||
id: titleLabel
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: UM.Theme.getSize("welcome_pages_default_margin").height
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: machineActionsModel.currentItem.title == undefined ? "" : machineActionsModel.currentItem.title
|
||||
color: UM.Theme.getColor("primary_button")
|
||||
font: UM.Theme.getFont("large_bold")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
|
||||
Item
|
||||
{
|
||||
anchors.top: titleLabel.bottom
|
||||
anchors.bottom: nextButton.top
|
||||
anchors.margins: UM.Theme.getSize("default_margin").width
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
data: machineActionsModel.currentItem.content == undefined ? emptyItem : machineActionsModel.currentItem.content
|
||||
}
|
||||
|
||||
// An empty item in case there's no currentItem.content to show
|
||||
Item
|
||||
{
|
||||
id: emptyItem
|
||||
}
|
||||
|
||||
Cura.PrimaryButton
|
||||
{
|
||||
id: nextButton
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Next")
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: machineActionsModel.goToNextAction()
|
||||
}
|
||||
}
|
@ -61,7 +61,7 @@ Item
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Agree")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked:
|
||||
{
|
||||
@ -78,7 +78,7 @@ Item
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Decline and close")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked:
|
||||
{
|
||||
|
@ -57,7 +57,7 @@ Item
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Get started")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
@ -10,6 +10,9 @@ import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This is a no-frame dialog that shows the welcome process.
|
||||
//
|
||||
Window
|
||||
{
|
||||
UM.I18nCatalog { id: catalog; name: "cura" }
|
||||
|
@ -67,7 +67,7 @@ Item
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: UM.Theme.getSize("welcome_pages_default_margin").width
|
||||
text: catalog.i18nc("@button", "Next")
|
||||
width: 140
|
||||
width: UM.Theme.getSize("welcome_pages_button").width
|
||||
fixedWidthMode: true
|
||||
onClicked: base.showNextPage()
|
||||
}
|
||||
|
@ -7,8 +7,6 @@ import QtQuick.Controls 2.3
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
import "../Widgets"
|
||||
|
||||
|
||||
//
|
||||
// This item is a wizard panel that contains a progress bar at the top and a content area that's beneath the progress
|
||||
@ -42,7 +40,7 @@ Item
|
||||
anchors.fill: parent
|
||||
radius: UM.Theme.getSize("default_radius").width
|
||||
|
||||
CuraProgressBar
|
||||
Cura.ProgressBar
|
||||
{
|
||||
id: progressBar
|
||||
anchors.top: parent.top
|
||||
|
76
resources/qml/Widgets/CheckBox.qml
Normal file
76
resources/qml/Widgets/CheckBox.qml
Normal file
@ -0,0 +1,76 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// ComboBox with Cura styling.
|
||||
//
|
||||
CheckBox
|
||||
{
|
||||
id: control
|
||||
|
||||
hoverEnabled: true
|
||||
|
||||
indicator: Rectangle
|
||||
{
|
||||
width: control.height
|
||||
height: control.height
|
||||
|
||||
color:
|
||||
{
|
||||
if (!control.enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
|
||||
radius: UM.Theme.getSize("setting_control_radius").width
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
|
||||
UM.RecolorImage
|
||||
{
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
width: Math.round(parent.width / 2.5)
|
||||
height: Math.round(parent.height / 2.5)
|
||||
sourceSize.height: width
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
|
||||
source: UM.Theme.getIcon("check")
|
||||
opacity: control.checked ? 1 : 0
|
||||
Behavior on opacity { NumberAnimation { duration: 100; } }
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
id: textLabel
|
||||
leftPadding: control.indicator.width + control.spacing
|
||||
text: control.text
|
||||
font: control.font
|
||||
renderType: Text.NativeRendering
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
}
|
152
resources/qml/Widgets/ComboBox.qml
Normal file
152
resources/qml/Widgets/ComboBox.qml
Normal file
@ -0,0 +1,152 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// ComboBox with Cura styling.
|
||||
//
|
||||
ComboBox
|
||||
{
|
||||
id: control
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled")
|
||||
}
|
||||
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control")
|
||||
}
|
||||
|
||||
radius: UM.Theme.getSize("setting_control_radius").width
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color:
|
||||
{
|
||||
if (!enabled)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_disabled_border")
|
||||
}
|
||||
|
||||
if (control.hovered || control.activeFocus)
|
||||
{
|
||||
return UM.Theme.getColor("setting_control_border_highlight")
|
||||
}
|
||||
|
||||
return UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
||||
indicator: UM.RecolorImage
|
||||
{
|
||||
id: downArrow
|
||||
x: control.width - width - control.rightPadding
|
||||
y: control.topPadding + Math.round((control.availableHeight - height) / 2)
|
||||
|
||||
source: UM.Theme.getIcon("arrow_bottom")
|
||||
width: UM.Theme.getSize("standard_arrow").width
|
||||
height: UM.Theme.getSize("standard_arrow").height
|
||||
sourceSize.width: width + 5 * screenScaleFactor
|
||||
sourceSize.height: width + 5 * screenScaleFactor
|
||||
|
||||
color: UM.Theme.getColor("setting_control_button")
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.right: downArrow.left
|
||||
|
||||
text: control.currentText
|
||||
textFormat: Text.PlainText
|
||||
renderType: Text.NativeRendering
|
||||
font: UM.Theme.getFont("default")
|
||||
color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
popup: Popup
|
||||
{
|
||||
y: control.height - UM.Theme.getSize("default_lining").height
|
||||
width: control.width
|
||||
implicitHeight: contentItem.implicitHeight + 2 * UM.Theme.getSize("default_lining").width
|
||||
padding: UM.Theme.getSize("default_lining").width
|
||||
|
||||
contentItem: ListView
|
||||
{
|
||||
clip: true
|
||||
implicitHeight: contentHeight
|
||||
model: control.popup.visible ? control.delegateModel : null
|
||||
currentIndex: control.highlightedIndex
|
||||
|
||||
ScrollIndicator.vertical: ScrollIndicator { }
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color: UM.Theme.getColor("setting_control")
|
||||
border.color: UM.Theme.getColor("setting_control_border")
|
||||
}
|
||||
}
|
||||
|
||||
delegate: ItemDelegate
|
||||
{
|
||||
id: delegateItem
|
||||
width: control.width - 2 * UM.Theme.getSize("default_lining").width
|
||||
height: control.height
|
||||
highlighted: control.highlightedIndex == index
|
||||
text:
|
||||
// FIXME: Maybe there is a better way to do this. Check model and modelData doc page:
|
||||
// https://doc.qt.io/qt-5/qtquick-modelviewsdata-modelview.html
|
||||
{
|
||||
var _val = undefined
|
||||
if (typeof _val === 'undefined') // try to get textRole from "model".
|
||||
{
|
||||
_val = model[textRole]
|
||||
}
|
||||
if (typeof _val === 'undefined') // try to get textRole from "modelData" if it's still undefined.
|
||||
{
|
||||
_val = modelData[textRole]
|
||||
}
|
||||
return (typeof _val !== 'undefined') ? _val : ""
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
// FIXME: Somehow the top/bottom anchoring is not correct on Linux and it results in invisible texts.
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
anchors.rightMargin: UM.Theme.getSize("setting_unit_margin").width
|
||||
|
||||
text: delegateItem.text
|
||||
textFormat: Text.PlainText
|
||||
renderType: Text.NativeRendering
|
||||
color: control.contentItem.color
|
||||
font: UM.Theme.getFont("default")
|
||||
elide: Text.ElideRight
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
|
||||
background: Rectangle
|
||||
{
|
||||
color: parent.highlighted ? UM.Theme.getColor("setting_control_highlight") : "transparent"
|
||||
border.color: parent.highlighted ? UM.Theme.getColor("setting_control_border_highlight") : "transparent"
|
||||
}
|
||||
}
|
||||
}
|
53
resources/qml/Widgets/RadioButton.qml
Normal file
53
resources/qml/Widgets/RadioButton.qml
Normal file
@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.0 as Cura
|
||||
|
||||
|
||||
//
|
||||
// Cura-style RadioButton.
|
||||
//
|
||||
RadioButton
|
||||
{
|
||||
id: radioButton
|
||||
|
||||
font: UM.Theme.getFont("default")
|
||||
|
||||
background: Item
|
||||
{
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
indicator: Rectangle
|
||||
{
|
||||
implicitWidth: UM.Theme.getSize("radio_button").width
|
||||
implicitHeight: UM.Theme.getSize("radio_button").height
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
radius: (width / 2) | 0
|
||||
border.width: UM.Theme.getSize("default_lining").width
|
||||
border.color: radioButton.hovered ? UM.Theme.getColor("small_button_text") : UM.Theme.getColor("small_button_text_hover")
|
||||
|
||||
Rectangle
|
||||
{
|
||||
width: (parent.width / 2) | 0
|
||||
height: width
|
||||
anchors.centerIn: parent
|
||||
radius: (width / 2) | 0
|
||||
color: radioButton.hovered ? UM.Theme.getColor("primary_button_hover") : UM.Theme.getColor("primary_button")
|
||||
visible: radioButton.checked
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
leftPadding: radioButton.indicator.width + radioButton.spacing
|
||||
text: radioButton.text
|
||||
font: radioButton.font
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
28
resources/qml/Widgets/TabButton.qml
Normal file
28
resources/qml/Widgets/TabButton.qml
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright (c) 2019 Ultimaker B.V.
|
||||
// Cura is released under the terms of the LGPLv3 or higher.
|
||||
|
||||
import QtQuick 2.10
|
||||
import QtQuick.Controls 2.3
|
||||
|
||||
import UM 1.3 as UM
|
||||
import Cura 1.1 as Cura
|
||||
|
||||
|
||||
//
|
||||
// This is the default Cura Tab button which is a plaintext label.
|
||||
//
|
||||
UM.TabRowButton
|
||||
{
|
||||
id: tabButton
|
||||
text: model.name
|
||||
|
||||
contentItem: Label
|
||||
{
|
||||
anchors.centerIn: tabButton
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
text: tabButton.text
|
||||
font: tabButton.checked ? UM.Theme.getFont("medium_bold") : UM.Theme.getFont("medium")
|
||||
renderType: Text.NativeRendering
|
||||
}
|
||||
}
|
@ -17,3 +17,21 @@ SettingView 1.0 SettingView.qml
|
||||
ProfileMenu 1.0 ProfileMenu.qml
|
||||
CheckBoxWithTooltip 1.0 CheckBoxWithTooltip.qml
|
||||
ToolTip 1.0 ToolTip.qml
|
||||
|
||||
|
||||
# Cura/Widgets
|
||||
|
||||
CheckBox 1.0 CheckBox.qml
|
||||
ComboBox 1.0 ComboBox.qml
|
||||
ProgressBar 1.0 ProgressBar.qml
|
||||
RadioButton 1.0 RadioButton.qml
|
||||
TabButton 1.0 TabButton.qml
|
||||
|
||||
|
||||
# Cura/MachineSettings
|
||||
|
||||
ComboBoxWithOptions 1.0 ComboBoxWithOptions.qml
|
||||
GcodeTextArea 1.0 GcodeTextArea.qml
|
||||
NumericTextFieldWithUnit 1.0 NumericTextFieldWithUnit.qml
|
||||
PrintHeadMinMaxTextField 1.0 PrintHeadMinMaxTextField.qml
|
||||
SimpleCheckBox 1.0 SimpleCheckBox.qml
|
||||
|
@ -507,6 +507,7 @@
|
||||
"button_icon": [2.5, 2.5],
|
||||
"button_lining": [0, 0],
|
||||
|
||||
"welcome_pages_button": [12.0, 2.5],
|
||||
"welcome_pages_default_margin": [2.5, 2.5],
|
||||
|
||||
"action_button": [15.0, 2.5],
|
||||
|
Loading…
x
Reference in New Issue
Block a user