Packages¶
Module containing the Package abstract class and some classes derived from
it: EditPackage, GroupPackage and RootPackage
A package defines the nodes and parameters that will create or edit the
locations managed by a PackageSuperToolAPI-based SuperTool. Each package
will be associated with one location.
By default, a package will be a I{creation} package, which creates new
locations using its internal nodes. A package class derived from EditPackage
is an I{edit} package, which can edit existing locations from the incoming
scene graph.
Package classes derived from GroupPackage can have child packages: packages
that create and manage locations that are children of the parent package’s
location.
All packages have a parent package, except the root package, which is
implemented by RootPackage. The root package represents the root location of
the PackageSuperToolAPI-based node.
A package usually creates and manages a package node, usually of the type Group
or GroupStack, that contains all of the nodes the package requires. This node
needs to be set with some standard parameters and should create some standard
attributes to be consumed internally by the SuperTool framework. These can
be automatically created with some helper functions provided by this class, or
its abstract children (EditPackage and GroupPackage).
Optionally, a GroupStack node can be added to the Post-Merge area of the SuperTool by this class. These nodes will have access to the incoming scene graph.
Packages¶
- class PackageSuperToolAPI.Packages.Package(packageNode)¶
 Bases:
PackageSuperToolAPI.Packages.UpgradableClass implementing the base class for all PackageSuperToolAPI packages.
@undocumented: __hash__, __eq__, __ne__
- __init__(packageNode)¶
 Initializes an instance of the class with the given package node.
- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which to initialize the new package instance. This is usually a Group or a GroupStack node, but can also be a single node.
- adoptPackage(childPackage, peerNames=None)¶
 Implements the adoption of a given package as child of this package. To be implemented by child classes that support child packages.
The default implementation does nothing.
- Parameters
 childPackage (
Package) – The package to adopt.peerNames (
listofstrorNone) – An optional list of the names of the existing locations which will be peers of the newly adopted package. If provided, this will be used to make sure that the location for the adopted package is given a unique name.
- canAdoptPackage(package)¶
 - Return type
 bool- Parameters
 package (
Package) – The package to test whether it can be adopted by this package.- Returns
 Trueif the given package can be adopted by this package, otherwiseFalse. The default implementation returnsFalse.
- canBeAdoptedByPackage(package)¶
 - Return type
 bool- Parameters
 package (
Package) – The package to test whether it can adopt this package.- Returns
 Trueif the given package can adopt this package, otherwiseFalse.
- classmethod canBeCreatedByPackageClass(packageClass)¶
 Determines if the given package class can create a child of this package type.
- Return type
 bool- Parameters
 packageClass (
type) – The package class to test whether it can create a child of the type of this package class.- Returns
 Trueif the packages of the given class can create children of the type of this package class, otherwiseFalse. The default implementation returnsTrue.
- canBeDeleted()¶
 - Return type
 bool- Returns
 Trueif the package can be deleted, otherwiseFalse.- Note
 A package might not be able to be deleted if the SuperTool’s main node is locked.
- canBeDuplicated(parentPackage=None)¶
 - Parameters
 parentPackage (
PackageorNone) – The destination package where the new duplicated package would be created. If none is provided, the parent package of the original package would be used.- Return type
 bool- Returns
 Trueif the package can be duplicated, otherwiseFalse.
- canBeRenamed()¶
 - Return type
 bool- Returns
 Trueif the package can be renamed, otherwiseFalse.- Note
 A package might not be able to be renamed if the SuperTool’s main node is locked.
- classmethod canCreateChildPackage(packageClassOrName, mainNode, locationPath)¶
 - Return type
 bool- Parameters
 packageClassOrName (
typeorstr) – A package class or package class type.mainNode (
NodegraphAPI.Node) – The main node of a SuperTool.locationPath (
str) – The location path for which to test whether a child package can be created by this package.
- Returns
 Trueif this package class can create a child package of the given type for the location of the given path, under the given main node, otherwiseFalse.
- classmethod canCreatePackageClass(packageClass)¶
 Determines if this package can create a child of the given package class.
- Return type
 bool- Parameters
 packageClass (
type) – The package class to test whether it can be created by this package.- Returns
 Trueif the packages of the given class can be created by this package, otherwiseFalse. The default implementation returnsFalse.
- canDuplicate()¶
 - Deprecated
 This function is deprecated. Please use canBeDuplicated() instead.
- canReorderChildPackage(oldIndex, newIndex)¶
 Returns a flag indicating if the package at the given index can be reordered to the given new index. To be implemented by child classes that support child packages. The default implementation returns
False.- Return type
 bool- Parameters
 oldIndex (
int) – The index position of the child package to reorder.newIndex (
int) – The index position to which to move the specified child package.
- Returns
 Trueif the reorder operation is acceptable, otherwiseFalse.
- classmethod create(enclosingNode, locationPath)¶
 A factory method which should be implemented by derived classes, which should return an instance of the derived class. The responsibilities of this function are to:
Create the package node and its internal node graph network. This should be created using one of the helper functions provided to create package nodes with all the necessary parameters needed internally by the framework (e.g.
Package.createPackageGroupNode()). The attributes that need to be generated by this node (or by its internal network) to be internally consumed by the framework can be done by adding the nodes returned byPackage.createStandardPackageNodes()to the internal network of this node. These standard nodes are not more than AttributeSet nodes that set these attributes. The functionNodeUtils.WireInlineNodes()can also be useful to connect several nodes in one serial sequence.Add the necessary parameter-driven references to any internal nodes which will need to be accessible via
NodeUtils.GetRefNode()in other parts of the code.Instantiate the package object to be returned.
Optionally create a
GroupStacknode with some internal nodes in the Post-Merge area. This can be created using the helper functionPackage.createPostMergeStackNode()once thePackageinstance has been created.
- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The parent node within which the new package’s node should be created.locationPath (
str) – The path to the location to be created/managed by the package.
- Returns
 The newly-created package instance.
