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)
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