Esempio n. 1
0
class Columns(GridLayout):
    def __init__(self, text, **kwargs):
        super(Columns, self).__init__(size_hint_x=1, rows=2)
        self.current_block = 0
        self.carousel = Carousel(direction='right',
                                 size_hint_x=1,
                                 size_hint_y=1)
        self.carousel.bind(index=self.update_title)

        self.title_label = Label(font_name=FONT,
                                 markup=True,
                                 font_size=30,
                                 size_hint_y=0.1)

        self.update_content(text)

    def update_title(self, *kwargs):
        if len(kwargs) > 0:
            self.current_block = kwargs[1] or 0
        title = emphasize_part(self.word.string, idx=self.current_block)
        etymology_str = (' ({})'.format(
            emphasize_part(self.word.etymology, idx=self.current_block))
                         if self.word.etymology else '')
        title += etymology_str
        self.title_label.text = title

    def analyze(self, text):
        self.word = Word(text, compute_etymology=True)
        self.blocks = self.word.get_blocks_for_selected_meaning()

    def update_content(self, text):
        self.clear_widgets()
        self.carousel.clear_widgets()
        self.analyze(text)
        self.update_title()

        for block in self.blocks:
            words = DbUtil().get_words_with_block(block, exclude=self.word)
            self.carousel.add_widget(BlockColumn(block, words))

        self.add_widget(self.title_label)
        self.add_widget(self.carousel)
Esempio n. 2
0
class ViewSpellScreen(MyScreen):
    def __init__(self, **kwargs):
        super(ViewSpellScreen, self).__init__(**kwargs)

        self.carousel = Carousel()
        self.content_box.add_widget(self.carousel)

        self.bind(on_pre_enter= self.prepare_yourself)
    
    def prepare_yourself(self,i=0):
        self.carousel.clear_widgets()

        

        for spell in App.get_running_app().root.current_list:
            
            self.carousel.add_widget(spell['view_spell_card'])

        position = App.get_running_app().root.current_position

        self.carousel.index = position 
Esempio n. 3
0
class KivyAllComicsGui(Screen):
    def __init__(self, comicBooks, **kwargs):
        # make sure we aren't overriding any important functionality
        super(KivyAllComicsGui, self).__init__(**kwargs)
        self.carrusel = Carousel(direction='right')
        self.carrusel.orientation = 'vertical'
        self.carrusel.size_hint = (1, 1)
        self.listaComicBooks = comicBooks
        self.panel = GridLayout(cols=1)
        self.thumbnailWidth=160
        self.thumbnailHeight = 280
        print(Window.size)
        self.cantidadColumnas = int(Window.width/self.thumbnailWidth)
        self.cantidadFilas = int(Window.height/self.thumbnailHeight)
        print(self.cantidadColumnas)
        print(self.cantidadFilas)
        self.searchText = TextInput(text='Buscar comic', multiline=False)
        self.searchText.size_hint_y = None
        self.searchText.size[1] = 30

        panelBusqueda = GridLayout(cols=self.cantidadColumnas)
        panelBusqueda.add_widget(self.searchText)

        self.btn = Button(text = "buscar")

        self.btn.size_hint = (0.1, None)
        self.btn.size = (32, 32)
        # self.btn.background_normal = "Better Search.png"
        panelBusqueda.add_widget(self.btn)

        self.btn.bind(on_press=self.evntBtnBuscar)

        panelBusqueda.size_hint_y = None

        self.panel.add_widget(panelBusqueda)

        self.panel.add_widget(self.carrusel)
        self.add_widget(self.panel)
        self.__loadComicBooks__()
        self.indice = 0

    def __tbuscar__(self):
        t = Thread(self.buscar())
        t.start()

    def evntBtnBuscar(self,evnt):
        self.__tbuscar__()

    def buscar(self):
        comicBooks = KivyComicBooks()
        comicBooks.list(('%'+self.searchText.text+'%',), 'path like ?')
        self.listaComicBooks = comicBooks.listaConsulta
        self.indice=0
        self.__loadComicBooks__()

    def __updateCarrusell__(self,args):

        ##for comicBook in self.listaComicBooks:
        if (self.indice>=len(self.listaComicBooks)):
            Clock.unschedule(self.hiloCargaThumnails)
            return False
        comicBook = self.listaComicBooks[self.indice]
        if not (self.indice % (self.cantidadColumnas * self.cantidadFilas) == 0):
            # print("agregando a panel")
            # print(comicBook.path)
            self.panelx4.add_widget(KivySmallComicGui(comicBook))
        else:
            # print("creando panel y agregando a carusel")
            self.panelx4 = GridLayout(cols=self.cantidadColumnas)
            self.panelx4.add_widget(KivySmallComicGui(comicBook))
            self.carrusel.add_widget(self.panelx4)
        self.indice += 1

    def __loadComicBooks__(self):
        self.indice = 0
        self.carrusel.clear_widgets()
        self.panelx4 = GridLayout(cols=self.cantidadColumnas)
        self.hiloCargaThumnails =  Clock.schedule_interval(self.__updateCarrusell__, 0.1)