- Raises
 NotImplementedError – If this method has not been implemented by a derived class.
- createChildPackage(packageClassOrName, name=None, peerNames=None)¶
 Creates and returns a package of the class identified by
packageClassOrNameas a child of this package. To be implemented by subclasses that support child packages. The default implementation returnsNone.- Return type
 PackageorNone- Parameters
 packageClassOrName (
typeorstr) – Either the type or the name of the type of child package to create.name (
strorNone) – The new name of the package to create. If not specified, a default name will be used. If the name (specified or default) conflicts with an existing package name, it will be modified with a suffixed incrementing number until a unique name is found.peerNames (
iterableorNone) – An optional list of names of siblings which is used when performing collision checks for the name of the newly created child package.
- Returns
 The newly created child package or
Noneif a child package could not be created.
- classmethod createPackage(packageNode)¶
 Instantiates a package of this class with the given package node.
- Return type
 - Parameters
 packageNode (
NodegraphAPI.Node) – The package node.- Returns
 An instance of this package class.
- classmethod createPackageGroupNode(enclosingNode, locationPath)¶
 Helper function to be used in
Package.create()that creates a Group node to be used as the package node. Tags the node with the necessary parameters used internally by the SuperTool.- Return type
 GroupNode- Parameters
 enclosingNode (
NodegraphAPI.Node) – The enclosing node within which the new Group node should be created. To create the node at root level, the result ofNodegraphAPI.GetRootNode()should be passed.locationPath (
str) – The location path created/managed by the package for which the new Group node is being created.
- Returns
 The newly-created Group node.
- createPostMergeStackNode()¶
 Helper function to be used in
Package.create()that creates aGroupStacknode to be used as the package post-merge stack node. Tags the node with the necessary parameters used internally by the SuperTool.- Return type
 NodegraphAPI.GroupStack- Returns
 The newly-created
GroupStacknode.
- classmethod createStandardPackageNodes(packageNode)¶
 Helper function to be used in the
create()method of a package to create any standard nodes for this package type. These nodes will be created within the given package node, but need to be connected together by the caller.- Return type
 listofNodegraphAPI.Node- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which the standard package nodes should be created (usually aGroupNode).- Returns
 The standard nodes to be added to the package node.
- delete()¶
 Deletes the nodes bound to this package, and rewires any connected nodes.
Adds a
"sceneGraph_locationDeleted"event to Katana’s event queue in order to notify others of the deletion.
- duplicate(peerNames=None, parentPackage=None)¶
 Duplicates a package by creating a copy of all the relevant nodes.
- Return type
 - Parameters
 peerNames (
listofstrorNone) – An optional list of names of siblings which is used when performing collision checks for the name of the newly created child package.parentPackage (
PackageorNone) – The destination package where the new duplicated package will be created. If none is provided, the parent package of the original package will be used.
- Returns
 The new, duplicated package.
- Raises
 RuntimeError – If this package cannot be duplicated.
- classmethod getAdoptableLocationTypes()¶
 - Return type
 setofstr- Returns
 A set of names of types of locations that can be adopted by this package class.
- getChildPackage(name, includeDummies=False)¶
 - Return type
 PackageorNone- Parameters
 name (
str) – The name of the package.includeDummies (
bool) – A flag indicating whether a package of the given name should be returned if it is a dummy group package.
- Returns
 The child package of the given name, or
Noneif no such package was found.- Raises
 NotImplementedError – If the package does not support child packages.
- getChildPackages()¶
 - Return type
 listofPackage- Returns
 The child packages of this package. The default implementation returns an empty list.
- getCreateNode()¶
 - Return type
 - Returns
 The node responsible for creating this package’s location. This is usually a node obtained by calling
NodeUtils.GetRefNode("create"). In order for this to work, thePackage.create()function should create a reference to this node usingNodeUtils.AddNodeRef().
- classmethod getEditPackageClass()¶
 - Return type
 type- Returns
 The registered edit package class for this class, or
EditPackageif no edit class has been set for this class.
- getExtraNodeDependencies()¶
 - Return type
 listofNodegraphAPI.Node- Returns
 A list of the nodes which are dependent on this package.
- Note
 This function is used to determine which nodes should be duplicated when a package is duplicated. Package classes which create nodes which are not inside the package node should return these nodes in their implementation of this function.
- getLocationPath()¶
 - Return type
 str- Returns
 The path of the location created/edited by this package.
- Raises
 ValueError – If a location path could not be determined for this package.
- getMainNode()¶
 - Return type
 - Returns
 The main node of the SuperTool in which this package exists.
- classmethod getMainNodeFromNode(node)¶
 - Return type
 NodegraphAPI.NodeorNone- Parameters
 node (
NodegraphAPI.Node) – The node within a SuperTool for which to return the main SuperTool node.- Returns
 The main node corresponding to the SuperTool to which the given node belongs, or
Noneif no such main node could be found.
- getName()¶
 - Return type
 str- Returns
 The name of this package, which matches the name of its location.
- getOrCreateNodeByType(nodeType, forceCreate=True)¶
 - Return type
 NodegraphAPI.NodeorNone- Parameters
 nodeType (
str) – The name of the type of node to get or create for this package. Note that a created node may be of a different type than thenodeTypepassed in. SeeisNodeOfType().forceCreate (
bool) – A flag indicating whether the node should be created if it doesn’t exist.
- Returns
 The node of the given type for this package, optionally creating it if it doesn’t already exist. Returns
