Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ########################################################################################################################
- # Author: Dan Huckson, https://github.com/unodan
- # Date: 2020-03-12
- ########################################################################################################################
- def copy(self):
- def get_items(_node):
- def get_nodes(child):
- _items = []
- for child in self.get_children(child):
- _items.append(child)
- if self.get_children(child):
- _items += get_items(child)
- return _items
- if self.item(node)['open']:
- results = [] if next((x for x in selections if x.startswith(_node)), False) else get_nodes(_node)
- else:
- results = get_nodes(_node)
- return results
- self.tags_remove_all('copy', 'selected')
- self.tags_refresh()
- items = []
- selections = sorted(list(self.selection()))
- while selections:
- node = selections.pop(0)
- items.append(node)
- if self.item(node)['values'][0] == 'Menu':
- items += get_items(node)
- for item in items:
- self.tags_add(item, ['copy', 'selected'])
- self.tags_remove(item, ['odd', 'even'])
- self.popup.enable_items(['paste'])
- self.pointer_x, self.pointer_y = self.winfo_toplevel().winfo_pointerxy()
- def paste(self):
- def set_items(parent, _node):
- for child in self.get_children(_node):
- if child in nodes:
- nodes.pop(nodes.index(child))
- data = self.get_data(child)
- _iid = self.append(parent, data['type'], data['text'], data['values'])
- set_items(_iid, child)
- for selection in self.selection():
- nodes = sorted(self.tag_has('copy'))
- while nodes:
- node = nodes.pop(0)
- item = self.item(node)
- iid = self.append(selection, item['values'][0], item['text'], item['values'])
- if item['values'][0] == 'Menu':
- set_items(iid, node)
- self.tags_remove_all('selected')
- self.tags_refresh()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement