def testSelection(self): # Set up Catalogue with images that we can select images = [] readers = [] fileNames = [ "checker.exr", "blurRange.exr", "noisyRamp.exr", "resamplePatterns.exr" ] for fileName in fileNames: images.append( GafferImage.Catalogue.Image.load( "${GAFFER_ROOT}/python/GafferImageTest/images/" + fileName)) readers.append(GafferImage.ImageReader()) readers[-1]["fileName"].setValue(images[-1]["fileName"].getValue()) c = GafferImage.Catalogue() for image in images: c["images"].addChild(image) # Pulling out images by name for i, fileName in enumerate(fileNames): catalogueSelect = GafferImage.CatalogueSelect() catalogueSelect["in"].setInput(c["out"]) catalogueSelect["imageName"].setValue(fileName.split(".")[0]) self.assertImagesEqual(catalogueSelect["out"], readers[i]["out"], ignoreMetadata=True) # Pulling out image that is selected in the Catalogue UI catalogueSelect = GafferImage.CatalogueSelect() catalogueSelect["in"].setInput(c["out"]) catalogueSelect["imageName"].setValue("") self.assertImagesEqual(catalogueSelect["out"], c["out"]) # Pulling out invalid image catalogueSelect["imageName"].setValue("nope") with self.assertRaises(Exception) as cm: GafferImage.ImageAlgo.image(catalogueSelect["out"]) self.assertEqual( str(cm.exception), "CatalogueSelect.__context.out.deep : Unknown image name.")
def __extractClicked( self, *unused ) : node = self.getPlug().node() catalogue = self.__catalogue() outPlug = next( p for p in node.children( GafferImage.ImagePlug ) if catalogue.isAncestorOf( p.source() ) ) for index in self.__indicesFromSelection() : image = self.__images()[index] extractNode = GafferImage.CatalogueSelect() extractNode["in"].setInput( outPlug ) extractNode["imageName"].setValue( image.getName() ) node.parent().addChild( extractNode )