def testConstructFromList(self):

        f1 = Gaffer.FileNamePathFilter(["a.*"])
        f2 = Gaffer.FileNamePathFilter(["b.*"])

        f = Gaffer.CompoundPathFilter([f1, f2])
        self.assertFilterListsEqual(f.getFilters(), [f1, f2])
Beispiel #2
0
def open(menu):

    scriptWindow = menu.ancestor(GafferUI.ScriptWindow)

    path = Gaffer.FileSystemPath("/")
    path.addFilter(Gaffer.FileNamePathFilter(["*.gfr"]))
    path.addFilter(
        Gaffer.FileNamePathFilter([re.compile("^[^.].*")], leafOnly=False))
    dialogue = GafferUI.PathChooserDialogue(path,
                                            title="Open script",
                                            confirmLabel="Open")
    scriptWindow.addChildWindow(dialogue)
    path = dialogue.waitForPath()
    dialogue.hide()

    if not path:
        return

    currentScript = scriptWindow.getScript()
    application = scriptWindow.getScript().ancestor(
        Gaffer.ApplicationRoot.staticTypeId())

    currentNodes = [
        n for n in currentScript.children()
        if n.isInstanceOf(Gaffer.Node.staticTypeId())
    ]
    if not currentNodes and not currentScript["fileName"].getValue():
        script = currentScript
    else:
        script = Gaffer.ScriptNode()

    script["fileName"].setValue(str(path))
    script.load()

    application["scripts"].addChild(script)
Beispiel #3
0
    def testFilterSignals(self):

        p = Gaffer.Path("/")

        f1 = Gaffer.FileNamePathFilter(["*.gfr"])
        f2 = Gaffer.FileNamePathFilter(["*.grf"])
        self.assertEqual(f1.changedSignal().num_slots(), 0)
        self.assertEqual(f2.changedSignal().num_slots(), 0)

        # The Path shouldn't connect to the filter changed signal
        # until it really needs to - when something is connected
        # to the path's own changed signal.
        p.setFilter(f1)
        self.assertEqual(f1.changedSignal().num_slots(), 0)
        self.assertEqual(f2.changedSignal().num_slots(), 0)

        cs = GafferTest.CapturingSlot(p.pathChangedSignal())
        self.assertEqual(f1.changedSignal().num_slots(), 1)
        self.assertEqual(f2.changedSignal().num_slots(), 0)
        self.assertEqual(len(cs), 0)

        f1.setEnabled(False)
        self.assertEqual(len(cs), 1)

        p.setFilter(f2)
        self.assertEqual(f1.changedSignal().num_slots(), 0)
        self.assertEqual(f2.changedSignal().num_slots(), 1)
        self.assertEqual(len(cs), 2)

        f1.setEnabled(True)
        self.assertEqual(len(cs), 2)

        f2.setEnabled(False)
        self.assertEqual(len(cs), 3)
    def testConstructFromIterable(self):

        f1 = Gaffer.FileNamePathFilter(["a.*"])
        f2 = Gaffer.FileNamePathFilter(["b.*"])

        f = Gaffer.CompoundPathFilter(itertools.chain([f1], [f2]))
        self.assertFilterListsEqual(f.getFilters(), [f1, f2])
