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()