def setUp(self): # Called before the first testfunction is executed self._setting = Setting("TestSetting", 10, "int") self._machine_settings = MachineSettings() category = SettingsCategory("TestCategory") #category.addSetting(self._setting) self._machine_settings.addSettingsCategory(category) self._machine_settings.loadSettingsFromFile( "tests/Settings/SettingData.json")
def loadAll(self): if self._loaded: return with open(self._path, "rt", -1, "utf-8") as f: self._json_data = json.load( f, object_pairs_hook=collections.OrderedDict) if not self._name: self.loadMetaData() self._i18n_catalog = i18nCatalog(os.path.basename(self._path)) self._platform_mesh = self._json_data.get("platform", "") self._platform_texture = self._json_data.get("platform_texture", "") if "inherits" in self._json_data: inherits_from = MachineDefinition( self._machine_manager, Resources.getPath(Resources.MachineDefinitions, self._json_data["inherits"])) inherits_from.loadAll() self._machine_settings = inherits_from._machine_settings self._categories = inherits_from._categories if "machine_settings" in self._json_data: for key, value in self._json_data["machine_settings"].items(): setting = self.getSetting(key) if not setting: setting = Setting(self._machine_manager, key, self._i18n_catalog) self._machine_settings.append(setting) setting.fillByDict(value) if "categories" in self._json_data: for key, value in self._json_data["categories"].items(): category = self.getSettingsCategory(key) if not category: category = SettingsCategory(self._machine_manager, key, self._i18n_catalog, self) self._categories.append(category) category.fillByDict(value) if "overrides" in self._json_data: for key, value in self._json_data["overrides"].items(): setting = self.getSetting(key) if not setting: continue setting.fillByDict(value) self.settingsLoaded.emit() #self._json_data = None self._loaded = True
def __init__(self): super().__init__() self._settings = None self._settings_model = None try: setting_data = self.getSettingData() if "key" in setting_data: self._settings = SettingsCategory(setting_data["key"], i18n_catalog, self) self._settings.fillByDict(self.getSettingData()) self._settings_model = SettingsFromCategoryModel( self._settings) else: Logger.log("e", "Script has no key in meta data. Unable to use.") except NotImplementedError: pass
def loadAll(self): if self._loaded: return with open(self._path, "rt", -1, "utf-8") as f: try: self._json_data = json.load( f, object_pairs_hook=collections.OrderedDict) except JSONDecodeError as e: raise SettingsError.InvalidFileError(self._path) from e if not self._name: self.loadMetaData() self._i18n_catalog = i18nCatalog(os.path.basename(self._path)) self._platform_mesh = self._json_data.get("platform", "") self._platform_texture = self._json_data.get("platform_texture", "") if "inherits" in self._json_data: try: path = Resources.getPath(Resources.MachineDefinitions, self._json_data["inherits"]) except FileNotFoundError as e: # If we cannot find the file in Resources, try and see if it can be found relative to this file. # This is primarily used by the unit tests. path = os.path.join(os.path.dirname(self._path), self._json_data["inherits"]) if not os.path.exists(path): raise FileNotFoundError( "Could not find file {0} in Resources or next to {1}". format(self._json_data["inherits"], self._path)) from e inherits_from = MachineDefinition(self._machine_manager, path) inherits_from.loadAll() self._machine_settings = inherits_from._machine_settings self._categories = inherits_from._categories self._preferences = inherits_from._preferences if "machine_settings" in self._json_data: for key, value in self._json_data["machine_settings"].items(): setting = self.getSetting(key) if not setting: setting = Setting(self._machine_manager, key, self._i18n_catalog) self._machine_settings.append(setting) setting.fillByDict(value) if "categories" in self._json_data: for key, value in self._json_data["categories"].items(): category = self.getSettingsCategory(key) if not category: category = SettingsCategory(self._machine_manager, key, self._i18n_catalog, self) self._categories.append(category) category.fillByDict(value) if "overrides" in self._json_data: for key, value in self._json_data["overrides"].items(): setting = self.getSetting(key) if not setting: continue setting.fillByDict(value) if "machine_preferences" in self._json_data: for key, value in self._json_data["machine_preferences"].items(): self._preferences[key] = value self.settingsLoaded.emit() self._loaded = True
def loadSettingsFromFile(self, file_name): with open(file_name, "rt", -1, "utf-8") as f: data = json.load(f, object_pairs_hook=collections.OrderedDict) if "id" not in data or "name" not in data: raise SettingsError.InvalidFileError(file_name) if "version" not in data or data[ "version"] != self.MachineDefinitionVersion: raise SettingsError.InvalidVersionError(file_name) self._i18n_catalog = i18nCatalog(os.path.basename(file_name)) self._json_file = file_name self._type_id = data["id"] self._type_name = data["name"] if "platform" in data: self._platform_mesh = data["platform"] if "platform_texture" in data: self._platform_texture = data["platform_texture"] if "version" in data: self._type_version = str(data["version"]) if "icon" in data: self._icon = data["icon"] if "inherits" in data: inherits_from = MachineSettings() inherits_from.loadSettingsFromFile( os.path.dirname(file_name) + "/" + data["inherits"]) self._machine_settings = inherits_from._machine_settings self._categories = inherits_from._categories if "machine_settings" in data: for key, value in data["machine_settings"].items(): setting = self.getSettingByKey(key) if not setting: setting = Setting(key, self._i18n_catalog) self.addSetting(setting) setting.fillByDict(value) if "categories" in data: for key, value in data["categories"].items(): category = self.getSettingsCategory(key) if not category: category = SettingsCategory(key, self._i18n_catalog, self) self.addSettingsCategory(category) category.fillByDict(value) if "overrides" in data: for key, value in data["overrides"].items(): setting = self.getSettingByKey(key) if not setting: continue setting.fillByDict(value) for setting in self.getAllSettings(): setting.valueChanged.connect(self.settingChanged) self.settingsLoaded.emit( ) #Emit signal that all settings are loaded (some setting stuff can only be done when all settings are loaded (eg; the conditional stuff)