コード例 #1
0
    def __init__(self) -> None:
        self.storage_cache = Cache.DictStorageCache()

        self.profile_properties = dict()
        self.__storage_system = FileStorageSystem.MemoryPersistentStorageSystem(
            library_properties=self.profile_properties)
        self.__storage_system.load_properties()

        # these contain the data for each project.
        self.x_project_properties = dict()
        self.x_data_properties_map = dict()
        self.x_data_map = dict()
        self.x_trash_map = dict()

        # these contain the data for the first created project. they also facilitate legacy project testing.
        self.project_uuid = None
        self.project_properties = None
        self.data_properties_map = None
        self.data_map = None
        self.trash_map = None

        self._test_data_read_event = Event.Event()
        self.__profile = None

        self.__items_exit = list()
コード例 #2
0
ファイル: Profile.py プロジェクト: domuhe/nionswift
    def __init__(self,
                 storage_system=None,
                 storage_cache=None,
                 *,
                 auto_project: bool = True):
        super().__init__()

        self.define_root_context()
        self.define_type("profile")
        self.define_relationship("workspaces", WorkspaceLayout.factory)
        self.define_relationship("data_groups", DataGroup.data_group_factory)
        self.define_relationship("project_references",
                                 project_reference_factory,
                                 insert=self.__insert_project_reference,
                                 remove=self.__remove_project_reference)
        self.define_property("workspace_uuid",
                             converter=Converter.UuidToStringConverter())
        self.define_property(
            "data_item_references", dict(), hidden=True
        )  # map string key to data item, used for data acquisition channels
        self.define_property(
            "data_item_variables", dict(), hidden=True
        )  # map string key to data item, used for reference in scripts
        self.define_property("target_project_reference_uuid",
                             converter=Converter.UuidToStringConverter(),
                             changed=self.__property_changed)
        self.define_property("work_project_reference_uuid",
                             converter=Converter.UuidToStringConverter(),
                             changed=self.__property_changed)
        self.define_property("closed_items", list())

        self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem(
        )
        self.storage_system.load_properties()

        self.__work_project_reference: typing.Optional[ProjectReference] = None
        self.__target_project_reference: typing.Optional[
            ProjectReference] = None

        self.storage_cache = storage_cache or Cache.DictStorageCache(
        )  # need to deallocate
        self.set_storage_system(self.storage_system)

        self.__document_model = None
        self.profile_context = None

        # helper object to produce the projects sequence
        oo = Observer.ObserverBuilder()
        oo.source(self).ordered_sequence_from_array("project_references").map(
            oo.x.prop("project")).filter(lambda x: x is not None).trampoline(
                self, "projects")
        self.__projects_observer = oo.make_observable()

        self.__is_read = False

        if auto_project:
            self.profile_context = MemoryProfileContext()
            project_reference = self.add_project_memory()
            self.work_project_reference_uuid = project_reference.uuid
            self.target_project_reference_uuid = project_reference.uuid
コード例 #3
0
    def __init__(
            self,
            storage_system: typing.Optional[
                FileStorageSystem.PersistentStorageSystem] = None,
            storage_cache: typing.Optional[Cache.CacheLike] = None,
            *,
            profile_context: typing.Optional[ProfileContext] = None) -> None:
        super().__init__()
        self.__class__.count += 1

        self.define_root_context()
        self.define_type("profile")
        self.define_property("last_project_reference",
                             converter=Converter.UuidToStringConverter(),
                             hidden=True)
        self.define_property("work_project_reference_uuid",
                             converter=Converter.UuidToStringConverter(),
                             hidden=True)
        self.define_property("closed_items", list(), hidden=True)
        self.define_property("script_items_updated",
                             False,
                             changed=self.__property_changed,
                             hidden=True)
        self.define_relationship("project_references",
                                 project_reference_factory,
                                 insert=self.__insert_project_reference,
                                 remove=self.__remove_project_reference,
                                 hidden=True)
        self.define_relationship(
            "script_items",
            typing.cast(
                typing.Callable[[typing.Callable[[str], str]],
                                typing.Optional[Persistence.PersistentObject]],
                script_item_factory),
            hidden=True)

        self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem(
        )
        self.storage_system.load_properties()

        self.storage_cache: typing.Any = storage_cache or Cache.DictStorageCache(
        )  # need to deallocate
        self.set_storage_system(self.storage_system)

        self.profile_context = None

        # helper object to produce the projects sequence
        oo = Observer.ObserverBuilder()
        oo.source(typing.cast(
            Observer.ItemValue,
            self)).ordered_sequence_from_array("project_references").map(
                oo.x.prop("project")).filter(
                    lambda x: x is not None).trampoline(self, "projects")
        self.__projects_observer = oo.make_observable()

        if profile_context:
            self.profile_context = profile_context
            self.add_project_memory()
コード例 #4
0
    def __init__(self,
                 storage_system=None,
                 storage_cache=None,
                 *,
                 profile_context: typing.Optional[ProfileContext] = None):
        super().__init__()
        self.__class__.count += 1

        self.define_root_context()
        self.define_type("profile")
        self.define_relationship("project_references",
                                 project_reference_factory,
                                 insert=self.__insert_project_reference,
                                 remove=self.__remove_project_reference)
        self.define_property("last_project_reference",
                             converter=Converter.UuidToStringConverter())
        self.define_property("work_project_reference_uuid",
                             converter=Converter.UuidToStringConverter())
        self.define_property("closed_items", list())

        self.storage_system = storage_system or FileStorageSystem.MemoryPersistentStorageSystem(
        )
        self.storage_system.load_properties()

        self.storage_cache = storage_cache or Cache.DictStorageCache(
        )  # need to deallocate
        self.set_storage_system(self.storage_system)

        self.profile_context = None

        # helper object to produce the projects sequence
        oo = Observer.ObserverBuilder()
        oo.source(self).ordered_sequence_from_array("project_references").map(
            oo.x.prop("project")).filter(lambda x: x is not None).trampoline(
                self, "projects")
        self.__projects_observer = oo.make_observable()

        if profile_context:
            self.profile_context = profile_context
            self.add_project_memory()