def createFailedPackage(self):
        """ Failed package is created so that the user can remove
        it manually using package submenu """
        pm = get_package_manager()
        if pm.has_package(self.signature):
            # do nothing
            return
        reg = core.modules.module_registry.get_module_registry()

        # create a document hash integer from the cached sax tree
        # "name" is what suds use as the cache key
        name = '%s-%s' % (abs(hash(self.address)), "wsdl")
        self.wsdlHash = '0'

        package_id = reg.idScope.getNewId(Package.vtType)
        package = Package(id=package_id,
                          codepath=__file__,
                          load_configuration=False,
                          name="SUDS#" + self.address,
                          identifier=self.signature,
                          version=self.wsdlHash,
                          )
        suds_package = reg.get_package_by_name(identifier)
        package._module = suds_package.module
        package._init_module = suds_package.init_module
        self.package = package
        reg.add_package(package)
        self.module = new_module(Module, str(self.signature))
        reg.add_module(self.module, **{'package':self.signature,
                                       'package_version':self.wsdlHash,
                                       'abstract':True})
        self.service = -1
    def createPackage(self):
        pm = get_package_manager()
        if pm.has_package(self.signature):
            package = pm.get_package_by_identifier()
            pm.remove_package(package.codepath)

        reg = core.modules.module_registry.get_module_registry()

        # create a document hash integer from the cached sax tree
        # "name" is what suds use as the cache key
        name = '%s-%s' % (abs(hash(self.address)), "wsdl")
        wsdl = package_cache.get(name)
        if not wsdl:
            debug.critical("File not found in SUDS cache: '%s'" % name)
            self.wsdlHash = '0'
            return
        self.wsdlHash = str(int(hashlib.md5(str(wsdl.root)).hexdigest(), 16))

        package_id = reg.idScope.getNewId(Package.vtType)
        package = Package(id=package_id,
                          codepath=__file__,
                          load_configuration=False,
                          name="SUDS#" + self.address,
                          identifier=self.signature,
                          version=self.wsdlHash,
                          )
        self.package = package
        reg.add_package(package)
        self.module = new_module(Module, str(self.signature))
        reg.add_module(self.module, **{'package':self.signature,
                                       'package_version':self.wsdlHash,
                                       'abstract':True})
    def disable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = inst.currentItem()
        pos = inst.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        identifier = pm.get_package_by_codepath(codepath).identifier

        if dependency_graph.in_degree(identifier) > 0:
            rev_deps = dependency_graph.inverse_adjacency_list[identifier]
            msg = QtGui.QMessageBox(QtGui.QMessageBox.Critical,
                                    "Missing dependency",
                                    ("There are other packages that depend on this:\n %s" +
                                     "Please disable those first.") % rev_deps,
                                    QtGui.QMessageBox.Ok, self)
            msg.exec_()
        else:
            pm.late_disable_package(codepath)
            inst.takeItem(pos)
            av.addItem(item)
            av.sortItems()
            av.clearSelection()
            inst.clearSelection()
    def newModule(self, descriptor):
        """ newModule(descriptor: core.modules.module_registry.ModuleDescriptor)
        A new module has been added to VisTrails
        
        """
        if descriptor.module_abstract():
            # skip abstract modules, they're no longer in the tree
            return
        moduleName = descriptor.name
        identifier = descriptor.identifier
        pm = get_package_manager()
        packageName = pm.get_package_by_identifier(identifier).name

        # NB: only looks for toplevel matches
        packageItems = self.treeWidget.findItems(packageName,
                                                 QtCore.Qt.MatchExactly |
                                                 QtCore.Qt.MatchWrap)
        assert(len(packageItems)<=1)
        if packageItems==[]:
            # didn't find a top-level package item, so let's create one
            parentItem = QModuleTreeWidgetItem(None,
                                               None,
                                               QtCore.QStringList(packageName))
            parentItem._namespace_items = {}
            self.treeWidget.insertTopLevelItem(0, parentItem)
        else:
            parentItem = packageItems[0]

        if descriptor.namespace:
            parentItem = _ensure_namespace(descriptor, parentItem)

        item = QModuleTreeWidgetItem(descriptor,
                                     parentItem,
                                     QtCore.QStringList(moduleName))
Example #5
0
    def find_descriptor(controller, pipeline, module_id, desired_version=''):
        from core.modules.abstraction \
            import identifier as local_abstraction_pkg
        reg = get_module_registry()

        get_descriptor = reg.get_descriptor_by_name
        pm = get_package_manager()
        invalid_module = pipeline.modules[module_id]
        mpkg, mname, mnamespace, mid = (invalid_module.package,
                                        invalid_module.name,
                                        invalid_module.namespace,
                                        invalid_module.id)
        pkg = pm.get_package_by_identifier(mpkg)
        desired_version = ''
        d = None
        # don't check for abstraction/subworkflow since the old module
        # could be a subworkflow
        if reg.has_abs_upgrade(*invalid_module.descriptor_info):
            return reg.get_abs_upgrade(*invalid_module.descriptor_info)

        try:
            try:
                d = get_descriptor(mpkg, mname, mnamespace, '', desired_version)
            except MissingModule, e:
                r = None
                if pkg.can_handle_missing_modules():
                    r = pkg.handle_missing_module(controller, module_id, 
                                                  pipeline)
                    d = get_descriptor(mpkg, mname, mnamespace, '', 
                                       desired_version)
                if not r:
                    raise e
        except MissingModule, e:
            return None
Example #6
0
def package_dependencies():
    from core.packagemanager import get_package_manager
    dependencies = [vtk_pkg_identifier, 'edu.utah.sci.vistrails.spreadsheet',
                    'gov.llnl.uvcdat', 'gov.llnl.uvcdat.cdms']
    if get_package_manager().has_package('edu.utah.sci.vistrails.matplotlib'):
        dependencies.append('edu.utah.sci.vistrails.matplotlib')
    return dependencies
Example #7
0
 def getPackageVersion(self, identifier):
     """getPackageVersion(identifier: str) -> str
     This will return the current version loaded of the package identified
     by identifier 
     """
     pm = get_package_manager()
     return pm.get_package_by_identifier(identifier).version
Example #8
0
 def getPackageVersion(self, identifier):
     """getPackageVersion(identifier: str) -> str
     This will return the current version loaded of the package identified
     by identifier 
     """
     pm = get_package_manager()
     return pm.get_package_by_identifier(identifier).version
Example #9
0
 def handle_module_upgrade_request(self, *args, **kwargs):
     # redirect webservices to SUDSWebServices
     if self.identifier.startswith("SUDS#"):
         from core.packagemanager import get_package_manager
         pm = get_package_manager()
         package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
         return package._init_module.handle_module_upgrade_request(*args, **kwargs)
     return self._init_module.handle_module_upgrade_request(*args, **kwargs)
 def callContextMenu(self, signature):
     # redirect webservices to SUDSWebServices
     if self.identifier.startswith("SUDS#"):
         from core.packagemanager import get_package_manager
         pm = get_package_manager()
         package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
         return package._init_module.callContextMenu(signature)
     return self._init_module.callContextMenu(signature)
 def handle_module_upgrade_request(self, *args, **kwargs):
     # redirect webservices to SUDSWebServices
     if self.identifier.startswith("SUDS#"):
         from core.packagemanager import get_package_manager
         pm = get_package_manager()
         package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
         return package._init_module.handle_module_upgrade_request(*args, **kwargs)
     return self._init_module.handle_module_upgrade_request(*args, **kwargs)
Example #12
0
 def callContextMenu(self, signature):
     # redirect webservices to SUDSWebServices
     if self.identifier.startswith("SUDS#"):
         from core.packagemanager import get_package_manager
         pm = get_package_manager()
         package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
         return package._init_module.callContextMenu(signature)
     return self._init_module.callContextMenu(signature)
Example #13
0
def package_dependencies():
    from core.packagemanager import get_package_manager
    dependencies = [
        vtk_pkg_identifier, 'edu.utah.sci.vistrails.spreadsheet',
        'gov.llnl.uvcdat', 'gov.llnl.uvcdat.cdms'
    ]
    if get_package_manager().has_package('edu.utah.sci.vistrails.matplotlib'):
        dependencies.append('edu.utah.sci.vistrails.matplotlib')
    return dependencies
Example #14
0
 def reload_current_package_finisher(self, codepath, reverse_deps, prefix_dictionary):
     # REENABLES the current package and all reverse dependencies
     pm = get_package_manager()
     try:
         pm.reload_package_enable(reverse_deps, prefix_dictionary)
     except self._current_package.InitializationFailed, e:
         debug.critical("Re-initialization of package '%s' failed" % 
                         codepath, str(e))
         raise
