def add_port_to_registry(self, port_spec): module = \ registry.get_descriptor_by_name(self.package, self.name, self.namespace).module if self.registry is None: self.registry = ModuleRegistry() self.registry.add_hierarchy(registry, self) if port_spec.type == 'input': endpoint = PortEndPoint.Destination else: endpoint = PortEndPoint.Source portSpecs = port_spec.spec[1:-1].split(',') signature = [registry.get_descriptor_from_name_only(spec).module for spec in portSpecs] port = Port() port.name = port_spec.name port.spec = core.modules.module_registry.PortSpec(signature) self.registry.add_port(module, endpoint, port)
def delete_port_from_registry(self, id): if not id in self.port_specs: raise VistrailsInternalError("id missing in port_specs") portSpec = self.port_specs[id] portSpecs = portSpec.spec[1:-1].split(',') signature = [registry.get_descriptor_from_name_only(spec).module for spec in portSpecs] port = Port(signature) port.name = portSpec.name port.spec = core.modules.module_registry.PortSpec(signature) module = \ registry.get_descriptor_by_name(self.package, self.name, self.namespace).module assert isinstance(self.registry, ModuleRegistry) if portSpec.type == 'input': self.registry.delete_input_port(module, port.name) else: self.registry.delete_output_port(module, port.name)
def convert_data(child): # FIXME don't like using core in here... from core.modules.module_registry import registry, PortSpec if child.vtType == 'module': descriptor = registry.get_descriptor_from_name_only(child.db_name) package = descriptor.identifier return DBModule(id=child.db_id, cache=child.db_cache, abstraction=0, name=child.db_name, package=package) elif child.vtType == 'connection': return DBConnection(id=child.db_id) elif child.vtType == 'portSpec': return DBPortSpec(id=child.db_id, name=child.db_name, type=child.db_type, spec=child.db_spec) elif child.vtType == 'function': return DBFunction(id=child.db_id, pos=child.db_pos, name=child.db_name) elif child.vtType == 'parameter': return DBParameter(id=child.db_id, pos=child.db_pos, name=child.db_name, type=child.db_type, val=child.db_val, alias=child.db_alias) elif child.vtType == 'location': return DBLocation(id=child.db_id, x=child.db_x, y=child.db_y) elif child.vtType == 'annotation': return DBAnnotation(id=child.db_id, key=child.db_key, value=child.db_value) elif child.vtType == 'port': sig = child.db_sig if sig == 'SetColor(vtkPiecewiseFunction)': sig = 'SetColor_2(vtkPiecewiseFunction)' elif sig == 'SetScalarOpacity(vtkPiecewiseFunction)': sig = 'SetScalarOpacity_2(vtkPiecewiseFunction)' elif sig == 'SetGradientOpacity(vtkPiecewiseFunction)': sig = 'SetGradientOpacity_2(vtkPiecewiseFunction)' if '(' in sig: name = sig[:sig.find('(')] specs = sig[sig.find('(')+1:sig.find(')')] new_specs = [] for spec_name in specs.split(','): descriptor = registry.get_descriptor_from_name_only(spec_name) spec_str = descriptor.identifier + ':' + spec_name new_specs.append(spec_str) spec = '(' + ','.join(new_specs) + ')' else: name = sig spec = '' return DBPort(id=child.db_id, type=child.db_type, moduleId=child.db_moduleId, moduleName=child.db_moduleName, name=name, spec=spec)