Source code for paraview.simple.plugin

from paraview import servermanager


# ==============================================================================
# Plugin Management
# ==============================================================================


[docs]def LoadXML(xmlstring, ns=None): """Given a server manager XML as a string, parse and process it. If you loaded the simple module with ``from paraview.simple import *``, make sure to pass ``globals()`` as the second arguments:: LoadXML(xmlstring, globals()) Otherwise, the new functions will not appear in the global namespace. :param xmlstring: XML string containing server manager definitions. :type xmlstring: str :param ns: Namespace in which new functions will be defined. Optional, defaults to `None`. :type ns: dict """ from paraview.simple import _extend_simple if not ns: ns = globals() servermanager.LoadXML(xmlstring) _extend_simple(ns)
# -----------------------------------------------------------------------------
[docs]def LoadPlugin(filename, remote=True, ns=None): """Loads a ParaView plugin and updates this module with new constructors if any. The remote argument (default to ``True``) is to specify whether the plugin will be loaded on the client (``remote=False``) or on the server (``remote=True``). If you loaded the simple module with ``from paraview.simple import *``, make sure to pass ``globals()`` as an argument:: LoadPlugin("myplugin", False, globals()) # to load on client LoadPlugin("myplugin", True, globals()) # to load on server LoadPlugin("myplugin", ns=globals()) # to load on server Otherwise, the new functions will not appear in the global namespace. :param filename: Path to the plugin to load. :type filename: str :param remote: If `True`, loads the plugin on the server unless the connection is not remote. If `False`, loads the plugin on the client. Optional, defaults to `True`. :type remote: bool :param ns: Namespace in which new functions will be loaded. Optional, defaults to `None`. :type ns: dict :return: None """ return LoadPlugins(filename, remote=remote, ns=ns)
# -----------------------------------------------------------------------------
[docs]def LoadPlugins(*args, **kwargs): """Loads ParaView plugins and updates this module with new constructors if any. The remote keyword argument (default to ``True``) is to specify whether the plugin will be loaded on client (``remote=False``) or on server (``remote=True``). Proxy definition updates are deferred until all plugins have been read, which can be more computationally efficient when multiple plugins are loaded in sequence. If you loaded the simple module with ``from paraview.simple import *``, make sure to pass ``globals()`` as a keyword argument:: LoadPlugins("myplugin1", "myplugin2", remote=False, ns=globals()) # to load on client LoadPlugins("myplugin", "myplugin2", remote=True, ns=globals()) # to load on server LoadPlugins("myplugin", "myplugin2", ns=globals()) # to load on server Otherwise, the new functions will not appear in the global namespace. Note, `remote=True` has no effect when the connection is not remote. """ from paraview.simple import _extend_simple remote = True if "remote" in kwargs: remote = kwargs["remote"] ns = globals() if "ns" in kwargs and kwargs["ns"]: ns = kwargs["ns"] servermanager.vtkSMProxyManager.GetProxyManager().SetBlockProxyDefinitionUpdates( True ) for arg in args: servermanager.LoadPlugin(arg, remote) servermanager.vtkSMProxyManager.GetProxyManager().SetBlockProxyDefinitionUpdates( False ) servermanager.vtkSMProxyManager.GetProxyManager().UpdateProxyDefinitions() _extend_simple(ns)
# -----------------------------------------------------------------------------
[docs]def LoadDistributedPlugin(pluginname, remote=True, ns=None): """Loads a plugin that's distributed with the ParaView executable. This uses the information known about plugins distributed with ParaView to locate the shared library for the plugin to load. :param pluginname: Short name of the plugin (not a file path) :type pluginname: str :param remote: If `True`, loads the plugin on the server unless the connection is not remote. If `False`, loads the plugin on the client. Optional, defaults to `True`. :type remote: bool :param ns: Namespace in which new functions will be loaded. Optional, defaults to `None`. :type ns: dict :raises RuntimeError: If the plugin was not found. """ if not servermanager.ActiveConnection: raise RuntimeError("Cannot load a plugin without a session.") conn = servermanager.ActiveConnection do_remote = remote and conn.IsRemote() plm = servermanager.vtkSMProxyManager.GetProxyManager().GetPluginManager() if do_remote: session = servermanager.ActiveConnection.Session info = plm.GetRemoteInformation(session) else: info = plm.GetLocalInformation() for cc in range(0, info.GetNumberOfPlugins()): if info.GetPluginName(cc) == pluginname: return LoadPlugin(info.GetPluginFileName(cc), remote=do_remote, ns=ns) raise RuntimeError("Plugin '%s' not found" % pluginname)
# ============================================================================== # Custom Filters Management # ==============================================================================
[docs]def LoadCustomFilters(filename, ns=None): """Loads a custom filter XML file and updates this module with new constructors if any. If you loaded the simple module with ``from paraview.simple import *``, make sure to pass ``globals()`` as an argument. :param filename: Path to XML file with custom filter definitions. :type filename: str :param ns: Namespace in which new functions will be loaded. Optional, defaults to `None`. :type ns: dict """ from paraview.simple import _extend_simple servermanager.ProxyManager().SMProxyManager.LoadCustomProxyDefinitions(filename) if not ns: ns = globals() _extend_simple(ns)