Example #1
0
 def on_enter(self):
     layout = self.ids.otherlayout
     floatEr = FloatLayout(size=(480,800))
     player = Music_Player()
     self.label = Label(text=str(self.slider_val))
     s = Slider(min=0, max=player.current_playing.length, value_track=True, value_track_color=[1, 0, 0, 1], sensitivity='handle', pos = (0, 300), size = (100, 30))
     s.step = .01
     btnp = Button(text='play', size=(96,72), pos = (0,72))
     btnpau = Button(text='pause', size=(96,72), pos = (96,72))
     btnb = Button(text='back', size=(96,72), pos = (192,72))
     btn2 = Button(text='go to list', size=(96,72), pos = (288,72))
     btnn = Button(text='next', size=(96,72), pos = (384,72))
     pb = ProgressBar(max=player.current_playing.length)
     pb.bind(value=lambda
         x:self.sliderProgress(player.current_playing.get_pos()))
     btn2.bind(on_press=self.changer)
     btnp.bind(on_press=lambda x:player.play())
     btnpau.bind(on_press=lambda x:player.pause())
     btnb.bind(on_press=lambda x:player.back())
     btnn.bind(on_press=lambda x:player.next())
     s.bind(value=self.sliderProgress)
     s.bind(on_touch_up=lambda x, y:player.playAtTime(self.sliderProgress))
     floatEr.add_widget(btn2)
     floatEr.add_widget(btnp)
     floatEr.add_widget(btnpau)
     floatEr.add_widget(btnn)
     floatEr.add_widget(btnb)
     floatEr.add_widget(s)
     floatEr.add_widget(pb)
     layout.add_widget(self.label)
     layout.add_widget(floatEr)
Example #2
0
class VideoPlayer(Widget):

    source = StringProperty('')
    hide_buttons_time_out = NumericProperty(7)
    play = BooleanProperty( False )
    options = DictProperty( {'eos':'loop'} )

    def __init__(self,**kwargs) :
            super(VideoPlayer,self).__init__(**kwargs)

            #new events
            self.register_event_type('on_mute')
            self.register_event_type('on_unmute')
            self.register_event_type('on_start')
            self.register_event_type('on_stop')
            self.register_event_type('on_fullscreen')
            self.register_event_type('on_leave_fullscreen')
            
            self.video = Video(source = self.source, play=self.play, options = self.options , size_hint = (1,1))
            #delay to load the video before launching it
            Clock.schedule_once(self.start,0.2)
            Clock.schedule_once(self.stop,2.4)             
            
            #buttons box
            self.buttons = BoxLayout(orientation = 'horizontal', size_hint = (None, None), size = (self.video.width, 30 ) )
            self.buttons.padding = 5 
            self.buttons.spacing = 5

            #play button
            self.play_button = SuperButton2(text ='', background_normal= 'video_player/style/1318898242_media-play.png', background_down= 'video_player/style/1318898242_media-play.png', size_hint = (None, None), size = (20, 20) )
            self.play_button.bind( on_press = self.start_stop_button )
            self.buttons.add_widget( self.play_button )
            #sound button
            self.sound_button = SuperButton2(text ='', background_normal = 'video_player/style/1318898261_media-volume-0.png', background_down = 'video_player/style/1318898261_media-volume-0.png', size_hint = (None, None), size = (20, 20) )
            self.sound_button.bind( on_press = self.mute_unmute_button )
            self.buttons.add_widget( self.sound_button )
            #fullscreen 
            self.fullscreen_button = SuperButton(text ='', background_normal = 'video_player/style/fullscreen-logo.png', background_down = 'video_player/style/fullscreen-logo.png', size_hint = (None, None), size = (20, 20) )
            self.fullscreen_button.bind(on_press = self.fullscreen_button_down )
            self.buttons.add_widget( self.fullscreen_button )
            #duration bar
            self.duration = -1
            self.progress_bar = ProgressBar( size_hint = (1, 1)  )
            self.progress_bar.bind(on_touch_move = self.move_to_position)
            self.buttons.add_widget( self.progress_bar )
            #manage appearance counter
            self.last_touch_down_time = 0
            #fullscreen status
            self.full_screen = False
            
            #main play button
            self.main_play_button = SuperButton(text ='', background_normal= 'video_player/style/A-play-T3.png', size_hint = (None, None), size = (50, 50) )
            self.main_play_button.bind( on_press = self.start )
            self.add_widget( self.main_play_button )
                      
            #refresh bar position and size
            Clock.schedule_interval(self.refresh_player,0.005)    

            self.add_widget(self.video)


    def start_stop_button(self,a) :
            #actually does start and stop (both functions on same button)
            m = self.video 
            if m.play == False :
                self.start(a)
            else :
                self.stop(a) 

    def start(self, a):
        self.video.play = True
        self.play_button.source = 'video_player/style/1318898221_media-stop.png'
        self.remove_widget( self.main_play_button )
        self.dispatch('on_start')

    def stop(self, a):
        self.video.play=False
        self.play_button.source = 'video_player/style/1318898242_media-play.png'
        self.add_widget( self.main_play_button )
        self.dispatch('on_stop')

    def mute_unmute_button(self,a):
        if self.video.volume == 1:
            self.mute(a)        
        else :     
            self.unmute(a)    

    def mute(self, a):
        self.video.volume = 0
        self.sound_button.source = 'video_player/style/1318898286_media-volume-3.png'
        self.dispatch('on_mute')    

    def unmute(self, a):
        self.video.volume = 1
        self.sound_button.source = 'video_player/style/1318898261_media-volume-0.png'
        self.dispatch('on_unmute')

    def fullscreen_button_down(self, a):
        if self.full_screen == False:
            self.fullscreen(1)
        else :
            self.leave_fullscreen(1)

    def fullscreen(self, a):
        self.full_screen = True
        self.dispatch('on_fullscreen')
    
    def leave_fullscreen(self,a):
        self.full_screen = False
        self.dispatch('on_leave_fullscreen')  

    def refresh_player(self, a):
        #progress bar
        if self.duration in [-1,1,0] :
            self.duration = self.video.duration
            self.progress_bar.max = int(self.duration)
        self.buttons.pos = self.pos
        self.buttons.width = self.width
        self.progress_bar.width = self.width
        self.video.pos = self.pos
        self.video.size = self.size
        self.progress_bar.value = self.video.position
        self.main_play_button.center = self.video.center 
        

    def move_to_position(self, a, touch):
        return
        x = touch.x
        x_hint = x / self.progress_bar.width
        self.video.play = False
        self.video.position = x_hint * self.duration
        self.video.play = True

    def on_touch_down(self, touch):
        super(VideoPlayer,self).on_touch_down(touch)
        self.last_touch_down_time = Clock.get_time()
        #display bar and buttons
        self.show_buttons()

    def hide_buttons(self,a):
        delta = Clock.get_time() - self.last_touch_down_time
        if delta >= (self.hide_buttons_time_out - 0.02) : 
            self.remove_widget(self.buttons)

    def show_buttons(self):
        self.remove_widget(self.buttons)
        self.add_widget(self.buttons)
        Clock.schedule_once(self.hide_buttons, self.hide_buttons_time_out)
    
    def on_mute(self):
        pass

    def on_unmute(self):
        pass

    def on_start(self):
        pass

    def on_stop(self):
        pass

    def on_fullscreen(self):
        pass

    def on_leave_fullscreen(self):
        pass