Beispiel #5
0
    def testUserData(self):

        pathFilter = Gaffer.FileNamePathFilter(["*.gfr"])
        self.assertEqual(pathFilter.userData(), {})

        ud = {"a": "a"}
        pathFilter = Gaffer.FileNamePathFilter(["*.gfr"], userData=ud)
        self.assertEqual(pathFilter.userData(), ud)
        self.failIf(pathFilter.userData() is ud)
    def testUserData(self):

        pathFilter = Gaffer.FileNamePathFilter(["*.gfr"])
        self.assertEqual(pathFilter.userData(), IECore.CompoundData())

        ud = IECore.CompoundData({"a": "a"})
        pathFilter = Gaffer.FileNamePathFilter(["*.gfr"], userData=ud)
        self.assertEqual(pathFilter.userData(), ud)
        self.failIf(pathFilter.userData() is ud)
	def _filter( self ) :
	
		result = Gaffer.CompoundPathFilter()	
		result.addFilter(
			Gaffer.FileNamePathFilter(
				[ re.compile( "^[^.].*" ) ],
				leafOnly=False,
				userData = {
					"UI" : {
						"label" : "Show hidden files",
						"invertEnabled" : True,
					}
				}
			) 
		)
		
		result.addFilter(
			Gaffer.InfoPathFilter(
				infoKey = "name",
				matcher = None, # the ui will fill this in
				leafOnly = False,
			)
		)
		
		return result
    def test(self):

        # First, check that we have a mix of extensions in
        # our test directory. Otherwise we can't test anything.

        self.assertTrue(
            len(glob.glob(self.__testDirectory + "/*")) != len(
                glob.glob(self.__testDirectory + "/*.txt")))

        # Check that an unfiltered path can see all the files

        path = Gaffer.FileSystemPath(self.__testDirectory)
        children = path.children()
        self.assertEqual(len(children),
                         len(glob.glob(self.__testDirectory + "/*")))

        # Attach a filter, and check that the files are filtered
        txtFilter = Gaffer.FileNamePathFilter(["*.txt"])
        path.setFilter(txtFilter)

        children = path.children()
        self.assertEqual(len(children),
                         len(glob.glob(self.__testDirectory + "/*.txt")))

        # Copy the path and check the filter is working on the copy
        pathCopy = path.copy()
        self.assertEqual(len(pathCopy.children()), len(children))

        # Detach the filter and check that behaviour has reverted
        path.setFilter(None)
        children = path.children()
        self.assertEqual(len(children),
                         len(glob.glob(self.__testDirectory + "/*")))
    def _initialPath(self):

        scriptWindow = self.browser().ancestor(GafferUI.ScriptWindow)
        scriptNode = scriptWindow.scriptNode()

        return Gaffer.GraphComponentPath(
            scriptNode,
            "/",
            filter=Gaffer.CompoundPathFilter(
                filters=[
                    Gaffer.FileNamePathFilter([re.compile("^[^__].*")],
                                              leafOnly=False,
                                              userData={
                                                  "UI": {
                                                      "label": "Show hidden",
                                                      "invertEnabled": True,
                                                  }
                                              }),
                    Gaffer.InfoPathFilter(
                        infoKey="name",
                        matcher=None,  # the ui will fill this in
                        leafOnly=False,
                    ),
                ], ),
        )
Beispiel #10
0
	def testFilters( self ) :

		p = Gaffer.Path( "/" )
		self.assertEqual( p.getFilter(), None )

		changedPaths = []
		def f( path ) :
			changedPaths.append( str( path ) )

		c = p.pathChangedSignal().connect( f )
		self.assertEqual( len( changedPaths ), 0 )

		filter = Gaffer.FileNamePathFilter( [ "*.gfr" ] )

		p.setFilter( filter )
		self.assertTrue( p.getFilter().isSame( filter ) )
		self.assertEqual( len( changedPaths ), 1 )

		p.setFilter( filter )
		self.assertTrue( p.getFilter().isSame( filter ) )
		self.assertEqual( len( changedPaths ), 1 )

		p.setFilter( None )
		self.assertIsNone( p.getFilter() )
		self.assertEqual( len( changedPaths ), 2 )

		p.setFilter( filter )
		self.assertTrue( p.getFilter().isSame( filter ) )
		self.assertEqual( len( changedPaths ), 3 )

		filter.setEnabled( False )
		self.assertEqual( len( changedPaths ), 4 )

		filter.setEnabled( True )
		self.assertEqual( len( changedPaths ), 5 )
Beispiel #11
0
    def testConstructWithFilter(self):

        p = Gaffer.Path("/test/path")
        self.failUnless(p.getFilter() is None)

        f = Gaffer.FileNamePathFilter(["*.exr"])
        p = Gaffer.Path("/test/path", filter=f)
        self.failUnless(p.getFilter() is f)
Beispiel #12
0
	def createStandardFilter( extensions=[], extensionsLabel=None ) :
	
		result = Gaffer.CompoundPathFilter()
		
		if extensions :
			extensions = [ e.lower() for e in extensions ]
			if extensionsLabel is None :
				extensionsLabel = "Show only " + ", ".join( [ "." + e for e in extensions ] ) + " files"
			extensions += [ e.upper() for e in extensions ]
			extensions = [ "*." + e for e in extensions ]
			# the form below is for file sequences, where the frame range will
			# come after the extension
			extensions += [ "*.%s *" % e for e in extensions ]
			result.addFilter(
				Gaffer.FileNamePathFilter(
					extensions,
					userData = {
						"UI" : {
							"label" : extensionsLabel,
						}
					}
				)
			)
		
		result.addFilter(
			Gaffer.FileNamePathFilter(
				[ re.compile( "^[^.].*" ) ],
				leafOnly=False,
				userData = {
					"UI" : {
						"label" : "Show hidden files",
						"invertEnabled" : True,
					}
				}
			) 
		)
		
		result.addFilter(
			Gaffer.InfoPathFilter(
				infoKey = "name",
				matcher = None, # the ui will fill this in
				leafOnly = False,
			)
		)
		
		return result
Beispiel #13
0
    def testConstructWithFilter(self):

        p = Gaffer.FileSystemPath(__file__)
        self.failUnless(p.getFilter() is None)

        f = Gaffer.FileNamePathFilter(["*.exr"])
        p = Gaffer.FileSystemPath(__file__, filter=f)
        self.failUnless(p.getFilter().isSame(f))
    def testConstructWithFilter(self):

        p = Gaffer.FileSystemPath(__file__)
        self.assertIsNone(p.getFilter())

        f = Gaffer.FileNamePathFilter(["*.exr"])
        p = Gaffer.FileSystemPath(__file__, filter=f)
        self.assertTrue(p.getFilter().isSame(f))
Beispiel #15
0
    def testConstructWithFilter(self):

        p = Gaffer.Path("/test/path")
        self.assertIsNone(p.getFilter())

        f = Gaffer.FileNamePathFilter(["*.exr"])
        p = Gaffer.Path("/test/path", filter=f)
        self.assertTrue(p.getFilter().isSame(f))
Beispiel #16
0
    def test(self):

        f1 = Gaffer.FileNamePathFilter(["*.gfr"])
        f2 = Gaffer.FileNamePathFilter(["*.tif"])

        c = Gaffer.CompoundPathFilter()
        self.assertEqual(c.getFilters(), [])

        c.addFilter(f1)
        self.assertEqual(c.getFilters(), [f1])

        c.addFilter(f2)
        self.assertEqual(c.getFilters(), [f1, f2])

        c.removeFilter(f1)
        self.assertEqual(c.getFilters(), [f2])

        c.setFilters([f1, f2])
        self.assertEqual(c.getFilters(), [f1, f2])
    def testFiltering(self):

        p = Gaffer.DictPath({
            "a.txt": 1,
            "b.txt": 2,
            "c.exr": 3,
        }, "/")

        self.assertEqual(len(p.children()), 3)

        f = Gaffer.CompoundPathFilter()
        p.setFilter(f)
        self.assertEqual(len(p.children()), 3)

        f.addFilter(Gaffer.FileNamePathFilter(["*.txt"]))
        self.assertEqual(len(p.children()), 2)

        f.addFilter(Gaffer.FileNamePathFilter(["a.*"]))
        self.assertEqual(len(p.children()), 1)
Beispiel #18
0
    def testChangedSignalPropagation(self):

        cf = Gaffer.CompoundPathFilter()

        self.__numChanges = 0

        def f(filter):
            self.failUnless(filter is cf)
            self.__numChanges += 1

        f1 = Gaffer.FileNamePathFilter(["*.gfr"])
        f2 = Gaffer.FileNamePathFilter(["*.tif"])

        c = cf.changedSignal().connect(f)
        self.assertEqual(self.__numChanges, 0)

        cf.setFilters([f1, f2])
        self.assertEqual(self.__numChanges, 1)

        f1.changedSignal()(f1)
        self.assertEqual(self.__numChanges, 2)

        f2.changedSignal()(f2)
        self.assertEqual(self.__numChanges, 3)

        cf.removeFilter(f1)
        self.assertEqual(self.__numChanges, 4)
        f1.changedSignal()(f1)
        self.assertEqual(self.__numChanges, 4)

        cf.removeFilter(f2)
        self.assertEqual(self.__numChanges, 5)
        f2.changedSignal()(f2)
        self.assertEqual(self.__numChanges, 5)

        cf.addFilter(f1)
        self.assertEqual(self.__numChanges, 6)
        f1.changedSignal()(f1)
        self.assertEqual(self.__numChanges, 7)
Beispiel #19
0
def saveAs(menu):

    scriptWindow = menu.ancestor(GafferUI.ScriptWindow)
    script = scriptWindow.getScript()

    path = Gaffer.FileSystemPath(script["fileName"].getValue())
    path.addFilter(Gaffer.FileNamePathFilter(["*.gfr"]))
    path.addFilter(
        Gaffer.FileNamePathFilter([re.compile("^[^.].*")], leafOnly=False))

    dialogue = GafferUI.PathChooserDialogue(path,
                                            title="Save script",
                                            confirmLabel="Save")
    scriptWindow.addChildWindow(dialogue)
    path = dialogue.waitForPath()
    dialogue.hide()

    if not path:
        return

    script["fileName"].setValue(str(path))
    script.save()
