def on_key_press(self, symbol, modifiers): key = pyglet.window.key if modifiers == 2 and symbol == key.EQUAL: # double zoom self.pan_scale[1] = 2 if not (self.code_editor or self.field): if symbol == key.N: self.nodes.append( Node(self.pointer[0], self.pointer[1], self.batch, (randint(80, 130), randint(80, 130), randint(80, 130)))) elif symbol == key.F: self.nodes.append( Field(self.pointer[0], self.pointer[1], self.batch)) if modifiers & key.MOD_CTRL: if symbol == key.C: menu.copy_nodes(self) elif symbol == key.V: menu.paste_nodes(self) if symbol == key.DELETE: for node in self.selected_nodes: node.make_child_active() node.delete() node.outputs = () del self.nodes[self.nodes.index(node)] del node print('Delete node') self.selected_nodes = [] elif symbol == key.HOME: self.pan_scale = [[0.0, 0.0], 1] elif symbol == key.END: print(len(self.nodes)) for node in self.selected_nodes: print(str(node))
def update(self, dt): self.pyno_namespace['dt'] = dt if self.info_timer > 0.0: self.info() else: self.info_timer += dt if self.autosave_timer > 60.0: self.autosave_timer = 0.0 if menu.autosave(menu.copy_nodes(self, data=True)): self.info("auto-saved", delay=1.0) else: self.autosave_timer += dt # ---- Calculations ---- self.nodes_update() if self.selected_nodes: for node in self.selected_nodes: node.make_active() else: # pointer over nodes nc = self.nodes_check self.nodes_check = nc + 1 if nc < len(self.nodes) - 25 else 0 for node in self.nodes[self.nodes_check:self.nodes_check + 25]: node.intersect_point(self.pointer) if self.code_editor: if self.code_editor.intersect_point(self.pointer): self.code_editor.node.hover = True self.menu.update() # ---- Redraw actives ---- self.active_nodes = list(filter(lambda x: x.active, self.nodes)) for node in self.active_nodes: node.render_base()
def on_close(self): menu.autosave(menu.copy_nodes(self, data=True)) self.close()
def autosave(self): if menu.autosave(menu.copy_nodes(self, data=True)): self.info("auto-saved")