def set_background(self): graphics_widget = FloatLayout() for td in self.textures_data: filename,xpos,ypos,width,height = td.split(":") xpos = float(xpos) ypos = float(ypos) image = MyImage(keep_ratio=True, allow_stretch=False, color=(0,0,0,0)) image.set_shadow(False) with image.canvas: Rectangle(texture=self.textures[filename].texture, size=(float(width) * X_BLOCK, float(height) * Y_BLOCK)) scatter = Scatter(do_rotation=False, do_scale=False, do_translation=False) scatter.pos = (xpos * X_BLOCK, ypos * Y_BLOCK) scatter.add_widget(image) graphics_widget.add_widget(scatter) for td in self.sprites_data: filename,xpos,ypos,width,height = td.split(":") xpos = float(xpos) ypos = float(ypos) image = MyImage(texture = self.sprites[filename].texture, keep_ratio=True, allow_stretch=False) image.set_shadow(False) scatter = Scatter(do_rotation=False, do_scale=False, do_translation=False) scatter.pos = (xpos * X_BLOCK, (ypos + 4) * Y_BLOCK / 2) scatter.add_widget(image) graphics_widget.add_widget(scatter) scatter.scale = 6 - ypos * 1.5 return graphics_widget
def NombreY(self, nombre): dispersa = Scatter() dispersa.pos = 109, -50 dispersa.rotation = 90 with dispersa.canvas: lblY = Label() dispersa.add_widget(lblY) lblY.pos = 200, -50 lblY.text = str(nombre) lblY.color = (0, 0, 0) self.wid.add_widget(dispersa)
def show_gems(self, dt=None, dummy=None): self.gem_scatters = [] filler = (8 - len(self.weapons)) / 2.0 for i in range(len(self.weapons)): gem = self.gems[self.weapons[i]] scatter = Scatter(do_rotation=False, do_scale=False, color=(0,0,0,0), size_hint=(0.1,0.1)) scatter.add_widget(gem) gem.bind(on_touch_down=self.flash_hero) scatter.bind(on_touch_up=self.drop_gem) scatter.pos = ((filler + i) * X_BLOCK, 0) scatter.scale = 1 try: self.graphics_widget.add_widget(scatter) self.gem_scatters.append(scatter) except: pass
def build(self): """Builds the GUI. """ resource_add_path( os.path.join(os.path.dirname(distopia.__file__), 'data', 'media')) self.load_config() mat = None if self.alignment_filename: fname = os.path.join(os.path.dirname(distopia.__file__), 'data', self.alignment_filename) try: mat = np.loadtxt(fname, delimiter=',', skiprows=3) except Exception as e: logging.exception("Not using alignment: {}".format(e)) self.load_data_create_voronoi() self.metric_data = self.geo_data.load_metrics(self.metrics, self.precincts) self.voronoi_mapping.verify_adjacency = \ self.geo_data.set_precinct_adjacency(self.precincts) self.geo_data.load_landmarks() widget = VoronoiWidget( voronoi_mapping=self.voronoi_mapping, table_mode=self.table_mode, align_mat=mat, screen_offset=list(map(dp, self.screen_offset)), ros_bridge=self.ros_bridge, district_blocks_fid=self.district_blocks_fid, focus_block_fid=self.focus_block_fid, focus_block_logical_id=self.focus_block_logical_id, district_metrics_fn=self.metric_data.compute_district_metrics, state_metrics_fn=self.metric_data.create_state_metrics, show_voronoi_boundaries=self.show_voronoi_boundaries, focus_metrics=self.focus_metrics, screen_size=list(map(dp, self.screen_size)), focus_metric_height=dp(self.focus_metric_height), focus_metric_width=dp(self.focus_metric_width), max_fiducials_per_district=self.max_fiducials_per_district, visualize_metric_data=self.visualize_metric_data) if self.use_ros: box = BoxLayout() voronoi_widget = widget err = Label(text='No ROS bridge. Please set use_ros to False') widget = box box.add_widget(err) def enable_widget(*largs): box.remove_widget(err) box.add_widget(voronoi_widget) voronoi_widget.ros_bridge = self.ros_bridge if self.show_precinct_id: self.show_precinct_labels(voronoi_widget) self.show_landmarks(voronoi_widget) self.ros_bridge = RosBridge( host=self.ros_host, port=self.ros_port, ready_callback=Clock.create_trigger(enable_widget), log_data=self.log_data) else: if self.show_precinct_id: self.show_precinct_labels(widget) self.show_landmarks(widget) size = list(map(dp, self.screen_size)) size = [v / self.scale for v in size] scatter = Scatter(do_rotation=False, do_scale=False, do_translation_y=False, do_translation_x=False, scale=self.scale, do_collide_after_children=False) scatter.add_widget(widget) widget.size_hint = None, None scatter.size_hint = None, None scatter.fbind('pos', lambda *l: setattr(scatter, 'pos', (0, 0))) scatter.pos = 0, 0 scatter.size = size widget.size = size return scatter