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)
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": []}
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)