Example #15
0
 def reload_current_package_finisher(self, codepath, reverse_deps,
                                     prefix_dictionary):
     # REENABLES the current package and all reverse dependencies
     pm = get_package_manager()
     try:
         pm.reload_package_enable(reverse_deps, prefix_dictionary)
     except self._current_package.InitializationFailed, e:
         debug.critical(
             "Re-initialization of package '%s' failed" % codepath, str(e))
         raise
Example #16
0
 def selected_available_list(self):
     item = self._available_packages_list.currentItem()
     if item is None:
         return  # prevent back and forth looping when clearing selection
     self._enabled_packages_list.setCurrentItem(None)
     codepath = str(item.text())
     pm = get_package_manager()
     self._current_package = pm.look_at_available_package(codepath)
     self.set_buttons_to_available_package()
     self.set_package_information()
     self._available_packages_list.setFocus()
Example #17
0
 def selected_available_list(self):
     item = self._available_packages_list.currentItem()
     if item is None:
         return # prevent back and forth looping when clearing selection
     self._enabled_packages_list.setCurrentItem(None)
     codepath = str(item.text())
     pm = get_package_manager()
     self._current_package = pm.look_at_available_package(codepath)
     self.set_buttons_to_available_package()
     self.set_package_information()
     self._available_packages_list.setFocus()
Example #18
0
    def reload_current_package(self):
        # DISABLES the current package and all reverse dependencies
        inst = self._enabled_packages_list
        item = inst.currentItem()
        pm = get_package_manager()
        codepath = str(item.text())

        palette = QModulePalette.instance()
        palette.setUpdatesEnabled(False)
        pm.reload_package_disable(codepath)
        self.erase_cache = True
Example #19
0
 def reload_current_package(self):
     # DISABLES the current package and all reverse dependencies
     inst = self._enabled_packages_list
     item = inst.currentItem()
     pm = get_package_manager()
     codepath = str(item.text())
     
     palette = QModulePalette.instance()
     palette.setUpdatesEnabled(False)
     pm.reload_package_disable(codepath)
     self.erase_cache = True
Example #20
0
 def populate_lists(self):
     pkg_manager = get_package_manager()
     enabled_pkgs = sorted(pkg_manager.enabled_package_list())
     enabled_pkg_dict = dict([(pkg.codepath, pkg) for
                                pkg in enabled_pkgs])
     for pkg in enabled_pkgs:
         self._enabled_packages_list.addItem(pkg.codepath)
     available_pkg_names = [pkg for pkg in 
                            sorted(pkg_manager.available_package_names_list())
                            if pkg not in enabled_pkg_dict]
     for pkg in available_pkg_names:
         self._available_packages_list.addItem(pkg)
 def connect_package_manager_signals(self):
     """ connect_package_manager_signals()->None
     Connect specific signals related to the package manager """
     pm = get_package_manager()
     self.connect(pm,
                  pm.add_package_menu_signal,
                  self.add_package_menu_items)
     self.connect(pm,
                  pm.remove_package_menu_signal,
                  self.remove_package_menu_items)
     self.connect(pm,
                  pm.package_error_message_signal,
                  self.show_package_error_message)
    def deletedPackage(self, package):
        """ deletedPackage(package):
        A package has been deleted from VisTrails
        """
        pm = get_package_manager()
        pm.get_package_by_identifier
        items = self.treeWidget.findItems(package.name,
                                          QtCore.Qt.MatchExactly |
                                          QtCore.Qt.MatchWrap)
        assert len(items) == 1
        item = items[0]

        index = self.treeWidget.indexOfTopLevelItem(item)
        self.treeWidget.takeTopLevelItem(index)
    def handle_missing_module(self, *args, **kwargs):
        """report_missing_module(name, namespace):

        Calls the package's module handle_missing_module function, if
        present, to allow the package to dynamically add a missing
        module.
        """
        
        # redirect webservices to SUDSWebServices
        if self.identifier.startswith("SUDS#"):
            from core.packagemanager import get_package_manager
            pm = get_package_manager()
            package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
            return package._init_module.handle_missing_module(*args, **kwargs)
        return self._init_module.handle_missing_module(*args, **kwargs)
Example #24
0
    def handle_missing_module(self, *args, **kwargs):
        """report_missing_module(name, namespace):

        Calls the package's module handle_missing_module function, if
        present, to allow the package to dynamically add a missing
        module.
        """
        
        # redirect webservices to SUDSWebServices
        if self.identifier.startswith("SUDS#"):
            from core.packagemanager import get_package_manager
            pm = get_package_manager()
            package = pm.get_package_by_identifier('edu.utah.sci.vistrails.sudswebservices')
            return package._init_module.handle_missing_module(*args, **kwargs)
        return self._init_module.handle_missing_module(*args, **kwargs)
Example #25
0
 def populate_lists(self):
     pkg_manager = get_package_manager()
     enabled_pkgs = sorted(pkg_manager.enabled_package_list())
     enabled_pkg_dict = dict([(pkg.codepath, pkg) for pkg in enabled_pkgs])
     self._enabled_packages_list.clear()
     for pkg in enabled_pkgs:
         self._enabled_packages_list.addItem(pkg.codepath)
     self._enabled_packages_list.sortItems()
     available_pkg_names = [
         pkg for pkg in sorted(pkg_manager.available_package_names_list())
         if pkg not in enabled_pkg_dict
     ]
     self._available_packages_list.clear()
     for pkg in available_pkg_names:
         self._available_packages_list.addItem(pkg)
     self._available_packages_list.sortItems()
Example #26
0
    def enable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = av.currentItem()
        pos = av.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        new_deps = self._current_package.dependencies()

        from core.modules.basic_modules import identifier as basic_modules_identifier
        if self._current_package.identifier != basic_modules_identifier:
            new_deps.append(basic_modules_identifier)

        try:
            pm.check_dependencies(self._current_package, new_deps)
        except self._current_package.MissingDependency, e:
            debug.critical("Missing dependencies", str(e))
Example #27
0
    def enable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = av.currentItem()
        pos = av.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        new_deps = self._current_package.dependencies()

        from core.modules.basic_modules import identifier as basic_modules_identifier
        if self._current_package.identifier != basic_modules_identifier:
            new_deps.append(basic_modules_identifier)

        try:
            pm.check_dependencies(self._current_package, new_deps)
        except self._current_package.MissingDependency, e:
            debug.critical("Missing dependencies", str(e))
Example #28
0
    def disable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = inst.currentItem()
        pos = inst.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        identifier = pm.get_package_by_codepath(codepath).identifier

        if dependency_graph.in_degree(identifier) > 0:
            rev_deps = dependency_graph.inverse_adjacency_list[identifier]
            debug.critical("Missing dependency",
                           ("There are other packages that depend on this:\n %s" +
                            "Please disable those first.") % rev_deps)
        else:
            pm.late_disable_package(codepath)
            self.invalidate_current_pipeline()
    def updateFromModuleRegistry(self):
        """ updateFromModuleRegistry(packageName: str) -> None
        Setup this tree widget to show modules currently inside
        module_registry.registry
        
        """
        parentItems = {}
        
        def createModuleItem(module):
            """ createModuleItem(registry: ModuleRegistry,
                                 parentItem: QModuleTreeWidgetItem,
                                 module: Tree) -> QModuleTreeWidgetItem
            Traverse a module to create items recursively. Then return
            its module item
            
            """
            desc = module.descriptor
            labels = QtCore.QStringList(module.descriptor.name)
            packageName = module.descriptor.module_package()
            parentItem = parentItems[packageName]
            if desc.namespace:
                parentItem = _ensure_namespace(desc, parentItem)
            if not desc.module_abstract():
                moduleItem = QModuleTreeWidgetItem(module.descriptor,
                                                   parentItem,
                                                   labels)
            for child in module.children:
                createModuleItem(child)

        pm = get_package_manager()
        for packageName in registry.package_modules.iterkeys():
            name = pm.get_package_by_identifier(packageName).name
            item = QModuleTreeWidgetItem(None,
                                         self,
                                         QtCore.QStringList(name))
            item._namespace_items = {}
            item.setFlags(item.flags() & ~QtCore.Qt.ItemIsDragEnabled)
            parentItems[packageName] = item
        module = registry.class_tree()
        createModuleItem(module)
        self.sortItems(0, QtCore.Qt.AscendingOrder)
        self.expandAll()
Example #30
0
    def disable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = inst.currentItem()
        pos = inst.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        identifier = pm.get_package_by_codepath(codepath).identifier

        if dependency_graph.in_degree(identifier) > 0:
            rev_deps = dependency_graph.inverse_adjacency_list[identifier]
            debug.critical(
                "Missing dependency",
                ("There are other packages that depend on this:\n %s" +
                 "Please disable those first.") % rev_deps)
        else:
            pm.late_disable_package(codepath)
            self.invalidate_current_pipeline()