class Build_CloudWatch_Remote ( App ):

    Period_Buttons = []
    Period_End_Buttons = []

    Period_Value = 24
    Period_End_Value = 0

    def __init__(self, **kwargs):
        super(Build_CloudWatch_Remote, self).__init__(**kwargs)
        Window.bind(on_key_down=self.on_keyboard_down)

        # Window.size = (1280, 800)

        # Automatically size widget images to fit screen real estate
        horizontal_size, vertical_size = Window.size
        # print ("h:", horizontal_size, "v:", vertical_size)
        for widget_descriptor in widget_descriptor_list:
            widget_descriptor["width"] = horizontal_size
            if (cw_remote_duplex_layout):
                widget_descriptor["height"] = int(round(vertical_size * 0.475))
            else:
                widget_descriptor["height"] = int(round(vertical_size * 2 * 0.475))

    def build(self):
        Get_CloudWatch_Graphs()

        self.CloudWatch_Remote = BoxLayout(orientation='vertical')

        self.Control_Bar = BoxLayout(orientation='horizontal', size_hint=(1, 0.05))

        # self.Begin_Time_Slider = \
        #     Slider_Extended(min=-24, max=-1, value=-24, step=1, size_hint=(0.40, 1))
        # self.Begin_Time_Slider.bind(value=self.on_begin_time_value_change)
        # self.Begin_Time_Slider.bind(on_release=self.update)

        # self.Begin_Time_Label = \
        #     Label(text=(str(int(round(self.Begin_Time_Slider.value))) + "H"),
        #           size_hint=(0.05, 1))
        self.Period_Label = Label(text=(str(self.Period_Value) + "H"), size_hint=(0.05, 1))

        # self.Control_Bar.add_widget(self.Begin_Time_Label)
        self.Control_Bar.add_widget(self.Period_Label)
        # self.Control_Bar.add_widget(self.Begin_Time_Slider)
        for button_idx, button_value in enumerate([120, 96, 72, 48, 24, 20, 16, 12, 8, 6, 5, 4, 3, 2, 1]):
            period_button = Button(text=str(button_value))
            period_button.font_size = 14
            period_button.size_hint = (0.0375, 1)
            period_button.bind(on_press=partial(self.on_set_period, button_idx, button_value))
            self.Period_Buttons.append(period_button)
            self.Control_Bar.add_widget(period_button)
        
        button_refresh = Button(text="Refresh", size_hint=(0.075, 1))
        button_refresh.font_size = 14
        button_refresh.bind(on_press=self.update)
        self.Control_Bar.add_widget(button_refresh)

        for button_idx, button_value in enumerate([-72, -48, -36, -24, -12, -10, -8, -6, -5, -4, -3, -2, -1, 0]): # -96,
            end_button = Button(text=str(button_value))
            end_button.font_size = 14
            end_button.size_hint = (0.0375, 1)
            end_button.bind(on_press=partial(self.on_set_period_end, button_idx, button_value))
            self.Period_End_Buttons.append(end_button)
            self.Control_Bar.add_widget(end_button)

        # self.End_Time_Slider = \
        #     Slider_Extended(min=-23, max=0, value=0, step=1, size_hint=(0.40, 1))
        # self.End_Time_Slider.bind(value=self.on_end_time_value_change)
        # self.End_Time_Slider.bind(on_release=self.update)

        # self.End_Time_Label = \
        #     Label(text=(str(int(round(self.End_Time_Slider.value))) + "H"),
        #           size_hint=(0.05, 1))
        self.Period_End_Label = Label(text=(str(self.Period_End_Value) + "H"), size_hint=(0.05, 1))

        # self.Control_Bar.add_widget(self.End_Time_Slider)
        # self.Control_Bar.add_widget(self.End_Time_Label)
        self.Control_Bar.add_widget(self.Period_End_Label)

        if (cw_remote_duplex_layout):
            self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475))
            self.Lower_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, 0.475))
        
            self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture))
            self.Lower_Widget_Box.add_widget(Image(texture=ci_widget_image_list[1].texture))

            self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box) 
            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Lower_Widget_Box)
        elif (len(widget_descriptor_list) > 1):
            self.Carousel_Widget = Carousel(direction='bottom') 
            for ci_widget_image in ci_widget_image_list:
                self.Carousel_Widget.add_widget(Image(texture=ci_widget_image.texture))

            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Carousel_Widget) 
        else:
            self.Upper_Widget_Box = BoxLayout(orientation='vertical', size_hint=(1, (2 * 0.475)))
            self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture))

            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box)

        if (cw_remote_refresh_interval_seconds >= 1):
            Clock.schedule_interval(self.update, cw_remote_refresh_interval_seconds)

        return self.CloudWatch_Remote

    def on_set_period(self, button_index, button_value, *args):
        self.Period_Value = button_value
        self.Period_Label.text = str(self.Period_Value) + "H"
        self.update_period_start_end()

    def on_set_period_end(self, button_index, button_value, *args):
        self.Period_End_Value = button_value
        self.Period_End_Label.text = str(self.Period_End_Value) + "H"
        self.update_period_start_end()

    def update_period_start_end(self):
        for widget_descriptor in widget_descriptor_list:
            widget_descriptor["start"] = "-PT" + str(abs(self.Period_Value) + abs(self.Period_End_Value)) + "H"
            widget_descriptor["end"] = "-PT" + str(abs(self.Period_End_Value)) + "H"
        self.update()

    # def on_begin_time_value_change(self, instance, begin_value, *args):
    #     relative_start_time_value = int(round(begin_value))
    #     if (relative_start_time_value >= int(round(self.End_Time_Slider.value))):
    #         relative_start_time_value = int(round(self.End_Time_Slider.value)) - 1
    #         self.Begin_Time_Slider.value = relative_start_time_value
    #     for widget_descriptor in widget_descriptor_list:
    #         widget_descriptor["start"] = "-PT" + str(abs(relative_start_time_value)) + "H"
    #     self.Begin_Time_Label.text = str(relative_start_time_value) + "H"
    #
    # def on_end_time_value_change(self, instance, end_value, *args):
    #     relative_end_time_value = int(round(end_value))
    #     if (relative_end_time_value <= int(round(self.Begin_Time_Slider.value))):
    #         relative_end_time_value = int(round(self.Begin_Time_Slider.value)) + 1
    #         self.End_Time_Slider.value = relative_end_time_value
    #     for widget_descriptor in widget_descriptor_list:
    #         widget_descriptor["end"] = "-PT" + str(abs(relative_end_time_value)) + "H"
    #     self.End_Time_Label.text = str(relative_end_time_value) + "H"
        
    def update(self, *args):
        Get_CloudWatch_Graphs()

        if (cw_remote_duplex_layout):
            self.Upper_Widget_Box.clear_widgets()
            self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture))
            self.Lower_Widget_Box.clear_widgets()
            self.Lower_Widget_Box.add_widget(Image(texture=ci_widget_image_list[1].texture))
        elif (len(widget_descriptor_list) > 1):
            self.Carousel_Widget.clear_widgets()
            for ci_widget_image in ci_widget_image_list:
                self.Carousel_Widget.add_widget(Image(texture=ci_widget_image.texture))
        else:
            self.Upper_Widget_Box.clear_widgets()
            self.Upper_Widget_Box.add_widget(Image(texture=ci_widget_image_list[0].texture))
        
        self.CloudWatch_Remote.canvas.ask_update()

    def on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
        # print("\nThe key", keycode, "have been pressed")
        # print(" - text is %r" % text)
        # print(" - modifiers are %r" % modifiers)
        # Support keyboard control of carousel on OS-X
        if ((keycode == 81) or (keycode == 79)): self.Carousel_Widget.load_next()
        elif ((keycode == 82) or (keycode == 80)): self.Carousel_Widget.load_previous()
