Exemplo n.º 1
0
 def addRouter(self, instance):
     nodeButton = Button(pos=(self.pendingNodePosY, self.pendingNodePosX),
                         size_hint=(None, None),
                         size=(40, 40))
     nodeImg = Image(source="Images/router.png")
     nodeLabel = Label()
     nodeButton.add_widget(nodeImg)
     nodeButton.add_widget(nodeLabel)
     nodeImg.center_x = nodeImg.parent.center_x
     nodeImg.center_y = nodeImg.parent.center_y + 10
     nodeLabel.center_x = nodeLabel.parent.center_x
     nodeLabel.center_y = nodeLabel.parent.center_y - 10
     nodeButton.bind(on_press=self.showNodeBubble)
     self.add_widget(nodeButton)
     self.netManager.addRouter(nodeButton)
     nodeLabel.text = self.netManager.getNodeName(nodeButton)
Exemplo n.º 2
0
    def __init__(self, scatter, root):
        self.scatter = scatter
        self.root = root
        self.current_popup_menu = 0
        try:
            with open(main_page.file_dir + main_page.file_name, 'r') as f:
                self.obstacle_list = json.load(f)
                for obstacle in self.obstacle_list['obstacle_list']:
                    image = Image(source=main_page.icon_dir +
                                  obstacle['image'],
                                  size=obstacle['size'][:2])
                    image.center_x = obstacle['position'][0]
                    image.center_y = obstacle['position'][1]
                    image.allow_stretch = True
                    image.size_hint = None, None
                    self.scatter.add_widget(image, index=1)

                    OBSTACLE_IMAGE[obstacle['id']] = image
        except Exception, e:
            self.obstacle_list = {"obstacle_list": []}
Exemplo n.º 3
0
    def on_touch_down(self, touch):

        print "TOUCH", touch.pos

        if main_page.current_obstacle == {}:
            return

        x, y = touch.pos
        image = Image(source=main_page.icon_dir +
                      main_page.current_obstacle['Image'],
                      size=main_page.current_obstacle['Initial_Size'][:2])
        image.center_x = touch.pos[0]
        image.center_y = touch.pos[1]
        image.size_hint = None, None
        image.allow_stretch = True
        print type(self.root)
        print self.root.pos, self.root.size
        if self.root.pos[0] + image.width / 2 <= x and x <= self.root.pos[
                0] + self.root.size[0] - image.width / 2:
            if self.root.pos[1] + image.height / 2 <= y and y <= self.root.pos[
                    1] + self.root.size[1] - image.height / 2:
                not_collision, collide_obstacle = collision_detect(
                    self.obstacle_list, image, touch.pos)

                if check_button_clicked(self.root, self.current_popup_menu,
                                        touch.pos):
                    if self.current_popup_menu != 0:
                        for item in self.current_popup_menu:
                            self.root.remove_widget(item)
                        self.current_popup_menu = 0

                elif not_collision:
                    if self.current_popup_menu != 0:
                        for item in self.current_popup_menu:
                            self.root.remove_widget(item)
                        self.current_popup_menu = 0

                    self.scatter.add_widget(image, index=1)
                    obstacle = {}
                    obstacle['title'] = main_page.current_obstacle['Name']
                    obstacle['position'] = touch.pos
                    obstacle['size'] = main_page.current_obstacle[
                        'Initial_Size']
                    obstacle['image'] = main_page.current_obstacle['Image']
                    obstacle['id'] = hashlib.sha256(
                        str(touch.pos[0]) + str(touch.pos[1])).hexdigest()
                    OBSTACLE_IMAGE[obstacle['id']] = image
                    self.obstacle_list['obstacle_list'].append(obstacle)
                    with open(main_page.file_dir + main_page.file_name,
                              'w') as f:
                        json.dump(self.obstacle_list, f)

                else:
                    if self.current_popup_menu != 0:
                        for item in self.current_popup_menu:
                            self.root.remove_widget(item)
                        self.current_popup_menu = 0

                    menu = []

                    for idx in range(NUM_MENU):
                        tmp_btn = Button(text="Delete",
                                         background_color=(0x81, 0xd4, 0xfa),
                                         size_hint=(.1, .1))
                        tmp_btn.pos = [
                            touch.pos[0], touch.pos[1] - tmp_btn.size[1] -
                            idx * tmp_btn.size[1]
                        ]
                        tmp_btn.id = collide_obstacle['id'] + "," + str(idx)
                        print tmp_btn.id
                        menu.append(tmp_btn)
                    self.current_popup_menu = menu

                    for item in menu:
                        self.root.add_widget(item)