''' SVPlayer player backend objects (c) 2011-2012 Jan ONDREJ (SAL) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. ''' import time, os from sgtk import * ### Base (empty) player class ### def no_action(ret=None): def fx(*args, **kw): return ret return fx def Debug(cond=None): req = os.environ.get("SVPLAYER_DEBUG", "").split(",") if cond is not None: return cond in req return req class BasePlayerWidget(object): name = 'base' max_volume = 100 paused = True size = (400, 300) state = "Opening" audio_tracks = [] audio_track = 0 subtitle = 0 start_time = time.time() _language_priority = [] handle_events = True def __init__(self, *args, **kw): pass # ignore all arguments def get_state(self): return self.state def get_size(self): return self.size def was_ended(self): return self.state=="Ended" def play(self): pass def stop(self): pass def pause(self, state=None): if state is None: self.paused = not self.paused else: self.paused = state if self.paused: self.stop() self.state = "Paused" else: self.play() self.state = "Playing" def print_info(self): print "NO INFO!" def run_time(self): return time.time() - self.start_time def get_message(self): return None def language_priority(self, priority): self._language_priority = priority # empty functions to simulate no player destroy = no_action() show = no_action() stop = no_action() # functions without definition (do nothing) set_volume = no_action() get_volume = no_action(0) get_mute = no_action(False) set_mute = no_action() toggle_mute = no_action() set_track = no_action() set_deinterlace = no_action() get_crop = no_action(None) set_crop = no_action() get_aspect = no_action(None) set_aspect = no_action() add_subtitle = no_action() get_tracks = no_action([]) forward = no_action() seek = no_action() decode_errors = no_action(0) read_bytes = no_action(1) set_rate = no_action() # subtitle functions get_sub = no_action(0) sub_list = no_action([]) next_sub = no_action(False)