Esempio n. 1
0
 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")
Esempio n. 2
0
    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
Esempio n. 3
0
 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
Esempio n. 4
0
    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
Esempio n. 5
0
    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)