Esempio n. 1
0
 def step_back(self):
     dbgfname()
     if abs(self.step_index) < len(self.steps):
         self.step_index -= 1
         s = self.steps[self.step_index]
         s.unserialize()
         Singleton.state.set(s.state)
Esempio n. 2
0
 def step_forward(self):
     dbgfname()
     if self.step_index < -1:
         self.step_index += 1
         s = self.steps[self.step_index]
         s.unserialize()
         Singleton.state.set(s.state)
Esempio n. 3
0
 def vscroll(self, args):
     dbgfname()
     debug("  vscroll: " + str(args))
     debug("  " + str(args[0][0].get_value()))
     offset = Singleton.state.get_base_offset()
     Singleton.state.set_base_offset((offset[0], -args[0][0].get_value()))
     self.mw.widget.update()
Esempio n. 4
0
    def to_line_sequence(self, precision):
        dbgfname()
        sa = 0.0
        ea = math.pi * 2
        da = (ea - sa)

        n_steps = int(da / precision)
        s_pt = (self.center[0] + math.cos(sa) * self.radius,
                self.center[1] + math.sin(sa) * self.radius)
        debug("  splitting arc, start angle: " + str(sa) + " start_pt: " +
              str(s_pt))

        converted_elements = []

        for i in range(1, n_steps):
            a = sa + i * 0.1
            e_pt = (self.center[0] + math.cos(a) * self.radius,
                    self.center[1] + math.sin(a) * self.radius)
            ne = ELine(s_pt, e_pt, self.lt, self.color)
            debug("  angle: " + str(a) + " line: " + str(s_pt) + " " +
                  str(e_pt))
            s_pt = e_pt
            converted_elements.append(ne)
        e_pt = self.end
        ne = ELine(s_pt, e_pt, self.lt, self.color)
        converted_elements.append(ne)
        return converted_elements
Esempio n. 5
0
 def sketcher_start(self, args):
     dbgfname()
     debug("  sketcher start")
     self.reset()
     Singleton.state = State()
     self.pointer_position = (0, 0)
     project.push_state(Singleton.state, "sketcher_start")
     self.mw.widget.update()
Esempio n. 6
0
 def push_state(self, state, description):
     dbgfname()
     if (self.step_index != -1):
         self.steps = self.steps[:self.step_index + 1]
         self.step_index = -1
     self.steps.append(Step(state))
     self.steps[-1].dsc = description
     depth = 50
     if (len(self.steps) > depth):
         self.steps = self.steps[-depth:]
     debug("  steps length:" + str(len(self.steps)))
Esempio n. 7
0
 def screen_left_press(self, args):
     dbgfname()
     cx, cy = self.screen_to_cursor_with_snap(args[0][0], args[0][1])
     px, py = self.pointer_position
     if (self.current_mode == EMode.eline_2point):
         if (self.current_element == None):
             self.current_element = ELine(start=(px, py), end=(px, py))
         else:
             self.current_element.end = (px, py)
             Singleton.state.elements.append(self.current_element)
             self.current_element = ELine(start=(px, py), end=(px, py))
         self.mw.widget.update()
Esempio n. 8
0
 def scroll_down(self, args):
     dbgfname()
     debug("  scroll down")
     if self.shift_pressed:
         offset = Singleton.state.get_base_offset()
         Singleton.mw.widget_vscroll.set_value(
             -(offset[1] - 10 * Singleton.state.scale[0]))
     elif self.ctrl_pressed:
         offset = Singleton.state.get_base_offset()
         Singleton.mw.widget_hscroll.set_value(
             -(offset[0] - 10 * Singleton.state.scale[0]))
     else:
         self.scale_generic("down")
     self.mw.widget.update()
Esempio n. 9
0
    def load(self, project_path):
        dbgfname()
        from sketcher.events import ep, ee
        #global state

        self.path = project_path

        debug("  loading project from " + str(project_path))
        f = open(project_path)
        data = f.read()
        f.close()
        parsed_json = json.loads(data)
        self.steps = []
        if parsed_json["format_version"] == 2:
            step = Step(data=parsed_json["step"])
            self.steps.append(step)
            Singleton.state.set(self.steps[-1].state)
            ep.push_event(ee.update_tool_operations_list, (None))
            ep.push_event(ee.update_paths_list, (None))
            ep.mw.widget.update()
        else:
            debug("  Can't load, unsupported format")
Esempio n. 10
0
 def escape(self, arg):
     dbgfname()
     if self.current_element != None:
         self.current_element = None
     self.current_mode = None
     self.mw.widget.update()
Esempio n. 11
0
 def line_2point_click(self, args):
     dbgfname()
     self.current_mode = EMode.eline_2point
Esempio n. 12
0
 def screen_left_release(self, args):
     dbgfname()
     cx, cy = self.screen_to_cursor_with_snap(args[0][0], args[0][1])
Esempio n. 13
0
 def main_start(self, args):
     dbgfname()
     offset = Singleton.state.get_offset()
     cx = (offset[0])
     cy = -(offset[1])
     self.cursor_position = (cx, cy)