Esempio n. 1
0
    def upgrade_settings(self, setting_values, variable_revision_number, module_name):

        PC_DEFAULT = "Default output folder"
        PC_WITH_IMAGE = "Same folder as image"

        if variable_revision_number == 1:
            #
            # Minor change: Default output directory -> folder
            #
            new_setting_values = [setting_values[0]]
            for offset in range(1, len(setting_values), 6):
                dir_choice = setting_values[offset + 4]
                custom_path = setting_values[offset + 5]
                if dir_choice == PC_CUSTOM:
                    if custom_path[0] == ".":
                        dir_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                    elif custom_path[0] == "&":
                        dir_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                        custom_path = "." + custom_path[1:]
                    else:
                        dir_choice = ABSOLUTE_FOLDER_NAME
                directory = Directory.static_join_string(dir_choice, custom_path)
                new_setting_values += setting_values[offset : (offset + 4)]
                new_setting_values += [directory]
            setting_values = new_setting_values
            variable_revision_number = 2

        # Standardize input/output directory name references
        setting_values = list(setting_values)
        for offset in range(5, len(setting_values), VARIABLE_SETTING_COUNT):
            setting_values[offset] = Directory.upgrade_setting(setting_values[offset])

        return setting_values, variable_revision_number
Esempio n. 2
0
    def upgrade_settings(self, setting_values, variable_revision_number,
                         module_name):
        """Adjust the setting values based on the version that saved them
        """
        if variable_revision_number == 1:
            setting_values = (setting_values[:4] + [NO, ""] +
                              setting_values[4:])
            variable_revision_number = 2
        # Standardize input/output directory name references
        SLOT_DIRCHOICE = 1
        directory = setting_values[SLOT_DIRCHOICE]
        directory = Directory.upgrade_setting(directory)
        setting_values = (setting_values[:SLOT_DIRCHOICE] + [directory] +
                          setting_values[SLOT_DIRCHOICE + 1:])

        return setting_values, variable_revision_number
Esempio n. 3
0
    def upgrade_settings(self, setting_values, variable_revision_number, module_name):
        if variable_revision_number == 1:
            #
            # Added CPA rules
            #
            setting_values = (
                setting_values[:11]
                + [MODE_MEASUREMENTS, DEFAULT_INPUT_FOLDER_NAME, ".",]
                + setting_values[11:]
            )
            variable_revision_number = 2
        if variable_revision_number == 2:
            #
            # Forgot file name (???!!!)
            #
            setting_values = setting_values[:14] + ["rules.txt"] + setting_values[14:]
            variable_revision_number = 3
        if variable_revision_number == 3:
            #
            # Allowed multiple measurements
            # Structure changed substantially.
            #
            (
                target_name,
                object_name,
                measurement,
                filter_choice,
                enclosing_objects,
                wants_minimum,
                minimum_value,
                wants_maximum,
                maximum_value,
                wants_outlines,
                outlines_name,
                rules_or_measurements,
                rules_directory_choice,
                rules_path_name,
                rules_file_name,
            ) = setting_values[:15]
            additional_object_settings = setting_values[15:]
            additional_object_count = len(additional_object_settings) // 4

            setting_values = [
                target_name,
                object_name,
                rules_or_measurements,
                filter_choice,
                enclosing_objects,
                wants_outlines,
                outlines_name,
                rules_directory_choice,
                rules_path_name,
                rules_file_name,
                "1",
                str(additional_object_count),
                measurement,
                wants_minimum,
                minimum_value,
                wants_maximum,
                maximum_value,
            ] + additional_object_settings
            variable_revision_number = 4
        if variable_revision_number == 4:
            #
            # Used Directory to combine directory choice & custom path
            #
            rules_directory_choice = setting_values[7]
            rules_path_name = setting_values[8]
            if rules_directory_choice == DIR_CUSTOM:
                rules_directory_choice = ABSOLUTE_FOLDER_NAME
                if rules_path_name.startswith("."):
                    rules_directory_choice = DEFAULT_INPUT_SUBFOLDER_NAME
                elif rules_path_name.startswith("&"):
                    rules_directory_choice = DEFAULT_OUTPUT_SUBFOLDER_NAME
                    rules_path_name = "." + rules_path_name[1:]

            rules_directory = Directory.static_join_string(
                rules_directory_choice, rules_path_name
            )
            setting_values = setting_values[:7] + [rules_directory] + setting_values[9:]
            variable_revision_number = 5

        if variable_revision_number == 5:
            #
            # added rules class
            #
            setting_values = setting_values[:9] + ["1"] + setting_values[9:]
            variable_revision_number = 6

        if variable_revision_number == 6:
            #
            # Added per-object assignment
            #
            setting_values = (
                setting_values[:FIXED_SETTING_COUNT_V6]
                + [PO_BOTH]
                + setting_values[FIXED_SETTING_COUNT_V6:]
            )

            variable_revision_number = 7

        if variable_revision_number == 7:
            x_name = setting_values[1]

            y_name = setting_values[0]

            measurement_count = int(setting_values[10])

            additional_object_count = int(setting_values[11])

            n_measurement_settings = measurement_count * 5

            additional_object_settings = setting_values[13 + n_measurement_settings :]

            additional_object_names = additional_object_settings[::4]

            additional_target_names = additional_object_settings[1::4]

            new_additional_object_settings = sum(
                [
                    [object_name, target_name]
                    for object_name, target_name in zip(
                        additional_object_names, additional_target_names
                    )
                ],
                [],
            )

            setting_values = (
                [x_name, y_name]
                + setting_values[2:5]
                + setting_values[7 : 13 + n_measurement_settings]
                + new_additional_object_settings
            )

            variable_revision_number = 8

        slot_directory = 5

        setting_values[slot_directory] = Directory.upgrade_setting(
            setting_values[slot_directory]
        )

        return setting_values, variable_revision_number