Advertisement
Uno-Dan

Copy & Paste

Mar 12th, 2020
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.02 KB | None | 0 0
  1.     def copy(self):
  2.         def get_items(_node):
  3.             def get_nodes(_nodex):
  4.                 _items = []
  5.                 for _nodex in self.get_children(_nodex):
  6.                     _items.append(_nodex)
  7.                     if self.get_children(_nodex):
  8.                         _items += get_items(_nodex)
  9.                 return _items
  10.  
  11.             if self.item(node)['open']:
  12.                 results = [] if next((x for x in selections if x.startswith(_node)), False) else get_nodes(_node)
  13.             else:
  14.                 results = get_nodes(_node)
  15.             return results
  16.  
  17.         self.tags_remove_all('copy', 'selected')
  18.         self.refresh_tags()
  19.  
  20.         items = []
  21.         selections = sorted(list(self.selection()))
  22.         while selections:
  23.             node = selections.pop(0)
  24.             items.append(node)
  25.  
  26.             if self.item(node)['values'][0] == 'Menu':
  27.                 items += get_items(node)
  28.  
  29.         for item in items:
  30.             self.tags_add(item, ['copy', 'selected'])
  31.             self.tags_remove(item, ['odd', 'even'])
  32.  
  33.         self.popup.enable_items(['paste'])
  34.         self.pointer_x, self.pointer_y = self.winfo_toplevel().winfo_pointerxy()
  35.  
  36.     def paste(self):
  37.         def set_items(parent, _node):
  38.             for child in self.get_children(_node):
  39.                 if child in nodes:
  40.                     nodes.pop(nodes.index(child))
  41.                     data = self.get_data(child)
  42.                     _iid = self.append(parent, data['type'], data['text'], data['values'])
  43.                     set_items(_iid, child)
  44.  
  45.         for selection in self.selection():
  46.             nodes = sorted(self.tag_has('copy'))
  47.  
  48.             while nodes:
  49.                 node = nodes.pop(0)
  50.                 item = self.item(node)
  51.  
  52.                 iid = self.append(selection, item['values'][0], item['text'], item['values'])
  53.                 if item['values'][0] == 'Menu':
  54.                     set_items(iid, node)
  55.  
  56.         self.tags_remove_all('selected')
  57.         self.refresh_tags()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement