def setUp(self):
        unittest.TestCase.setUp(self)

        self.mll = MllInterface()

        self.setup = DuplicateLayers()
        self.setup.setMllInterface(self.mll)

        testUtils.openMayaFile("influence transfer.mb")

        self.mll.setCurrentMesh('sourceMesh')

        self.mll.initLayers()
예제 #2
0
 def setUp(self):
     unittest.TestCase.setUp(self)
     
     self.mll = MllInterface()
     
     self.setup = DuplicateLayers()
     self.setup.setMllInterface(self.mll)
     
     testUtils.openMayaFile("influence transfer.mb")
     
     self.mll.setCurrentMesh('sourceMesh')
     
     self.mll.initLayers()
    def execute(self):
        layerListsUi = LayerDataModel.getInstance().layerListsUI

        setup = DuplicateLayers()
        setup.setMllInterface(LayerDataModel.getInstance().mll)

        layers = layerListsUi.getSelectedLayers()
        if len(layers) == 0:
            raise MessageException('No layers selected')

        for layer in reversed(layers):
            setup.addLayer(layer)
        setup.execute()

        LayerDataModel.getInstance().mll.setCurrentLayer(
            setup.duplicateIds[-1])

        LayerEvents.layerListModified.emit()
 def execute(self):
     layerListsUi = LayerDataModel.getInstance().layerListsUI
     
     setup = DuplicateLayers()
     setup.setMllInterface(LayerDataModel.getInstance().mll)
     
     layers = layerListsUi.getSelectedLayers()
     if len(layers)==0:
         raise MessageException('No layers selected')
     
     for layer in reversed(layers):
         setup.addLayer(layer)
     setup.execute()
     
     LayerDataModel.getInstance().mll.setCurrentLayer(setup.duplicateIds[-1])
     
     LayerEvents.layerListModified.emit()
     
     
     
     
class DuplicateLayersTest(AdditionalAsserts, unittest.TestCase):
    def setUp(self):
        unittest.TestCase.setUp(self)

        self.mll = MllInterface()

        self.setup = DuplicateLayers()
        self.setup.setMllInterface(self.mll)

        testUtils.openMayaFile("influence transfer.mb")

        self.mll.setCurrentMesh('sourceMesh')

        self.mll.initLayers()

    def testLayerName(self):
        self.assertEquals("layer1 copy", self.setup.createLayerName("layer1"))
        self.assertEquals("layer1 copy(2)",
                          self.setup.createLayerName("layer1 copy"))
        self.assertEquals("layer1 copy(1000001)",
                          self.setup.createLayerName("layer1 copy(1000000)"))

    @insideMayaOnly
    def testDuplicateOneLayer(self):
        id = self.mll.createLayer("layer1 copy")
        self.setup.addLayer(id)
        self.setup.execute()

        newId = self.setup.duplicateIds[0]
        self.assertEqual(self.mll.getLayerName(newId), 'layer1 copy(2)')
        self.assertEqual(self.mll.isLayerEnabled(newId), True)
        self.assertAlmostEqual(self.mll.getLayerOpacity(newId), 1.0)
        self.assertFloatArraysEqual(self.mll.getLayerMask(newId), [])

        self.assertFloatArraysEqual(self.mll.getInfluenceWeights(id, 1),
                                    self.mll.getInfluenceWeights(newId, 1))

    @insideMayaOnly
    def testLayerOrder(self):
        id1 = self.mll.createLayer("layer1")
        id2 = self.mll.createLayer("layer2")

        def layerNames():
            return [a[1] for a in self.mll.listLayers()]

        self.assertArraysEqual(layerNames(), ["layer2", "layer1"])

        self.setup.addLayer(id1)
        self.setup.addLayer(id2)

        self.setup.execute()

        # order respects "newer layers on top"
        self.assertArraysEqual(
            layerNames(), ["layer2 copy", "layer1 copy", "layer2", "layer1"])

        # individual indexes in copy array respect indexes in the original array
        self.assertEquals(self.mll.getLayerName(self.setup.duplicateIds[0]),
                          "layer1 copy")
        self.assertEquals(self.mll.getLayerName(self.setup.duplicateIds[1]),
                          "layer2 copy")
예제 #6
0
class DuplicateLayersTest(AdditionalAsserts, unittest.TestCase):
    def setUp(self):
        unittest.TestCase.setUp(self)
        
        self.mll = MllInterface()
        
        self.setup = DuplicateLayers()
        self.setup.setMllInterface(self.mll)
        
        testUtils.openMayaFile("influence transfer.mb")
        
        self.mll.setCurrentMesh('sourceMesh')
        
        self.mll.initLayers()
        
    def testLayerName(self):
        self.assertEquals("layer1 copy",self.setup.createLayerName("layer1"))
        self.assertEquals("layer1 copy(2)",self.setup.createLayerName("layer1 copy"))
        self.assertEquals("layer1 copy(1000001)",self.setup.createLayerName("layer1 copy(1000000)"))
        
        
    @insideMayaOnly
    def testDuplicateOneLayer(self):
        id = self.mll.createLayer("layer1 copy")
        self.setup.addLayer(id)
        self.setup.execute()
        
        newId = self.setup.duplicateIds[0]
        self.assertEqual(self.mll.getLayerName(newId),'layer1 copy(2)')
        self.assertEqual(self.mll.isLayerEnabled(newId),True)
        self.assertAlmostEqual(self.mll.getLayerOpacity(newId),1.0)
        self.assertFloatArraysEqual(self.mll.getLayerMask(newId), [])
        
        self.assertFloatArraysEqual(self.mll.getInfluenceWeights(id, 1), self.mll.getInfluenceWeights(newId, 1))
    
    @insideMayaOnly
    def testLayerOrder(self):
        id1 = self.mll.createLayer("layer1")
        id2 = self.mll.createLayer("layer2")
        
        def layerNames():
            return [a[1] for a in self.mll.listLayers()]
    
        self.assertArraysEqual(layerNames(), ["layer2","layer1"])
        
        self.setup.addLayer(id1)
        self.setup.addLayer(id2)
        
        self.setup.execute()
        
        # order respects "newer layers on top"
        self.assertArraysEqual(layerNames(), ["layer2 copy","layer1 copy","layer2","layer1"])
        
        # individual indexes in copy array respect indexes in the original array
        self.assertEquals(self.mll.getLayerName(self.setup.duplicateIds[0]),"layer1 copy")
        self.assertEquals(self.mll.getLayerName(self.setup.duplicateIds[1]),"layer2 copy")