def _populate_tree_item(self, mode, filename, itemid, group, text, description): if mode == 'child': return core_api.append_item(filename, itemid, group, text=text, description=description) elif mode == 'sibling': return core_api.insert_item_after(filename, itemid, group, text=text, description=description)
def paste_items(filename, baseid, mode, group, description='Paste items'): qmemory = core_api.get_memory_connection() cursor = qmemory.cursor() cursor.execute(queries.copy_select_parent_roots) old_roots = cursor.fetchall() core_api.give_memory_connection(qmemory) old_to_new_ids = {} def recurse(baseid, previd): cursor.execute(queries.copy_select_parent, (baseid, previd)) child = cursor.fetchone() if child: id_ = child['C_id'] old_to_new_ids[id_] = core_api.append_item( filename, old_to_new_ids[baseid], group=group, text=child['C_text'], description=description) item_paste_event.signal(filename=filename, id_=old_to_new_ids[id_], oldid=id_, group=group, description=description) recurse(id_, 0) recurse(baseid, id_) if mode == 'siblings': old_roots.reverse() for root in old_roots: if mode == 'children': old_to_new_ids[root['C_id']] = core_api.append_item( filename, baseid, group=group, text=root['C_text'], description=description) elif mode == 'siblings': old_to_new_ids[root['C_id']] = core_api.insert_item_after( filename, baseid, group=group, text=root['C_text'], description=description) item_paste_event.signal(filename=filename, id_=old_to_new_ids[root['C_id']], oldid=root['C_id'], group=group, description=description) recurse(root['C_id'], 0) new_ids = old_to_new_ids.values() new_roots = [old_to_new_ids[root['C_id']] for root in old_roots] items_pasted_event.signal() return (new_roots, new_ids)