Esempio n. 5
0
class Build_CloudWatch_Remote(App):
    def __init__(self, **kwargs):
        super(Build_CloudWatch_Remote, self).__init__(**kwargs)
        Window.bind(on_key_down=self.on_keyboard_down)

        # Window.size = (1280, 800)

        # Automatically size widget images to fit screen real estate
        horizontal_size, vertical_size = Window.size
        # print ("h:", horizontal_size, "v:", vertical_size)
        for widget_descriptor in widget_descriptor_list:
            widget_descriptor["width"] = horizontal_size
            if (cw_remote_duplex_layout):
                widget_descriptor["height"] = int(round(vertical_size * 0.475))
            else:
                widget_descriptor["height"] = int(
                    round(vertical_size * 2 * 0.475))

    def build(self):
        Get_CloudWatch_Graphs()

        self.CloudWatch_Remote = BoxLayout(orientation='vertical')

        self.Control_Bar = BoxLayout(orientation='horizontal',
                                     size_hint=(1, 0.05))

        self.Begin_Time_Slider = \
            Slider_Extended(min=-24, max=-1, value=-24, step=1, size_hint=(0.40, 1))
        self.Begin_Time_Slider.bind(value=self.on_begin_time_value_change)
        self.Begin_Time_Slider.bind(on_release=self.update)

        self.Begin_Time_Label = \
            Label(text=(str(int(round(self.Begin_Time_Slider.value))) + "H"),
                  size_hint=(0.05, 1))

        self.Control_Bar.add_widget(self.Begin_Time_Label)
        self.Control_Bar.add_widget(self.Begin_Time_Slider)

        button_refresh = Button(text="Refresh", size_hint=(0.1, 1))
        button_refresh.bind(on_press=self.update)
        self.Control_Bar.add_widget(button_refresh)

        self.End_Time_Slider = \
            Slider_Extended(min=-23, max=0, value=0, step=1, size_hint=(0.40, 1))
        self.End_Time_Slider.bind(value=self.on_end_time_value_change)
        self.End_Time_Slider.bind(on_release=self.update)

        self.End_Time_Label = \
            Label(text=(str(int(round(self.End_Time_Slider.value))) + "H"),
                  size_hint=(0.05, 1))

        self.Control_Bar.add_widget(self.End_Time_Slider)
        self.Control_Bar.add_widget(self.End_Time_Label)

        if (cw_remote_duplex_layout):
            self.Upper_Widget_Box = BoxLayout(orientation='vertical',
                                              size_hint=(1, 0.475))
            self.Lower_Widget_Box = BoxLayout(orientation='vertical',
                                              size_hint=(1, 0.475))

            self.Upper_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[0].texture))
            self.Lower_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[1].texture))

            self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box)
            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Lower_Widget_Box)
        elif (len(widget_descriptor_list) > 1):
            self.Carousel_Widget = Carousel(direction='bottom')
            for ci_widget_image in ci_widget_image_list:
                self.Carousel_Widget.add_widget(
                    Image(texture=ci_widget_image.texture))

            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Carousel_Widget)
        else:
            self.Upper_Widget_Box = BoxLayout(orientation='vertical',
                                              size_hint=(1, (2 * 0.475)))
            self.Upper_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[0].texture))

            self.CloudWatch_Remote.add_widget(self.Control_Bar)
            self.CloudWatch_Remote.add_widget(self.Upper_Widget_Box)

        if (cw_remote_refresh_interval_seconds >= 1):
            Clock.schedule_interval(self.update,
                                    cw_remote_refresh_interval_seconds)

        return self.CloudWatch_Remote

    def on_begin_time_value_change(self, instance, begin_value, *args):
        relative_start_time_value = int(round(begin_value))
        if (relative_start_time_value >= int(round(
                self.End_Time_Slider.value))):
            relative_start_time_value = int(round(
                self.End_Time_Slider.value)) - 1
            self.Begin_Time_Slider.value = relative_start_time_value
        for widget_descriptor in widget_descriptor_list:
            widget_descriptor["start"] = "-PT" + str(
                abs(relative_start_time_value)) + "H"
        self.Begin_Time_Label.text = str(relative_start_time_value) + "H"

    def on_end_time_value_change(self, instance, end_value, *args):
        relative_end_time_value = int(round(end_value))
        if (relative_end_time_value <= int(round(
                self.Begin_Time_Slider.value))):
            relative_end_time_value = int(round(
                self.Begin_Time_Slider.value)) + 1
            self.End_Time_Slider.value = relative_end_time_value
        for widget_descriptor in widget_descriptor_list:
            widget_descriptor["end"] = "-PT" + str(
                abs(relative_end_time_value)) + "H"
        self.End_Time_Label.text = str(relative_end_time_value) + "H"

    def update(self, *args):
        Get_CloudWatch_Graphs()

        if (cw_remote_duplex_layout):
            self.Upper_Widget_Box.clear_widgets()
            self.Upper_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[0].texture))
            self.Lower_Widget_Box.clear_widgets()
            self.Lower_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[1].texture))
        elif (len(widget_descriptor_list) > 1):
            self.Carousel_Widget.clear_widgets()
            for ci_widget_image in ci_widget_image_list:
                self.Carousel_Widget.add_widget(
                    Image(texture=ci_widget_image.texture))
        else:
            self.Upper_Widget_Box.clear_widgets()
            self.Upper_Widget_Box.add_widget(
                Image(texture=ci_widget_image_list[0].texture))

        self.CloudWatch_Remote.canvas.ask_update()

    def on_keyboard_down(self, instance, keyboard, keycode, text, modifiers):
        # print("\nThe key", keycode, "have been pressed")
        # print(" - text is %r" % text)
        # print(" - modifiers are %r" % modifiers)
        # Support keyboard control of carousel on OS-X
        if ((keycode == 81) or (keycode == 79)):
            self.Carousel_Widget.load_next()
        elif ((keycode == 82) or (keycode == 80)):
            self.Carousel_Widget.load_previous()
Esempio n. 6
0
class gfsViewerApp(App):
	global values
	global regions

	#init App class
	def __init__(self, **kwargs):
		super(gfsViewerApp, self).__init__(**kwargs)
		
		self.carousel = Carousel(direction='right',anim_move_duration=0.1, anim_type='in_out_sine',loop='false')
		self.active_region = "M-Europa"
		self.active_value = "3h Niederschlag"
		self.last_df = 0
		self.image = []
		self.limit = 0
		self.pb = ""
		self.src = ""

		Loader.start()

	# Loader-complete callback (for some reason AsyncImage got stuck 
	# when fed with to many request at once, so images get loaded here 
	# on after the other..
	def _image_loaded(self, proxyImage):

		if proxyImage.image.texture:
				if len(self.image) > self.loadnum:
					self.image[self.loadnum].texture = proxyImage.image.texture
			
					if (self.loadnum < self.limit):
						self.loadnum = self.loadnum + 1
						self._load_next()				
					self.carousel.canvas.ask_update()
	
	# load next image			
	def _load_next(self,*largs):	
		
		if (self.loadnum < self.limit):
			
			# for some reason to many events where fired, so ignore
			# calls that don't have a unique timestamp
			
			if (len(largs) >0 ):
				if self.last_df == largs[0]:
					ignore = True
				else:
					ignore = False
					self.last_df = largs[0]
			else:
				ignore = False
				
			if not ignore:

				#gif images make trouble, conversion happens on server
				
				src = self.src  %  \
					( regions[self.active_region], ((self.loadnum +1) * self.steps), values.index(self.active_value) + 1)						
			
				proxyImage = Loader.image(src)	
				
				# we already have that image in cache
				if proxyImage.loaded:
					self.image.append(Image())
					self.image[self.loadnum].texture = proxyImage.image.texture
					self.carousel.add_widget(self.image[self.loadnum])
					self.loadnum = self.loadnum + 1
					self._load_next()
					
				# load image in background.						
				else:
					proxyImage.bind(on_load=self._image_loaded)
					self.image.append(Image())
					self.image[self.loadnum].texture = proxyImage.image.texture
					self.carousel.add_widget(self.image[self.loadnum])				
				
				#update widget..
				self.carousel.canvas.ask_update()

		# update progress bar
		self.pb.value =  (self.loadnum) / float(self.limit)  * 100
		self.ltext.text  = "total: + %dh" % ((self.loadnum) * self.steps)

        
	def _load_values(self,*largs):	
		
		if (len(largs) > 0 and self.last_df != 0):
			if self.last_df == largs[0]:
				ignore = True
			else:
				ignore = False
				self.last_df = largs[0]
		else:
			ignore = False

		# for some reason to many events where fired, so ignore
		# calls that don't have a unique timestamp
					
		if not ignore:		
			if self.active_region == "M-Europa":
				self.steps = 3
				self.limit = 60
				
			else:
				self.steps = 6
				self.limit = 30
				
			
			if self.active_region in ["M-Europa","Europa"]:
				self.src = "http://m.ash.to/gfsViewer/imgloader.php?file=R%s%02d%d.gif&type=.png"
			else:
				self.src = "http://www.wetterzentrale.de/pics/R%s%02d%d.png" 
				
			self.loadnum = 0	
			self.image = []
			self.last_df = 0
			self._load_next(*largs)
    
	def _clear_loader(self, *largs):
		Loader.stop()
		self.carousel.clear_widgets()
		self.loadnum = 0	
		self.image = []
		self.pb.value =  0
		self.ltext.text  = "total: "
				
		# now load 
		Clock.schedule_once(self._load_values,0.2)
	
	# new value selected callback	
	def _on_value_select(self,x):
		self.carousel.clear_widgets()
		Clock.schedule_once(self._clear_loader)
		setattr(self.value_button, 'text', x)		
		self.active_value = x
	
	# region select callback		
	def _on_region_select(self,x):
		setattr(self.region_button, 'text', x)
		self.active_region = x
		self._on_value_select(self.active_value)			

	# build layout and app
	def build(self):
		
		self.icon = 'data/icon-s.png'
		self.layout = BoxLayout(orientation='vertical')
		ab = ActionBar(size_hint=(1,0.08), height="48dp")
		av = ActionView()
		av.add_widget(ActionPrevious(title=appTitle,with_previous=False, app_icon=self.icon))
		ab.add_widget(av)
		
		self.layout.add_widget(ab)

		#region_dropdown = DropDown()
		# disable drop-down options for the moment. 
		# needs more work (also different value selectors)
		#for i in regions:
		#	btn = Button(text=i,  size_hint_y=None, height="48dp")
		#	btn.bind(on_release=lambda btn: region_dropdown.select(btn.text))
		#	region_dropdown.add_widget(btn)
		#	region_dropdown.bind(on_select=lambda instance, x: self._on_region_select(x))			
		self.region_button = Button(text=self.active_region, size_hint_y=None, height="48dp")
		#self.region_button.bind(on_release=region_dropdown.open)
		self.layout.add_widget(self.region_button)	
					
		value_dropdown = DropDown()
		
		for i in range(len(values)):
			btn = Button(text=values[i], size_hint_y=None, height="48dp")
			btn.bind(on_release=lambda btn: value_dropdown.select(btn.text))
			value_dropdown.add_widget(btn)
			value_dropdown.bind(on_select=lambda instance, x: self._on_value_select(x))	
		self.value_button = Button(text=self.active_value, size_hint_y=None, height="48dp")
		self.value_button.bind(on_release=value_dropdown.open)
		self.layout.add_widget(self.value_button)		
		
		self.layout.add_widget(self.carousel)
		
		self.pb = ProgressBar(max=100,value=50, size_hint=(1,0.08),height=48)
		self.layout.add_widget(self.pb)
		self.ltext = Label(text='', size_hint_y=None,height="12dp",font_size="10dp")
		self.layout.add_widget(self.ltext)	
		self._on_value_select(self.active_value)
			
		return self.layout
