]: i: 227(), 971() o: nname: 971 n 971(None)[except Exception, e: WebBrowser = None log.error('Web Browser loading error: %s', str(e)) ]: i: 935() o: 1020() nname: 935 n 935(None)[try: from pygui.menu.players.web_browser import WebBrowser log.debug('Web Browser loaded') ]: i: 853() o: 971() nname: 853 n 853(None)[try: from pygui.menu.players.channelscanner import ChannelScanner log.debug('Channel Scanner loaded') except Exception, e: ChannelScanner = None log.error('Channel Scanner loading error: %s', str(e)) ]: i: 778(try) o: 935() nname: 778
UIItem.__init__(self, *args, **kw) self.selected_style_string = xml_tag(self.style['selected_font_style'].replace('%', '%%'), '%s') self.not_selected_style_string = xml_tag(self.style['font_style'].replace('%', '%%'), '%s') def _get_images_paths(self, item): repository = self.style['repository'] root = path.join(repository, '%s' % item.type) suff = ('.', '_selected.') def check_concat(suf): _name = root + suf for ext in self.style['extension']: name = _name + ext if path.isfile(name): return name continue log.debug("%s don't exist" % name) return None return map(check_concat, suff) def reset(self, item, selected, position): UIItem.reset(self, item, selected) def _create(self): style = self.style icon_size = style['icon_size'] icon_size_sel = style['selected_icon_size'] item_size = style['item_size'] item_size_sel = style['selected_item_size'] text_offset = style['text_offset'] text_offset_sel = style['selected_text_offset']
# # 2012-04-13 # Initial Commit # # # Copyright 2010-2012, WyDev Team. # Author: Polo35 ([email protected]) # # Licenced under Academic Free License version 3.0 # Review WyGui README & LICENSE files for further details. from __future__ import absolute_import from peewee.debug import GET_LOGGER from wyvas import Container, Image, Text log = GET_LOGGER(__name__) try: from wyvas import __version__ from wyvas import Progressbar, TextBlock, set_theme_dir log.debug('wyvas widgets imported') from pygui.config import themes_dir set_theme_dir(themes_dir) except ImportError: log.debug('Cannot import widgets from wyvas') from pygui.gui.widget.progressbar import Progressbar from pygui.gui.widget.textblock import TextBlock log.debug('pygui widgets imported') from pygui.gui.widget.core.widgetfactory import WidgetLibrary
from struct import unpack, calcsize import struct import pygui.eventmanager.events as events from peewee.notifier import descriptor_watch from peewee.debug import GET_LOGGER, PRINT_EXCEPTION log = GET_LOGGER(__name__) class PluginInterface(.): __doc__ = '\n Input plugin for joystick device based on linux input event interface.\n Used for now for uwand rcu\n ' JS_EVENT_BUTTON = 1 JS_EVENT_AXIS = 2 JS_EVENT_INIT = 128 JS_EVENT = 'IhBB' JS_EVENT_SIZE = calcsize(JS_EVENT) def __init__(self, *args): threading.Thread.__init__(self) log.debug('Preparing joystick plugin...') self.setDaemon(True) self.setName('JoystickPlugin') self.dev = open('/dev/input/js0') self.pos = [0, 0] self.max_val = 32768 self.button = events.BUTTON0.post self.mouse = events.MOUSE.post self.start_pos = None descriptor_watch(self.dev.fileno(), self.handle) return None def _adapt_ratio(self, val): return int(100 + (val - self.max_val) * 0.00152587890625) def handle(self):
# Review WyGui README & LICENSE files for further details. from __future__ import absolute_import from pygui.gui.widget.core import factory from peewee.debug import GET_LOGGER, PRINT_EXCEPTION, DEBUG from peewee.formatters import boolean, boolean_to_int, int_tuple, int_tuple_list, string_tuple from peewee.messages import connect as louie_connect from wyvas import Container, Image, Object, Text log = GET_LOGGER(__name__) try: from wyvas import Browser except ImportError: log.debug('Cannot import Browser from wyvas') Browser = None try: from wyvas import Animage except ImportError: log.debug('Cannot import Animage from wyvas') Animage = None try: from wyvas import __version__ as wyvas_version if 'cython' not in wyvas_version: raise ImportError from wyvas import DepthBar, Clock, Programbar, ProgramRecordTimeShiftBar from wyvas import ProgramTimeShiftBar, Progressbar, TextBlock, Timebar, Viewer from wyvas import DefaultListing, FixedListing, HybridListing, Grid
nname: 0 n 0(None)[from __future__ import absolute_import from peewee.debug import GET_LOGGER from wyvas import Container, Image, Text log = GET_LOGGER(__name__) ]: i: o: 75(try), 162(except) nname: 162 n 162(None)[except ImportError: log.error('Cannot import widgets from wyvas') from .progressbar import Progressbar from .textblock import TextBlock log.debug('pygui widgets imported') from .core.widgetfactory import WidgetLibrary ]: i: 0() o: nname: 0 n 0(None)[from __future__ import absolute_import from peewee.debug import GET_LOGGER from wyvas import Container, Image, Text log = GET_LOGGER(__name__) try: from wyvas import __version__ from wyvas import Progressbar, TextBlock, set_theme_dir log.debug('wyvas widgets imported') from pygui.config import themes_dir
_file.close() except IOError: log.warning('%s does not exist, check your wybox_theme packages' % datapack) finally: pass 133 def add_widgets(self, _file, bibliotheque): root = ET.parse(_file) templates_object_node = root.find('/templates/objects/') templates_animation_node = root.find('/templates/animations/') widget_node_list = root.findall('/pages/page') wd = self.widgets_dict for node in widget_node_list: widget = merge_node(node, bibliotheque, templates_object_node, templates_animation_node) wd[node.get('id')] = widget log.debug('---> file %s new widget %s added', _file, node.get('id')) def get_container(self, pagename, key='main', menu=None): if WidgetLibrary.object_creator is None: from .objectfactory import ObjectCreator WidgetLibrary.object_creator = ObjectCreator() return WidgetLibrary.object_creator.create(WidgetLibrary.widgets_dict[pagename][key], menu) ]: i: o: self.nodes: {0: <unpyclib.structure.node instance at 0xb771236c>} from __future__ import absolute_import
join = os.path.join exists = os.path.exists psp_prefix = os.path.join(psp_path, 'video', 'M4V') while exists(psp_prefix + '%s.MP4' % index) or exists(psp_prefix + '%s.THM' % index): index -= 1 else: _POP_TOP pass return (psp_prefix + '%s.MP4' % index, psp_prefix + '%s.THM' % index) def _copy_ts(ts_file, psp_path): psp_mp4_file, psp_thm_file = _get_psp_filenames(psp_path) msg = MessageWindow(_('Copying to PSP (tm) please wait...'), button=None) msg.show() mp4_cmd = '/usr/bin/ts2psp "%s" "%s"' % (ts_file, psp_mp4_file) thm_cmd = 'cp "%s" "%s"' % (thm_src_file, psp_thm_file) log.debug(mp4_cmd) os.system(mp4_cmd) log.debug(thm_cmd) os.system(thm_cmd) os.system('sync') sleep(2) msg.hide() return None def _stop_transcode(stop_method, previous_resolution, player, output_file, psp_path): log.debug('transcode_stop()') stop_method() if change_resolution: Task(_set_resolution, previous_resolution).start(0.20000000000000001) Task(_copy_ts, output_file, psp_path).start(0) raise StopIteration()
TVPlayer = None DVDPlayer = None ChannelScanner = None ImageViewer = None WebBrowser = None else: try: from pygui.facilities.subtitles import SubServer subserver = SubServer() except: subserver = None log.warning("unable to instancy Subserver. Subtitles Won't be displayed !") pygui_globs['subserver'] = subserver # try: from pygui.menu.players.audio_player import AudioPlayer log.debug('Audio Player loaded') # except Exception, e: # AudioPlayer = None # log.error('Audio Player loading error: %s', str(e)) try: from pygui.menu.players.video_player import VideoPlayer log.debug('Video Player loaded') except Exception, e: VideoPlayer = None log.error('Video Player loading error: %s', str(e)) try: from wyrecord import WyRecord wr = WyRecord() wr.setMaximumTimeshiftDuration((user_config['tv']['timeshift_length'] * 60)) wr.setRecordPadding((user_config['tv']['epg_margin'] * 60))
self.field = 'protection' if item['hidden']: pass name = _('Unhide') ActionContainer.__init__(self, name=name, type_='action', menu=menu, **kw) self.radio = True def hide(self, key): self._update_checked(key) if self.item['hidden']: pass new_hide = '1' try: self.item['hidden'] = new_hide except: log.debug('Setting %s[hide] failed ', self.item) PRINT_EXCEPTION() self.menu._set_options_list(keep_selection=True) class ParentalRatingActionItem(ActionContainer): __doc__ = ' Handle parental rating on Item ' def __init__(self, item, menu, name, **kw): self.item = item if not self.item['maturity_rating']: pass rate = self.item['maturity_rating'] self.title = name self.field = 'parental_rating' self.actions_dict = {'0': {'handler': self.rate, 'caption': _('No rating'), 'checked': rate == 0, 'args': ('0',), 'kwargs': {}, 'pos': 0}, '10': {'handler': self.rate, 'caption': _('-10 years'), 'checked': rate == 10, 'args': ('10',), 'kwargs': {}, 'pos': 1}, '12': {'handler': self.rate, 'caption': _('10 - 12 years'), 'checked': rate == 12, 'args': ('12',), 'kwargs': {}, 'pos': 2}, '16': {'handler': self.rate, 'caption': _('12 - 16 years'), 'checked': rate == 16, 'args': ('16',), 'kwargs': {}, 'pos': 3}, '18': {'handler': self.rate, 'caption': _('16 - 18 years'), 'checked': rate == 18, 'args': ('18',), 'kwargs': {}, 'pos': 4}, '99': {'handler': self.rate, 'caption': _('Hidden'), 'checked': rate == 99, 'args': ('99',), 'kwargs': {}, 'pos': 5}}
'banner_period': 5, 'record_banner_period': 5, 'record_duration_step': 1800, 'records_duration': [180], 'max_record_duration': 360, 'epg_margins': [0, 5, 10], 'timeshift_length': [30, 60, 120, 180], 'record_time': 7200, 'zap_time': 1.0, 'invert_y_axis': 0 } HMI_VIDEO['forward'] = [2, 8, 25, 100, 300] HMI_VIDEO['backward'] = [-2, -8, -25, -100, -300] log.debug('HMI dicts created') restore_previous_config = True default_conf = { 'config_version': 18, 'connections': { 'resolution': '1280:720:0:50', 'active_device': 'hdmi', 'composite_output': 'pal', 'component_output': 'rgb', 'hdmi_sound': False, 'auto_frame_rate': False, 'spdif_surround': False, 'scart1_io_mode': 'out', 'scart1_in_mode': 'composite',
__doc__ = "Event dispatcher. This is the base class for all event managers.\n\n Handlers should implement event_<event name> methods.\n The only parameter to an event_* method is the event itself,\n other objects should be passed to L{__init__} and stored.\n\n If the event_* method, specific to an event type, can't be found,\n L{event_DEFAULT} is called instead.\n\n If an event_* method returns True or None, the event is consumed and\n its processing is halted.\n\n If it returns False, the event will also be processed by handlers\n below in the stack.\n\n returning None is a bad idea ! returns True instead\n " led = WyLed() power_mgr = None _disable_next_input = False def __init__(self, player): self.player = player def __call__(self, event): if EventDispatcher._disable_next_input: EventDispatcher._disable_next_input = False return True event_short_name = str(event).lower() callback_name = 'event_' + event_short_name if not self.player.hold: try: log.debug(('[ %s received ]' % callback_name).center(60, '#')) callback = getattr(self, callback_name) except AttributeError: log.debug('event not catched by %s, calling default event.' % self.__class__.__name__) callback = self.event_DEFAULT EventDispatcher.led.on() ret = callback(event) EventDispatcher.led.off() return ret else: log.debug("Can't perform event %s : %r is held" % (callback_name, self.player)) return True def event_DEFAULT(self, event): log.debug('Unknown Event: "%s"', str(event)) return False
nname: 0 n 0(__name__ == '__main__')[from __future__ import absolute_import import struct from time import sleep, time from peewee.debug import GET_LOGGER, PRINT_EXCEPTION from peewee.notifier import descriptor_watch log = GET_LOGGER(__name__) class RcuPad(): __doc__ = '\n A facility module to handle /dev/ir0 (sRCU)\n Warn: It does not use the standard linux input event interface, but it works !\n sRCU has 2 modes, only the first (sensitive) is used for now.\n (The second mode need antenna to detect moves around the sRCU).\n Run this script alone to test sRCU.\n ' format = 'BBBBBBBBBB' nb_buttons = 5 def __init__(self, size=(100, 100), dev='/dev/ir0'): log.debug('creating RcuPad !') self.f = open(dev) self.packetSize = struct.calcsize(self.format) log.debug('packetSize = %s', self.packetSize) self.mode = 0 self.left = 0 self.right = 0 self.x = size[0] self.y = size[1] self.dx = self.x / 2 self.dy = self.y / 2 def __str__(self): ret = 'x:%d, y:%d b: ' % (self.dx, self.dy) for b in self.buttons: ret += '%s ' % b['press'] return ret def clean_up(self):
self._callbacks = [] self._stopped = False self._kwargs = self._cast_att(kwargs) for subnode in node: self._callbacks.append(Anim(subnode)) return None def __repr__(self): return '<%s:%s::%s(%s)>' % (self.__class__.__name__, self.object, self.type, self._kwargs) def play(self, object=None): self._stopped = False self.object = object if self._callbacks: self._kwargs['end_callback'] = self.end_callback log.debug('ANIM %s %d : %s --> %s', object.name, id(object), self.type, self._kwargs) getattr(object, 'animate')(self.type, **self._kwargs) def end_callback(self): log.info('running end callback (should be thread-safe, I hope :P)') if not self._stopped: for anim in self._callbacks: anim.play(self.object) def stop(self): self._stopped = True class PerpetualAnim(Anim): def __init__(self, node):
# This url give the real video url. (Http or Rtmp) req = urllib2.Request(url4videoPath) req.add_header('User-Agent', USERAGENT) url = urllib2.urlopen(req) real_url = url.read() url.close() # Http url if real_url.startswith('http://wak.wat.tv'): break # Rtmp url elif real_url.startswith('rtmpe,'): def sub_rtmp(attr): return attr.group('url') + ":443" + attr.group('app') + attr.group('playpath') real_url = re.sub(r'(?P<url>.*.tv)(?P<app>.*.)(?P<playpath>.mp4:*.*)(?P<end>.bu=*.*)', sub_rtmp, real_url[6:]) break log.debug("Not a wak.wat.tv url. Retrying") else: real_url = '' retlist.append(dict(title=self.decode_title(videoInfos['media']['chapters'][chapter].get('title')), thumbnail=videoInfos['media']['chapters'][chapter].get('preview'), uri=real_url)) except Exception, e: PRINT_EXCEPTION(e) return retlist if ( __name__ == "__main__" ): import sys TF1Replay_Client = TF1ReplayBrowser() if (len(sys.argv) > 1): category = dict() if sys.argv[1].isdigit():