Esempio n. 1
0
    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))
Esempio n. 2
0
    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()
Esempio n. 3
0
 def on_close(self):
     menu.autosave(menu.copy_nodes(self, data=True))
     self.close()
Esempio n. 4
0
 def autosave(self):
     if menu.autosave(menu.copy_nodes(self, data=True)):
         self.info("auto-saved")