|
@@ -15,13 +15,13 @@ import numpy
|
|
|
from PyQt6.QtCore import QObject, QTimer, QUrl, QUrlQuery, pyqtSignal, pyqtProperty, QEvent, pyqtEnum, QCoreApplication, \
|
|
|
QByteArray
|
|
|
from PyQt6.QtGui import QColor, QIcon
|
|
|
-from PyQt6.QtQml import qmlRegisterUncreatableType, qmlRegisterUncreatableMetaObject, qmlRegisterSingletonType, qmlRegisterType
|
|
|
+from PyQt6.QtQml import qmlRegisterUncreatableMetaObject, qmlRegisterSingletonType, qmlRegisterType
|
|
|
from PyQt6.QtWidgets import QMessageBox
|
|
|
|
|
|
import UM.Util
|
|
|
import cura.Settings.cura_empty_instance_containers
|
|
|
from UM.Application import Application
|
|
|
-from UM.Decorators import override
|
|
|
+from UM.Decorators import override, deprecated
|
|
|
from UM.FlameProfiler import pyqtSlot
|
|
|
from UM.Logger import Logger
|
|
|
from UM.Math.AxisAlignedBox import AxisAlignedBox
|
|
@@ -104,7 +104,8 @@ from cura.Settings.SettingInheritanceManager import SettingInheritanceManager
|
|
|
from cura.Settings.SidebarCustomMenuItemsModel import SidebarCustomMenuItemsModel
|
|
|
from cura.Settings.SimpleModeSettingsManager import SimpleModeSettingsManager
|
|
|
from cura.TaskManagement.OnExitCallbackManager import OnExitCallbackManager
|
|
|
-from cura.UI import CuraSplashScreen, MachineActionManager, PrintInformation
|
|
|
+from cura.UI import CuraSplashScreen, PrintInformation
|
|
|
+from cura.UI.MachineActionManager import MachineActionManager
|
|
|
from cura.UI.AddPrinterPagesModel import AddPrinterPagesModel
|
|
|
from cura.UI.MachineSettingsManager import MachineSettingsManager
|
|
|
from cura.UI.ObjectsModel import ObjectsModel
|
|
@@ -180,6 +181,7 @@ class CuraApplication(QtApplication):
|
|
|
|
|
|
# Variables set from CLI
|
|
|
self._files_to_open = []
|
|
|
+ self._urls_to_open = []
|
|
|
self._use_single_instance = False
|
|
|
|
|
|
self._single_instance = None
|
|
@@ -187,12 +189,12 @@ class CuraApplication(QtApplication):
|
|
|
|
|
|
self._cura_formula_functions = None # type: Optional[CuraFormulaFunctions]
|
|
|
|
|
|
- self._machine_action_manager = None # type: Optional[MachineActionManager.MachineActionManager]
|
|
|
+ self._machine_action_manager: Optional[MachineActionManager] = None
|
|
|
|
|
|
self.empty_container = None # type: EmptyInstanceContainer
|
|
|
self.empty_definition_changes_container = None # type: EmptyInstanceContainer
|
|
|
self.empty_variant_container = None # type: EmptyInstanceContainer
|
|
|
- self.empty_intent_container = None # type: EmptyInstanceContainer
|
|
|
+ self.empty_intent_container = None # type: EmptyInstanceContainer
|
|
|
self.empty_material_container = None # type: EmptyInstanceContainer
|
|
|
self.empty_quality_container = None # type: EmptyInstanceContainer
|
|
|
self.empty_quality_changes_container = None # type: EmptyInstanceContainer
|
|
@@ -335,7 +337,7 @@ class CuraApplication(QtApplication):
|
|
|
for filename in self._cli_args.file:
|
|
|
url = QUrl(filename)
|
|
|
if url.scheme() in self._supported_url_schemes:
|
|
|
- self._open_url_queue.append(url)
|
|
|
+ self._urls_to_open.append(url)
|
|
|
else:
|
|
|
self._files_to_open.append(os.path.abspath(filename))
|
|
|
|
|
@@ -354,11 +356,11 @@ class CuraApplication(QtApplication):
|
|
|
self.__addAllEmptyContainers()
|
|
|
self.__setLatestResouceVersionsForVersionUpgrade()
|
|
|
|
|
|
- self._machine_action_manager = MachineActionManager.MachineActionManager(self)
|
|
|
+ self._machine_action_manager = MachineActionManager(self)
|
|
|
self._machine_action_manager.initialize()
|
|
|
|
|
|
def __sendCommandToSingleInstance(self):
|
|
|
- self._single_instance = SingleInstance(self, self._files_to_open)
|
|
|
+ self._single_instance = SingleInstance(self, self._files_to_open, self._urls_to_open)
|
|
|
|
|
|
# If we use single instance, try to connect to the single instance server, send commands, and then exit.
|
|
|
# If we cannot find an existing single instance server, this is the only instance, so just keep going.
|
|
@@ -375,9 +377,15 @@ class CuraApplication(QtApplication):
|
|
|
Resources.addExpectedDirNameInData(dir_name)
|
|
|
|
|
|
app_root = os.path.abspath(os.path.join(os.path.dirname(sys.executable)))
|
|
|
- Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources"))
|
|
|
|
|
|
- Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources"))
|
|
|
+ if platform.system() == "Darwin":
|
|
|
+ Resources.addSecureSearchPath(os.path.join(app_root, "Resources", "share", "cura", "resources"))
|
|
|
+ Resources.addSecureSearchPath(
|
|
|
+ os.path.join(self._app_install_dir, "Resources", "share", "cura", "resources"))
|
|
|
+ else:
|
|
|
+ Resources.addSecureSearchPath(os.path.join(app_root, "share", "cura", "resources"))
|
|
|
+ Resources.addSecureSearchPath(os.path.join(self._app_install_dir, "share", "cura", "resources"))
|
|
|
+
|
|
|
if not hasattr(sys, "frozen"):
|
|
|
cura_data_root = os.environ.get('CURA_DATA_ROOT', None)
|
|
|
if cura_data_root:
|
|
@@ -959,6 +967,8 @@ class CuraApplication(QtApplication):
|
|
|
self.callLater(self._openFile, file_name)
|
|
|
for file_name in self._open_file_queue: # Open all the files that were queued up while plug-ins were loading.
|
|
|
self.callLater(self._openFile, file_name)
|
|
|
+ for url in self._urls_to_open:
|
|
|
+ self.callLater(self._openUrl, url)
|
|
|
for url in self._open_url_queue:
|
|
|
self.callLater(self._openUrl, url)
|
|
|
|
|
@@ -1098,6 +1108,10 @@ class CuraApplication(QtApplication):
|
|
|
self._object_manager = ObjectsModel(self)
|
|
|
return self._object_manager
|
|
|
|
|
|
+ @pyqtSlot(str, result = "QVariantList")
|
|
|
+ def getSupportedActionMachineList(self, definition_id: str) -> List["MachineAction"]:
|
|
|
+ return self._machine_action_manager.getSupportedActions(self._machine_manager.getDefinitionByMachineId(definition_id))
|
|
|
+
|
|
|
@pyqtSlot(result = QObject)
|
|
|
def getExtrudersModel(self, *args) -> "ExtrudersModel":
|
|
|
if self._extruders_model is None:
|
|
@@ -1133,14 +1147,16 @@ class CuraApplication(QtApplication):
|
|
|
self._setting_inheritance_manager = SettingInheritanceManager.createSettingInheritanceManager()
|
|
|
return self._setting_inheritance_manager
|
|
|
|
|
|
- def getMachineActionManager(self, *args: Any) -> MachineActionManager.MachineActionManager:
|
|
|
+ @pyqtSlot(result = QObject)
|
|
|
+ def getMachineActionManager(self, *args: Any) -> MachineActionManager:
|
|
|
"""Get the machine action manager
|
|
|
|
|
|
We ignore any *args given to this, as we also register the machine manager as qml singleton.
|
|
|
It wants to give this function an engine and script engine, but we don't care about that.
|
|
|
"""
|
|
|
|
|
|
- return cast(MachineActionManager.MachineActionManager, self._machine_action_manager)
|
|
|
+ return self._machine_action_manager
|
|
|
+
|
|
|
|
|
|
@pyqtSlot(result = QObject)
|
|
|
def getMaterialManagementModel(self) -> MaterialManagementModel:
|
|
@@ -1154,7 +1170,8 @@ class CuraApplication(QtApplication):
|
|
|
self._quality_management_model = QualityManagementModel(parent = self)
|
|
|
return self._quality_management_model
|
|
|
|
|
|
- def getSimpleModeSettingsManager(self, *args):
|
|
|
+ @pyqtSlot(result=QObject)
|
|
|
+ def getSimpleModeSettingsManager(self)-> SimpleModeSettingsManager:
|
|
|
if self._simple_mode_settings_manager is None:
|
|
|
self._simple_mode_settings_manager = SimpleModeSettingsManager()
|
|
|
return self._simple_mode_settings_manager
|
|
@@ -1197,16 +1214,43 @@ class CuraApplication(QtApplication):
|
|
|
|
|
|
return self._print_information
|
|
|
|
|
|
- def getQualityProfilesDropDownMenuModel(self, *args, **kwargs):
|
|
|
+ @pyqtSlot(result=QObject)
|
|
|
+ def getQualityProfilesDropDownMenuModel(self, *args, **kwargs)-> QualityProfilesDropDownMenuModel:
|
|
|
if self._quality_profile_drop_down_menu_model is None:
|
|
|
self._quality_profile_drop_down_menu_model = QualityProfilesDropDownMenuModel(self)
|
|
|
return self._quality_profile_drop_down_menu_model
|
|
|
|
|
|
- def getCustomQualityProfilesDropDownMenuModel(self, *args, **kwargs):
|
|
|
+ @pyqtSlot(result=QObject)
|
|
|
+ def getCustomQualityProfilesDropDownMenuModel(self, *args, **kwargs)->CustomQualityProfilesDropDownMenuModel:
|
|
|
if self._custom_quality_profile_drop_down_menu_model is None:
|
|
|
self._custom_quality_profile_drop_down_menu_model = CustomQualityProfilesDropDownMenuModel(self)
|
|
|
return self._custom_quality_profile_drop_down_menu_model
|
|
|
|
|
|
+ @deprecated("SimpleModeSettingsManager is deprecated and will be removed in major SDK release, Use getSimpleModeSettingsManager() instead", since = "5.7.0")
|
|
|
+ def getSimpleModeSettingsManagerWrapper(self, *args, **kwargs):
|
|
|
+ return self.getSimpleModeSettingsManager()
|
|
|
+
|
|
|
+ @deprecated("MachineActionManager is deprecated and will be removed in major SDK release, Use getMachineActionManager() instead", since="5.7.0")
|
|
|
+ def getMachineActionManagerWrapper(self, *args, **kwargs):
|
|
|
+ return self.getMachineActionManager()
|
|
|
+
|
|
|
+ @deprecated("QualityManagementModel is deprecated and will be removed in major SDK release, Use getQualityManagementModel() instead", since="5.7.0")
|
|
|
+ def getQualityManagementModelWrapper(self, *args, **kwargs):
|
|
|
+ return self.getQualityManagementModel()
|
|
|
+
|
|
|
+ @deprecated("MaterialManagementModel is deprecated and will be removed in major SDK release, Use getMaterialManagementModel() instead", since = "5.7.0")
|
|
|
+ def getMaterialManagementModelWrapper(self, *args, **kwargs):
|
|
|
+ return self.getMaterialManagementModel()
|
|
|
+
|
|
|
+ @deprecated("QualityProfilesDropDownMenuModel is deprecated and will be removed in major SDK release, Use getQualityProfilesDropDownMenuModel() instead", since = "5.7.0")
|
|
|
+ def getQualityProfilesDropDownMenuModelWrapper(self, *args, **kwargs):
|
|
|
+ return self.getQualityProfilesDropDownMenuModel()
|
|
|
+
|
|
|
+ @deprecated("CustomQualityProfilesDropDownMenuModel is deprecated and will be removed in major SDK release, Use getCustomQualityProfilesDropDownMenuModel() instead", since = "5.7.0")
|
|
|
+ def getCustomQualityProfilesDropDownMenuModelWrapper(self, *args, **kwargs):
|
|
|
+ return self.getCustomQualityProfilesDropDownMenuModel()
|
|
|
+
|
|
|
+
|
|
|
def getCuraAPI(self, *args, **kwargs) -> "CuraAPI":
|
|
|
return self._cura_API
|
|
|
|
|
@@ -1236,8 +1280,8 @@ class CuraApplication(QtApplication):
|
|
|
qmlRegisterSingletonType(MachineManager, "Cura", 1, 0, self.getMachineManager, "MachineManager")
|
|
|
qmlRegisterSingletonType(IntentManager, "Cura", 1, 6, self.getIntentManager, "IntentManager")
|
|
|
qmlRegisterSingletonType(SettingInheritanceManager, "Cura", 1, 0, self.getSettingInheritanceManager, "SettingInheritanceManager")
|
|
|
- qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, self.getSimpleModeSettingsManager, "SimpleModeSettingsManager")
|
|
|
- qmlRegisterSingletonType(MachineActionManager.MachineActionManager, "Cura", 1, 0, self.getMachineActionManager, "MachineActionManager")
|
|
|
+ qmlRegisterSingletonType(SimpleModeSettingsManager, "Cura", 1, 0, self.getSimpleModeSettingsManagerWrapper, "SimpleModeSettingsManager")
|
|
|
+ qmlRegisterSingletonType(MachineActionManager, "Cura", 1, 0, self.getMachineActionManagerWrapper, "MachineActionManager")
|
|
|
|
|
|
self.processEvents()
|
|
|
qmlRegisterType(NetworkingUtil, "Cura", 1, 5, "NetworkingUtil")
|
|
@@ -1262,16 +1306,14 @@ class CuraApplication(QtApplication):
|
|
|
qmlRegisterType(FavoriteMaterialsModel, "Cura", 1, 0, "FavoriteMaterialsModel")
|
|
|
qmlRegisterType(GenericMaterialsModel, "Cura", 1, 0, "GenericMaterialsModel")
|
|
|
qmlRegisterType(MaterialBrandsModel, "Cura", 1, 0, "MaterialBrandsModel")
|
|
|
- qmlRegisterSingletonType(QualityManagementModel, "Cura", 1, 0, self.getQualityManagementModel, "QualityManagementModel")
|
|
|
- qmlRegisterSingletonType(MaterialManagementModel, "Cura", 1, 5, self.getMaterialManagementModel, "MaterialManagementModel")
|
|
|
+ qmlRegisterSingletonType(QualityManagementModel, "Cura", 1, 0, self.getQualityManagementModelWrapper,"QualityManagementModel")
|
|
|
+ qmlRegisterSingletonType(MaterialManagementModel, "Cura", 1, 5, self.getMaterialManagementModelWrapper,"MaterialManagementModel")
|
|
|
|
|
|
self.processEvents()
|
|
|
qmlRegisterType(DiscoveredPrintersModel, "Cura", 1, 0, "DiscoveredPrintersModel")
|
|
|
qmlRegisterType(DiscoveredCloudPrintersModel, "Cura", 1, 7, "DiscoveredCloudPrintersModel")
|
|
|
- qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0,
|
|
|
- self.getQualityProfilesDropDownMenuModel, "QualityProfilesDropDownMenuModel")
|
|
|
- qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0,
|
|
|
- self.getCustomQualityProfilesDropDownMenuModel, "CustomQualityProfilesDropDownMenuModel")
|
|
|
+ qmlRegisterSingletonType(QualityProfilesDropDownMenuModel, "Cura", 1, 0, self.getQualityProfilesDropDownMenuModelWrapper, "QualityProfilesDropDownMenuModel")
|
|
|
+ qmlRegisterSingletonType(CustomQualityProfilesDropDownMenuModel, "Cura", 1, 0, self.getCustomQualityProfilesDropDownMenuModelWrapper, "CustomQualityProfilesDropDownMenuModel")
|
|
|
qmlRegisterType(NozzleModel, "Cura", 1, 0, "NozzleModel")
|
|
|
qmlRegisterType(IntentModel, "Cura", 1, 6, "IntentModel")
|
|
|
qmlRegisterType(IntentCategoryModel, "Cura", 1, 6, "IntentCategoryModel")
|