Esempio n. 7
0
class KivyVisor(ModalView):
    MODO_NORMAL = 1
    MODO_AJUSTADO_ALTURA = 2
    MODO_AJUSTADO_ANCHO = 3

    def __init__(self, comicBook, **kwargs):
        super(KivyVisor, self).__init__(**kwargs)
        self.modoVisualizacion = KivyVisor.MODO_NORMAL
        self.carrusel = Carousel()
        self.bind(on_touch_down=self.on_touch)
        self.comic = comicBook
        self.comic.openCbFile()
        self.matrizTransfPagina = None
        self.listaPaginas = []
        self.__loadComicBooks__()

        self.carrusel.bind(index=self.carruselSlide)
        self.add_widget(self.carrusel)

    def __updateCarrusell__(self, args):
        imagenPagina = self.comic.getImagePage()
        imagenPagina.size = imagenPagina.texture_size
        imagenPagina.size_hint = (None, None)
        imagenPagina.size_hint = (None, None)
        imagenPagina.keep_ratio = True
        scrollView = ScrollView()
        scrollView.add_widget(imagenPagina)
        self.carrusel.add_widget(scrollView)
        self.listaPaginas.append(imagenPagina)
        if not self.comic.gotoNextPage():
            Clock.unschedule(self.hiloCargaThumnails)
            return False

    def __loadComicBooks__(self):
        self.carrusel.clear_widgets()
        self.hiloCargaThumnails = Clock.schedule_interval(
            self.__updateCarrusell__, 1)

    def carruselSlide(self, args, args2):
        self.carrusel.current_slide.scroll_y = 1
        self.carrusel.next_slide.scroll_y = 1

        # if scatter.transform!=self.matrizTransfPagina:
        #     scatter.apply_transform(self.matrizTransfPagina)

    def on_transform_with_touch(self, touch, args):
        print(touch.scale)
        for slide in self.carrusel.slides:
            if slide != touch:
                slide.scale = touch.scale
                slide.pos = touch.pos
        #         slide.apply_transform(touch.transform)
        # self.matrizTransfPagina = touch.transform
    def on_sizeWindow(self, arg1, arg2, arg3):
        self.__refreshPage__()

    def on_motion(self, etype, motionevent, other):
        if other.is_mouse_scrolling:
            if other.button == 'scrolldown':
                self.scatter.y -= 10
            if other.button == 'scrollup':
                self.scatter.y += 10

        else:
            # print(self.scatter.pos)
            print("pos imagen :{}".format(self.imagenPagina.pos))
            print("tamaño scatter :{}".format(self.scatter.size))
        # help(other)
        # print(motionevent)
        # print(other)
        # print("Capturan scroll")

    def on_touch(self, obj, event):
        '''
        vamos a capturar eventos en estas zonas
        *************************
        *1*       *0*         *2*
        ***       ***         ***
        *                       *
        *                       *
        * *                   * *
        *3*                   *4*
        * *                   * *
        *                       *
        *                       *
        *                       *
        ***                   ***
        *5*                   *6*
        *************************
        :param widget:
        :param event:
        :return:
        '''
        #zona1 = ((0, Window.width * 0.1), (Window.height, (Window.height - Window.height * 0.1)))
        #zona2 = ((Window.width - Window.width * 0.1, Window.width), (Window.height, (Window.height - Window.height * 0.1)))
        zona0 = ((Window.width * 0.5 - Window.width * 0.1,
                  Window.width * 0.5 + Window.width * 0.1),
                 (Window.height - Window.height * 0.1, Window.height))
        zona3 = ((0, Window.width * 0.1),
                 (Window.height * 0.1 + Window.height * 0.5,
                  Window.height * -0.1 + Window.height * 0.5))
        zona4 = ((Window.width - Window.width * 0.1, Window.width),
                 (Window.height * 0.1 + Window.height * 0.5,
                  Window.height * -0.1 + Window.height * 0.5))

        if (zona0[0][0] < event.pos[0] and event.pos[0] < zona0[0][1]) and (
                zona0[1][0] < event.pos[1] and event.pos[1] < zona0[1][1]):
            box = GridLayout(cols=5)
            botonAncho = Button(text="Ancho")
            botonAncho.bind(on_press=self.ancho)
            box.add_widget(botonAncho)

            botonAjustarAlto = Button(text="Alto")
            botonAjustarAlto.bind(on_press=self.ajustarAlto)
            box.add_widget(botonAjustarAlto)

            botonCentrado = Button(text="normal")
            botonCentrado.bind(on_press=self.sinAjuste)
            box.add_widget(botonCentrado)

            botonRotar = Button(text="Rotar")
            botonRotar.bind(on_press=self.rotar)
            box.add_widget(botonRotar)

            p = Popup(title='Comic View popup',
                      size_hint=(None, None),
                      size=(400, 150))
            p.add_widget(box)

            p.open()

    def __refreshPage__(self):
        pass

    def ancho(self, event):
        self.modoVisualizacion = KivyVisor.MODO_AJUSTADO_ANCHO

        for imagen in self.listaPaginas:
            if imagen.image_ratio < 1:
                imagen.width = Window.width
                imagen.height = Window.width / (imagen.image_ratio)
            else:
                imagen.width = Window.width
                imagen.height = Window.width * (imagen.image_ratio)
        for scroll in self.carrusel.slides:
            self.carrusel.current_slide.scroll_y = 0.5

    def ajustarAlto(self, event):

        self.modoVisualizacion = KivyVisor.MODO_AJUSTADO_ALTURA
        for imagen in self.listaPaginas:
            if imagen.image_ratio < 1:
                imagen.width = Window.height / (imagen.image_ratio)
                imagen.height = Window.height
            else:
                imagen.width = Window.height * (imagen.image_ratio)
                imagen.height = Window.height
        for scroll in self.carrusel.slides:
            self.carrusel.current_slide.scroll_x = 0

    def rotar(self, event):
        print(self.carrusel.current_slide.size)
        print(self.listaPaginas[self.carrusel.index].pos)
        self.listaPaginas[self.carrusel.index].pos[0] += 1

    def sinAjuste(self, event):
        self.listaPaginas[self.carrusel.index].height = self.listaPaginas[
            self.carrusel.index].originalHeight
        self.listaPaginas[self.carrusel.index].width = self.listaPaginas[
            self.carrusel.index].originalWidth