Noneif the node type was not recognized, or if the node does not exist andforceCreatewas not set toTrue.
- getOverrideNodeAndParameter(attrName)¶
 Returns the node and the parameter that drives the value of the attribute of the given name at this package’s location.
This function closes the loop between attributes and parameters. Columns in the
SceneGraphViewwidget created in a PackageSuperTool’s editor are associated with attribute names. This function returns the node and parameter for editing these attributes.- Return type
 (NodegraphAPI.Node, NodegraphAPI.Parameter)- Parameters
 attrName (
str) – The name of the attribute for which to return the override node and parameter.- Returns
 The node and its parameter responsible for setting/editing the value of the given attribute.
- classmethod getPackageClassFromNode(node)¶
 - Return type
 PackageorNone- Parameters
 node (
NodegraphAPI.Node) – The package node for which to return the package class.- Returns
 The package class of the given node, or
Noneif no package class was found for the given node.
- classmethod getPackageFromNode(node)¶
 - Return type
 - Parameters
 node (
NodegraphAPI.Node) – The node for which an enclosing package node should be returned.- Returns
 The first enclosing package node for the given node, or
Noneif no enclosing package node was found.
- getPackageNode()¶
 - Return type
 - Returns
 The package node. This is usually a Group or a GroupStack node containing other nodes.
- getParentPackage()¶
 - Return type
 PackageorNone- Returns
 The parent package of this package or
Noneif a parent package could not be found.
- getPostMergePackageStack(create=False)¶
 - Return type
 NodegraphAPI.GroupStackorNone- Parameters
 create (
bool) – A flag indicating whether the post-merge package stack node should be created if it doesn’t exist.- Returns
 The post-merge package stack node for this package, or
Noneif no such node could be found, andcreateis not set toTrue.
- initializeExtraNodeDependencies()¶
 Called after copying/importing a hierarchy of packages. Re-wires and initializes the package’s auxiliary nodes.
- isNodeOfType(node, nodeType)¶
 - Return type
 bool- Parameters
 node (
NodegraphAPI.NodeorNone) – The node to check.nodeType (
str) – The node type to check the given node against.
- Returns
 Trueif the given node is of the given node type, otherwiseFalse.- Note
 This function can be overridden in derived classes to support the case whereby
getOrCreateNodeByType()doesn’t return a node of the type given to it. TheisNodeOfType()function can be called to check if a given node corresponds to the node type name given togetOrCreateNodeByType().
- reorderChildPackage(oldIndex, newIndex)¶
 Reorders the child package at the given index to a new position. To be implemented by child classes that support child packages. The default implementation does nothing.
- Parameters
 oldIndex (
int) – The index position of the child package to reorder.newIndex (
int) – The index position to which to move the specified child package.
- classmethod setEditPackageClass(editPackageClass)¶
 Sets the edit package class for this package class. The edit package class is the class of packages that is able to manage adopted locations created by this package class.
- Parameters
 editPackageClass (
type) – The edit package class, derived fromEditPackage.
- setName(name, queueEvent=False, selectLocation=False, makeUnique=True, replaceSelection=True, **kwargs)¶
 Sets the name of the package.
- Return type
 str- Parameters
 name (
str) – The new name of the package.queueEvent (
bool) – Whether or not to add a"sceneGraph_locationRenamed"event to Katana’s event queue in order to notify others of the rename.selectLocation (
bool) – IfqueueEventisTrue, whether or not the location rename event should automatically select the location.makeUnique (
bool) – Flag that controls whether to make the resulting package name unique by taking names of peer locations into account (True), or to use the given name as-is (False).replaceSelection (
bool) – If bothqueueEventandselectLocationare set toTrue, whether to replace current selection, or to append to current selection.
- Returns
 The name of the package after the rename. This may not be the same as the given name, if a package of the given name already exists.
- supportsLocking()¶
 - Return type
 bool- Returns
 Trueif this package supports locking in the B{Viewer} tab, otherwiseFalse. The default implementation returnsFalse.
- classmethod walkUpPackageHierarchy(leafPackage, includeLeaf=True)¶
 - Return type
 generator- Parameters
 - Returns
 A generator that yields
Packageinstances up through the hierarchy, up to and including theRootPackage.
- class PackageSuperToolAPI.Packages.EditPackage(packageNode)¶
 Bases:
PackageSuperToolAPI.Packages.PackageA base class for implementing an edit package. An edit package can “adopt” locations which exist in the incoming scene graph for editing.
- canBeAdoptedByPackage(package)¶
 - Return type
 bool- Parameters
 package (
Package) – The package to test whether it can adopt this package.- Returns
 Trueif the given package can adopt this package, otherwiseFalse. The default implementation returnsFalse.
- classmethod canBeCreatedByPackageClass(packageClass)¶
 Determines if the given package class can create a child of this package type.
- Return type
 bool- Parameters
 packageClass (
type) – The package class to test whether it can create a child of the type of this package class.- Returns
 Trueif the packages of the given class can create children of the type of this package class, otherwiseFalse. The default implementation returnsTrue.
- canBeRenamed()¶
 - Return type
 bool- Returns
 Trueif the package can be renamed, otherwiseFalse. The default implementation returnsFalse.- Note
 A package might not be able to be if the SuperTool’s main node is locked.
- classmethod canCreatePackageClass(packageClass)¶
 Determines if this package can create a child of the given package class.
- Return type
 bool- Parameters
 packageClass (
type) – The package class to test whether it can be created by this package.- Returns
 Trueif the packages of the given class can be created by this package, otherwiseFalse. The default implementation returnsFalse.
- classmethod create(enclosingNode, locationPath)¶
 Implementation of
Package.create(). This should be called by derived classes in their owncreate()functions.- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The parent node within which the new package’s node should be created.locationPath (
str) – The path to the location to be created/managed by the package.
- Returns
 The newly-created package instance.
