[tree model] add block_id to ItemDescriptor and use it
This commit is contained in:
parent
62dec00295
commit
398ee8454e
@ -5,11 +5,12 @@ from enum import Enum
|
|||||||
|
|
||||||
class ItemDescriptor():
|
class ItemDescriptor():
|
||||||
|
|
||||||
def __init__(self, name=None, id=None, type=None, value=None, definition=None, entity_type=None) -> None:
|
def __init__(self, name=None, id=None, type=None, value=None, definition=None, block_id=None, entity_type=None) -> None:
|
||||||
super().__init__()
|
super().__init__()
|
||||||
self.name = name
|
self.name = name
|
||||||
self.type = type
|
self.type = type
|
||||||
self.id = id
|
self.id = id
|
||||||
|
self.block_id= block_id
|
||||||
self.definition = definition
|
self.definition = definition
|
||||||
self.value = value
|
self.value = value
|
||||||
self.entity_type = entity_type
|
self.entity_type = entity_type
|
||||||
@ -112,22 +113,23 @@ class FileHandler(metaclass=Singleton):
|
|||||||
properties.extend(get_properties(fs))
|
properties.extend(get_properties(fs))
|
||||||
return sections, properties
|
return sections, properties
|
||||||
|
|
||||||
def _entity_info(self, entities, entity_type):
|
def _entity_info(self, entities, block_id, entity_type):
|
||||||
infos = []
|
infos = []
|
||||||
for e in entities:
|
for e in entities:
|
||||||
itd = ItemDescriptor(e.name, e.id, e.type, definition=e.definition, entity_type=entity_type)
|
itd = ItemDescriptor(e.name, e.id, e.type, definition=e.definition, entity_type=entity_type, block_id=block_id)
|
||||||
infos.append(itd)
|
infos.append(itd)
|
||||||
|
# TODO set the value to something meaningful for the various entity types
|
||||||
return infos
|
return infos
|
||||||
|
|
||||||
def request_blocks(self):
|
def request_blocks(self):
|
||||||
return self._entity_info(self._nix_file.blocks, NodeType.Block)
|
return self._entity_info(self._nix_file.blocks, None, NodeType.Block)
|
||||||
|
|
||||||
def request_data_arrays(self, block_id):
|
def request_data_arrays(self, block_id):
|
||||||
return self._entity_info(self._nix_file.blocks[block_id].data_arrays,NodeType.DataArray)
|
return self._entity_info(self._nix_file.blocks[block_id].data_arrays, block_id, NodeType.DataArray)
|
||||||
|
|
||||||
def request_tags(self, block_id):
|
def request_tags(self, block_id):
|
||||||
tags = self._entity_info(self._nix_file.blocks[block_id].tags, NodeType.Tag)
|
tags = self._entity_info(self._nix_file.blocks[block_id].tags, block_id, NodeType.Tag)
|
||||||
tags.extend(self._entity_info(self._nix_file.blocks[block_id].multi_tags, NodeType.MultiTag))
|
tags.extend(self._entity_info(self._nix_file.blocks[block_id].multi_tags, block_id, NodeType.MultiTag))
|
||||||
return tags
|
return tags
|
||||||
|
|
||||||
def request_references(self, block_id, tag_id, is_mtag):
|
def request_references(self, block_id, tag_id, is_mtag):
|
||||||
@ -137,7 +139,7 @@ class FileHandler(metaclass=Singleton):
|
|||||||
t = b.multi_tags[tag_id]
|
t = b.multi_tags[tag_id]
|
||||||
else:
|
else:
|
||||||
t = b.tags[tag_id]
|
t = b.tags[tag_id]
|
||||||
return self._entity_info(t.references, NodeType.DataArray)
|
return self._entity_info(t.references, block_id, NodeType.DataArray)
|
||||||
|
|
||||||
def request_features(self, block_id, tag_id, is_mtag):
|
def request_features(self, block_id, tag_id, is_mtag):
|
||||||
b = self._nix_file.blocks[block_id]
|
b = self._nix_file.blocks[block_id]
|
||||||
@ -148,7 +150,7 @@ class FileHandler(metaclass=Singleton):
|
|||||||
t = b.tags[tag_id]
|
t = b.tags[tag_id]
|
||||||
feats = []
|
feats = []
|
||||||
for f in t.features:
|
for f in t.features:
|
||||||
itd = ItemDescriptor(f.data.name, f.id, f.type, definition=f.data.definition, entity_type=NodeType.Feature)
|
itd = ItemDescriptor(f.data.name, f.id, f.link_type, definition=f.data.definition, block_id=block_id, entity_type=NodeType.Feature)
|
||||||
feats.append(itd)
|
feats.append(itd)
|
||||||
return feats
|
return feats
|
||||||
|
|
||||||
@ -157,5 +159,5 @@ class FileHandler(metaclass=Singleton):
|
|||||||
for i, d in enumerate(self._nix_file.blocks[block_id].data_arrays[array_id].dimensions):
|
for i, d in enumerate(self._nix_file.blocks[block_id].data_arrays[array_id].dimensions):
|
||||||
dim_name = "%i. dim: %s" % (i+1, d.label if hasattr(d, "label") else "")
|
dim_name = "%i. dim: %s" % (i+1, d.label if hasattr(d, "label") else "")
|
||||||
dim_type= "%s %s" % (d.dimension_type, "dimension")
|
dim_type= "%s %s" % (d.dimension_type, "dimension")
|
||||||
dimensions.append(ItemDescriptor(dim_name, type=dim_type, entity_type=NodeType.Dimension))
|
dimensions.append(ItemDescriptor(dim_name, type=dim_type, entity_type=NodeType.Dimension, block_id=block_id))
|
||||||
return dimensions
|
return dimensions
|
||||||
|
@ -84,6 +84,15 @@ class BlockTreeItem(NixTreeItem):
|
|||||||
self._child_items.append(TagTreeItem(t, self._file_handler, parent=self))
|
self._child_items.append(TagTreeItem(t, self._file_handler, parent=self))
|
||||||
self._is_loaded = True
|
self._is_loaded = True
|
||||||
|
|
||||||
|
class DataFrameTreeItem(NixTreeItem):
|
||||||
|
def __init__(self, node_descriptor, file_handler, parent=None):
|
||||||
|
super().__init__(node_descriptor, file_handler, parent=parent)
|
||||||
|
self._is_loaded = True
|
||||||
|
|
||||||
|
class FeatureTreeItem(NixTreeItem):
|
||||||
|
def __init__(self, node_descriptor, file_handler, parent=None):
|
||||||
|
super().__init__(node_descriptor, file_handler, parent=parent)
|
||||||
|
self._is_loaded = True
|
||||||
|
|
||||||
class DataArrayTreeItem(NixTreeItem):
|
class DataArrayTreeItem(NixTreeItem):
|
||||||
def __init__(self, node_descriptor, file_handler, parent=None):
|
def __init__(self, node_descriptor, file_handler, parent=None):
|
||||||
@ -91,7 +100,8 @@ class DataArrayTreeItem(NixTreeItem):
|
|||||||
self._is_loaded = False
|
self._is_loaded = False
|
||||||
|
|
||||||
def load_children(self):
|
def load_children(self):
|
||||||
dimensions = self._file_handler.request_dimensions(self._parent_item._node_descriptor.id, self._node_descriptor.id)
|
self._child_items = []
|
||||||
|
dimensions = self._file_handler.request_dimensions(self._node_descriptor.block_id, self._node_descriptor.id)
|
||||||
for d in dimensions:
|
for d in dimensions:
|
||||||
self._child_items.append(DimensionTreeItem(d, self._file_handler, parent=self))
|
self._child_items.append(DimensionTreeItem(d, self._file_handler, parent=self))
|
||||||
self._is_loaded = True
|
self._is_loaded = True
|
||||||
@ -129,7 +139,14 @@ class TagTreeItem(NixTreeItem):
|
|||||||
self._is_loaded = False
|
self._is_loaded = False
|
||||||
|
|
||||||
def load_children(self):
|
def load_children(self):
|
||||||
|
self._child_items = []
|
||||||
|
references = self._file_handler.request_references(self._node_descriptor.block_id, self._node_descriptor.id, self._node_descriptor.entity_type == NodeType.MultiTag)
|
||||||
|
for r in references:
|
||||||
|
self._child_items.append(DataArrayTreeItem(r, self._file_handler, self))
|
||||||
|
|
||||||
|
features = self._file_handler.request_features(self._node_descriptor.block_id, self._node_descriptor.id, self._node_descriptor.entity_type == NodeType.MultiTag)
|
||||||
|
for f in features:
|
||||||
|
self._child_items.append(FeatureTreeItem(f, self._file_handler, self))
|
||||||
self._is_loaded = True
|
self._is_loaded = True
|
||||||
|
|
||||||
class TreeModel(QAbstractItemModel):
|
class TreeModel(QAbstractItemModel):
|
||||||
|
Loading…
Reference in New Issue
Block a user