Esempio n. 8
0
class KivyAllSeriesGui(Screen):
    BUSCAR_VINE = 1
    BUSCAR_LOCAL = 2

    def __init__(self, series, **kwargs):
        # make sure we aren't overriding any important functionality
        super(KivyAllSeriesGui, self).__init__(**kwargs)
        self.carrusel = Carousel(direction='right')
        self.carrusel.orientation = 'vertical'
        self.carrusel.size_hint = (1, 1)
        self.listaSeries = series
        self.panel = GridLayout(cols=1)
        self.thumbnailWidth = 160
        self.thumbnailHeight = 280
        print(Window.size)
        self.cantidadColumnas = int(Window.width / self.thumbnailWidth)
        self.cantidadFilas = int(Window.height / self.thumbnailHeight)
        print(self.cantidadColumnas)
        print(self.cantidadFilas)

        self.searchText = TextInput(text='', multiline=False)
        self.searchText.size_hint = (0.8, None)
        self.searchText.size = (0, 30)

        panelBusqueda = GridLayout(cols=4)
        panelBusqueda.add_widget(self.searchText)

        self.btnVine = Button(text="Vine", size_hint=(0.1, None), size=(0, 30))
        self.btnLocal = Button(text="Local",
                               size_hint=(0.1, None),
                               size=(0, 30))
        self.btnSalir = Button(text="Salir",
                               size_hint=(0.1, None),
                               size=(0, 30))
        panelBusqueda.add_widget(self.btnVine)
        panelBusqueda.add_widget(self.btnLocal)
        panelBusqueda.add_widget(self.btnSalir)

        self.btnVine.bind(on_press=self.evntBtnBuscarVine)
        self.btnLocal.bind(on_press=self.evntBtnBuscarLocal)
        self.btnLocal.bind(on_press=self.evntBtnBuscarSalir)

        panelBusqueda.size_hint_y = None

        self.panel.add_widget(panelBusqueda)

        self.panel.add_widget(self.carrusel)
        self.add_widget(self.panel)

        self.__loadSeries__()
        self.indice = 0

    def evntBtnBuscarSalir(self, evnt):
        pass

    def evntBtnBuscarVine(self, evnt):
        self.__tbuscar__(KivyAllSeriesGui.BUSCAR_VINE)

    def evntBtnBuscarLocal(self, evnt):
        self.__tbuscar__(KivyAllSeriesGui.BUSCAR_LOCAL)

    def __tbuscar__(self, dondeBuscar):
        t = Thread(self.buscar(dondeBuscar))
        t.start()

    def buscar(self, dondeBuscar):
        series = Series.Series()

        if dondeBuscar == KivyAllSeriesGui.BUSCAR_VINE:
            series.searchInComicVine(self.searchText.text)
            self.listaSeries = series.listaComicVineSearch
            self.indice = 0
        elif dondeBuscar == KivyAllSeriesGui.BUSCAR_LOCAL:
            self.listaSeries = series.getList(
                ("%" + self.searchText.text + "%", ), "name like ?")
            self.indice = 0
        self.__loadSeries__()

    def __loadSeries__(self):
        self.carrusel.clear_widgets()
        panelx4 = GridLayout(cols=self.cantidadColumnas)
        indice = 0
        for serie in self.listaSeries:
            if not (indice %
                    (self.cantidadColumnas * self.cantidadFilas) == 0):
                print("agregando a panel")
                print(serie.nombre)
                self.panelx4.add_widget(KivySmallSerieGui(serie))
            else:
                print("creando panel y agregando a carusel")
                self.panelx4 = GridLayout(cols=self.cantidadColumnas)
                self.panelx4.add_widget(KivySmallSerieGui(serie))
                self.carrusel.add_widget(self.panelx4)
            indice += 1