- classmethod createPackage(packageNode)¶
 Instantiates a package of this class with the given package node.
- Return type
 - Parameters
 packageNode (
NodegraphAPI.Node) – The package node.- Returns
 An instance of this package class.
- classmethod createPackageEditStackNode(enclosingNode, locationPath)¶
 Helper function to be used in
EditPackage.create()that creates a GroupStack node to be used as the package node. Tags the node with the necessary parameters used internally by the SuperTool.- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The node in which to create the package node.locationPath (
str) – The location path for this package.
- Returns
 The newly created package node.
- delete()¶
 Deletes the nodes bound to this package, and rewires any connected nodes.
- class PackageSuperToolAPI.Packages.GroupPackage(packageNode)¶
 Bases:
PackageSuperToolAPI.Packages.GroupMixin,PackageSuperToolAPI.Packages.PackageClass that implements a package that can have child packages.
- DEFAULT_NAME = 'group'¶
 
- DISPLAY_ICON = 'group'¶
 
- classmethod create(enclosingNode, locationPath)¶
 A factory method which returns an instance of the class. This should be called from any child class’ implementation of
create().- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The parent node within which the new group package node should be created.locationPath (
str) – The path to the location for this group package.
- Returns
 The newly-created package instance.
- classmethod createStandardPackageNodes(packageNode)¶
 Helper function to be used in the
create()method of a package to create any standard nodes for this package type. These nodes will be created within the given package node, but need to be connected together by the caller.- Return type
 listofNodegraphAPI.Node- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which the standard package nodes should be created (usually aGroupNode).- Returns
 The standard nodes to be added to the package node.
- getExtraNodeDependencies()¶
 Called prior to copying/exporting a hierarchy of packages. Packages with additional nodes can return them here.
- Return type
 listofNodegraphAPI.Node- Returns
 A list of the nodes to duplicate. All nodes under the package node of this package will be implicitly duplicated, but additional nodes must be returned, for example, the post merge nodes.
- initializeExtraNodeDependencies()¶
 Called after copying/importing a hierarchy of packages. Re-wires and initializes the package’s auxiliary nodes.
- class PackageSuperToolAPI.Packages.GroupEditPackage(packageNode)¶
 Bases:
PackageSuperToolAPI.Packages.GroupMixin,PackageSuperToolAPI.Packages.EditPackageAbstract base class for edit packages that allow editing of a group package.
- childRemoved()¶
 Called to notify the package of the removal of a child package.
- classmethod create(enclosingNode, locationPath)¶
 A factory method which returns an instance of the class. This must be implemented by derived classes.
- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The parent node within which the new root package node should be created.locationPath (
str) – The path to the location for this root package.
- Returns
 The newly-created package instance.
- Raises
 NotImplementedError – If derived classes have not implemented this method.
- getChildPackageCreateNode()¶
 Returns the package node to use when creating child packages. This isn’t necessarily the same as the underlying package node for this package (returned by getPackageNode()).
- Return type
 - Returns
 The
Nodeto use when creating child packages.
- class PackageSuperToolAPI.Packages.DummyGroupPackage(packageNode, locationPath=None, mainNode=None)¶
 Bases:
PackageSuperToolAPI.Packages.GroupPackageDummy/stub package that represents an upstream location that doesn’t necessarily have a node structure within this SuperTool instance that represents it. Can be used as a place holder for an upstream location that hasn’t been explicitly adopted by the user. Creation of child packages will lazily create a node hierarchy within the ‘create stack’ of the SuperTool representing the location. Deletion of all children will cause any parent node hierarchy to be cleaned up.
- DEFAULT_NAME = 'dummygroup'¶
 
- DISPLAY_ICON = 'dummygroup'¶
 
- __init__(packageNode, locationPath=None, mainNode=None)¶
 - Parameters
 packageNode (
NodegraphAPI.NodeorNone) – The package node. Can also beNoneif this dummy is representing a location with no relevantNodewithin the SuperTool.locationPath (
strorNone) – IfpackageNodeisNone,locationPathcan be used to provide the location that the dummy package represents.mainNode (
NodegraphAPI.NodeorNone) – IfpackageNodeisNone,mainNodecan be used to provide the main SuperTool node.
- canAdoptPackage(package)¶
 - Return type
 bool- Parameters
 package (
Package) – The package to test whether it can be adopted by this package.- Returns
 Trueif the given package can be adopted by this package, otherwiseFalse.
- classmethod canCreateChildPackage(packageClassOrName, mainNode, locationPath)¶
 - Return type
 bool- Parameters
 packageClassOrName (
typeorstr) – A package class or package class type.mainNode (
NodegraphAPI.Node) – The main node of a SuperTool.locationPath (
str) – The location path for which to test whether a child package can be created by this package.
- Returns
 Trueif this package class can create a child package of the given type for the location of the given path, under the given main node, otherwiseFalse.
- childRemoved()¶
 Called to notify the package of the removal of a child package.
- classmethod create(enclosingNode, locationPath)¶
 Implementation of
Package.create(). This should be called from any child class’ implementation ofcreate().
- createChildPackage(*args, **kwargs)¶
 Creates a child package under this package. Passes all arguments through to
GroupPackage.createChildPackage().
- classmethod createForLocation(locationPath, mainNode)¶
 Creates an instance of
DummyGroupPackagewithout creating any node hierarchy within the SuperTool. The resultDummyGroupPackagerepresents a potential package at the given locationPath under the given mainNode. Any child creation on the resultingDummyGroupPackagewill result in a lazily created node hierarchy within the SuperTool node (which will be lazily deleted when all children are removed). If an existingDummyGroupPackagepackage node hierarchy already exists for the given location, that node hierarchy will be re-used.- Parameters
 locationPath (
str) – The path to the location to create theDummyGroupPackagefor.mainNode (
NodegraphAPI.Node) – The main SuperTool node.
- createParentPackageHierarchy()¶
 Creates the necessary nodes in the SuperTool node’s ‘create stack’ for the current location. This includes all necessary parent nodes if they don’t already exist. Updates the current package’s package node with the newly created node.