Beispiel #20
0
    def testChangedSignal(self):

        cf = Gaffer.CompoundPathFilter()

        self.__numChanges = 0

        def f(filter):
            self.failUnless(filter is cf)
            self.__numChanges += 1

        f1 = Gaffer.FileNamePathFilter(["*.gfr"])
        f2 = Gaffer.FileNamePathFilter(["*.tif"])

        c = cf.changedSignal().connect(f)
        self.assertEqual(self.__numChanges, 0)

        cf.addFilter(f1)
        self.assertEqual(self.__numChanges, 1)

        cf.setFilters([f1])
        self.assertEqual(self.__numChanges, 1)

        cf.setFilters([f1, f2])
        self.assertEqual(self.__numChanges, 2)

        cf.removeFilter(f1)
        self.assertEqual(self.__numChanges, 3)

        # changing filters while not enabled shouldn't emit the signal

        cf.setEnabled(False)
        self.assertEqual(self.__numChanges, 4)

        cf.setFilters([])
        self.assertEqual(self.__numChanges, 4)

        cf.setFilters([f1, f2])
        self.assertEqual(self.__numChanges, 4)
Beispiel #21
0
    def testDisconnectFromFilterChangedOnDestruct(self):

        # make a path with a filter
        f = Gaffer.FileNamePathFilter(["*.gfr"])
        p = Gaffer.FileSystemPath("/a/b/c", filter=f)

        # force the path to connect to the
        # filter's changed signal.
        c = p.pathChangedSignal()

        # delete the path
        del p
        del c

        # edit the filter
        f.setEnabled(False)
Beispiel #22
0
    def testEnabledState(self):

        path = Gaffer.FileSystemPath("test/data/scripts")

        f = Gaffer.FileNamePathFilter(["*.gfr"])
        self.assertEqual(f.getEnabled(), True)

        path.setFilter(f)
        self.assertEqual(len(path.children()),
                         len(glob.glob("test/data/scripts/*.gfr")))

        f.setEnabled(False)
        self.assertEqual(f.getEnabled(), False)
        self.assertEqual(len(path.children()),
                         len(glob.glob("test/data/scripts/*")))

        f.setEnabled(True)
        self.assertEqual(f.getEnabled(), True)
        self.assertEqual(len(path.children()),
                         len(glob.glob("test/data/scripts/*.gfr")))
    def testChangedSignal(self):

        pathFilter = Gaffer.FileNamePathFilter(["*.gfr"])

        enabledStates = []

        def f(pf):

            self.failUnless(pf.isSame(pathFilter))
            enabledStates.append(pf.getEnabled())

        c = pathFilter.changedSignal().connect(f)

        pathFilter.setEnabled(False)
        pathFilter.setEnabled(False)
        pathFilter.setEnabled(True)
        pathFilter.setEnabled(True)
        pathFilter.setEnabled(False)

        self.assertEqual(enabledStates, [False, True, False])
    def testEnabledState(self):

        path = Gaffer.FileSystemPath(self.__testDirectory)

        f = Gaffer.FileNamePathFilter(["*.txt"])
        self.assertEqual(f.getEnabled(), True)

        path.setFilter(f)
        self.assertEqual(len(path.children()),
                         len(glob.glob(self.__testDirectory + "/*.txt")))

        f.setEnabled(False)
        self.assertEqual(f.getEnabled(), False)
        self.assertEqual(len(path.children()),
                         len(glob.glob(self.__testDirectory + "/*")))

        f.setEnabled(True)
        self.assertEqual(f.getEnabled(), True)
        self.assertEqual(len(path.children()),
                         len(glob.glob(self.__testDirectory + "/*.txt")))
    def test(self):

        path = Gaffer.FileSystemPath("test/data/scripts")
        children = path.children()
        self.assertEqual(len(children), len(glob.glob("test/data/scripts/*")))

        # attach a filter
        gfrFilter = Gaffer.FileNamePathFilter(["*.gfr"])
        path.addFilter(gfrFilter)

        children = path.children()
        self.assertEqual(len(children),
                         len(glob.glob("test/data/scripts/*.gfr")))

        # copy the path and check the filter is working on the copy
        pathCopy = path.copy()
        self.assertEqual(len(pathCopy.children()), len(children))

        # detach the filter and check that behaviour has reverted
        path.removeFilter(gfrFilter)
        children = path.children()
        self.assertEqual(len(children), len(glob.glob("test/data/scripts/*")))