Example #31
0
 def dispatch_request(controller, module_id, current_pipeline):
     reg = get_module_registry()
     pm = get_package_manager()
     if module_id not in current_pipeline.modules:
         # It is possible that some other upgrade request has
         # already removed the invalid module of this request. In
         # that case, disregard the request.
         debug.log("module %s already handled. skipping" % module_id)
         return []
     invalid_module = current_pipeline.modules[module_id]
     pkg = pm.get_package_by_identifier(invalid_module.package)
     if hasattr(pkg.module, 'handle_module_upgrade_request'):
         f = pkg.module.handle_module_upgrade_request
         return f(controller, module_id, current_pipeline)
     else:
         debug.log('Package "%s" cannot handle upgrade request. '
                   'VisTrails will attempt automatic upgrade.' % \
                       pkg.identifier)
         auto_upgrade = UpgradeWorkflowHandler.attempt_automatic_upgrade
         return auto_upgrade(controller, current_pipeline, module_id)
Example #32
0
 def set_buttons_to_enabled_package(self):
     self._enable_button.setEnabled(False)
     assert self._current_package
     pm = get_package_manager()
     from core.modules.basic_modules import identifier as basic_modules_identifier
     from core.modules.abstraction import identifier as abstraction_identifier
     is_not_basic_modules = (self._current_package.identifier != basic_modules_identifier)
     is_not_abstraction = (self._current_package.identifier != abstraction_identifier)
     can_disable = (pm.can_be_disabled(self._current_package.identifier) and
                    is_not_basic_modules and
                    is_not_abstraction)
     self._disable_button.setEnabled(can_disable)
     if not can_disable and is_not_basic_modules and is_not_abstraction:
         msg = ("Module has reverse dependencies that must\n"+
                "be first disabled.")
         self._disable_button.setToolTip(msg)
     else:
         self._disable_button.setToolTip("")
     conf = self._current_package.configuration is not None
     self._configure_button.setEnabled(conf)
     self._reload_button.setEnabled(is_not_basic_modules)
Example #33
0
 def set_buttons_to_enabled_package(self):
     self._enable_button.setEnabled(False)
     assert self._current_package
     pm = get_package_manager()
     from core.modules.basic_modules import identifier as basic_modules_identifier
     from core.modules.abstraction import identifier as abstraction_identifier
     is_not_basic_modules = (self._current_package.identifier !=
                             basic_modules_identifier)
     is_not_abstraction = (self._current_package.identifier !=
                           abstraction_identifier)
     can_disable = (pm.can_be_disabled(self._current_package.identifier)
                    and is_not_basic_modules and is_not_abstraction)
     self._disable_button.setEnabled(can_disable)
     if not can_disable and is_not_basic_modules and is_not_abstraction:
         msg = ("Module has reverse dependencies that must\n" +
                "be first disabled.")
         self._disable_button.setToolTip(msg)
     else:
         self._disable_button.setToolTip("")
     conf = self._current_package.configuration is not None
     self._configure_button.setEnabled(conf)
     self._reload_button.setEnabled(is_not_basic_modules)
Example #34
0
    def enable_current_package(self):
        av = self._available_packages_list
        inst = self._enabled_packages_list
        item = av.currentItem()
        pos = av.indexFromItem(item).row()
        codepath = str(item.text())
        pm = get_package_manager()

        dependency_graph = pm.dependency_graph()
        new_deps = self._current_package.dependencies()

        unmet_dep = None

        for dep in new_deps:
            if dep not in dependency_graph.vertices:
                unmet_dep = dep
                break
        if unmet_dep:
            msg = QtGui.QMessageBox(QtGui.QMessageBox.Critical,
                                    "Missing dependency",
                                    ("This package requires package '%s'\n" +
                                     "to be enabled. (Complete dependency list is:\n" +
                                     "%s)") % (dep, new_deps),
                                    QtGui.QMessageBox.Ok, self)
            msg.exec_()
        else:
            palette = QtGui.QApplication.instance().builderWindow.modulePalette
            palette.setUpdatesEnabled(False)
            try:
                pm.late_enable_package(codepath)
            finally:
                palette.setUpdatesEnabled(True)
                palette.treeWidget.expandAll()
            self._current_package = pm.get_package_by_codepath(codepath)
            av.takeItem(pos)
            av.clearSelection()
            inst.addItem(item)
            inst.sortItems()
            inst.clearSelection()
Example #35
0
    def createFailedPackage(self):
        """ Failed package is created so that the user can remove
        it manually using package submenu """
        pm = get_package_manager()
        if pm.has_package(self.signature):
            # do nothing
            return
        reg = core.modules.module_registry.get_module_registry()

        # create a document hash integer from the cached sax tree
        # "name" is what suds use as the cache key
        name = '%s-%s' % (abs(hash(self.address)), "wsdl")
        self.wsdlHash = '0'

        package_id = reg.idScope.getNewId(Package.vtType)
        package = Package(
            id=package_id,
            load_configuration=False,
            name="SUDS#" + self.address,
            identifier=self.signature,
            version=self.wsdlHash,
        )
        suds_package = reg.get_package_by_name(identifier)
        package._module = suds_package.module
        package._init_module = suds_package.init_module
        self.package = package
        reg.add_package(package)
        reg.signals.emit_new_package(self.signature)
        self.module = new_module(Module, str(self.signature))
        reg.add_module(
            self.module, **{
                'package': self.signature,
                'package_version': self.wsdlHash,
                'abstract': True
            })
        self.service = -1
Example #36
0
 def clicked_on_enabled_list(self, item):
     codepath = str(item.text())
     pm = get_package_manager()
     self._current_package = pm.get_package_by_codepath(codepath)
     self.set_buttons_to_enabled_package()
     self.set_package_information()
Example #37
0
    def load(self, loadworkflow=True):
        config = ConfigParser.ConfigParser()
        if config.read(self.config_file):
            if config.has_section('global'):
                if config.has_option('global', 'cellnum'):
                    self.cellnum = config.getint('global', 'cellnum')
                if config.has_option('global', 'filenum'):
                    self.filenum = config.getint('global', 'filenum')
                if config.has_option('global', 'varnum'):
                    self.varnum = config.getint('global', 'varnum')
                    print "   ------ Loaded plot %s, varnum = %d ------ " % ( self.name, self.varnum )
                if config.has_option('global', 'workflow_tag'):
                    self.workflow_tag = config.get('global', 'workflow_tag')
#                else:
#                    debug.warning("CDAT Package: file %s does not contain a required option 'workflow_tag'. Widget will not be loaded."%self.config_file)
#                    self.loaded = False
#                    return
                if config.has_option('global', 'filetypes'):
                    types = config.get('global', 'filetypes')
                    tlist = [t.strip() for t in types.split(";")]
                    for t in tlist:
                        kv = t.split(":")
                        self.filetypes[kv[0].strip()] = [v.strip() 
                                                         for v in kv[1].split(",")]
                if config.has_option('global', 'qt_filter'):
                    self.qt_filter = config.get('global', 'qt_filter')
                if config.has_option('global', 'dependencies'):
                    deps = config.get('global', 'dependencies')
                    self.dependencies = [d.strip() for d in deps.split(",")]
            
                if config.has_option('global', 'serialized_config_alias'):
                    self.serializedConfigAlias = config.get('global', 'serialized_config_alias')

                    for y in range(self.filenum):
                        self.files.append( 'Filename' + str(y+1) )
                            
                    for v in range(self.varnum):
                        self.vars.append( 'VariableName' + str(v+1) )
                        self.axes.append( 'Axes' + str(v+1) )

                    for x in range(self.cellnum):
                        section_name = 'cell' + str(x+1)
                        if config.has_section(section_name):
                            cellType = config.get(section_name, 'celltype')
                            if config.has_option(section_name, 'address_alias'):
                                self.cells.append( Cell( cellType, None, None,
                                                     config.get(section_name, 'address_alias') ) )
                            else:
                                self.cells.append(Cell( cellType,"Row"+str(x+1), "Column"+str(x+1) ) )                                                              
                else:
                    
                    for y in range(self.filenum):
                        option_name = 'filename_alias' + str(y+1)
                        if config.has_option('global', option_name):
                            self.files.append(config.get('global', option_name))
                            
                    for v in range(self.varnum):
                        option_name = 'varname_alias' + str(v+1)
                        if config.has_option('global', option_name):
                            self.vars.append(config.get('global', option_name))
                        axes_name = 'axes_alias' + str(v+1)
                        if config.has_option('global', axes_name):
                            self.axes.append(config.get('global', axes_name))
                        
                    for x in range(self.cellnum):
                        section_name = 'cell' + str(x+1)
                        if (config.has_section(section_name) and
                            config.has_option(section_name, 'celltype') and
                            config.has_option(section_name, 'row_alias') and
                            config.has_option(section_name, 'col_alias')):
                            self.cells.append(Cell(config.get(section_name, 'celltype'),
                                                   config.get(section_name, 'row_alias'),
                                                   config.get(section_name, 'col_alias')))
                
                if loadworkflow:
                    #load workflow in vistrail
                    #only if dependencies are enabled
                    manager = get_package_manager()
                    self.unsatisfied_deps = []
                    for dep in self.dependencies:
                        if not manager.has_package(dep):
                            self.unsatisfied_deps.append(dep)
                    if len(self.unsatisfied_deps) == 0:
                        try:
                            (self.plot_vistrail, abstractions , thumbnails, mashups) = load_vistrail(self.locator)
                            controller = VistrailController()
                            controller.set_vistrail(self.plot_vistrail, self.locator, 
                                                    abstractions, thumbnails,
                                                    mashups) 
    
                            self.workflow_version = self.plot_vistrail.get_version_number(self.workflow_tag) if self.workflow_tag else controller.get_latest_version_in_graph()
                            print " Loaded %s version: %s" % (  self.name, str( self.workflow_version ) )
                            controller.change_selected_version(self.workflow_version)
                            self.workflow = controller.current_pipeline
                            self.loaded = True
                        except Exception, err:
                            debug.warning( "Error loading workflow %s: %s" % ( self.name, err ) )
                            self.loaded = False
                    else:
                        debug.warning("UV-CDAT: %s widget could not be loaded \
    because it depends on packages that are not loaded:"%self.name)
                        debug.warning("  %s"%", ".join(self.unsatisfied_deps))
                        self.loaded = False
            else:
                debug.warning("UV-CDAT: file %s does not contain a 'global'\
 section. Widget will not be loaded."%self.config_file)
                self.loaded = False