- delete()¶
 Deletes the nodes bound to this package, and rewires any connected nodes.
- getChildPackageCreateNode()¶
 - Return type
 - Returns
 The package node to use when creating child packages. This isn’t necessarily the same as the underlying package node for this package (returned by
getPackageNode()).
- getLocationPath()¶
 - Return type
 str- Returns
 The path of the location created/edited by this package.
- getMainNode()¶
 - Return type
 - Returns
 The main node of the SuperTool in which this package exists.
- class PackageSuperToolAPI.Packages.RootPackage(packageNode)¶
 Bases:
PackageSuperToolAPI.Packages.GroupPackageClass that implements the root package for a PackageSuperToolAPI-based SuperTool.
- __init__(packageNode)¶
 Initializes an instance of the class with the given package node.
- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which to initialize the new package instance. This is usually a Group or a GroupStack node, but can also be a single node.
- canBeDeleted()¶
 Returns a flag indicating whether this package can be deleted. A package might not be able to be deleted if the SuperTool’s main node is locked.
- Return type
 bool- Returns
 Trueif the package can be deleted, otherwiseFalse.
- canBeRenamed()¶
 Returns a flag indicating whether this package can be renamed. A package might not be able to be if the SuperTool’s main node is locked.
- Return type
 bool- Returns
 Trueif the package can be renamed, otherwiseFalse.
- classmethod canCreatePackageClass(packageClass)¶
 Determines if this package can create a child of the given package class. Returns
True, to indicate thatRootPackagecan create any type of package.- Return type
 bool- Parameters
 packageClass (
type) – The package class to test whether it can be created by this package.- Returns
 Trueif the packages of the given class can be created by this package, otherwiseFalse.
- classmethod create(enclosingNode, locationPath)¶
 A factory method which returns an instance of the class.
- Return type
 - Parameters
 enclosingNode (
NodegraphAPI.Node) – The parent node within which the new root package node should be created.locationPath (
str) – The path to the location for this root package.
- Returns
 The newly-created package instance.
- delete()¶
 Implementation of
Package.delete()which raises an exception to indicate that the root package of a SuperTool cannot be deleted.- Raises
 TypeError – Always, to indicate that the root package of a SuperTool cannot be deleted.
- setName(name, peerNames=None, queueEvent=False, selectLocation=False, replaceSelection=True)¶
 Raises a
TypeErrorto indicate that the root package of a SuperTool cannot be renamed.- Parameters
 name (
str) – The new name of the package.peerNames (
listofstrorNone) – An optional list of the names of the existing locations which will be peers of the newly adopted package. If provided, this will be used to make sure that the location for the adopted package is given a unique name.queueEvent (
bool) – Whether or not to queue a sceneGraph_locationRenamed event to notify others of the rename.selectLocation (
bool) – IfqueueEventisTrue, whether or not the location rename event should automatically select the location.replaceSelection (
bool) – If bothqueueEventandselectLocationare set toTrue, whether to replace current selection, or to append to current selection.
- Raises
 TypeError – Always, to indicate that the root package of a SuperTool cannot be renamed.
Mix-ins¶
- class PackageSuperToolAPI.Packages.Mixin¶
 Bases:
PackageSuperToolAPI.Packages.UpgradableBase class for classes providing mix-in functionality.
- class PackageSuperToolAPI.Packages.CallbackMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to providing application callbacks for packages.
- Variables
 _OnPackageCreatedCallbackID – The ID of an application callback which is registered for derived classes if they define an
ON_CREATED_CALLBACK_TYPEclass variable giving the name of a callback type. This callback should be triggered by derived classes on package creation, by callingexecuteCreationCallback(), passing the package object._OnShaderSelectedCallbackID – The ID of an application callback which is registered to indicate when a light shader has been selected in the UI. This works by responding to
onSceneGraphViewShaderSelectedcallbacks, which are executed by theSceneGraphViewwidget.
- classmethod executeCreationCallback(package)¶
 Executes the “on package created” callback for this package class, passing the given package instance. Called after creation of a new package instance.
- Parameters
 package (
Package) – The package instance for which to execute the “on package created” callback.
- classmethod onSceneGraphViewShaderSelected(objectHash=None, node=None, parameterPolicy=None)¶
 Callback registered for the
onSceneGraphViewShaderSelectedtype, which is executed when a shader is selected in aSceneGraphViewwidget. Obtains the GafferThree package responsible for the given node or parameter policy, and if a package is available, executes callbacks of theonGafferShaderSelectedtype, passing that package as an argument to registered callbacks of that callback type.- Parameters
 node (
NodegraphAPI.NodeorNone) – The node for which a shader has been set, orNoneif no node was provided when executing the callback.parameterPolicy (L{BaseParameterPolicy<UI4.FormMaster. BaseParameterPolicy.BaseParameterPolicy>} or
None) – The parameter policy for which a shader has been set, orNoneif no parameter policy was provided when executing the callback.
- classmethod registerCallbacks(packageClass)¶
 Register callback types for this package class.
- Parameters
 packageClass (
type) – The package class for which to register callbacks.
- class PackageSuperToolAPI.Packages.DisableableMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to disabling and enabling packages.
- isDisabled()¶
 - Return type
 bool- Returns
 Trueif thePackageis directly disabled (as opposed to being disabled due to a parent package being disabled), otherwiseFalse.
