目标
设置复制粘贴剪切的选项
复制Node,edge等内容
粘贴到Scene中
实现
该复制什么
如果我们要对node和edge进行复制,那么我们需要复制的是什么东西
是复制对象吗,当然不是
在前面的内容就以及给了答案,我们将scene里的内容进行了序列化保存,以及反序列化解压读取
那么,答案就显然易见了,我们需要复制的是序列化内容
如何复制序列化内容
def deserialize(self, data, hashmap={
}, restore_id=True):
self.clear()
hashmap = {
}
if restore_id: self.id = data['id']
#创建nodes
for node_data in data['nodes']:
Node(self).deserialize(node_data, hashmap, restore_id)
#创建edges
for edge_data in data['edges']:
Edge(self).deserialize(edge_data, hashmap, restore_id)
return True
在所有的反序列化方法中增加新参数restore_id
当其为False时self.id将由系统给予一个id,不会与复制前的id重复,是一个全新的对象
建立新类,实现剪贴板功能
node_scene_clipboard.py
c