Пример #1
0
 def changeFrame(self):
     self.canvasList = self.project.timeline.getCanvasList(self.project.curFrame)
     # resize scene if needed
     if self.scene.sceneRect().size().toSize() != self.project.size:
         self.scene.setSceneRect(0, 0, 
                 self.project.size.width(), self.project.size.height())
         self.updateBackground()
     # add item for layer if needed
     for i in range(len(self.itemList), len(self.canvasList)):
         self.itemList.append(self.scene.addPixmap(QtGui.QPixmap(1, 1)))
         self.itemList[i].setZValue(100 - i)
     # remove item for layer if needed
     for i in range(len(self.canvasList), len(self.itemList)):
         self.scene.removeItem(self.itemList[i])
         del self.itemList[i]
     # updates canvas
     for n, i in enumerate(self.canvasList):
         if i and self.project.timeline[n].visible:
             self.itemList[n].setVisible(True)
             self.itemList[n].pixmap().convertFromImage(i)
             self.itemList[n].update()
             self.itemList[n].setOpacity(self.project.currentOpacity)
         else:
             self.itemList[n].setVisible(False)
     # onionskin
     for i in self.onionPrevItems:
         i.hide()
     for i in self.onionNextItems:
         i.hide()
     layer = self.project.timeline[self.project.curLayer]
     if (not self.project.playing and self.project.onionSkin["check"] and 
          layer.visible and self.project.curFrame < len(layer)):
         # previous frames
         for n, i in enumerate(layer.getPrevCanvas(3)):
             if self.project.onionSkin["prev"][n][0]:
                 self.onionPrevItems[n].pixmap().convertFromImage(i)
                 if self.project.onionSkin["color"]:
                     prevEffect = QtGui.QGraphicsColorizeEffect()
                     prevEffect.setColor(self.project.onionSkin["prev_color"])
                     self.onionPrevItems[n].setGraphicsEffect(prevEffect)
                 else:
                     self.onionPrevItems[n].setGraphicsEffect(None)
                 self.onionPrevItems[n].setOpacity(self.project.onionSkin["prev"][n][1])
                 self.onionPrevItems[n].show()
         # next frames
         for n, i in enumerate(layer.getNextCanvas(3)):
             if self.project.onionSkin["next"][n][0]:
                 self.onionNextItems[n].pixmap().convertFromImage(i)
                 if self.project.onionSkin["color"]:
                     nextEffect = QtGui.QGraphicsColorizeEffect()
                     nextEffect.setColor(self.project.onionSkin["next_color"])
                     self.onionNextItems[n].setGraphicsEffect(nextEffect)
                 else:
                     self.onionNextItems[n].setGraphicsEffect(None)
                 self.onionNextItems[n].setOpacity(self.project.onionSkin["next"][n][1])
                 self.onionNextItems[n].show()