- isDisabledByParents()¶
 - Return type
 bool- Returns
 Trueif the package is disabled due to any of its parents being disabled, otherwiseFalse.
- class PackageSuperToolAPI.Packages.GroupMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to group packages.
Subclasses must implement
getChildPackages().- adoptPackage(childPackage, peerNames=None)¶
 Adopts the given package as child of this package.
- Parameters
 childPackage (
Package) – The package to adopt.peerNames (
listofstrorNone) – An optional list of the names of the existing locations which will be peers of the newly adopted package. If provided, this will be used to make sure that the location for the adopted package is given a unique name.
- Raises
 RuntimeError – If the given package cannot be adopted by this package.
- canAdoptPackage(package)¶
 - Return type
 bool- Parameters
 package (
Package) – The package to test whether it can be adopted by this package.- Returns
 Trueif the given package can be adopted by this package, otherwiseFalse.
- classmethod canCreateChildPackage(packageClassOrName, mainNode, locationPath)¶
 - Return type
 bool- Parameters
 packageClassOrName (
typeorstr) – A package class or package class type.mainNode (
NodegraphAPI.Node) – The main node of a SuperTool.locationPath (
str) – The location path for which to test whether a child package can be created by this package.
- Returns
 Trueif this package class can create a child package of the given type for the location of the given path, under the given main node, otherwiseFalse.
- canReorderChildPackage(oldIndex, newIndex)¶
 - Return type
 bool- Parameters
 oldIndex (
int) – The index position of the child package to reorder.newIndex (
int) – The index position to which to move the specified child package.
- Returns
 Trueif the package at the given index can be reordered to the given new index, otherwiseFalse.
- childRemoved()¶
 Called to notify the
GroupMixinof the removal of a child package. Can be overridden by subclasses to, for example, clean up lazily-created parent locations. The default implementation does nothing.
- createChildPackage(packageClassOrName, name=None, peerNames=None)¶
 Creates a child package under this package.
- Return type
 PackageorNone- Parameters
 packageClassOrName (
typeorstr) – Either the type or the name of the type of child package to create.name (
strorNone) – The new name of the package to create. If not specified, a default name will be used. If the name (specified or default) conflicts with an existing package name, it will be modified with a suffixed incrementing number until a unique name is found.peerNames (
iterableorNone) – An optional list of names of siblings which is used when performing collision checks for the name of the newly created child package.
- Returns
 The newly created child package or
Noneif a child package could not be created.- Raises
 TypeError – If packages of the given type cannot be created as child packages.
ValueError – If this package cannot create a child package of the given type.
- getChildPackage(name, includeDummies=False)¶
 - Return type
 PackageorNone- Parameters
 name (
str) – The name of the package.includeDummies (
bool) – A flag indicating whether a package of the given name should be returned if it is a dummy group package.
- Returns
 The child package of the given name, or
Noneif no such package was found.
- getChildPackageCreateNode()¶
 - Return type
 - Returns
 The package node to use when creating child packages. This isn’t necessarily the same as the underlying package node for this package (returned by
getPackageNode()).
- getChildPackages()¶
 - Return type
 listofPackage- Returns
 The child packages of this package.
- Raises
 NotImplementedError – If the subclass has not implemented this method.
- classmethod getLocationTypes()¶
 - Return type
 listofstr- Returns
 A list of location types that packages of this type can represent. The default implementation returns a list containing the single value
'group'.
- reorderChildPackage(oldIndex, newIndex)¶
 Reorders the child package at the given index to a new position.
- Parameters
 oldIndex (
int) – The index position of the child package to reorder.newIndex (
int) – The index position to which to move the specified child package.
- Raises
 RuntimeError – If the child package at the given index cannot be reordered to the given new index.
- class PackageSuperToolAPI.Packages.LinkingMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to light linking for PackageSuperToolAPI packages.
- LINKING_ILLUMINATION_EFFECT = 'illumination'¶
 
- LINKING_ILLUMINATION_NODE_NAME = 'LightLinkSetup_illumination'¶
 
- LINKING_ILLUMINATION_NODE_REF = 'lightLink_illumination'¶
 
- LINKING_SHADOW_EFFECT = 'shadow visibility'¶
 
- LINKING_SHADOW_NODE_NAME = 'LightLinkSetup_shadow'¶
 
- LINKING_SHADOW_NODE_REF = 'lightLink_shadow'¶
 
- classmethod getIlluminationLinkingNode(packageNode, create=False)¶
 - Return type
 NodegraphAPI.NodeorNone- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which the linking node should be returned.create (
bool) – A flag indicating whether the node should be created if it doesn’t exist.
- Returns
 The illumination linking node for this package, or
Noneif the node does not exist andcreateis not set toTrue.
- classmethod getLinkingNodes(packageNode, create=False)¶
 - Return type
 (NodegraphAPI.Node, NodegraphAPI.Node)or(None, None)- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which the linking nodes should be returned.create (
bool) – A flag indicating whether the nodes should be created if they don’t exist.
- Returns
 A tuple containing either the light linking nodes for this package, or two
Nonevalues if the nodes do not exist andcreateis not set toTrue.
- classmethod getShadowLinkingNode(packageNode, create=False)¶
 - Return type
 NodegraphAPI.NodeorNone- Parameters
 packageNode (
NodegraphAPI.Node) – The package node for which the linking node should be returned.create (
bool) – A flag indicating whether the node should be created if it doesn’t exist.
- Returns
 The shadow linking node for this package, or
Noneif the node does not exist andcreateis not set toTrue.
- class PackageSuperToolAPI.Packages.LockingMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to locking for PackageSuperToolAPI packages.
- isLocked()¶
 - Return type
 bool- Returns
 The current lock state of this package.
- setLocked(state)¶
 Sets the lock state of the particular package.