Example #38
0

sys.path.append(pth)

pkgnm = "samplepkg"

import core.application as vt_app
from core.packagemanager import get_package_manager
import core.modules.vistrails_module

print "imported vt"
print 'Initing'
vt_app.init({'dotVistrails': '.vistrails','output':''})
#vt_app.init({'output':''})
print "Voila"
pm = get_package_manager()
print "Voila"

import core.api
print "imported core"
vt=core.api.get_api()


basic = vt.get_package("edu.utah.sci.vistrails.basic")

for p,c in [
    ("edu.utah.sci.vistrails.spreadsheet","spreadsheet"),
    ("gov.llnl.uvcdat","uvcdat"),
    ("gov.llnl.uvcdat.cdms","uvcdat_cdms"),
    ## ("edu.utah.sci.vistrails.vtk","vtk"),
    ## ("edu.utah.sci.vistrails.numpyscipy","NumSciPy"),
Example #39
0
def initialize(*args, **keywords):
    import core.modules.module_registry
    from packages.vtDV3D.CDMS_VariableReaders import CDMSVariableSource, CDMSTransientVariable, CDMS_HoffmullerReader, CDMS_VolumeReader, CDMS_ChartDataReader, CDMS_SliceReader, CDMS_VectorReader, CDMS_HoffmullerReaderConfigurationWidget, CDMS_VolumeReaderConfigurationWidget, CDMS_ChartDataConfigurationWidget, CDMS_SliceReaderConfigurationWidget, CDMS_VectorReaderConfigurationWidget 
    from packages.vtDV3D.VolumeSlicerModule import VolumeSlicer
    from packages.vtDV3D.VolumeRenderModule import VolumeRenderer
    from packages.vtDV3D.ParallelCoordinatesModule import ParallelCoordinateViewer
    from packages.vtDV3D.WorldMapModule import WorldFrame
    from packages.vtDV3D.VoxelizerModule import Voxelizer
    from packages.uvcdat.init import Variable, VariableSource
#    from DemoDataModule import DemoData, DemoDataConfigurationWidget
#    from packages.vtDV3D.InteractiveConfiguration import LayerConfigurationWidget
    from packages.vtDV3D.LevelSurfaceModule import LevelSurface 
    from packages.vtDV3D.CurtainPlotModule import CurtainPlot 
    from packages.uvcdat_cdms.init import CDMSVariable
    from packages.vtDV3D.ResampleModule import Resample 
    from packages.vtDV3D.CDATUtilitiesModule import CDMS_CDATUtilities, CDATUtilitiesModuleConfigurationWidget
    from packages.vtDV3D.GradientModule import  Gradient
    from packages.vtDV3D.WorkflowModule import WorkflowModule
    from packages.vtDV3D.VectorCutPlaneModule import GlyphArrayCutPlane, StreamlineCutPlane 
    from packages.vtDV3D.VectorVolumeModule import VectorVolume 
    from packages.spreadsheet.basic_widgets import CellLocation
    from core.modules.basic_modules import Integer, Float, String, Boolean, Variant, Color
    import api
        
    reg = core.modules.module_registry.get_module_registry()   
    vtkAlgorithmOutputType = typeMap('vtkAlgorithmOutput')
    vtkImageDataType = typeMap('vtkImageData')
    reg.add_module( AlgorithmOutputModule, abstract=True) # hide_descriptor=True )       
    reg.add_module( AlgorithmOutputModule3D, abstract=True) # hide_descriptor=True )   
    reg.add_module( AlgorithmOutputModule2D, abstract=True) # hide_descriptor=True )   
    reg.add_module( WorkflowModule, abstract=True) # hide_descriptor=True )   
    reg.add_module( CDMSDataset, abstract=True) # hide_descriptor=True )   
     
    reg.add_module( MapCell3D, configureWidgetType=MapCell3DConfigurationWidget, namespace='spreadsheet' ) 
    reg.add_input_port( MapCell3D, "volume", AlgorithmOutputModule3D  )   
    reg.add_input_port( MapCell3D, "cell_location", [ ( String, 'cell_coordinates' ) ], True )
    reg.add_input_port( MapCell3D, "world_cut", Integer, optional=True  )
    reg.add_input_port( MapCell3D, "map_border_size",  [ ( Float, 'border_in_degrees' ) ], optional=True  )
    reg.add_input_port( MapCell3D, "enable_basemap",  [ ( Boolean, 'enable' ) ], optional=True  )    
    reg.add_input_port( MapCell3D, "world_map", [ ( File, 'map_file' ), ( Integer, 'map_cut' ) ], optional=True  ) 
    reg.add_input_port( MapCell3D, "map_opacity", [ ( Float, 'value' ) ], optional=True  ) 
    reg.add_input_port( MapCell3D, "title", [ ( String, 'value' ) ], optional=True  ) 
    MapCell3D.registerConfigurableFunctions( reg )

    reg.add_module( CloudCell3D, configureWidgetType=CloudCell3DConfigurationWidget, namespace='spreadsheet' ) 
    reg.add_input_port( CloudCell3D, "pointcloud", AlgorithmOutputModule3D  )   
    reg.add_input_port( CloudCell3D, "cell_location", [ ( String, 'cell_coordinates' ) ], True )
    reg.add_input_port( CloudCell3D, "title", [ ( String, 'value' ) ], optional=True  ) 
    CloudCell3D.registerConfigurableFunctions( reg )
    
    reg.add_module( ChartCell, configureWidgetType=ChartCellConfigurationWidget, namespace='spreadsheet' ) 
    reg.add_input_port( ChartCell, "chart", AlgorithmOutputModule2D  )   
    reg.add_input_port( ChartCell, "cell_location", [ ( String, 'cell_coordinates' ) ], True )
    reg.add_input_port( ChartCell, "opacity", [ ( Float, 'value' ) ], optional=True  ) 
    reg.add_input_port( ChartCell, "title", [ ( String, 'value' ) ], optional=True  ) 
    ChartCell.registerConfigurableFunctions( reg )

#    reg.add_module( WorldFrame )
#    reg.add_input_port( WorldFrame, "world_cut", Integer, optional=True  )
#    reg.add_input_port( WorldFrame, "map_border_size",  [ ( Float, 'border_in_degrees' ) ], optional=True  )
#    reg.add_input_port( WorldFrame, "world_map", [ ( File, 'map_file' ), ( Integer, 'map_cut' ) ], optional=True  ) 
#    reg.add_input_port( WorldFrame, "opacity", [ ( Float, 'value' ) ], optional=True  ) 
#    reg.add_input_port( WorldFrame, "zscale", [ ( Float, 'value' ) ], optional=True  ) 
#    reg.add_input_port( WorldFrame, "volume", AlgorithmOutputModule3D  )
#    reg.add_output_port( WorldFrame, "volume", AlgorithmOutputModule3D ) 
#    WorldFrame.registerConfigurableFunctions( reg )

#    reg.add_module( CDMS_VCDATInterfaceSpecs, configureWidgetType=VCDATInterfaceWidget, namespace='cdms', hide_descriptor=True )
#    reg.add_input_port( CDMS_VCDATInterfaceSpecs, "zscale", [ ( Float, 'value' ) ], optional=True  ) 

#    reg.add_module( CDMS_VCDATInterface, namespace='cdms' )
#    reg.add_input_port( CDMS_VCDATInterface, "vcdatInputSpecs",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "vcdatCellSpecs",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port(  CDMS_VCDATInterface, "FileName",    [ ( String, 'FileName' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "VariableName",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "VariableName1",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "VariableName2",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "VariableName3",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Axes",    [ ( String, 'Axes' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Row",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Column",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Row1",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Column1",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Row2",    [ ( String, 'Value' ) ], True ) 
#    reg.add_input_port( CDMS_VCDATInterface, "Column2",    [ ( String, 'Value' ) ], True ) 
#    reg.add_output_port( CDMS_VCDATInterface, "executionSpecs", [ CDMS_VCDATInterfaceSpecs ] ) 
#    reg.add_output_port( CDMS_VCDATInterface, "cellLocation", [ ( String, 'cellLocation' ) ] ) 
#    reg.add_output_port( CDMS_VCDATInterface, "cellLocation1", [ ( String, 'cellLocation' ) ] ) 
#    reg.add_output_port( CDMS_VCDATInterface, "cellLocation2", [ ( String, 'cellLocation' ) ] ) 

    reg.add_module( CDMSTransientVariable,  namespace='cdms' )
    reg.add_input_port(  CDMSTransientVariable, "inputId", String )      

    reg.add_module( CDMS_FileReader, configureWidgetType=CDMSDatasetConfigurationWidget, namespace='cdms' )
    reg.add_input_port(  CDMS_FileReader, "executionSpecs",    [ ( String, 'serializedConfiguration' ),  ], True ) 
    reg.add_input_port( CDMS_FileReader, "datasets",    [ ( String, 'serializedDatasetMap' ) ], True ) 
    reg.add_input_port( CDMS_FileReader, "datasetId",    [ ( String, 'currentDatasetId' ), ( Integer, 'version' ) ], True ) 
    reg.add_input_port( CDMS_FileReader, "timeRange",    [ ( Integer, 'startTimeIndex' ), ( Integer, 'endTimeIndex' ), ( Float, 'relativeStartTime' ), ( Float, 'relativeTimeStep' )], True )    
    reg.add_input_port( CDMS_FileReader, "roi",    [ ( Float, 'lon0' ), ( Float, 'lat0' ), ( Float, 'lon1' ), ( Float, 'lat1' ) ], True )    
    reg.add_input_port( CDMS_FileReader, "grid", [ ( String, 'selectedGrid' ) ], optional=True  ) 
    reg.add_input_port( CDMS_FileReader, "decimation", [ ( Integer, 'clientDecimation' ),  ( Integer, 'serverDecimation' ) ], optional=True  ) 
    reg.add_input_port( CDMS_FileReader, "zscale", [ ( Float, 'value' ) ], optional=True  ) 
    reg.add_output_port( CDMS_FileReader, "dataset", CDMSDataset ) 
    CDMS_FileReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMSVariableSource, namespace='cdms' )
    reg.add_input_port(  CDMSVariableSource, "inputId", String )      
    reg.add_output_port( CDMSVariableSource, "self", VariableSource )
    reg.add_output_port( CDMSVariableSource, "axes", String )

    reg.add_module( CDMS_HoffmullerReader, configureWidgetType=CDMS_HoffmullerReaderConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_HoffmullerReader, "dataset", CDMSDataset )      
    reg.add_input_port( CDMS_HoffmullerReader, "variable", Variable )      
    reg.add_input_port( CDMS_HoffmullerReader, "portData",   [ ( String, 'serializedPortData' ), ( Integer, 'version' ) ], True   ) 
    reg.add_output_port( CDMS_HoffmullerReader, "volume", AlgorithmOutputModule3D ) 
    CDMS_HoffmullerReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMS_VolumeReader, configureWidgetType=CDMS_VolumeReaderConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_VolumeReader, "dataset", CDMSDataset )      
    reg.add_input_port( CDMS_VolumeReader, "variable", Variable )      
    reg.add_input_port( CDMS_VolumeReader, "portData",   [ ( String, 'serializedPortData' ), ( Integer, 'version' ) ], True   ) 
    reg.add_output_port( CDMS_VolumeReader, "volume", AlgorithmOutputModule3D ) 
    CDMS_VolumeReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMS_ChartDataReader, configureWidgetType=CDMS_ChartDataConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_ChartDataReader, "dataset", CDMSDataset )      
    reg.add_input_port( CDMS_ChartDataReader, "portData",   [ ( String, 'serializedPortData' ), ( Integer, 'version' ) ], True   ) 
    reg.add_output_port( CDMS_ChartDataReader, "volume", AlgorithmOutputModule3D ) 
    CDMS_ChartDataReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMS_SliceReader, configureWidgetType=CDMS_SliceReaderConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_SliceReader, "dataset", CDMSDataset )        
    reg.add_input_port( CDMS_SliceReader, "portData",   [ ( String, 'serializedPortData' ), ( Integer, 'version' ) ], True   ) 
    reg.add_output_port( CDMS_SliceReader, "slice", AlgorithmOutputModule ) 
    CDMS_SliceReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMS_VectorReader, configureWidgetType=CDMS_VectorReaderConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_VectorReader, "dataset", CDMSDataset )        
    reg.add_input_port( CDMS_VectorReader, "variable", Variable )          
    reg.add_input_port( CDMS_VectorReader, "variable2", Variable )      
    reg.add_input_port( CDMS_VectorReader, "variable3", Variable )      
    reg.add_input_port( CDMS_VectorReader, "variable4", Variable )      
    reg.add_input_port( CDMS_VectorReader, "portData",   [ ( String, 'serializedPortData' ), ( Integer, 'version' ) ], True   ) 
    reg.add_output_port( CDMS_VectorReader, "volume", AlgorithmOutputModule3D ) 
    CDMS_SliceReader.registerConfigurableFunctions( reg )

    reg.add_module( CDMS_CDATUtilities, configureWidgetType=CDATUtilitiesModuleConfigurationWidget, namespace='cdms' )
    reg.add_input_port( CDMS_CDATUtilities, "dataset", CDMSDataset )   
    reg.add_input_port( CDMS_CDATUtilities, "task",  [ ( String, 'taskData' ) ], True   ) # [ ( String, 'taskName' ), ( String, 'inputVars' ), ( String, 'outputVars' ) ], True   ) 
    reg.add_output_port( CDMS_CDATUtilities, "dataset", CDMSDataset ) 

    reg.add_module( VolumeSlicer, namespace='vtk' )
    reg.add_output_port( VolumeSlicer, "slice",  AlgorithmOutputModule  )
    reg.add_input_port( VolumeSlicer, "contours", AlgorithmOutputModule3D  )
    reg.add_input_port( VolumeSlicer, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( VolumeSlicer, "volume", AlgorithmOutputModule3D ) 
    VolumeSlicer.registerConfigurableFunctions( reg )

    reg.add_module( Gradient, namespace='vtk|experimental'  ) 
    reg.add_input_port( Gradient, "computeVorticity", Integer  )   
    reg.add_input_port( Gradient, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( Gradient, "volume", AlgorithmOutputModule3D ) 
    
    reg.add_module( GlyphArrayCutPlane, namespace='vtk'  )
    reg.add_input_port( GlyphArrayCutPlane, "colors", AlgorithmOutputModule3D  )
    reg.add_output_port( GlyphArrayCutPlane, "slice", AlgorithmOutputModule ) 
    reg.add_input_port( GlyphArrayCutPlane, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( GlyphArrayCutPlane, "volume", AlgorithmOutputModule3D ) 
    GlyphArrayCutPlane.registerConfigurableFunctions(  reg )

    reg.add_module( StreamlineCutPlane, namespace='vtk'  )
    reg.add_input_port( StreamlineCutPlane, "colors", AlgorithmOutputModule3D  )
    reg.add_input_port( StreamlineCutPlane, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( StreamlineCutPlane, "volume", AlgorithmOutputModule3D ) 
    StreamlineCutPlane.registerConfigurableFunctions(  reg )

    reg.add_module( VectorVolume, namespace='vtk'  )
    reg.add_input_port( VectorVolume, "colors", AlgorithmOutputModule3D  )
    reg.add_input_port( VectorVolume, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( VectorVolume, "volume", AlgorithmOutputModule3D ) 
    VectorVolume.registerConfigurableFunctions(  reg )
    
    reg.add_module( Voxelizer, namespace='vtk'  )
    reg.add_input_port( Voxelizer, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( Voxelizer, "pointcloud", AlgorithmOutputModule3D ) 
    Voxelizer.registerConfigurableFunctions(  reg )

#    reg.add_module( Resample )
#    reg.add_input_port( Resample, "position", [ ( Float, 'x' ), ( Float, 'y' ), ( Float, 'z' ) ], True   )    
#    reg.add_output_port( Resample, "position",  [ ( Float, 'x' ), ( Float, 'y' ), ( Float, 'z' ) ], True  )
#    reg.add_input_port( Resample, "volume", AlgorithmOutputModule3D  )
#    reg.add_output_port( Resample, "volume", AlgorithmOutputModule3D ) 
#    Resample.registerConfigurableFunctions( reg )

    reg.add_module( CurtainPlot, namespace='vtk'  )
    reg.add_input_port( CurtainPlot, "volume", AlgorithmOutputModule3D  )
    reg.add_input_port( CurtainPlot, "path", ( File, 'path_file' )  ) 
    reg.add_output_port( CurtainPlot, "volume", AlgorithmOutputModule3D ) 
    CurtainPlot.registerConfigurableFunctions( reg )
       
#    reg.add_module( DemoData, configureWidgetType=DemoDataConfigurationWidget )
#    reg.add_input_port( DemoData, "dataset",    [ ( String, 'name' ), ] ) 
#    reg.add_input_port( DemoData, "maxNTimeSteps",   [ ( Integer, 'nts' ) ]   ) 
#    reg.add_output_port( DemoData, "volume", AlgorithmOutputModule3D ) 
#    DemoData.registerConfigurableFunctions( reg )
       
    reg.add_module( VolumeRenderer, namespace='vtk'  ) # , configureWidgetType=LayerConfigurationWidget  )
    reg.add_input_port( VolumeRenderer, "volume", AlgorithmOutputModule3D  )
#    reg.add_input_port( VolumeRenderer, "layer",   [ ( String, 'layer' ), ]   ) 
    reg.add_output_port( VolumeRenderer, "volume", AlgorithmOutputModule3D ) 
    VolumeRenderer.registerConfigurableFunctions( reg )

    reg.add_module( ParallelCoordinateViewer, namespace='vtk'  ) # , configureWidgetType=LayerConfigurationWidget  )
    reg.add_input_port( ParallelCoordinateViewer, "volume", AlgorithmOutputModule3D  )
    reg.add_input_port(  ParallelCoordinateViewer, "slice", AlgorithmOutputModule  )
#    reg.add_input_port( VolumeRenderer, "layer",   [ ( String, 'layer' ), ]   ) 
    reg.add_output_port( ParallelCoordinateViewer, "chart", AlgorithmOutputModule2D ) 
    ParallelCoordinateViewer.registerConfigurableFunctions( reg )

    reg.add_module( LevelSurface, namespace='vtk'   )
    reg.add_input_port( LevelSurface, "texture", AlgorithmOutputModule3D  )
    reg.add_input_port( LevelSurface, "volume", AlgorithmOutputModule3D  )
    reg.add_output_port( LevelSurface, "volume", AlgorithmOutputModule3D ) 
#    reg.add_input_port( LevelSurface, "layer",   [ ( String, 'activeLayerName' ) ]   ) 
    LevelSurface.registerConfigurableFunctions( reg )

    from core.packagemanager import get_package_manager
    if get_package_manager().has_package('edu.utah.sci.vistrails.matplotlib'):
        mpl_dict = {'linux-ubuntu': 'python-matplotlib', 'linux-fedora': 'python-matplotlib'}
        matplotlib = py_import('matplotlib', mpl_dict)
        pylab = py_import('pylab', mpl_dict)
        from SlicePlotModule import SlicePlotCell, SlicePlotConfigurationWidget

        reg.add_module( SlicePlotCell, namespace='spreadsheet', configureWidgetType=SlicePlotConfigurationWidget  )
        reg.add_input_port(  SlicePlotCell, "Location", CellLocation)
        reg.add_input_port(  SlicePlotCell, "slice", AlgorithmOutputModule  )
        reg.add_input_port(  SlicePlotCell, "plotType", [ ( String, 'fillType' ), ( String, 'contourType' ), ( Integer, 'numContours' ), ( Integer, 'version' ) ], True   )
        reg.add_output_port( SlicePlotCell, 'File', File)
        SlicePlotCell.registerConfigurableFunctions( reg )
    else:
        print "Matplotlib dependent features will be disabled."
Example #40
0
 def clicked_on_available_list(self, item):
     codepath = str(item.text())
     pm = get_package_manager()
     self._current_package = pm.look_at_available_package(codepath)
     self.set_buttons_to_available_package()
     self.set_package_information()
Example #41
0
def initialize(*args, **keywords):
    import core.modules.module_registry
    from packages.vtDV3D.CDMS_VariableReaders import CDMSVariableSource, CDMS_PointReader, CDMSTransientVariable, CDMS_HoffmullerReader, CDMS_VolumeReader, CDMS_ChartDataReader, CDMS_SliceReader, CDMS_VectorReader, CDMS_HoffmullerReaderConfigurationWidget, CDMS_PointReaderConfigurationWidget, CDMS_VolumeReaderConfigurationWidget, CDMS_ChartDataConfigurationWidget, CDMS_SliceReaderConfigurationWidget, CDMS_VectorReaderConfigurationWidget
    from packages.vtDV3D.VolumeSlicerModule import VolumeSlicer
    from packages.vtDV3D.MultiVolumeSlicerModule import MultiVolumeSlicer
    from packages.vtDV3D.VolumeRenderModule import VolumeRenderer
    from packages.vtDV3D.ParallelCoordinatesModule import ParallelCoordinateViewer
    from packages.vtDV3D.WorldMapModule import WorldFrame
    from packages.vtDV3D.VoxelizerModule import Voxelizer
    from packages.uvcdat.init import Variable, VariableSource
    #    from DemoDataModule import DemoData, DemoDataConfigurationWidget
    #    from packages.vtDV3D.InteractiveConfiguration import LayerConfigurationWidget
    from packages.vtDV3D.LevelSurfaceModule import LevelSurface
    from packages.vtDV3D.CurtainPlotModule import CurtainPlot
    from packages.uvcdat_cdms.init import CDMSVariable
    from packages.vtDV3D.ResampleModule import Resample
    from packages.vtDV3D.CDATUtilitiesModule import CDMS_CDATUtilities, CDATUtilitiesModuleConfigurationWidget
    from packages.vtDV3D.GradientModule import Gradient
    from packages.vtDV3D.WorkflowModule import WorkflowModule
    from packages.vtDV3D.VectorCutPlaneModule import GlyphArrayCutPlane, StreamlineCutPlane
    from packages.vtDV3D.VectorVolumeModule import VectorVolume
    #    from packages.vtDV3D.CPCViewer import CPCViewer, CPCViewerConfigurationWidget
    from packages.spreadsheet.basic_widgets import CellLocation
    from core.modules.basic_modules import Integer, Float, String, Boolean, Variant, Color
    #    from packages.CPCViewer.PointCloudViewer import CPCPlot, kill_all_zombies
    from core import command_line
    import api
    get = command_line.CommandLineParser().get_option
    if get('kill_all_zombies') != None: kill_all_zombies()

    reg = core.modules.module_registry.get_module_registry()
    vtkAlgorithmOutputType = typeMap('vtkAlgorithmOutput')
    vtkImageDataType = typeMap('vtkImageData')
    reg.add_module(AlgorithmOutputModule,
                   abstract=True)  # hide_descriptor=True )
    reg.add_module(AlgorithmOutputModule3D,
                   abstract=True)  # hide_descriptor=True )
    reg.add_module(AlgorithmOutputModule2D,
                   abstract=True)  # hide_descriptor=True )
    reg.add_module(WorkflowModule, abstract=True)  # hide_descriptor=True )
    reg.add_module(CDMSDataset, abstract=True)  # hide_descriptor=True )

    reg.add_module(MapCell3D,
                   configureWidgetType=MapCell3DConfigurationWidget,
                   namespace='spreadsheet')
    reg.add_input_port(MapCell3D, "volume", AlgorithmOutputModule3D)
    reg.add_input_port(MapCell3D, "cell_location",
                       [(String, 'cell_coordinates')], True)
    reg.add_input_port(MapCell3D, "world_cut", Integer, optional=True)
    reg.add_input_port(MapCell3D,
                       "map_border_size", [(Float, 'border_in_degrees')],
                       optional=True)
    reg.add_input_port(MapCell3D,
                       "enable_basemap", [(Boolean, 'enable')],
                       optional=True)
    reg.add_input_port(MapCell3D,
                       "world_map", [(File, 'map_file'), (Integer, 'map_cut')],
                       optional=True)
    reg.add_input_port(MapCell3D,
                       "map_opacity", [(Float, 'value')],
                       optional=True)
    reg.add_input_port(MapCell3D, "title", [(String, 'value')], optional=True)
    MapCell3D.registerConfigurableFunctions(reg)

    reg.add_module(CloudCell3D,
                   configureWidgetType=CloudCell3DConfigurationWidget,
                   namespace='spreadsheet')
    reg.add_input_port(CloudCell3D, "pointcloud", AlgorithmOutputModule3D)
    reg.add_input_port(CloudCell3D, "cell_location",
                       [(String, 'cell_coordinates')], True)
    reg.add_input_port(CloudCell3D,
                       "title", [(String, 'value')],
                       optional=True)
    CloudCell3D.registerConfigurableFunctions(reg)

    reg.add_module(ChartCell,
                   configureWidgetType=ChartCellConfigurationWidget,
                   namespace='spreadsheet')
    reg.add_input_port(ChartCell, "chart", AlgorithmOutputModule2D)
    reg.add_input_port(ChartCell, "cell_location",
                       [(String, 'cell_coordinates')], True)
    reg.add_input_port(ChartCell, "opacity", [(Float, 'value')], optional=True)
    reg.add_input_port(ChartCell, "title", [(String, 'value')], optional=True)
    ChartCell.registerConfigurableFunctions(reg)

    #    reg.add_module( WorldFrame )
    #    reg.add_input_port( WorldFrame, "world_cut", Integer, optional=True  )
    #    reg.add_input_port( WorldFrame, "map_border_size",  [ ( Float, 'border_in_degrees' ) ], optional=True  )
    #    reg.add_input_port( WorldFrame, "world_map", [ ( File, 'map_file' ), ( Integer, 'map_cut' ) ], optional=True  )
    #    reg.add_input_port( WorldFrame, "opacity", [ ( Float, 'value' ) ], optional=True  )
    #    reg.add_input_port( WorldFrame, "zscale", [ ( Float, 'value' ) ], optional=True  )
    #    reg.add_input_port( WorldFrame, "volume", AlgorithmOutputModule3D  )
    #    reg.add_output_port( WorldFrame, "volume", AlgorithmOutputModule3D )
    #    WorldFrame.registerConfigurableFunctions( reg )

    #    reg.add_module( CDMS_VCDATInterfaceSpecs, configureWidgetType=VCDATInterfaceWidget, namespace='cdms', hide_descriptor=True )
    #    reg.add_input_port( CDMS_VCDATInterfaceSpecs, "zscale", [ ( Float, 'value' ) ], optional=True  )

    #    reg.add_module( CDMS_VCDATInterface, namespace='cdms' )
    #    reg.add_input_port( CDMS_VCDATInterface, "vcdatInputSpecs",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "vcdatCellSpecs",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port(  CDMS_VCDATInterface, "FileName",    [ ( String, 'FileName' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "VariableName",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "VariableName1",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "VariableName2",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "VariableName3",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Axes",    [ ( String, 'Axes' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Row",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Column",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Row1",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Column1",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Row2",    [ ( String, 'Value' ) ], True )
    #    reg.add_input_port( CDMS_VCDATInterface, "Column2",    [ ( String, 'Value' ) ], True )
    #    reg.add_output_port( CDMS_VCDATInterface, "executionSpecs", [ CDMS_VCDATInterfaceSpecs ] )
    #    reg.add_output_port( CDMS_VCDATInterface, "cellLocation", [ ( String, 'cellLocation' ) ] )
    #    reg.add_output_port( CDMS_VCDATInterface, "cellLocation1", [ ( String, 'cellLocation' ) ] )
    #    reg.add_output_port( CDMS_VCDATInterface, "cellLocation2", [ ( String, 'cellLocation' ) ] )

    reg.add_module(CDMSTransientVariable, namespace='cdms')
    reg.add_input_port(CDMSTransientVariable, "inputId", String)

    reg.add_module(CDMS_FileReader,
                   configureWidgetType=CDMSDatasetConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_FileReader, "executionSpecs", [
        (String, 'serializedConfiguration'),
    ], True)
    reg.add_input_port(CDMS_FileReader, "datasets",
                       [(String, 'serializedDatasetMap')], True)
    reg.add_input_port(CDMS_FileReader,
                       "datasetId", [(String, 'currentDatasetId'),
                                     (Integer, 'version')], True)
    reg.add_input_port(CDMS_FileReader, "timeRange",
                       [(Integer, 'startTimeIndex'), (Integer, 'endTimeIndex'),
                        (Float, 'relativeStartTime'),
                        (Float, 'relativeTimeStep')], True)
    reg.add_input_port(CDMS_FileReader, "roi",
                       [(Float, 'lon0'), (Float, 'lat0'), (Float, 'lon1'),
                        (Float, 'lat1')], True)
    reg.add_input_port(CDMS_FileReader,
                       "grid", [(String, 'selectedGrid')],
                       optional=True)
    reg.add_input_port(CDMS_FileReader,
                       "decimation", [(Integer, 'clientDecimation'),
                                      (Integer, 'serverDecimation')],
                       optional=True)
    reg.add_input_port(CDMS_FileReader,
                       "zscale", [(Float, 'value')],
                       optional=True)
    reg.add_output_port(CDMS_FileReader, "dataset", CDMSDataset)
    CDMS_FileReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMSVariableSource, namespace='cdms')
    reg.add_input_port(CDMSVariableSource, "inputId", String)
    reg.add_output_port(CDMSVariableSource, "self", VariableSource)
    reg.add_output_port(CDMSVariableSource, "axes", String)

    reg.add_module(
        CDMS_HoffmullerReader,
        configureWidgetType=CDMS_HoffmullerReaderConfigurationWidget,
        namespace='cdms')
    reg.add_input_port(CDMS_HoffmullerReader, "dataset", CDMSDataset)
    reg.add_input_port(CDMS_HoffmullerReader, "variable", Variable)
    reg.add_input_port(CDMS_HoffmullerReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_HoffmullerReader, "volume",
                        AlgorithmOutputModule3D)
    CDMS_HoffmullerReader.registerConfigurableFunctions(reg)

    # reg.add_module( CPCViewer, configureWidgetType=CPCViewerConfigurationWidget, namespace='vtk' )
    # reg.add_input_port( CPCViewer, "pointCloud", AlgorithmOutputModule3D )
    # reg.add_input_port( CPCViewer, "cpcConfigData",   [ ( String, 'serializedConfigData' ), ( Integer, 'version' ) ], True   )
    # reg.add_output_port( CPCViewer, "pointCloud", AlgorithmOutputModule3D )
    # CPCViewer.registerConfigurableFunctions( reg )

    reg.add_module(CDMS_VolumeReader,
                   configureWidgetType=CDMS_VolumeReaderConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_VolumeReader, "dataset", CDMSDataset)
    reg.add_input_port(CDMS_VolumeReader, "variable", Variable)
    reg.add_input_port(CDMS_VolumeReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_VolumeReader, "volume", AlgorithmOutputModule3D)
    CDMS_VolumeReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMS_PointReader,
                   configureWidgetType=CDMS_PointReaderConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_PointReader, "variable", Variable)
    reg.add_input_port(CDMS_PointReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_PointReader, "pointCloud",
                        AlgorithmOutputModule3D)
    CDMS_PointReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMS_ChartDataReader,
                   configureWidgetType=CDMS_ChartDataConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_ChartDataReader, "dataset", CDMSDataset)
    reg.add_input_port(CDMS_ChartDataReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_ChartDataReader, "volume",
                        AlgorithmOutputModule3D)
    CDMS_ChartDataReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMS_SliceReader,
                   configureWidgetType=CDMS_SliceReaderConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_SliceReader, "dataset", CDMSDataset)
    reg.add_input_port(CDMS_SliceReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_SliceReader, "slice", AlgorithmOutputModule)
    CDMS_SliceReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMS_VectorReader,
                   configureWidgetType=CDMS_VectorReaderConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_VectorReader, "dataset", CDMSDataset)
    reg.add_input_port(CDMS_VectorReader, "variable", Variable)
    reg.add_input_port(CDMS_VectorReader, "variable2", Variable)
    reg.add_input_port(CDMS_VectorReader, "variable3", Variable)
    reg.add_input_port(CDMS_VectorReader, "variable4", Variable)
    reg.add_input_port(CDMS_VectorReader,
                       "portData", [(String, 'serializedPortData'),
                                    (Integer, 'version')], True)
    reg.add_output_port(CDMS_VectorReader, "volume", AlgorithmOutputModule3D)
    CDMS_SliceReader.registerConfigurableFunctions(reg)

    reg.add_module(CDMS_CDATUtilities,
                   configureWidgetType=CDATUtilitiesModuleConfigurationWidget,
                   namespace='cdms')
    reg.add_input_port(CDMS_CDATUtilities, "dataset", CDMSDataset)
    reg.add_input_port(
        CDMS_CDATUtilities, "task", [(String, 'taskData')], True
    )  # [ ( String, 'taskName' ), ( String, 'inputVars' ), ( String, 'outputVars' ) ], True   )
    reg.add_output_port(CDMS_CDATUtilities, "dataset", CDMSDataset)

    reg.add_module(VolumeSlicer, namespace='vtk')
    reg.add_output_port(VolumeSlicer, "slice", AlgorithmOutputModule)
    reg.add_input_port(VolumeSlicer, "contours", AlgorithmOutputModule3D)
    reg.add_input_port(VolumeSlicer, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(VolumeSlicer, "volume", AlgorithmOutputModule3D)
    VolumeSlicer.registerConfigurableFunctions(reg)

    reg.add_module(MultiVolumeSlicer, namespace='vtk')
    reg.add_output_port(MultiVolumeSlicer, "slice", AlgorithmOutputModule)
    reg.add_input_port(MultiVolumeSlicer, "contours", AlgorithmOutputModule3D)
    reg.add_input_port(MultiVolumeSlicer, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(MultiVolumeSlicer, "volume", AlgorithmOutputModule3D)
    MultiVolumeSlicer.registerConfigurableFunctions(reg)

    reg.add_module(Gradient, namespace='vtk|experimental')
    reg.add_input_port(Gradient, "computeVorticity", Integer)
    reg.add_input_port(Gradient, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(Gradient, "volume", AlgorithmOutputModule3D)

    reg.add_module(GlyphArrayCutPlane, namespace='vtk')
    reg.add_input_port(GlyphArrayCutPlane, "colors", AlgorithmOutputModule3D)
    reg.add_output_port(GlyphArrayCutPlane, "slice", AlgorithmOutputModule)
    reg.add_input_port(GlyphArrayCutPlane, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(GlyphArrayCutPlane, "volume", AlgorithmOutputModule3D)
    GlyphArrayCutPlane.registerConfigurableFunctions(reg)

    reg.add_module(StreamlineCutPlane, namespace='vtk')
    reg.add_input_port(StreamlineCutPlane, "colors", AlgorithmOutputModule3D)
    reg.add_input_port(StreamlineCutPlane, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(StreamlineCutPlane, "volume", AlgorithmOutputModule3D)
    StreamlineCutPlane.registerConfigurableFunctions(reg)

    reg.add_module(VectorVolume, namespace='vtk')
    reg.add_input_port(VectorVolume, "colors", AlgorithmOutputModule3D)
    reg.add_input_port(VectorVolume, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(VectorVolume, "volume", AlgorithmOutputModule3D)
    VectorVolume.registerConfigurableFunctions(reg)

    reg.add_module(Voxelizer, namespace='vtk')
    reg.add_input_port(Voxelizer, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(Voxelizer, "pointcloud", AlgorithmOutputModule3D)
    Voxelizer.registerConfigurableFunctions(reg)

    #    reg.add_module( Resample )
    #    reg.add_input_port( Resample, "position", [ ( Float, 'x' ), ( Float, 'y' ), ( Float, 'z' ) ], True   )
    #    reg.add_output_port( Resample, "position",  [ ( Float, 'x' ), ( Float, 'y' ), ( Float, 'z' ) ], True  )
    #    reg.add_input_port( Resample, "volume", AlgorithmOutputModule3D  )
    #    reg.add_output_port( Resample, "volume", AlgorithmOutputModule3D )
    #    Resample.registerConfigurableFunctions( reg )

    reg.add_module(CurtainPlot, namespace='vtk')
    reg.add_input_port(CurtainPlot, "volume", AlgorithmOutputModule3D)
    reg.add_input_port(CurtainPlot, "path", (File, 'path_file'))
    reg.add_output_port(CurtainPlot, "volume", AlgorithmOutputModule3D)
    CurtainPlot.registerConfigurableFunctions(reg)

    #    reg.add_module( DemoData, configureWidgetType=DemoDataConfigurationWidget )
    #    reg.add_input_port( DemoData, "dataset",    [ ( String, 'name' ), ] )
    #    reg.add_input_port( DemoData, "maxNTimeSteps",   [ ( Integer, 'nts' ) ]   )
    #    reg.add_output_port( DemoData, "volume", AlgorithmOutputModule3D )
    #    DemoData.registerConfigurableFunctions( reg )

    reg.add_module(
        VolumeRenderer,
        namespace='vtk')  # , configureWidgetType=LayerConfigurationWidget  )
    reg.add_input_port(VolumeRenderer, "volume", AlgorithmOutputModule3D)
    #    reg.add_input_port( VolumeRenderer, "layer",   [ ( String, 'layer' ), ]   )
    reg.add_output_port(VolumeRenderer, "volume", AlgorithmOutputModule3D)
    VolumeRenderer.registerConfigurableFunctions(reg)

    reg.add_module(
        ParallelCoordinateViewer,
        namespace='vtk')  # , configureWidgetType=LayerConfigurationWidget  )
    reg.add_input_port(ParallelCoordinateViewer, "volume",
                       AlgorithmOutputModule3D)
    reg.add_input_port(ParallelCoordinateViewer, "slice",
                       AlgorithmOutputModule)
    #    reg.add_input_port( VolumeRenderer, "layer",   [ ( String, 'layer' ), ]   )
    reg.add_output_port(ParallelCoordinateViewer, "chart",
                        AlgorithmOutputModule2D)
    ParallelCoordinateViewer.registerConfigurableFunctions(reg)

    reg.add_module(LevelSurface, namespace='vtk')
    reg.add_input_port(LevelSurface, "texture", AlgorithmOutputModule3D)
    reg.add_input_port(LevelSurface, "volume", AlgorithmOutputModule3D)
    reg.add_output_port(LevelSurface, "volume", AlgorithmOutputModule3D)
    #    reg.add_input_port( LevelSurface, "layer",   [ ( String, 'activeLayerName' ) ]   )
    LevelSurface.registerConfigurableFunctions(reg)

    from core.packagemanager import get_package_manager
    if get_package_manager().has_package('edu.utah.sci.vistrails.matplotlib'):
        mpl_dict = {
            'linux-ubuntu': 'python-matplotlib',
            'linux-fedora': 'python-matplotlib'
        }
        matplotlib = py_import('matplotlib', mpl_dict)
        pylab = py_import('pylab', mpl_dict)
        from SlicePlotModule import SlicePlotCell, SlicePlotConfigurationWidget

        reg.add_module(SlicePlotCell,
                       namespace='spreadsheet',
                       configureWidgetType=SlicePlotConfigurationWidget)
        reg.add_input_port(SlicePlotCell, "Location", CellLocation)
        reg.add_input_port(SlicePlotCell, "slice", AlgorithmOutputModule)
        reg.add_input_port(SlicePlotCell,
                           "plotType", [(String, 'fillType'),
                                        (String, 'contourType'),
                                        (Integer, 'numContours'),
                                        (Integer, 'version')], True)
        reg.add_output_port(SlicePlotCell, 'File', File)
        SlicePlotCell.registerConfigurableFunctions(reg)
    else:
        print "Matplotlib dependent features will be disabled."
Example #42
0
            p.load()
        except Exception, e:
            msg = 'ERROR: Could not load package.'
            self._name_label.setText(msg)
            self._version_label.setText(msg)
            self._identifier_label.setText(msg)
            self._dependencies_label.setText(msg)
            self._description_label.setText(msg)
            self._reverse_dependencies_label.setText(msg)
            debug.critical('Cannot load package', str(e))
        else:
            self._name_label.setText(p.name)
            deps = ', '.join(str(d) for d in p.dependencies()) or \
                'No package dependencies.'
            try:
                pm = get_package_manager()
                reverse_deps = \
                    (', '.join(pm.reverse_dependencies(p.identifier)) or
                     'No reverse dependencies.')
            except KeyError:
                reverse_deps = ("Reverse dependencies only " +
                                "available for enabled packages.")
            self._identifier_label.setText(p.identifier)
            self._version_label.setText(p.version)
            self._dependencies_label.setText(deps)
            self._description_label.setText(p.description)
            self._reverse_dependencies_label.setText(reverse_deps)

    ##########################################################################
    # Signal handling