def __init__(self): logger.log(9, 'encoding.PluginInterface.__init__(self)') plugin.DaemonPlugin.__init__(self) #IdleBarPlugin.__init__(self) self.poll_interval = 1 self.draw_interval = self.poll_interval self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.plugin_name = 'video.encodingstatus' self.server = EncodingClientActions() self.skin = skin.get_singleton() self.barimg = os.path.join(config.ICON_DIR, 'status/encoding_bar.png') self.boximg = os.path.join(config.ICON_DIR, 'status/encoding_box.png') self.boxborder = 3 self.padding = 5 # internal padding for box vs text self.image = None self.cacheimg = {} self.muted = False self.encoding = -1 self.progress = 0 self.jobname = '' self.calculate = True self.jobs = '' self.mode = 'Not Running' self.text = [] self.percent = 0.0 self.running = False self.drawtime = 0 self.polltime = 0 self.state = 'noserver' self.laststate = None self.font = self.skin.get_font(config.ENCODING_IDLEBAR_FONT)
def __init__(self): logger.log( 9, 'encoding.PluginInterface.__init__(self)') plugin.DaemonPlugin.__init__(self) #IdleBarPlugin.__init__(self) self.poll_interval = 1 self.draw_interval = self.poll_interval self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.plugin_name = 'video.encodingstatus' self.server = EncodingClientActions() self.skin = skin.get_singleton() self.barimg = os.path.join(config.ICON_DIR, 'status/encoding_bar.png') self.boximg = os.path.join(config.ICON_DIR, 'status/encoding_box.png') self.boxborder = 3 self.padding = 5 # internal padding for box vs text self.image = None self.cacheimg = {} self.muted = False self.encoding = -1 self.progress = 0 self.jobname = '' self.calculate = True self.jobs = '' self.mode = 'Not Running' self.text = [] self.percent = 0.0 self.running = False self.drawtime = 0 self.polltime = 0 self.state = 'noserver' self.laststate = None self.font = self.skin.get_font(config.ENCODING_IDLEBAR_FONT)
def __init__(self, left=0, top=0, width=0, height=0, bg_color=None, fg_color=None): self.left = left or 0 self.top = top or 0 self.width = width or 0 self.height = height or 0 try: self.rect = Rect(self.left, self.top, self.width, self.height) except TypeError: logger.debug('Invalid Rect: left=%r, top=%r, width=%r, height=%r', left, top, width, height) self.osd = osd.get_singleton() self.label = None self.icon = None self.surface = None self.bg_surface = None self.bg_image = None self.parent = None self.children = [] self.enabled = 1 self.visible = 1 self.selected = 0 self.rect = pygame.Rect(0, 0, 0, 0) self.refresh_abs_position() self.rect.width = self.width self.rect.height = self.height self.bg_color = bg_color self.fg_color = fg_color self.event_context = None style = skin.get_singleton().get_popupbox_style(self) self.content_layout, self.background_layout = style self.skin_info_widget = self.content_layout.types['widget'] self.skin_info_font = self.skin_info_widget.font self.h_margin = self.content_layout.spacing self.v_margin = self.content_layout.spacing ci = self.content_layout.types['widget'].rectangle self.bg_color = self.bg_color or Color(ci.bgcolor) self.fg_color = self.fg_color or Color(ci.color) self.set_v_align(Align.NONE) self.set_h_align(Align.NONE)
def __init__(self): """ Initialise the transcode idlebar plug-in """ _debug_('transcode.PluginInterface.__init__()', 2) IdleBarPlugin.__init__(self) self.plugin_name = 'idlebar.transcode' self.background = os.path.join(config.ICON_DIR, 'status/enc_background.png') self.leftclamp = os.path.join(config.ICON_DIR, 'status/enc_leftclamp.png') self.rightclamp = os.path.join(config.ICON_DIR, 'status/enc_rightclamp.png') self.notrunning = os.path.join(config.ICON_DIR, 'status/enc_notrunning.png') self.nojobs = os.path.join(config.ICON_DIR, 'status/enc_nojobs.png') self.audio = os.path.join(config.ICON_DIR, 'status/enc_audio.png') self.video = os.path.join(config.ICON_DIR, 'status/enc_video.png') self.video1 = os.path.join(config.ICON_DIR, 'status/enc_video1.png') self.video2 = os.path.join(config.ICON_DIR, 'status/enc_video2.png') self.video3 = os.path.join(config.ICON_DIR, 'status/enc_video3.png') self.multiplex = os.path.join(config.ICON_DIR, 'status/enc_multiplex.png') self.cacheimg = {} self.background_w, self.background_h = (0, 0) self.leftclamp_w, self.leftclamp_h = (0, 0) self.rightclamp_w, self.rightclamp_h = (0, 0) self.remaining_min = re.compile('[0-9]*') self.remaining = '' self.progress = 0 self.progress_x = None self.leftclamp_x = 0 self.rightclamp_x = 0 self.poll_interval = 82 # 82*1/120th seconds (~1sec) self.draw_interval = self.poll_interval self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.drawtime = 0 server_string = 'http://%s:%s/' % (config.ENCODINGSERVER_IP, config.ENCODINGSERVER_PORT) self.server = xmlrpclib.Server(server_string, allow_none=1) self.skin = skin.get_singleton() self.calculate = True self.jobs = '' self.mode = 'Not Running' self.state = 'noserver' self.laststate = None self.percent = 0.0 self.running = False self.font = self.skin.get_font('small0') if self.font == skin.get_font('default'): self.font = skin.get_font('info value') _debug_('transcode.PluginInterface.__init__() done.')
def poll(self): """ clear the osd after 2 seconds """ if self.message: self.message = '' if not rc.app() or not skin.get_singleton().force_redraw: skin.redraw() elif hasattr(rc.app(), 'im_self') and hasattr(rc.app().im_self, 'redraw'): rc.app().im_self.redraw()
def poll(self): """ clear the osd after 2 seconds """ if self.message: self.message = '' if not rc.app() or not skin.get_singleton().force_redraw: skin.redraw() elif hasattr(rc.app(), 'im_self') and hasattr( rc.app().im_self, 'redraw'): rc.app().im_self.redraw()
def __init__(self): """ Initialise the transcode idlebar plug-in """ logger.log(9, 'transcode.PluginInterface.__init__()') IdleBarPlugin.__init__(self) self.plugin_name = 'idlebar.transcode' self.background = os.path.join(config.ICON_DIR, 'status/enc_background.png') self.leftclamp = os.path.join(config.ICON_DIR, 'status/enc_leftclamp.png') self.rightclamp = os.path.join(config.ICON_DIR, 'status/enc_rightclamp.png') self.notrunning = os.path.join(config.ICON_DIR, 'status/enc_notrunning.png') self.nojobs = os.path.join(config.ICON_DIR, 'status/enc_nojobs.png') self.audio = os.path.join(config.ICON_DIR, 'status/enc_audio.png') self.video = os.path.join(config.ICON_DIR, 'status/enc_video.png') self.video1 = os.path.join(config.ICON_DIR, 'status/enc_video1.png') self.video2 = os.path.join(config.ICON_DIR, 'status/enc_video2.png') self.video3 = os.path.join(config.ICON_DIR, 'status/enc_video3.png') self.multiplex = os.path.join(config.ICON_DIR, 'status/enc_multiplex.png') self.cacheimg = {} self.background_w, self.background_h = (0, 0) self.leftclamp_w, self.leftclamp_h = (0, 0) self.rightclamp_w, self.rightclamp_h = (0, 0) self.remaining_min = re.compile('[0-9]*') self.remaining = '' self.progress = 0 self.progress_x = None self.leftclamp_x = 0 self.rightclamp_x = 0 self.poll_interval = 1 # 1 sec should be same as most frequent self.draw_interval = 5.0 # 5 secs self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.drawtime = 0 self.server = EncodingClientActions() self.skin = skin.get_singleton() self.calculate = True self.jobs = '' self.mode = 'Not Running' self.state = 'noserver' self.laststate = None self.percent = 0.0 self.running = False self.font = self.skin.get_font(config.OSD_IDLEBAR_FONT) self.timer = kaa.Timer(self._timerhandler) self.timer.start(self.poll_interval) logger.debug('transcode.PluginInterface.__init__() done.')
def eventhandler(self, event, menuw=None): """ catch OSD_MESSAGE and display it, return False, maybe someone else is watching for the event. """ if event == OSD_MESSAGE: self.poll_counter = 1 self.message = event.arg if not rc.app() or not skin.get_singleton().force_redraw: skin.redraw() elif hasattr(rc.app(), 'im_self') and hasattr(rc.app().im_self, 'redraw'): rc.app().im_self.redraw() return False
def eventhandler(self, event, menuw=None): """ catch OSD_MESSAGE and display it, return False, maybe someone else is watching for the event. """ if event == OSD_MESSAGE: self.poll_counter = 1 self.message = event.arg if not rc.app() or not skin.get_singleton().force_redraw: skin.redraw() elif hasattr(rc.app(), 'im_self') and hasattr( rc.app().im_self, 'redraw'): rc.app().im_self.redraw() return False
def __init__(self): """ Initialise the transcode idlebar plug-in """ logger.log( 9, 'transcode.PluginInterface.__init__()') IdleBarPlugin.__init__(self) self.plugin_name = 'idlebar.transcode' self.background = os.path.join(config.ICON_DIR, 'status/enc_background.png') self.leftclamp = os.path.join(config.ICON_DIR, 'status/enc_leftclamp.png') self.rightclamp = os.path.join(config.ICON_DIR, 'status/enc_rightclamp.png') self.notrunning = os.path.join(config.ICON_DIR, 'status/enc_notrunning.png') self.nojobs = os.path.join(config.ICON_DIR, 'status/enc_nojobs.png') self.audio = os.path.join(config.ICON_DIR, 'status/enc_audio.png') self.video = os.path.join(config.ICON_DIR, 'status/enc_video.png') self.video1 = os.path.join(config.ICON_DIR, 'status/enc_video1.png') self.video2 = os.path.join(config.ICON_DIR, 'status/enc_video2.png') self.video3 = os.path.join(config.ICON_DIR, 'status/enc_video3.png') self.multiplex = os.path.join(config.ICON_DIR, 'status/enc_multiplex.png') self.cacheimg = {} self.background_w, self.background_h = (0, 0) self.leftclamp_w, self.leftclamp_h = (0, 0) self.rightclamp_w, self.rightclamp_h = (0, 0) self.remaining_min = re.compile('[0-9]*') self.remaining = '' self.progress = 0 self.progress_x = None self.leftclamp_x = 0 self.rightclamp_x = 0 self.poll_interval = 1 # 1 sec should be same as most frequent self.draw_interval = 5.0 # 5 secs self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.drawtime = 0 self.server = EncodingClientActions() self.skin = skin.get_singleton() self.calculate = True self.jobs = '' self.mode = 'Not Running' self.state = 'noserver' self.laststate = None self.percent = 0.0 self.running = False self.font = self.skin.get_font(config.OSD_IDLEBAR_FONT) self.timer = kaa.Timer(self._timerhandler) self.timer.start(self.poll_interval) logger.debug('transcode.PluginInterface.__init__() done.')
def __init__(self, left=0, top=0, width=0, height=0, bg_color=None, fg_color=None): self.osd = osd.get_singleton() self.label = None self.icon = None self.surface = None self.bg_surface = None self.bg_image = None self.parent = None self.children = [] self.enabled = 1 self.visible = 1 self.selected = 0 self.left = left self.top = top self.width = width self.height = height self.bg_color = bg_color self.fg_color = fg_color self.event_context = None style = skin.get_singleton().get_popupbox_style(self) self.content_layout, self.background_layout = style self.skin_info_widget = self.content_layout.types['widget'] self.skin_info_font = self.skin_info_widget.font self.h_margin = self.content_layout.spacing self.v_margin = self.content_layout.spacing ci = self.content_layout.types['widget'].rectangle self.bg_color = self.bg_color or Color(ci.bgcolor) self.fg_color = self.fg_color or Color(ci.color) self.set_v_align(Align.NONE) self.set_h_align(Align.NONE)
def __init__(self): _debug_('encoding.PluginInterface.__init__(self)', 2) plugin.DaemonPlugin.__init__(self) #IdleBarPlugin.__init__(self) self.poll_interval = 82 # 82*1/120th seconds (~1sec) self.draw_interval = self.poll_interval self.last_interval = self.poll_interval self.lastdraw = 0 self.lastpoll = 0 self.plugin_name = 'video.encodingstatus' server_string = 'http://%s:%s/' % \ (config.ENCODINGSERVER_IP, config.ENCODINGSERVER_PORT) self.server = xmlrpclib.Server(server_string, allow_none=1) self.skin = skin.get_singleton() self.barimg = os.path.join(config.ICON_DIR, 'status/encoding_bar.png') self.boximg = os.path.join(config.ICON_DIR, 'status/encoding_box.png') self.boxborder = 3 self.padding = 5 # internal padding for box vs text self.image = None self.cacheimg = {} self.muted = False self.encoding = -1 self.progress = 0 self.jobname = '' self.calculate = True self.jobs = '' self.mode = 'Not Running' self.text = [] self.percent = 0.0 self.running = False self.drawtime = 0 self.polltime = 0 self.state = 'noserver' self.laststate = None self.font = self.skin.get_font('detachbar') if self.font == skin.get_font('default'): self.font = skin.get_font('info value')
# Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program; if not, write to the Free Software Foundation, Inc., # 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # ----------------------------------------------------------------------- import logging logger = logging.getLogger("freevo.skin.widgets.scrollabletext_screen") import rc from event import * from skin.models import ScrollableText import skin skin_object = skin.get_singleton() class ScrollableTextScreen: """ A scrollable text screen """ def __init__(self, layout, text): """ Used to display and control the position of text in a scrollable area. @param layout: Skin layout to use. @param text: This is the text to scroll. """ self.layout = layout self.scrollable_text = ScrollableText(text)
import os import codecs import urllib #regular expression import re #freevo modules import config, menu, rc, plugin, skin, osd, util from gui import PopupBox, AlertBox, ConfirmBox from item import Item from video import VideoItem #get the singletons so we get skin info and access the osd skin = skin.get_singleton() osd = osd.get_singleton() class PluginInterface(plugin.MainMenuPlugin): """ A plugin to obtain TV streams on Freevo To activate, put the following lines in local_conf.py: | plugin.activate('tv.freeboxtv', level=45) | PLUGIN_FREEBOXTV_LOCATION = "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u" | plugin.activate('video.vlc') | | # ================ | # VLC Settings
import plugin import skin import osd import event import rc import dialog.dialogs as dialogs import dialog.widgets as widgets from tv.tvguide import TVGuide from tv.programitem import ProgramItem from item import Item from menu import MenuItem, Menu from pygame import image,transform, Surface # Create the skin_object object skin_object = skin.get_singleton() # Create the events and assign them to the menus. BUTTONBAR_RED = event.Event('BUTTONBAR_RED') BUTTONBAR_GREEN = event.Event('BUTTONBAR_GREEN') BUTTONBAR_YELLOW = event.Event('BUTTONBAR_YELLOW') BUTTONBAR_BLUE = event.Event('BUTTONBAR_BLUE') event.MENU_EVENTS['RED'] = BUTTONBAR_RED event.MENU_EVENTS['GREEN'] = BUTTONBAR_GREEN event.MENU_EVENTS['YELLOW'] = BUTTONBAR_YELLOW event.MENU_EVENTS['BLUE'] = BUTTONBAR_BLUE event.TVMENU_EVENTS['RED'] = BUTTONBAR_RED event.TVMENU_EVENTS['GREEN'] = BUTTONBAR_GREEN event.TVMENU_EVENTS['YELLOW'] = BUTTONBAR_YELLOW
import pprint import config, skin, util, rc from event import * from item import Item from programitem import ProgramItem import dialog import tv.epg from tv.epg_types import TvProgram from tv.record_client import RecordClient skin.get_singleton().register( 'tv', ('screen', 'title', 'subtitle', 'view', 'tvlisting', 'info', 'plugin')) CHAN_NO_DATA = _('This channel has no data loaded') class TVGuide(Item): """ Class for TVGuide """ def __init__(self, channels, start_time, player, menuw): logger.log(9, 'TVGuide.__init__(start_time=%r, player=%r, menuw=%r)', start_time, player, menuw) Item.__init__(self) self.channels = channels
def shutdown(menuw=None, mode=None, exit=False): """ Function to shut down freevo or the whole system. This system will be shut down when argshutdown is True, restarted when argrestart is true, else only Freevo will be stopped. """ logger.debug('shutdown(menuw=%r, mode=%r, exit=%r)', menuw, mode, exit) if ShutdownModes.shutdown_in_progress: logger.debug('shutdown in progress') return ShutdownModes.shutdown_in_progress = True import osd import plugin import rc import util.mediainfo osd = osd.get_singleton() util.mediainfo.sync() if not osd.active: # this function is called from the signal handler, but we are dead # already. sys.exit(0) skin.get_singleton().suspend() osd.clearscreen(color=osd.COL_BLACK) if mode == ShutdownModes.SYSTEM_SHUTDOWN: msg = _('Shutting down...') elif mode == ShutdownModes.SYSTEM_RESTART: msg = _('Restarting...') else: msg = _('Exiting...') osd.drawstringframed(msg, 0, 0, osd.width, osd.height, osd.getfont(config.OSD_DEFAULT_FONTNAME, config.OSD_DEFAULT_FONTSIZE), fgcolor=osd.COL_ORANGE, align_h='center', align_v='center') osd.update() time.sleep(0.5) if mode == ShutdownModes.SYSTEM_SHUTDOWN or mode == ShutdownModes.SYSTEM_RESTART: # shutdown dual head for mga if config.CONF.display == 'mga': os.system('%s runapp matroxset -f /dev/fb1 -m 0' % os.environ['FREEVO_SCRIPT']) time.sleep(1) os.system('%s runapp matroxset -f /dev/fb0 -m 1' % os.environ['FREEVO_SCRIPT']) time.sleep(1) logger.debug('sys:plugin.shutdown()') plugin.shutdown() logger.debug('sys:rc.shutdown()') rc.shutdown() #if config.CONF.display == 'mga': logger.debug('sys:osd.shutdown()') osd.shutdown() if mode == ShutdownModes.SYSTEM_SHUTDOWN: logger.debug('os.system(%r)', config.SYS_SHUTDOWN_CMD) os.system(config.SYS_SHUTDOWN_CMD) elif ShutdownModes.SYSTEM_RESTART: logger.debug('os.system(%r)', config.SYS_RESTART_CMD) os.system(config.SYS_RESTART_CMD) # this closes the log logger.debug('sys:config.shutdown()') config.shutdown() # let freevo be killed by init, looks nicer for mga print 'Freevo shutdown' while True: time.sleep(1) # # Exit Freevo # # shutdown any daemon plugins that need it. logger.debug('plugin.shutdown()') plugin.shutdown() # shutdown registered callbacks logger.debug('rc.shutdown()') rc.shutdown() # SDL must be shutdown to restore video modes etc logger.log( 9, 'osd.clearscreen(color=osd.COL_BLACK)') osd.clearscreen(color=osd.COL_BLACK) logger.debug('osd.shutdown()') osd.shutdown() logger.debug('config.shutdown()') config.shutdown() if exit: # really exit, we are called by the signal handler logger.debug('raise SystemExit') raise SystemExit # We must use spawn instead of os.system here because the python interpreter # lock is held by os.system until the command returns, which prevents receiving # any signals. logger.log( 9, '%s --stop', os.environ['FREEVO_SCRIPT']) os.spawnlp(os.P_NOWAIT, os.environ['FREEVO_SCRIPT'], os.environ['FREEVO_SCRIPT'], '--stop') # Just wait until we're dead. SDL cannot be polled here anyway. while True: time.sleep(1)
import os, time import pprint import config, skin, util, rc from event import * from item import Item from programitem import ProgramItem import dialog import tv.epg from tv.epg_types import TvProgram from tv.record_client import RecordClient skin.get_singleton().register('tv', ('screen', 'title', 'subtitle', 'view', 'tvlisting', 'info', 'plugin')) CHAN_NO_DATA = _('This channel has no data loaded') class TVGuide(Item): """ Class for TVGuide """ def __init__(self, channels, start_time, player, menuw): logger.log( 9, 'TVGuide.__init__(start_time=%r, player=%r, menuw=%r)', start_time, player, menuw) Item.__init__(self) self.channels = channels self.start_channel_idx = 0 self.selected_channel_idx = 0
def __init__(self): plugin.ItemPlugin.__init__(self) self.skin = skin.get_singleton() self.item = None self.plugin_name = 'video.mplayer_ppmenu.item' self.default_str = _('Default') if hasattr(config, 'MPLAYER_VF_PROGRESSIVE_OPTS'): self.vfp_opts = config.MPLAYER_VF_PROGRESSIVE_OPTS else: self.vfp_opts = [ (self.default_str, ''), ('LQ', 'pp=de'), ('HQ', 'pp=ac/al'), ('HQ denoise3d', 'pp=ac/al,hqdn3d=2:2:4'), ('HQ denoise3d+unsharp', 'pp=ac/al,hqdn3d=2:2:4,unsharp=l3x3:0.5'), ('HQ denoise3d+unsharp+noise', 'pp=ac/al,hqdn3d=2:2:4,unsharp=l3x3:0.5,noise=12uah:5uah'), ('HD content', 'pp=de -lavdopts fast:skiploopfilter=all:threads=2') ] self.vfp_opt = None self.vfp_args_def = config.MPLAYER_VF_PROGRESSIVE self.vfp_title_def = _('Video PP - %s') self.vfp_title = self.vfp_title_def % self.default_str if hasattr(config, 'MPLAYER_VF_INTERLACED_OPTS'): self.vfi_opts = config.MPLAYER_VF_INTERLACED_OPTS else: self.vfi_opts = [ (self.default_str, ''), ('LQ', 'pp=de'), ('HQ', 'pp=ac/al'), ('HQ denoise3d', 'pp=ac/al,hqdn3d=2:2:4'), ('HQ denoise3d+unsharp', 'pp=ac/al,hqdn3d=2:2:4,unsharp=l3x3:0.5'), ('HQ denoise3d+unsharp+noise', 'pp=ac/al,hqdn3d=2:2:4,unsharp=l3x3:0.5,noise=12uah:5uah') ] self.vfi_opt = None self.vfi_args_def = config.MPLAYER_VF_PROGRESSIVE self.vfi_title_def = _('Video PP - %s') self.vfi_title = self.vfi_title_def % self.default_str # Aspect ratio properties # self.cnt = 0 if hasattr(config, 'MPLAYER_ARGS_DEF'): self.args_def = config.MPLAYER_ARGS_DEF else: self.args_def = '' self.title_def = _('Aspect Ratio - %s') self.title = self.title_def % self.default_str if hasattr(config, 'MPLAYER_ASPECT_RATIOS'): self.ratios = config.MPLAYER_ASPECT_RATIOS else: self.ratios = (_('Def'), '16:9', '2.35:1', '4:3') plugin.activate('video.mplayer_ppmenu.daemon')