示例#1
0
    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 )