- Parameters
 state (
bool) – The lock state to set for the package.
- class PackageSuperToolAPI.Packages.LookFileReferenceEditMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to editing of Look File references for PackageSuperToolAPI packages.
Derived classes are expected to define a pseudo-protected instance function with the following name to specify the name of the node type that stores Look File reference information:
_getLookFileReferenceNodeTypeName()- getLookFileMaterial()¶
 - Return type
 2-
tupleofstrorNone- Returns
 A tuple containing the asset and material path for this edit package’s Look File Material. Both can be
Noneto indicate that asset and/or material path are not overridden by this edit package.
- isLookFileMaterialActive()¶
 - Return type
 bool- Returns
 Trueif the asset and/or material path for a Look File Material on this edit package are potentially overridden by this edit package, otherwiseFalse.
- setLookFileMaterial(asset, materialPath, assetAsExpression=False, materialPathAsExpression=False)¶
 Sets overrides for the asset and/or material path of the material that is sourced from a Look File for this edit package.
Makes the Look File Material active if either an asset or a material path are given, so that values from the incoming scene can be overridden.
The Look File asset and the path to the material can both optionally be specified as expressions.
- Parameters
 asset (
strorNone) – The Look File asset from which to load the material, orNoneto disable that override, while leaving its current value intact, and to pick up the incoming value.materialPath (
strorNone) – The path of the material in the Look File, orNoneto disable that override, while leaving its current value intact, and to pick up the incoming value.assetAsExpression (
bool) – A flag indicating whether the given asset is supplied as an expression.materialPathAsExpression (
bool) – A flag indicating whether the given material path is supplied as an expression.
- Note
 The overrides for the Look File Material from which to take shaders can be turned on or off using
setLookFileMaterialActive().
- setLookFileMaterialActive(lookFileMaterialActive)¶
 Sets whether the asset and/or material path for a Look File Material on this edit package are potentially overridden by this edit package
- Parameters
 lookFileMaterialActive (
bool) – Flag that controls whether the asset and/or material path for a Look File Material on this edit package are potentially overridden by this edit package.- Note
 The Look File Material to take shaders from can be set using
setLookFileMaterial().
- class PackageSuperToolAPI.Packages.MaterialMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to materials for PackageSuperToolAPI packages.
- getLookFileMaterial()¶
 - Return type
 tupleof (str,str) or (None,None)- Returns
 A tuple containing the asset and material path for this package’s Look File material, or (
None,None) if no such Look File material was found.
- getShader(shaderType)¶
 - Return type
 strorNone- Parameters
 shaderType (
str) – The name of the type of shader whose name to return. Is expected to include a renderer name prefix, for example"arnoldLight"or"prmanSurface".- Returns
 The name of the shader of the given shader type that is locally set for the package, or
Noneif no shader of the given type is locally set for the package.
- isLookFileMaterialActive()¶
 - Return type
 bool- Returns
 Trueif the shaders for this package are taken from a Look File Material, otherwiseFalse.
- isUsingLookFileMaterial()¶
 - Deprecated
 This function is deprecated. Please use isLookFileMaterialActive() instead.
- setIsUsingLookFileMaterial(newValue)¶
 - Deprecated
 This function is deprecated. Please use setLookFileMaterialActive() instead.
- setLookFileMaterial(asset, materialPath, assetAsExpression=False, materialPathAsExpression=False)¶
 Sets the material node to point at a material baked into a Look File. The Look File asset and and the path to the material can both optionally be specified as expressions.
- Parameters
 asset (
strorNone) – The asset for the Look File Material, orNoneto deactivate the Look File Material.materialPath (
str) – The path to the Look File Material.assetAsExpression (
bool) – A flag indicating whether the given asset is supplied as an expression.materialPathAsExpression (
bool) – A flag indicating whether the given material path is supplied as an expression.
- Note
 The Look File Material from which to take shaders can be turned on or off using
setLookFileMaterialActive().
- setLookFileMaterialActive(lookFileMaterialActive)¶
 Sets whether the shaders for this package are taken from a Look File Material.
- Parameters
 lookFileMaterialActive (
bool) – Flag that controls whether shaders for this package are taken from a Look File Material.- Note
 The Look File Material to take shaders from can be set using
setLookFileMaterial().
- setShader(shaderType, shaderName, asExpression=False)¶
 Sets or resets the shader of the given shader type. Adds a shader of the given shader type if the parameter for the shader type doesn’t exist yet.
- Parameters
 shaderType (
str) – The name of the type of shader to set to the given shader name. Is expected to include a renderer name prefix, for example"arnoldLight"or"prmanSurface".shaderName (
strorNone) – The name or expression to set for the shader with the given shader type. If an empty string orNoneis passed, the name or expression is reset/cleared.asExpression (
bool) – Flag that controls whether to set or reset the shader of the given shader type as an expression rather than a constant value.
- class PackageSuperToolAPI.Packages.MuteAndSoloMixin¶
 Bases:
PackageSuperToolAPI.Packages.MixinClass providing mix-in functionality related to muting and soloing of lights for PackageSuperToolAPI packages.
- MUTEANDSOLO_NODE_REFERENCE = 'muteAndSolo'¶
 
- NODE_NAME = 'MuteAndSolo'¶
 
- SOLOLISTEDIT_NODE_REFERENCE = 'soloEdit'¶
 
- delete(edit=False)¶
 Performs the cleanup necessary for removing a package that supports Mute and Solo.
- Parameters
 edit (
bool) –Truethe package is an edit package,Falseit is a create package.
- getExtraNodeDependencies()¶
 Called prior to copying/exporting a hierarchy of packages. Packages with additional nodes can return them here.
