def markDestination(self, destination): ''' Takes in a parking garage object called destination Gets the location of the destination and places a map marker on top of it Parameters: destination - ParkingGarage object Returns: coords - tuple with the coordinates of the map marker ''' if not isinstance(destination, ParkingGarage): pop = Popup(title="Error", content=Label(text="No Destination Input"), size_hint=(.2, .2)) pop.open() return #Get the coordinates of the destination coder = GoogleGeocoder("AIzaSyDPOAePgFbDCBU0rsOdvWX66C2CPUB2CZM") g = coder.get(destination.getLocation()) coords = (g[0].geometry.location.lat, g[0].geometry.location.lng) #Create a marker that holds information on the parking garage bub = Bubble(size_hint=(None, None), size=(200, 50), arrow_pos='bottom_left') lab = Label(text=(" " + destination.getName()), text_size=(self.width, None)) lab.height = lab.texture_size[1] lab.halign = 'center' bub.add_widget(lab) m1 = MapMarkerPopup(lat=coords[0], lon=coords[1], placeholder=bub) #Mark the map and return the coordinates of the marker self.ids.map1.add_marker(m1) return coords
def build(self): layout = BoxLayout(orientation='vertical') self.mapview = MapView(zoom=7, lat=42.6394, lon=25.057) bubble = Bubble(orientation="horizontal", padding=5) text = "[b]Sample text here[/b]" label = Label(text=text, markup=True, halign="center") bubble.add_widget(label) marker = MapMarkerPopup(id="first", lat=42.6394, lon=25.057, popup_size=('150dp', '100dp')) marker.add_widget(bubble) self.mapview.add_marker(marker) b = BoxLayout(orientation='horizontal', height='52dp', size_hint_y=None) b.add_widget( Button(text="Zoom in", on_press=lambda a: setattr(self.mapview, 'zoom', self. mapview.zoom + 1))) b.add_widget( Button(text="Zoom out", on_press=lambda a: setattr(self.mapview, 'zoom', self. mapview.zoom - 1))) layout.add_widget(b) layout.add_widget(self.mapview) return layout
def __init__(self, **kwargs): Bubble.__init__(self, **kwargs) self.line = None self.point = None self.hide() self.background_color = 0.20, 0.71, 0.90, 0.8 self.opacity = 0.95 self.size_hint = [None, None] self.size = [160, 65] self.label_name = Label(text="Frequency", size_hint_y=0.6) self.label_value = Label(text="1.5 m/s") self.label_units = Label(text="Hz", size_hint_x=0.5) self.input = TextInput(multiline=False, size_hint_x=0.8) self.input.bind(on_text_validate=self.on_enter) Window.bind(on_key_down=self.on_key_down) layout = BoxLayout(orientation="vertical", padding=2) bottom = BoxLayout(size_hint_y=0.7) bottom.add_widget(self.label_value) bottom.add_widget(self.input) bottom.add_widget(self.label_units) layout.add_widget(self.label_name) layout.add_widget(bottom) self.add_widget(layout)
class CalendarButton(FloatLayout): def __init__(self, activity, **kwargs): self.activity = activity super(CalendarButton, self).__init__() self.buttonInstance = Button(size_hint=(1, 1), pos_hint={'center_x':0.5, 'center_y':0.5}, **kwargs) self.buttonInstance.bind(on_release=self.onPressBubble) self.add_widget(self.buttonInstance) self.bubbleInstance = Bubble(size_hint=(None, None), size=(100, 40), pos_hint={'center_x':0.5, 'center_y':0.5}, arrow_pos='bottom_mid') self.bubbleChange = BubbleButton(text='Change', font_size=8) self.bubbleChange.bind(on_release=self.onPressChange) self.bubbleRemove = BubbleButton(text='Remove', font_size=8) self.bubbleRemove.bind(on_release=self.onPressRemove) self.bubbleInstance.add_widget(self.bubbleChange) self.bubbleInstance.add_widget(self.bubbleRemove) def onPressBubble(self, instance): if self.bubbleInstance.parent == None: self.add_widget(self.bubbleInstance) else: self.remove_widget(self.bubbleInstance) def onPressChange(self, instance): self.remove_widget(self.bubbleInstance) changeActivity(self.activity) def onPressRemove(self, instance): self.remove_widget(self.bubbleInstance) removeActivity(self.activity)
def open_bubble_not_set(self, ti_not_set): float_lay = FloatLayout() float_lay.size_hint = None, None float_lay.width = 0 float_lay.height = 0 bubble_not_set = Bubble() bubble_not_set.size_hint = None, None bubble_not_set.width = 80 bubble_not_set.height = 30 bubble_not_set.center_x = ti_not_set.center_x bubble_not_set.center_y = ti_not_set.center_y - 30 bubble_not_set.arrow_pos = 'top_mid' bubble_not_set.background_color = (1, 0, 0, 1) bt_not_set = BubbleButton() bt_not_set.font_size = 12 bt_not_set.text = self.lang['Not_Set'] bubble_not_set.add_widget(bt_not_set) float_lay.add_widget(bubble_not_set) #self.add_widget(bubble_not_set) self.lay_file_asc.add_widget(float_lay) parallel_close = threading.Thread(target=self.close_bubble_not_set, args=(float_lay,)) parallel_close.start()
def __init__(self,**kwargs): Bubble.__init__(self,**kwargs) self.module = kwargs['module'] #self.ids['asteroid_info'].text = self.ast.txt_info() # self.refresh() Clock.schedule_interval(self.refresh, 1)
def _on_dropdown_select(self, instance, data, *largs): self.text = data self.is_open = False #print('select function',self.text) self.func_des = '[color=#ffff00][i][b]' + self.parent.tool_library.read_obj.get_func_des( self.text) + '[/i][/b][/color]' self.set_select_parameter(self.text) if self.bubble is None: self.bubble = Bubble(size_hint=(.3, .2)) self.bubb_layout = AnchorLayout(anchor_x='right', anchor_y='top') def remove_bubble(instance): self.bubb_layout.remove_widget(self.bubble) self.parent.parent.remove_widget(self.bubb_layout) self.bubble = None self.bubb_layout = None self.button = BubbleButton(text=self.func_des, halign='left', valign='middle', text_size=(300, 300), background_color=(0, 0, 1, 1), markup=True) self.button.bind(on_press=remove_bubble) self.bubble.add_widget(self.button) self.bubble.arrow_pos = 'top_mid' self.bubb_layout.add_widget(self.bubble) self.parent.parent.parent.add_widget(self.bubb_layout) else: self.button.text = self.func_des
def __init__(self, layout, **kwargs): Bubble.__init__(self, **kwargs) self.size_hint = (None, None) self.size = (Window.size[0] * 0.13 * 5, Window.size[1] * LAYER_RIBBON_BUTTON_HEIGHT_HINT * 1.3) self.orientation = 'horizontal' self.show_arrow = False self.layout = layout self.but_list = []
def __init__(self, grid, **kwargs): super(Marker, self).__init__(**kwargs) bubble = Bubble(arrow_pos='left_bottom') self.label = Label() bubble.add_widget(self.label) self.add_widget(bubble) self.grid = grid self.update_text()
def test_add_content_with_buttons(self): bubble = Bubble() content = BubbleContent() content.add_widget(BubbleButton(text="Option A")) content.add_widget(BubbleButton(text="Option B")) bubble.add_widget(content) self.render(bubble)
def __init__(self, obj, action_list): Bubble.__init__(self) self.obj = obj for k, v in action_list: l = MenuItem() l.text = _(k) def func(f=v): Clock.schedule_once(lambda dt: f(obj), 0.15) l.on_release = func self.ids.buttons.add_widget(l)
def __init__(self, **kwargs): Bubble.__init__(self, **kwargs) self.app = App.get_running_app() self.pressed = None self.size_hint = (None, None) self.tool = TOOL_LINE self.frames = [] self.buttons = {} self.content.bind(size=self.redraw_content_frame)
def show_bubble(self) -> None: self.bubb = Bubble(size_hint=(None, None), size=(160, 30), pos_hint={'center_x': .5, 'y': .6}) accuse = BubbleButton(text='Accuse') suspect = BubbleButton(text='Suspect') accuse.bind(on_press=partial(self.hide_bubble, accuse)) suspect.bind(on_press=partial(self.hide_bubble, suspect)) self.bubb.add_widget(accuse) self.bubb.add_widget(suspect) self.ids.empty.add_widget(self.bubb)
def visualizarVehiculos( self ): #Muestro los marcadores con las ubicaciones actualizadas en el mapa ip_request = requests.get('https://get.geojs.io/v1/ip.json') my_ip = ip_request.json()['ip'] #con mi ip obtengo mi geolocalizacion geo_request = requests.get('https://get.geojs.io/v1/ip/geo/' + my_ip + '.json') geo_data = geo_request.json() self.longitudActual = float(geo_data['longitude']) self.latitudActual = float(geo_data['latitude']) self.ids.mapview.center_on( self.latitudActual, self.longitudActual) #mapa centrado en ubicacion actual self.ids.mapview.zoom = 5 """ mapmarkerpopupUbicacionActual=MapMarkerPopup(lat= self.latitudActual,lon= self.longitudActual, popup_size= (120,70)) bubbleUbicacionActual=Bubble() labelUbicacionActual= Label(text= "[b]Ubicaion actual![/b]", markup= True, halign= "center") bubbleUbicacionActual.add_widget(labelUbicacionActual) mapmarkerpopupUbicacionActual.add_widget(bubbleUbicacionActual) #creo un marcador con etique para saber la ubicacion actual, es de color rojo """ #self.ids.mapview.center_on(4.795100942698568, -75.6890602859938) #Me centra en la utp. if len(self.listaMarker) > 0: for marker in range(len(self.listaMarker)): self.ids.mapview.remove_widget(self.listaMarker[marker]) self.listaMarker = [ ] #La reseteo para poder meter los mapMarker de los vehiculos actualizados. #Se hace la consulta a la BD para obtener las lat y lon de los vehiculos-----------------------BD #self.listaMarker.append(mapmarkerpopupUbicacionActual) #hacer consulta base de datos pos = UbicacionVehiculo.obtenerData(UbicacionVehiculo) for e in pos: mapmarkerpopup = MapMarkerPopup( lat=float(e[1]), lon=float(e[2]), color=(0, 1, 1, 1), popup_size=(120, 70)) #acepta 1,0,1,1 o 0,0,0,1 o 0,1,1,1 bubble = Bubble() label = Label(text="[b]" + Vehiculo.getNamevehiculo(Vehiculo, e[0]) + "[/b]", markup=True, halign="center") bubble.add_widget(label) mapmarkerpopup.add_widget(bubble) self.listaMarker.append(mapmarkerpopup) for i in range(len(pos)): self.ids.mapview.add_widget(self.listaMarker[i])
def __init__(self,**kwargs): Bubble.__init__(self,**kwargs) self.ast = kwargs['asteroid'] self.ids['asteroid_info'].text = self.ast.txt_info() self.ids['asteroid_info'].texture_update() #resize? self.size = self.ids['asteroid_info'].texture_size #print self.size self.width += 30 self.height = '100dp'
def show_timer(self): self.dynamic_button = "Pause" bubble = Bubble(size_hint=[None, None], size=[50, 35], pos=[375, 490]) bubble.add_widget( BubbleButton(text='START', font_size='15sp', color=[0, 0, 0, 1], size=[10, 10])) bubble.background_color = (0, 0, 0, 0) self.ids.bbox.add_widget(bubble) Clock.schedule_interval(self.Running_Clock, 1) Clock.schedule_once(partial(self.remove_bubble, bubble), 1)
class SettingView(ToggleButton): parameter = StringProperty("Parameter") formatStr = StringProperty("%d") value = NumericProperty(0) minVal = NumericProperty(0) maxVal = NumericProperty(0) delta = NumericProperty(1) unit = StringProperty("unit") def __init__(self, **kwargs): super(SettingView, self).__init__(**kwargs) self.register_event_type('on_change') self.text = ("[size=60]"+self.formatStr+"[/size][size=15]%s[/size]\n[size=20]%s[/size]") % (self.value, self.unit, self.parameter) self.valign = 'bottom' self.halign = 'center' self.markup = True def decr(self, evt): if self.value > self.minVal: self.value = self.value - self.delta self.text = ("[size=60]"+self.formatStr+"[/size][size=15]%s[/size]\n[size=20]%s[/size]") % (self.value, self.unit, self.parameter) def incr(self, evt): if self.value < self.maxVal: self.value = self.value + self.delta self.text = ("[size=60]"+self.formatStr+"[/size][size=15]%s[/size]\n[size=20]%s[/size]") % (self.value, self.unit, self.parameter) def on_state(self, widget, state): # super(SettingView, self).on_state(**kwargs) if self.state == 'down': bubbleHeight = 50 self.bubble = Bubble(size_hint=(None,None), size=(self.width, bubbleHeight), center_x=self.center_x, y=self.height-bubbleHeight) b1 = BubbleButton(text="-", font_size=40) b1.bind(on_press = self.decr) b2 = BubbleButton(text="+", font_size=40) b2.bind(on_press = self.incr) self.text_size = self.size self.text_size[1] -= 10 self.valign='bottom' self.bubble.add_widget(b1) self.bubble.add_widget(b2) self.add_widget(self.bubble) else: self.remove_widget(self.bubble) self.valign='center' self.dispatch('on_change', self.value) def on_change(self, event): pass
def timer_bubble(self, tx1, tx2, clr, fn): bubble = Bubble(size_hint=[None, None], size=[50, 35], pos=[375, 490]) bubble.add_widget( BubbleButton(text="{:02d}:{:02d}".format(tx1, tx2), font_size='15sp', color=[0, 0, 0, clr], size=[10, 10])) bubble.background_color = (0, 0, 0, 0) self.ids.bbox.add_widget(bubble) if fn == "stop": Clock.schedule_once(partial(self.remove_bubble, bubble), 60) if fn == "run": Clock.schedule_once(partial(self.remove_bubble, bubble), 1)
class ToolSelectFunction(Spinner): def __init__(self, **kwargs): self.map_pars = {} self.bubble = None self.bubb_layout = None self.button = None self.func_des = None self.background_color = (0.46, 0.46, 0.46, 0.6) super(ToolSelectFunction, self).__init__(**kwargs) def _on_dropdown_select(self, instance, data, *largs): self.text = data self.is_open = False #print('select function',self.text) self.func_des = '[color=#ffff00][i][b]' + self.parent.tool_library.read_obj.get_func_des( self.text) + '[/i][/b][/color]' self.set_select_parameter(self.text) if self.bubble is None: self.bubble = Bubble(size_hint=(.3, .2)) self.bubb_layout = AnchorLayout(anchor_x='right', anchor_y='top') def remove_bubble(instance): self.bubb_layout.remove_widget(self.bubble) self.parent.parent.remove_widget(self.bubb_layout) self.bubble = None self.bubb_layout = None self.button = BubbleButton(text=self.func_des, halign='left', valign='middle', text_size=(300, 300), background_color=(0, 0, 1, 1), markup=True) self.button.bind(on_press=remove_bubble) self.bubble.add_widget(self.button) self.bubble.arrow_pos = 'top_mid' self.bubb_layout.add_widget(self.bubble) self.parent.parent.parent.add_widget(self.bubb_layout) else: self.button.text = self.func_des def set_select_parameter(self, function): self.parent.tool_parameter.text = 'Select Parameter' self.map_pars = self.parent.tool_library.read_obj.get_pars_type( function) #print('map_pars',map_pars) self.parent.tool_parameter.values = self.map_pars.keys()
class UseBubble(object): bubble = None callbackid = None def openbubble(self, buttonfunclist, data=None): if self.bubble: logging.error("Bubble already called") return self.bubble = Bubble(height=30, width=10, pos=self.to_window(self.x, self.y+30), size_hint=(None, None)) for text, func in buttonfunclist: button = BubbleButton(text=text, height=30) self.bubble.width += 10 + len(text)*10 self.call(button, func, data) self.bubble.add_widget(button) root = App.get_running_app().root #self.get_root_window().add_widget(self.bubble, root.canvas) root.add_widget(self.bubble) self.callbackid = root.fbind("on_touch_down", self.touch_grab) def touch_grab(self, widget, touch): touch.grab(self) def on_touch_up(self, touch): if touch.grab_current is self: touch.ungrab(self) self.close_on_pos(touch.pos) return True def closebubble(self): if self.bubble: #self.get_root_window().remove_widget(self.bubble) root = App.get_running_app().root root.unbind_uid("on_touch_down", self.callbackid) root.clear_widgets([self.bubble]) self.bubble = None def on_parent(self, instance, value): self.closebubble() def call(self, button, funccall, data): def _call(instance): self.closebubble() if data: return funccall(data) else: return funccall() button.bind(on_press=_call) def close_on_pos(self, pos): bubble = self.bubble if bubble: if not bubble.collide_point(*pos) and not self.collide_point(*pos): self.closebubble()
def openbubble(self, buttonfunclist, data=None): if self.bubble: logging.error("Bubble already called") return self.bubble = Bubble(height=30, width=10, pos=self.to_window(self.x, self.y+30), size_hint=(None, None)) for text, func in buttonfunclist: button = BubbleButton(text=text, height=30) self.bubble.width += 10 + len(text)*10 self.call(button, func, data) self.bubble.add_widget(button) root = App.get_running_app().root #self.get_root_window().add_widget(self.bubble, root.canvas) root.add_widget(self.bubble) self.callbackid = root.fbind("on_touch_down", self.touch_grab)
def __init__(self,**kwargs): Bubble.__init__(self,**kwargs) self.room = kwargs['room_entry'] self.ship = kwargs['ship'] txt = 'Space: '+str(self.room['size'])+'\n' txt += 'Power: '+str(self.room['power'])+'\n' txt += 'Avail. Tokens:' #print txt self.ids['room_info'].text = txt self.selection = None self.populate_dropdown() self.refresh()
def _open(self, *args, **kwargs): try: self.remove_widget(self.bubble) self.percentage = self.slider.value del self.bubble, self.slider self.update_icons() except AttributeError: self.bubble = Bubble(orientation="vertical", size=(48, 200)) self.update_bubble_pos() self.bind(pos=self.update_bubble_pos) def on_perc(slider, value): slider.btn.percentage = value label = Label(text=self.label, size_hint_y=None, height=25) self.bubble.add_widget(label) self.slider = Slider(orientation="vertical", min=0, max=100, value=self.percentage) self.slider.btn = self self.slider.bind(value=on_perc) self.bubble.add_widget(self.slider) def on_reset(bbtn, *args, **kwargs): bbtn.slider.value = bbtn.reset_value bbtn = BubbleButton(text=self.reset_text, size_hint_y=None, height=40) bbtn.slider = self.slider bbtn.reset_value = self.reset_value bbtn.bind(on_release=on_reset) self.bubble.add_widget(bbtn) self.add_widget(self.bubble) self.icon = self.icons["close"]
def init(self): global cl cl = client.Client(False) cl.startClient() global layout, bubbles, printMessages, oldMessages, counter, labels counter = 0 oldMessages = [] printMessages = [] bubbles = [] labels = [] layout = BoxLayout(orientation='vertical') layout.size = (700, 600) layout.pos = (0, 30) layout.spacing = 5 for i in range(19): labels.append(Label()) bubbles.append(Bubble()) bubbles[i].add_widget(labels[i]) printMessages.append(('', 2)) for b in bubbles: layout.add_widget(b) self.add_widget(layout)
def add_new_marker(self, lat, lon, unit_name): print("add_new_marker") self.units_markers[unit_name] = MapMarkerPopup(lat=float(lat),lon=float(lon)) self.units_markers[unit_name].popup_size = ( 230, 130 ) buble = Bubble() box = BoxLayout(orientation="horizontal", padding="5px")#.add_widget(Label(text=unit_name)) box.add_widget(AsyncImage(source="http://cs618620.vk.me/v618620602/1a4b3/-A6cSynXWf0.jpg", mipmap=True)) box.add_widget(Label(text=unit_name, markup=True, halign="center")) buble.add_widget(box) self.units_markers[unit_name].add_widget(buble) self.mapview.add_marker( self.units_markers[unit_name] ) self.mapview.do_update(None)
def actualizarMarcadores( self ): #Muestro los marcadores con las ubicaciones actualizadas en el mapa ip_request = requests.get('https://get.geojs.io/v1/ip.json') my_ip = ip_request.json()['ip'] #con mi ip obtengo mi geolocalizacion geo_request = requests.get('https://get.geojs.io/v1/ip/geo/' + my_ip + '.json') geo_data = geo_request.json() self.longitudActual = float(geo_data['longitude']) self.latitudActual = float(geo_data['latitude']) self.ids.mapview.center_on( self.latitudActual, self.longitudActual) #mapa centrado en ubicacion actual self.ids.mapview.zoom = 5 mapmarkerpopupUbicacionActual = MapMarkerPopup(lat=self.latitudActual, lon=self.longitudActual, popup_size=(120, 70)) bubbleUbicacionActual = Bubble() labelUbicacionActual = Label(text="[b]Ubicaion actual![/b]", markup=True, halign="center") bubbleUbicacionActual.add_widget(labelUbicacionActual) mapmarkerpopupUbicacionActual.add_widget( bubbleUbicacionActual ) #creo un marcador con etique para saber la ubicacion actual, es de color rojo #self.ids.mapview.center_on(4.795100942698568, -75.6890602859938) #Me centra en la utp. if len(self.listaMarker) > 0: for marker in range(len(self.listaMarker)): self.ids.mapview.remove_widget(self.listaMarker[marker]) self.listaMarker = [ ] #La reseteo para poder meter los mapMarker de los vehiculos actualizados. #Se hace la consulta a la BD para obtener las lat y lon de los vehiculos-----------------------BD self.listaMarker.append(mapmarkerpopupUbicacionActual) for l in range(10): self.listaMarker.append( MapMarker(lat=random.randint(1, 5), lon=-75.7043800 + l / 2, color=(0, 1, 1, 1))) #acepta 1,0,1,1 o 0,0,0,1 o 0,1,1,1 for i in range(10): self.ids.mapview.add_widget(self.listaMarker[i])
def show_bubble(self, *args): my_bubble = Bubble(orientation="horizontal", pos=(280, 400)) my_bubble.background_color = (20, 0, 0, 0.5) my_bubble.border = [50, 50, 50, 10] my_bubble.arrow_pos = "top_left" my_bub_btn1 = BubbleButton(text="Copy", size_hint=(None, None), size=(80, 50), pos=(200, 400)) my_bub_btn2 = BubbleButton(text="Cut", size_hint=(None, None), size=(80, 50), pos=(300, 400)) my_bub_btn3 = BubbleButton(text="Paste", size_hint=(None, None), size=(80, 50), pos=(300, 400)) # Add items to bubble my_bubble.add_widget(my_bub_btn1) my_bubble.add_widget(my_bub_btn2) my_bubble.add_widget(my_bub_btn3) self.add_widget(my_bubble)
def on_state(self, widget, state): # super(SettingView, self).on_state(**kwargs) if self.state == 'down': bubbleHeight = 50 self.bubble = Bubble(size_hint=(None,None), size=(self.width, bubbleHeight), center_x=self.center_x, y=self.height-bubbleHeight) b1 = BubbleButton(text="-", font_size=40) b1.bind(on_press = self.decr) b2 = BubbleButton(text="+", font_size=40) b2.bind(on_press = self.incr) self.text_size = self.size self.text_size[1] -= 10 self.valign='bottom' self.bubble.add_widget(b1) self.bubble.add_widget(b2) self.add_widget(self.bubble) else: self.remove_widget(self.bubble) self.valign='center' self.dispatch('on_change', self.value)
def showBuuble(self, instance): #if bubble is already clicked if self.bubbleClicked: self.remove_widget(self.bubb) self.bubbleClicked = False #if bubble is not clicked else: self.bubb = Bubble(orientation='horizontal', arrow_pos='bottom_mid') l = playlistManager.getPlaylists() for playlist in l: self.bubb.add_widget( Button(text=playlist, on_press=partial(self.addToPlaylist, playlist, self.title, self.actualSongImage, self.id, self.bubb), size_hint=(.2, .2), size=(200, 200))) self.add_widget(self.bubb) self.bubbleClicked = True
def mark(position, mapview, marker, result=[]): LAT, LON = position if not result: # m = marker(lat = LAT, lon = LON, source = "Map-Marker-PNG-Pic_3_1.png") bubble = Bubble(orientation="horizontal", padding=5) text = "[b]Self[/b]" label = Label(text=text, markup=True, halign="center") bubble.add_widget(label) m = MapMarkerPopup(lat=LAT, lon=LON, popup_size=(100, 50), source="Map-Marker-PNG-Pic_3_1.png") m.add_widget(bubble) else: place_detail = get_place_details(result["place_id"]) photo = get_photo_html(result) phone = get_phone_number(place_detail) name = result["name"] rating = get_rating(result) # m = marker(lat = LAT, lon = LON) marker has been replaced by mapmarkerpopup bubble = Bubble(orientation="vertical", padding=5) if photo: image = AsyncImage(source=photo, mipmap=True) bubble.add_widget(image) if len(name) > 30: index1 = name.find(",") index2 = name.find(" ", int(len(name) / 2)) if index1 > 15: name = name[:index1] + "\n" + name[index1:] elif index2 > 20: name = name[:index2] + "\n" + name[index2:] text = "[b]" + name + "[/b]\n" + "Phone Number: " + phone + "\n" + "Rating: " + rating label = Label(text=text, markup=True, halign="center") bubble.add_widget(label) m = MapMarkerPopup(lat=LAT, lon=LON, popup_size=(250, 230)) m.add_widget(bubble) marker_list.append(m) mapview.add_marker(m)
def signal(self): my_bubble= Bubble(orientation = 'vertical',size_hint=(None, None),size=(600, 100),pos=(200,0)) my_bubble.background_color =(20, 0, 0, .5) my_bubble.border = [50, 50, 50, 10] my_bubble.size = (150, 50) my_bubble.arrow_pos= 'top_mid' my_bub_btn1= BubbleButton(text='Remove signal') #my_bub_btn1.bind(on_release=lambda my_bub_btn1: self.Update(1, my_bubble, my_bub_btn1)) my_bub_btn1.bind(on_release=lambda my_bub_btn1: self.RemoveBub(my_bubble)) my_bubble.add_widget(my_bub_btn1) self.add_widget(my_bubble)
def test_add_remove_content(self): bubble = Bubble() content = BubbleContent() bubble.add_widget(content) self.render(bubble) bubble.remove_widget(content) self.render(bubble)
def test_add_two_content_widgets_fails(self): from kivy.uix.bubble import BubbleException bubble = Bubble() content_1 = BubbleContent() content_2 = BubbleContent() bubble.add_widget(content_1) with self.assertRaises(BubbleException): bubble.add_widget(content_2)
def __init__(self, shp, name, indic, ids, **kwargs): #self.app = App.get_running_app() Widget.__init__(self, **kwargs) #super(Neighbourhood, self).__init__(**kwargs) self.shape = shp self.getshape() self.indic = indic.values self.name = name self.score = 0 self.bubb = Bubble() self.idso = ids with self.canvas: random = randint(0, 10) color = colors[random] cast = '#' + color Color(*get_color_from_hex(cast)) Mesh(fmt=self.vfmt, mode='triangle_fan', indices=self.indices, vertices=self.vertices) self.vrt = [] j = 0 #print("vertices ", len(self.vertices)) for i in range(int(len(self.vertices) / 4)): x = self.vertices[j] y = self.vertices[j + 1] self.vrt.append([x, y]) j = j + 4 Color(*get_color_from_hex("#FFFFFF")) Line(points=self.vrt, width=1)
def decoded(self, val): ''' if self.message.text != "Labels: ": self.message.text += ", " self.message.text += val ''' if val not in self.labels: self.labels.append(val) #obtener informacion del warehouse leido wh = Warehouses.Query.get(objectId=val) box = Bubble(size_hint_y=None, height=200) labelreceipt = LabelReceipt() labelreceipt.receipt.text = "Receipt#: " + str(wh.Receipt) labelreceipt.zone.text = "Zone: " + wh.Zone labelreceipt.volume.text = "Volume: " + wh.Volume labelreceipt.consignee.text = "[b]Consignee:[/b]\n" + wh.Consignee.Name labelreceipt.country.text = "Country: " + wh.Country labelreceipt.objectId.text = "ID: " + wh.objectId ''' labelreceipt.zone.text = wh.Zone ''' #box.add_widget(Label(text="ID:"+val)) box.add_widget(labelreceipt) if os.path.isfile("box.png"): print "BOX IMAGE FOUND" self.boxlabels.add_widget( box ) vibrator.vibrate(.2)
def show_bubble(self, bx, by): bubble = Bubble(size_hint=[None, None], size=[20, 20], pos=[bx, by]) bubble.add_widget( BubbleButton(text='WRONG', font_size='10sp', color=[0, 0, 0, 1], size=[6, 3])) bubble.background_color = (255, 0, 0, 1) bubble.arrow_pos = 'bottom_right' self.ids.bbox.add_widget(bubble) Clock.schedule_once(partial(self.remove_bubble, bubble), 1.5)
def create_bubble(self, instance, value): if not self.bubble_text: return if self.bubble_callback: self.funbind('mouse_hover', self.bubble_callback) text = self.bubble_text.strip() self.bubble = bubble = Bubble(size_hint=(None, None)) self.bubble_button = bubble_button = BubbleButton(markup=True, text=text) bubble_button.bind(texture_size=lambda obj, size: bubble.setter('size')(bubble, (size[0] + 30, size[1] + 30))) bubble.add_widget(bubble_button) self.bubble_callback = partial(self.show_bubble, self, bubble, self.arrow_pos) # self.bind(mouse_hover=self.bubble_callback) self.fbind('mouse_hover', self.bubble_callback)
def show_bubble(self, *args): my_bubble = Bubble(orientation='horizontal', pos=(280, 400)) # Customizing my bubble my_bubble.background_color = (0, 0, 0, .5) my_bubble.border = [50, 50, 50, 10] my_bubble.arrow_pos = 'top_left' my_bub_btn1 = BubbleButton(text='Copy', size_hint=(None, None), size=(80, 50), pos=(200, 400)) my_bub_btn2 = BubbleButton(text='Cut', size_hint=(None, None), size=(80, 50), pos=(300, 400)) my_bub_btn3 = BubbleButton(text='Paste', size_hint=(None, None), size=(80, 50), pos=(300, 400)) # Add items to bubble my_bubble.add_widget(my_bub_btn1) my_bubble.add_widget(my_bub_btn2) my_bubble.add_widget(my_bub_btn3) self.add_widget(my_bubble)
def build(self): MainAppWindow = AppBody(orientation='vertical') ToolBar = Bubble(size_hint=[1, .1]) MainAppWindow.add_widget(ToolBar) WorkArea = AnchorLayout() MainAppWindow.add_widget(WorkArea) self.Timer_icon = Timer_icon = HeaderLables(size_hint=[1 / 5, 1]) Timer_icon.img1.source = 'icons8-alarm-clock-96.png' Timer_icon.btn1.bind(on_release=self.GoTOTimer_widget) self.Stopclock_widget = Stopclock_widget = HeaderLables( size_hint=[1 / 5, 1]) Stopclock_widget.img1.source = 'icons8-sport-stopwatch-96.png' Stopclock_widget.btn1.bind(on_release=self.GoTOStopclock_widget) self.Alarm_widget = Alarm_widget = HeaderLables(size_hint=[1 / 5, 1]) Alarm_widget.img1.source = 'icons8-alarm-96.png' Alarm_widget.btn1.bind(on_release=self.GoTOAlarm_widget) self.Cust_widget = Cust_widget = HeaderLables(size_hint=[1 / 5, 1]) Cust_widget.img1.source = 'icons8-star-96.png' Cust_widget.btn1.bind(on_release=self.GoTOCust_widget) self.Settings_widget = Settings_widget = HeaderLables( size_hint=[1 / 5, 1]) Settings_widget.img1.source = 'icons8-settings-96.png' Settings_widget.btn1.bind(on_release=self.GoTOSettings_widget) ToolBar.add_widget(Timer_icon) ToolBar.add_widget(Stopclock_widget) ToolBar.add_widget(Alarm_widget) ToolBar.add_widget(Cust_widget) ToolBar.add_widget(Settings_widget) self.myTimer = Timer_widget() self.myStopClock = StopClockWidget() self.myAM = AM_SM() carousel = Carousel(direction='right') carousel.add_widget(self.myTimer) carousel.add_widget(self.myStopClock) carousel.add_widget(self.myAM) WorkArea.add_widget(carousel) return MainAppWindow
class SliderButton(ActionButton): percentage = NumericProperty(50) label = StringProperty("") type = OptionProperty("volume", options=["volume", "pitch", "speed"]) icons = { "volume": { "high": "atlas://data/images/defaulttheme/audio-volume-high", "medium": "atlas://data/images/defaulttheme/audio-volume-medium", "low": "atlas://data/images/defaulttheme/audio-volume-low", "none": "atlas://data/images/defaulttheme/audio-volume-muted" }, "speed": { "high": "atlas://data/images/defaulttheme/speed_fast", "medium": "atlas://data/images/defaulttheme/speed_normal", "low": "atlas://data/images/defaulttheme/speed_slow", "none": "atlas://data/images/defaulttheme/speed_slow" }, "pitch": { "high": "atlas://data/images/defaulttheme/pitch_high", "medium": "atlas://data/images/defaulttheme/pitch_medium", "low": "atlas://data/images/defaulttheme/pitch_low", "none": "atlas://data/images/defaulttheme/pitch_low" }, "close": "atlas://data/images/defaulttheme/cancel" } def __init__(self, **kwargs): super(SliderButton, self).__init__(**kwargs) App.get_running_app().bind(on_start=self.update_icons) self.bind(on_release=self._open) self.update_icons() def _open(self, *args, **kwargs): try: self.remove_widget(self.bubble) self.percentage = self.slider.value del self.bubble, self.slider self.update_icons() except AttributeError: self.bubble = Bubble(orientation="vertical", size=(48, 200)) self.update_bubble_pos() self.bind(pos=self.update_bubble_pos) def on_perc(slider, value): slider.btn.percentage = value label = Label(text=self.label, size_hint_y=None, height=25) self.bubble.add_widget(label) self.slider = Slider(orientation="vertical", min=0, max=100, value=self.percentage) self.slider.btn = self self.slider.bind(value=on_perc) self.bubble.add_widget(self.slider) def on_reset(bbtn, *args, **kwargs): bbtn.slider.value = bbtn.reset_value bbtn = BubbleButton(text=self.reset_text, size_hint_y=None, height=40) bbtn.slider = self.slider bbtn.reset_value = self.reset_value bbtn.bind(on_release=on_reset) self.bubble.add_widget(bbtn) self.add_widget(self.bubble) self.icon = self.icons["close"] def update_icons(self, *args, **kwargs): if self.type == "volume": self.reset_value = 0 self.reset_text = "Mute" else: self.reset_value = 50 self.reset_text = "Reset" if self.percentage == 0: self.icon = self.icons[self.type]["none"] elif self.percentage > 0 and self.percentage < 33: self.icon = self.icons[self.type]["low"] elif self.percentage >= 33 and self.percentage <= 66: self.icon = self.icons[self.type]["medium"] elif self.percentage > 66 and self.percentage <= 100: self.icon = self.icons[self.type]["high"] def update_bubble_pos(self, *args): self.bubble.pos = (self.pos[0], self.pos[1] + 48)
class SliderButton(ActionButton): percentage = NumericProperty(50) label = StringProperty("") type = OptionProperty("volume", options=["volume", "pitch", "speed"]) icons = {"volume": {"high": "atlas://data/images/defaulttheme/audio-volume-high", "medium": "atlas://data/images/defaulttheme/audio-volume-medium", "low": "atlas://data/images/defaulttheme/audio-volume-low", "none": "atlas://data/images/defaulttheme/audio-volume-muted"}, "speed": {"high": "atlas://data/images/defaulttheme/speed_fast", "medium": "atlas://data/images/defaulttheme/speed_normal", "low": "atlas://data/images/defaulttheme/speed_slow", "none": "atlas://data/images/defaulttheme/speed_slow"}, "pitch": {"high": "atlas://data/images/defaulttheme/pitch_high", "medium": "atlas://data/images/defaulttheme/pitch_medium", "low": "atlas://data/images/defaulttheme/pitch_low", "none": "atlas://data/images/defaulttheme/pitch_low"}, "close": "atlas://data/images/defaulttheme/cancel"} def __init__(self, **kwargs): super(SliderButton, self).__init__(**kwargs) App.get_running_app().bind(on_start=self.update_icons) self.bind(on_release=self._open) self.update_icons() def _open(self, *args, **kwargs): try: self.remove_widget(self.bubble) self.percentage = self.slider.value del self.bubble, self.slider self.update_icons() except AttributeError: self.bubble = Bubble(orientation="vertical", size=(48, 200)) self.update_bubble_pos() self.bind(pos=self.update_bubble_pos) def on_perc(slider, value): slider.btn.percentage = value label = Label(text=self.label, size_hint_y=None, height=25) self.bubble.add_widget(label) self.slider = Slider(orientation="vertical", min=0, max=100, value=self.percentage) self.slider.btn = self self.slider.bind(value=on_perc) self.bubble.add_widget(self.slider) def on_reset(bbtn, *args, **kwargs): bbtn.slider.value = bbtn.reset_value bbtn = BubbleButton(text=self.reset_text, size_hint_y=None, height=40) bbtn.slider = self.slider bbtn.reset_value = self.reset_value bbtn.bind(on_release=on_reset) self.bubble.add_widget(bbtn) self.add_widget(self.bubble) self.icon = self.icons["close"] def update_icons(self, *args, **kwargs): if self.type == "volume": self.reset_value = 0 self.reset_text = "Mute" else: self.reset_value = 50 self.reset_text = "Reset" if self.percentage == 0: self.icon = self.icons[self.type]["none"] elif self.percentage > 0 and self.percentage < 33: self.icon = self.icons[self.type]["low"] elif self.percentage >= 33 and self.percentage <= 66: self.icon = self.icons[self.type]["medium"] elif self.percentage > 66 and self.percentage <= 100: self.icon = self.icons[self.type]["high"] def update_bubble_pos(self, *args): self.bubble.pos = (self.pos[0], self.pos[1] + 48)
def test_add_arbitrary_content(self): from kivy.uix.gridlayout import GridLayout bubble = Bubble() content = GridLayout() bubble.add_widget(content) self.render(bubble)
def test_no_content(self): bubble = Bubble() self.render(bubble)