- Return type
 listofNodegraphAPI.Node- Returns
 A list of the nodes to duplicate. All nodes under the package node of this package will be implicitly duplicated, but additional nodes must be returned, for example, the post merge nodes.
- getMuteSoloAndSoloListEditNode(create=False)¶
 
- getOverrideNodeAndParameter(attributeName)¶
 Returns the node and the parameter that drives the value of the attribute of the given name at this package’s location.
This function closes the loop between attributes and parameters. Columns in the
SceneGraphViewwidget created in a PackageSuperTool’s editor are associated with attribute names. This function returns the node and parameter for editing these attributes.- Return type
 (NodegraphAPI.Node, NodegraphAPI.Parameter)or(None, None)- Parameters
 attributeName (
str) – The name of the attribute for which to return the override node and parameter.- Returns
 The node and its parameter responsible for setting/editing the value of the given attribute, or
(None, None)if no such node and parameter could be found.
- initializeExtraNodeDependencies()¶
 Called after copying/importing a hierarchy of packages. Re-wires and initializes the package’s auxiliary nodes.
- isMuteOverrideEnabled()¶
 Determines whether the package’s mute state is overridden or not.
- Return type
 bool- Returns
 Trueif the package’s mute state is overridden, otherwiseFalse.
- isMuted()¶
 Determines whether the package is muted or not.
- Return type
 bool- Returns
 Trueif the package is muted, otherwiseFalse.
- isSoloOverrideEnabled()¶
 Determines whether the package’s solo state is overridden or not.
- Return type
 bool- Returns
 Trueif the package’s solo state is overridden, otherwiseFalse.
- isSoloed()¶
 Determines whether the package is soloed or not.
- Return type
 bool- Returns
 Trueif the package is soloed, otherwiseFalse.
- setMuted(muted, edit=False)¶
 Sets the mute state of the package.
- Parameters
 muted (
bool) –Trueto mute the package,Falseto unmute it.edit (
bool) –Trueif the package is an edit package,Falseif it is a create package.
- setSoloed(soloed, edit=False)¶
 Sets the solo state of the package.
- Parameters
 soloed (
bool) –Trueto solo the package,Falseto unsolo it.edit (
bool) –Truethe package is an edit package,Falseit is a create package.
- class PackageSuperToolAPI.Packages.MuteAndSoloEditMixin¶
 Bases:
PackageSuperToolAPI.Packages.MuteAndSoloMixinClass providing mix-in functionality related to editing of mute and solo states of lights for PackageSuperToolAPI packages.
- delete()¶
 Performs the cleanup necessary for removing a package that supports Mute and Solo.
- setMuted(muted)¶
 Sets the mute state of the package.
- Parameters
 muted (
bool) –Trueto mute the package,Falseto unmute it.
- setSoloed(soloed)¶
 Sets the solo state of the package.
- Parameters
 soloed (
bool) –Trueto solo the package,Falseto unsolo it.
Module Functions¶
- PackageSuperToolAPI.Packages.GetPackageClass(superToolName, packageClassName)¶
 - Return type
 PackageorNone- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which the package class was registered ofNoneif the package is generic.packageClassName (
str) – The package class name.
- Returns
 The package class with the given name, registered for the given SuperTool if one was provided. Returns
Noneif no such package class could be found.
- PackageSuperToolAPI.Packages.GetPackageClassAndPackageName(superToolName, packageClassOrName)¶
 - Return type
 (type, str)or(None, None)- Parameters
 superToolName (
str) – The name of the SuperTool.packageClassOrName (
typeorstr) – A package class or package class type.
- Returns
 A tuple of the form
(packageClass, packageName)containing the class and name for the given package class, orNoneif no such registered package class could be found for the given SuperTool.
- PackageSuperToolAPI.Packages.GetPackageClassForGroupLocationType(superToolName, groupLocationType)¶
 - Return type
 PackageorNone- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which to return the registered package class for the given group location type, orNoneto return the registered generic package class for the given location type.groupLocationType (
str) – The group location type for which to return the registered package class for the SuperTool of the given name.
- Returns
 The registered package class for the SuperTool of the given name which is registered for the given group location type (i.e. types of location which can contain child locations, like
'group').
- PackageSuperToolAPI.Packages.GetRegisteredDisplayPackageClasses(superToolName)¶
 - Return type
 listofPackage- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which the registered display package classes should be returned, orNoneto return the registered generic display package classes.- Returns
 A list of the registered display packages for the given SuperTool.
- PackageSuperToolAPI.Packages.GetRegisteredPackageClasses(superToolName)¶
 - Return type
 listof(str, type)- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which the registered package classes should be returned, orNoneto return the registered generic package classes.- Returns
 A list of (name, class) tuples for the registered package classes for the given SuperTool, or a list of generic packages if the given SuperTool name is
None. Thenameelement is the name of the package class. To access the display name (if the package class supports it), query theDISPLAY_NAMEattribute (if it exists) on the class.
- PackageSuperToolAPI.Packages.IsLocationTypeAdoptable(superToolName, locationType)¶
 - Return type
 bool- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which to check whether locations of the given type can be adopted.locationType (
str) – The name of the location type to check.
- Returns
 Trueif locations of the given type can be adopted by the SuperTool of the given name, otherwiseFalse.
- PackageSuperToolAPI.Packages.RegisterPackage(superToolName, packageClass)¶
 - Deprecated
 This function is deprecated. Please use RegisterPackageClass() instead.
- PackageSuperToolAPI.Packages.RegisterPackageClass(superToolName, packageClass)¶
 Registers a new package class for the given SuperTool, or registers it as a generic package class if the given SuperTool name is
None.- Parameters
 superToolName (
strorNone) – The name of the SuperTool for which the package class will be registered, orNoneto register a generic package class.packageClass (
type) – The package class to be registered.