Author: duncan
Date: Fri Mar 21 12:55:30 2008
New Revision: 10556
Log:
Merged changes from rel-1
Modified:
branches/rel-1-7/freevo/contrib/kommander/kmdrfreevo.kmdr
branches/rel-1-7/freevo/contrib/ps3/local_conf.py
branches/rel-1-7/freevo/freevo_config.py
branches/rel-1-7/freevo/local_conf.py.example
branches/rel-1-7/freevo/src/tv/edit_favorite.py
branches/rel-1-7/freevo/src/tv/epg_types.py
branches/rel-1-7/freevo/src/tv/favoriteitem.py
branches/rel-1-7/freevo/src/tv/plugins/ivtv_xine_tv.py
branches/rel-1-7/freevo/src/tv/plugins/manual_record.py
branches/rel-1-7/freevo/src/tv/plugins/scheduled_recordings.py
branches/rel-1-7/freevo/src/tv/plugins/search_programs.py
branches/rel-1-7/freevo/src/tv/plugins/view_favorites.py
branches/rel-1-7/freevo/src/tv/programitem.py
branches/rel-1-7/freevo/src/tv/record_types.py
branches/rel-1-7/freevo/src/tv/tvguide.py
branches/rel-1-7/freevo/src/util/misc.py
Modified: branches/rel-1-7/freevo/contrib/kommander/kmdrfreevo.kmdr
==============================================================================
--- branches/rel-1-7/freevo/contrib/kommander/kmdrfreevo.kmdr (original)
+++ branches/rel-1-7/freevo/contrib/kommander/kmdrfreevo.kmdr Fri Mar 21
12:55:30 2008
@@ -74,9 +74,9 @@
### ShutDown and Reboot
CONFIRM_SHUTDOWN = @CONFIRM_SHUTDOWN.checked
-ENABLE_SHUTDOWN_SYS = @ENABLE_SHUTDOWN_SYS.checked
-SHUTDOWN_SYS_CMD = '@SHUTDOWN_SYS_CMD.text'
-RESTART_SYS_CMD = '@RESTART_SYS_CMD.text'
+SYS_SHUTDOWN_ENABLE = @SYS_SHUTDOWN_ENABLE.checked
+SYS_SHUTDOWN_CMD = '@SYS_SHUTDOWN_CMD.text'
+SYS_RESTART_CMD = '@SYS_RESTART_CMD.text'
### Network-Remote
REMOTE_CONTROL_HOST = '@REMOTE_CONTROL_HOST.text'
@@ -1635,7 +1635,7 @@
</widget>
<widget class="LineEdit">
<property name="name">
- <cstring>RESTART_SYS_CMD</cstring>
+ <cstring>SYS_RESTART_CMD</cstring>
</property>
<property name="geometry">
<rect>
@@ -1651,7 +1651,7 @@
</widget>
<widget class="LineEdit">
<property name="name">
- <cstring>SHUTDOWN_SYS_CMD</cstring>
+ <cstring>SYS_SHUTDOWN_CMD</cstring>
</property>
<property name="geometry">
<rect>
@@ -1667,7 +1667,7 @@
</widget>
<widget class="CheckBox">
<property name="name">
- <cstring>ENABLE_SHUTDOWN_SYS</cstring>
+ <cstring>SYS_SHUTDOWN_ENABLE</cstring>
</property>
<property name="geometry">
<rect>
Modified: branches/rel-1-7/freevo/contrib/ps3/local_conf.py
==============================================================================
--- branches/rel-1-7/freevo/contrib/ps3/local_conf.py (original)
+++ branches/rel-1-7/freevo/contrib/ps3/local_conf.py Fri Mar 21 12:55:30 2008
@@ -60,7 +60,7 @@
# START_FULLSCREEN_X = 0 # Start in fullscreen mode if using x11
or xv.
-SHUTDOWN_CONFIRM = 0 # ask before shutdown
+SYS_SHUTDOWN_CONFIRM = 0 # ask before shutdown
#
# Physical ROM drives, multiple ones can be specified
@@ -91,12 +91,12 @@
#
# Perform a whole system shutdown at SHUTDOWN! Useful for standalone boxes.
#
-# ENABLE_SHUTDOWN_SYS = 0
+# SYS_SHUTDOWN_ENABLE = 0
#
# Command to execute to shutdown the system
#
-# SHUTDOWN_SYS_CMD = "sudo shutdown -h now"
-# RESTART_SYS_CMD = "sudo shutdown -r now"
+# SYS_SHUTDOWN_CMD = "sudo shutdown -h now"
+# SYS_RESTART_CMD = "sudo shutdown -r now"
# ======================================================================
# AUTOSHUTDOWN CONFIGURATION
Modified: branches/rel-1-7/freevo/freevo_config.py
==============================================================================
--- branches/rel-1-7/freevo/freevo_config.py (original)
+++ branches/rel-1-7/freevo/freevo_config.py Fri Mar 21 12:55:30 2008
@@ -348,6 +348,10 @@
(5.23,
''' Added XMLTV_TIMEZONE to allow the time zone to be specified
Added OSD_X11_CURSORS to allow custom cursor to be set, stops xine
showing a cursor
+ Changed SHUTDOWN_CONFIRM to SYS_SHUTDOWN_CONFIRM for naming consistency
+ Changed SHUTDOWN_SYS_CMD to SYS_SHUTDOWN_CMD for naming consistency
+ Changed RESTART_SYS_CMD to SYS_RESTART_CMD for naming consistency
+ Changed SHUTDOWN_SYS_ENABLE to SYS_SHUTDOWN_ENABLE for naming consistency
'''),
]
@@ -422,14 +426,14 @@
# Set to 0 for no confirmation, set to 1 to show a confirm dialog
# (OK preselected), set to 2 to show a confirm dialog (Cancel preselected)
#
-SHUTDOWN_CONFIRM = 1 # ask before shutdown
+SYS_SHUTDOWN_CONFIRM = 1 # ask before shutdown
-SHUTDOWN_SYS_CMD = 'shutdown -h now' # set this to 'sudo shutdown -h now' if
+SYS_SHUTDOWN_CMD = 'shutdown -h now' # set this to 'sudo shutdown -h now' if
# you don't have the permissions to
shutdown
-RESTART_SYS_CMD = 'shutdown -r now' # like SHUTDOWN_SYS_CMD, only for reboot
+SYS_RESTART_CMD = 'shutdown -r now' # like SYS_SHUTDOWN_CMD, only for reboot
-SHUTDOWN_SYS_ENABLE = 0 # Performs a whole system shutdown at SHUTDOWN!
+SYS_SHUTDOWN_ENABLE = 0 # Performs a whole system shutdown at SHUTDOWN!
# For standalone boxes.
@@ -469,7 +473,7 @@
# -- autoshutdown menu item configuration --
-# SHUTDOWN_CONFIRM
+# SYS_SHUTDOWN_CONFIRM
# Set to True to popup dialog boxes for confirmation.
# this applies to menu items only.
AUTOSHUTDOWN_CONFIRM=True
Modified: branches/rel-1-7/freevo/local_conf.py.example
==============================================================================
--- branches/rel-1-7/freevo/local_conf.py.example (original)
+++ branches/rel-1-7/freevo/local_conf.py.example Fri Mar 21 12:55:30 2008
@@ -76,7 +76,7 @@
# START_FULLSCREEN_X = 0 # Start in fullscreen mode if using x11
or xv.
-# SHUTDOWN_CONFIRM = 1 # ask before shutdown
+# SYS_SHUTDOWN_CONFIRM = 1 # ask before shutdown
#
# Physical ROM drives, multiple ones can be specified
@@ -104,12 +104,12 @@
#
# Perform a whole system shutdown at SHUTDOWN! Useful for standalone boxes.
#
-# SHUTDOWN_SYS_ENABLE = 0
+# SYS_SHUTDOWN_ENABLE = 0
#
# Command to execute to shutdown the system
#
-# SHUTDOWN_SYS_CMD = "sudo shutdown -h now"
-# RESTART_SYS_CMD = "sudo shutdown -r now"
+# SYS_SHUTDOWN_CMD = "sudo shutdown -h now"
+# SYS_RESTART_CMD = "sudo shutdown -r now"
# ======================================================================
# AUTOSHUTDOWN CONFIGURATION
@@ -125,7 +125,7 @@
# -- autoshutdown menu item configuration --
-# SHUTDOWN_CONFIRM
+# SYS_SHUTDOWN_CONFIRM
# Set to True to popup dialog boxes for confirmation.
# this applies to menu items only.
# AUTOSHUTDOWN_CONFIRM = True
Modified: branches/rel-1-7/freevo/src/tv/edit_favorite.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/edit_favorite.py (original)
+++ branches/rel-1-7/freevo/src/tv/edit_favorite.py Fri Mar 21 12:55:30 2008
@@ -34,12 +34,12 @@
import config
import tv.epg_xmltv
-import record_client
+import tv.record_client
import event as em
-from record_types import Favorite
-from epg_types import TvProgram
-from view_favorites import ViewFavorites
+from tv.epg_types import TvProgram
+from tv.record_types import Favorite, ScheduledRecordings
+from tv.view_favorites import ViewFavorites
from gui.GUIObject import *
from gui.Border import *
@@ -55,12 +55,12 @@
class EditFavorite(PopupBox):
"""
- prog the program to record
- left x coordinate. Integer
- top y coordinate. Integer
- width Integer
- height Integer
- context Context in which the object is instanciated
+ @param prog: the program to record
+ @param left: x coordinate, Integer
+ @param top: y coordinate, Integer
+ @param width: width in pixels, Integer
+ @param height: height in pixels, Integer
+ @param context: context in which the object is instantiated
"""
def __init__(self, parent=None, subject=None, left=None, top=None,
width=500, height=350, context=None):
""" """
@@ -74,23 +74,19 @@
context = 'guide'
if isinstance(subject, TvProgram):
- (result, favs) = record_client.getFavorites()
+ (result, favs) = tv.record_client.getFavorites()
if result:
num_favorites = len(favs)
self.priority = num_favorites + 1
else:
self.priority = 1
-
self.fav = Favorite(subject.title, subject, TRUE, TRUE, TRUE,
self.priority, TRUE, FALSE)
else:
self.fav = subject
self.oldname = self.fav.name
-
-
- PopupBox.__init__(self, text=_('Edit Favorite'), x=left, y=top,
width=width,
- height=height)
+ PopupBox.__init__(self, text=_('Edit Favorite'), x=left, y=top,
width=width, height=height)
self.v_spacing = 15
self.h_margin = 20
@@ -128,9 +124,8 @@
self.chan_box.toggle_selected_index(chan_index)
- # This is a hack for setting the OptionBox's label to the current
- # value. It should be done by OptionBox when drawing, but it doesn't
- # work :(
+ # This is a hack for setting the OptionBox's label to the current
value.
+ # It should be done by OptionBox when drawing, but it doesn't work :(
self.chan_box.change_item(None)
self.add_child(self.chan_box)
@@ -149,9 +144,8 @@
dow_index = i
i += 1
self.dow_box.toggle_selected_index(dow_index)
- # This is a hack for setting the OptionBox's label to the current
- # value. It should be done by OptionBox when drawing, but it doesn't
- # work :(
+ # This is a hack for setting the OptionBox's label to the current
value.
+ # It should be done by OptionBox when drawing, but it doesn't work :(
self.dow_box.change_item(None)
self.add_child(self.dow_box)
@@ -163,7 +157,7 @@
i = 0
tod_index = 0
- for h in range(0,24):
+ for h in range(0, 24):
for m in (00, 30):
val = i*30
# Little hack: we calculate the hours from Jan 1st, 1970 GMT,
@@ -193,7 +187,7 @@
def removeFavorite(self):
_debug_('removeFavorite()', 2)
- (result, msg) = record_client.removeFavorite(self.oldname)
+ (result, reason) = tv.record_client.removeFavorite(self.oldname)
if result:
searcher = None
if self.parent and self.context == 'favorites':
@@ -208,7 +202,7 @@
searcher.draw()
self.osd.update()
else:
- AlertBox(parent=self, text=_('Remove favorite failed')+(':\n%s' %
msg)).show()
+ AlertBox(parent=self, text=_('Remove favorite failed')+(':\n%s' %
reason)).show()
def eventhandler(self, event, menuw=None):
@@ -308,23 +302,22 @@
elif self.get_selected_child() == self.save:
if event == em.INPUT_ENTER:
+ # remove the old favourite
if self.oldname:
- record_client.removeFavorite(self.oldname)
- (result, msg) = record_client.addEditedFavorite(
- self.name_input.get_word(),
- self.fav.title,
- self.chan_box.list.get_selected_item().value,
- self.dow_box.list.get_selected_item().value,
- self.tod_box.list.get_selected_item().value,
- self.fav.priority,
- self.fav.allowDuplicates,
- self.fav.onlyNew)
+ (result, reason) =
tv.record_client.removeFavorite(self.oldname)
+ if not result:
+ AlertBox(parent=self, text=_('Add favorite
failed')+(':\n%s' % reason)).show()
+ # add the new favourite
+ (result, reason) =
tv.record_client.addEditedFavorite(self.name_input.get_word(),self.fav.title,
+ self.chan_box.list.get_selected_item().value,
self.dow_box.list.get_selected_item().value,
+ self.tod_box.list.get_selected_item().value,
self.fav.priority, self.fav.allowDuplicates,
+ self.fav.onlyNew)
if result:
#tv.view_favorites.ViewFavorites(parent=self.parent,
text='Favorites').show()
self.destroy()
AlertBox(parent='osd', text=_('Favorite %s has been
saved') % self.name_input.get_word()).show()
else:
- AlertBox(parent=self, text=_('Add favorite
failed')+(':\n%s' % msg)).show()
+ AlertBox(parent=self, text=_('Add favorite
failed')+(':\n%s' % reason)).show()
return True
elif event in (em.INPUT_LEFT, em.MENU_PAGEUP):
self.save.toggle_selected()
Modified: branches/rel-1-7/freevo/src/tv/epg_types.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/epg_types.py (original)
+++ branches/rel-1-7/freevo/src/tv/epg_types.py Fri Mar 21 12:55:30 2008
@@ -175,6 +175,8 @@
class TvChannel:
+ """
+ """
id = ''
displayname = ''
tunerid = ''
@@ -195,23 +197,27 @@
def __str__(self):
s = 'CHANNEL ID %-20s' % self.id
-
if self.programs:
s += '\n'
for program in self.programs:
s += ' ' + String(program) + '\n'
else:
s += ' NO DATA\n'
-
return s
+ def __repr__(self):
+ return '<TvChannel %(id)r>' % (self.__dict__)
+
+
+
class TvGuide:
+ """
+ """
chan_dict = None
chan_list = None
timestamp = 0.0
-
def __init__(self):
# These two types map to the same channel objects
self.chan_dict = {} # Channels mapped using the id
@@ -254,17 +260,21 @@
#
# The return value is a list of channels (TvChannel)
def GetPrograms(self, start=None, stop=None, chanids=None):
- _debug_('GetPrograms(start=%r, stop=%r, chanids=%r)' % (start, stop,
chanids))
if start == None:
start = 0
if stop == None:
stop = 2147483647 # Year 2038
+ _debug_('GetPrograms(start=%r, stop=%r, chanids=%r)' %
(time.strftime('%H:%M', time.localtime(start)),
+ time.strftime('%H:%M', time.localtime(stop)), chanids))
# Return a cached version?
global cache_last_start, cache_last_stop, cache_last_chanids,
cache_last_time, cache_last_result
+
+ print 'DJW:start:', cache_last_start, start, 'stop:', cache_last_stop,
stop, 'chanids:', cache_last_chanids, chanids, 'time:', time.time(),
cache_last_time, time.time() < cache_last_time
+
if (cache_last_start == start and cache_last_stop == stop and
cache_last_chanids == chanids and time.time() < cache_last_time):
- _debug_('GetPrograms: Return cached results, valid for %1.1f
secs.' % cache_last_time - time.time())
+ _debug_('GetPrograms: return cached results, valid for %1.1f
secs.' % cache_last_time - time.time())
return cache_last_result[:] # Return a copy
channels = []
@@ -307,8 +317,6 @@
def __str__(self):
s = 'XML TV Guide\n'
-
for chan in self.chan_list:
s += String(chan)
-
return s
Modified: branches/rel-1-7/freevo/src/tv/favoriteitem.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/favoriteitem.py (original)
+++ branches/rel-1-7/freevo/src/tv/favoriteitem.py Fri Mar 21 12:55:30 2008
@@ -38,7 +38,9 @@
from gui.AlertBox import AlertBox
from gui.PopupBox import PopupBox
-import tv.record_client as record_client
+from tv.record_types import Favorite, ScheduledRecordings
+from tv.epg_types import TvProgram
+import tv.record_client
class FavoriteItem(Item):
"""
@@ -126,7 +128,7 @@
# XXX: priorities aren't quite supported yet
if 0:
- (got_favs, favs) = record_client.getFavorites()
+ (got_favs, favs) = tv.record_client.getFavorites()
if got_favs and len(favs) > 1:
items.append(menu.MenuItem(_('Modify priority'),
action=self.mod_priority))
@@ -226,7 +228,6 @@
menuw.refresh()
-
def alter_prop(self, arg=(None,None), menuw=None):
""" Alter a favorites property
@@ -261,8 +262,7 @@
self.fav.mod = 'ANY'
else:
# self.mod = tv_util.minToTOD(val)
- self.mod = time.strftime(config.TV_TIME_FORMAT,
- time.gmtime(float(val * 60)))
+ self.mod = time.strftime(config.TV_TIME_FORMAT,
time.gmtime(float(val * 60)))
self.fav.mod = val
if menuw:
menuw.back_one_menu(arg='reload')
@@ -283,8 +283,7 @@
if menuw:
menustack = menuw.menustack[-1]
pos = menustack.choices.index(menustack.selected)
- new = menu.MenuItem(newname, action=self.alter_prop,
- arg=('dup', val))
+ new = menu.MenuItem(newname, action=self.alter_prop,
arg=('dup', val))
menustack.choices[pos] = new
menustack.selected = menustack.choices[pos]
menuw.init_page()
@@ -305,8 +304,7 @@
if menuw:
menustack = menuw.menustack[-1]
pos = menustack.choices.index(menustack.selected)
- new = menu.MenuItem(newname, action=self.alter_prop,
- arg=('new', val))
+ new = menu.MenuItem(newname, action=self.alter_prop,
arg=('new', val))
menustack.choices[pos] = new
menustack.selected = menustack.choices[pos]
menuw.init_page()
@@ -319,20 +317,19 @@
"""
_debug_('save_changes(arg=%r, menuw=%r)' % (arg, menuw), 2)
# this can take some time, as it means although to update the schedule
- msgtext = _('Saving the changes to this favorite.')+'\n'
- msgtext+= _('This may take some time.')
+ msgtext = _('Saving the changes to this favorite.')+'\n'+_('This may
take some time.')
pop = PopupBox(text=msgtext)
pop.show()
if self.fav_action == 'edit':
# first we remove the old favorite
- (result, msg) = record_client.removeFavorite(self.origname)
+ (result, msg) = tv.record_client.removeFavorite(self.origname)
elif self.fav_action =='add':
result = True
if result:
# create a new edited favorite
- (result, msg) = record_client.addEditedFavorite(self.fav.name,
+ (result, msg) = tv.record_client.addEditedFavorite(self.fav.name,
self.fav.title, self.fav.channel, self.fav.dow, self.fav.mod,
self.fav.priority, self.fav.allowDuplicates, self.fav.onlyNew)
if result:
@@ -357,7 +354,7 @@
"""
_debug_('rem_favorite(arg=%r, menuw=%r)' % (arg, menuw), 2)
name = self.origname
- (result, msg) = record_client.removeFavorite(name)
+ (result, msg) = tv.record_client.removeFavorite(name)
if result:
# if this is successfull
if menuw:
Modified: branches/rel-1-7/freevo/src/tv/plugins/ivtv_xine_tv.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/plugins/ivtv_xine_tv.py (original)
+++ branches/rel-1-7/freevo/src/tv/plugins/ivtv_xine_tv.py Fri Mar 21
12:55:30 2008
@@ -1,6 +1,6 @@
# -*- coding: iso-8859-1 -*-
# -----------------------------------------------------------------------
-# ivtv_xine_tv.py - Implementation of live tv timeshift for ivtv
+# Implementation of live tv timeshift for ivtv
# -----------------------------------------------------------------------
# $Id$
#
Modified: branches/rel-1-7/freevo/src/tv/plugins/manual_record.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/plugins/manual_record.py (original)
+++ branches/rel-1-7/freevo/src/tv/plugins/manual_record.py Fri Mar 21
12:55:30 2008
@@ -36,7 +36,6 @@
import plugin, config, menu
import util.tv_util as tv_util
-import tv.record_client as record_client
import event as em
from item import Item
Modified: branches/rel-1-7/freevo/src/tv/plugins/scheduled_recordings.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/plugins/scheduled_recordings.py
(original)
+++ branches/rel-1-7/freevo/src/tv/plugins/scheduled_recordings.py Fri Mar
21 12:55:30 2008
@@ -31,7 +31,7 @@
import os
import config, plugin, menu, rc
-import tv.record_client as record_client
+import tv.record_client
from gui.AlertBox import AlertBox
from item import Item
@@ -85,12 +85,12 @@
def get_items(self):
items = []
- (server_available, msg) = record_client.connectionTest()
+ (server_available, msg) = tv.record_client.connectionTest()
if not server_available:
AlertBox(_('Recording server is not available')+(':\n%s' %
msg)).show()
return []
- (result, recordings) = record_client.getScheduledRecordings()
+ (result, recordings) = tv.record_client.getScheduledRecordings()
if result:
progs = recordings.getProgramList()
Modified: branches/rel-1-7/freevo/src/tv/plugins/search_programs.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/plugins/search_programs.py (original)
+++ branches/rel-1-7/freevo/src/tv/plugins/search_programs.py Fri Mar 21
12:55:30 2008
@@ -51,7 +51,6 @@
from menu import MenuItem, Menu
from tv.programitem import ProgramItem
-import tv.record_client as record_client
from skin.widgets import TextEntryScreen
@@ -66,7 +65,7 @@
self._type = 'mainmenu_tv'
self.parent = None
-
+
def items(self, parent):
self.parent = parent
return [SearchPrograms(parent)]
Modified: branches/rel-1-7/freevo/src/tv/plugins/view_favorites.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/plugins/view_favorites.py (original)
+++ branches/rel-1-7/freevo/src/tv/plugins/view_favorites.py Fri Mar 21
12:55:30 2008
@@ -31,7 +31,7 @@
import os
import config, plugin, menu, rc
-import tv.record_client as record_client
+import tv.record_client
from item import Item
from tv.favoriteitem import FavoriteItem
@@ -88,17 +88,17 @@
_debug_('get_items()', 2)
items = []
- (server_available, msg) = record_client.connectionTest()
+ (server_available, reason) = tv.record_client.connectionTest()
if not server_available:
- AlertBox(_('Recording server is not available')+(':\n%s' %
msg)).show()
+ AlertBox(_('Recording server is not available')).show()
return []
- (result, favorites) = record_client.getFavorites()
+ (result, favorites) = tv.record_client.getFavorites()
if result:
f = lambda a, b: cmp(a.priority, b.priority)
- favorites = favorites.values()
- favorites.sort(f)
- for fav in favorites:
+ favs = favorites.values()
+ favs.sort(f)
+ for fav in favs:
items.append(FavoriteItem(self, fav))
else:
AlertBox(_('Get favorites failed')+(':\n%s' % favorites)).show()
Modified: branches/rel-1-7/freevo/src/tv/programitem.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/programitem.py (original)
+++ branches/rel-1-7/freevo/src/tv/programitem.py Fri Mar 21 12:55:30 2008
@@ -39,7 +39,7 @@
from favoriteitem import FavoriteItem
import util.tv_util as tv_util
-import tv.record_client as record_client
+import tv.record_client
from tv.channels import FreevoChannels
from tv.record_types import Favorite
@@ -66,56 +66,44 @@
if hasattr(prog, 'title'): self.title = self.name = prog.title
if hasattr(prog, 'sub_title'): self.sub_title = prog.sub_title
if hasattr(prog, 'desc'): self.description = prog.desc
-
- # categories
if hasattr(prog, 'categories'):self.categories = prog.categories
- # ratings
if hasattr(prog, 'ratings'): self.ratings = prog.ratings
- # advisories
if hasattr(prog, 'advisories'): self.advisories = prog.advisories
- # channel where this program is running
self.channel = tv_util.get_chan_displayname(prog.channel_id)
-
- # check if the prog is scheduled for recording
if hasattr(prog, 'scheduled'):
self.scheduled = prog.scheduled
else:
self.scheduled = False
- # more infos from the TvProgam object
+ self.favorite = False
self.allowDuplicates = prog.allowDuplicates
self.onlyNew = prog.onlyNew
self.overlap = prog.overlap
- # defaults to not favorite
- self.favorite = False
-
self.start = time.strftime(config.TV_DATETIME_FORMAT,
time.localtime(prog.start))
self.stop = time.strftime(config.TV_DATETIME_FORMAT,
time.localtime(prog.stop))
+
def actions(self):
""" List of actions """
_debug_('actions()', 2)
#list of entries for the menu
items = []
- ##'Play', if this programm is currently running or starts soon
- # check the time
+ #'Play', if this programm is currently running or starts soon
if self.context=='guide':
now = time.time()
if self.prog.start <= now+(7*60) and self.prog.stop > now:
items.append((self.play, _('Play')))
- ## 'Show full description'
+ # 'Show full description'
items.append((self.show_description, _('Full Description')))
- ## 'Schedule for recording' OR 'Remove from schedule'
- # check if this program is scheduled
- (got_schedule, schedule) = record_client.getScheduledRecordings()
+ # 'Schedule for recording' OR 'Remove from schedule'
+ (got_schedule, schedule) = tv.record_client.getScheduledRecordings()
if got_schedule:
- (result, message) = record_client.isProgScheduled(self.prog,
- schedule.getProgramList())
+ (result, message) = tv.record_client.isProgScheduled(self.prog,
schedule.getProgramList())
if result:
self.scheduled = True
else:
@@ -126,9 +114,8 @@
else:
items.append((self.schedule_program, _('Schedule for recording')))
- ## 'Add to favorites' OR 'Remove from favorites'
- # check if this program is a favorite
- (result, message) = record_client.isProgAFavorite(self.prog)
+ # 'Add to favorites' OR 'Remove from favorites'
+ (result, message) = tv.record_client.isProgAFavorite(self.prog)
if result:
self.favorite = True
@@ -137,7 +124,7 @@
else:
items.append((self.add_favorite, _('Add to favorites')))
- ## 'Seach for more of this'
+ # 'Seach for more of this'
if not self.context == 'search':
items.append((self.find_more, _('Search for more of this
program')))
@@ -147,9 +134,7 @@
### Actions:
def play(self, arg=None, menuw=None):
- """
- Start watching TV
- """
+ """ Start watching TV """
_debug_('play(arg=%r, menuw=%r)' % (arg, menuw), 2)
# watching TV should only be possible from the guide
if not self.context=='guide':
@@ -190,17 +175,13 @@
def show_description(self, arg=None, menuw=None):
- """
- View a full scrollable description of the program.
- """
+ """ View a full scrollable description of the program. """
_debug_('show_description(arg=%r, menuw=%r)' % (arg, menuw), 2)
ShowProgramDetails(menuw, self)
def toggle_rec(self, arg=None, menuw=None):
- """
- schedule or unschedule this program, depending on its current status
- """
+ """ Schedule or unschedule this program, depending on its current
status """
_debug_('toggle_rec(arg=%r, menuw=%r)' % (arg, menuw), 2)
if self.scheduled:
# remove this program from schedule it it is already scheduled
@@ -213,12 +194,10 @@
def schedule_program(self, arg=None, menuw=None):
- """
- Add a program to schedule
- """
+ """ Add a program to schedule """
_debug_('schedule_program(arg=%r, menuw=%r)' % (arg, menuw), 2)
# schedule the program
- (result, reason) = record_client.scheduleRecording(self.prog)
+ (result, reason) = tv.record_client.scheduleRecording(self.prog)
if result:
menuw.delete_submenu(refresh=False)
if hasattr(self.parent, 'update'):
@@ -234,12 +213,10 @@
def remove_program(self, arg=None, menuw=None):
- """
- Remove a program from schedule
- """
+ """ Remove a program from schedule """
_debug_('remove_program(arg=%r, menuw=%r)' % (arg, menuw), 2)
# remove the program
- (result, reason) = record_client.removeScheduledRecording(self.prog)
+ (result, reason) = tv.record_client.removeScheduledRecording(self.prog)
if result:
menuw.delete_submenu(refresh=False)
if hasattr(self.parent, 'update'):
@@ -255,9 +232,7 @@
def add_favorite(self, arg=None, menuw=None):
- """
- Add a program to favorites
- """
+ """ Add a program to favorites """
_debug_('add_favorite(arg=%r, menuw=%r)' % (arg, menuw), 2)
if menuw:
menuw.delete_submenu(refresh=False)
@@ -279,7 +254,7 @@
menuw.delete_submenu(refresh=False)
# get the favorite from the record client
- (got_fav, fav) = record_client.getFavoriteObject(self.prog)
+ (got_fav, fav) = tv.record_client.getFavoriteObject(self.prog)
if got_fav:
# create a favorite item for the submenu
fav_item = FavoriteItem(self, fav, fav_action='edit')
@@ -301,7 +276,7 @@
pop = PopupBox(text=_('Searching, please wait...'))
pop.show()
# do the search
- (result, matches) = record_client.findMatches(self.title)
+ (result, matches) = tv.record_client.findMatches(self.title)
# we are ready -> kill the popup message
pop.destroy()
if result:
@@ -320,7 +295,7 @@
return
else:
# something else went wrong
- msgtext = _('findMatches failed') +(':\n%s' % matches)
+ msgtext = _('Search failed') +(':\n%s' % matches)
AlertBox(text=msgtext).show()
return
@@ -349,10 +324,11 @@
skin_object = skin.get_singleton()
skin_object.register('tvguideinfo', ('screen', 'info', 'scrollabletext',
'plugin'))
-# Program Info screen
+
+
class ShowProgramDetails(ScrollableTextScreen):
"""
- Screen to show the details of the TV program
+ Screen to show the details of the TV programme
"""
def __init__(self, menuw, prg):
_debug_('ShowProgramDetails.__init__(menuw=%r, prg=%r)' % (menuw,
prg), 2)
@@ -396,24 +372,18 @@
self.show(menuw)
-
def getattr(self, name):
- """
- """
+ """ get programme attributes """
_debug_('getattr(name=%r)' % (name,), 2)
if name == 'title':
return self.name
-
if self.program:
return self.program.getattr(name)
-
return u''
def eventhandler(self, event, menuw=None):
- """
- eventhandler for the programm description display
- """
+ """ event handler for the programme description display """
_debug_('eventhandler(event=%r, menuw=%r)' % (event, menuw), 2)
menuw = self.menuw
event_consumed = ScrollableTextScreen.eventhandler(self, event, menuw)
Modified: branches/rel-1-7/freevo/src/tv/record_types.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/record_types.py (original)
+++ branches/rel-1-7/freevo/src/tv/record_types.py Fri Mar 21 12:55:30 2008
@@ -45,50 +45,104 @@
critical_section = threading.Lock()
class ScheduledRecordings:
-
+ """
+ """
def __init__(self):
+ """ """
+ _debug_('ScheduledRecordings.__init__()', 2)
self.TYPES_VERSION = TYPES_VERSION
self.favorites_file_name = os.path.join(config.FREEVO_STATICDIR,
'favorites.pickle')
+ self.favorites_text_name = os.path.join(config.FREEVO_STATICDIR,
'favorites.txt')
self.schedule_file_name = os.path.join(config.FREEVO_STATICDIR,
'schedule.pickle')
- self.programList = {}
+ self.program_list = {}
self.favorites = self.loadFavorites()
+ def initialize(self):
+ if not hasattr(self, 'favorites_file_name'):
+ self.favorites_file_name = os.path.join(config.FREEVO_STATICDIR,
'favorites.pickle')
+ if not hasattr(self, 'favorites_text_name'):
+ self.favorites_text_name = os.path.join(config.FREEVO_STATICDIR,
'favorites.txt')
+ if not hasattr(self, 'schedule_file_name'):
+ self.schedule_file_name = os.path.join(config.FREEVO_STATICDIR,
'schedule.pickle')
+ if not hasattr(self, 'program_list'):
+ self.program_list = {}
+ if not hasattr(self, 'favorites'):
+ self.favorites = self.loadFavorites()
+
+
+ def loadRecordSchedule(self):
+ """ Load the recording schedule from a file """
+ _debug_('loadRecordSchedule()', 2)
+ # may need to use a critical section here
+ self.schedules = {}
+ try:
+ schedules_fh = open(self.schedule_file_name, 'rb')
+ self.program_list = pickle.load(schedules_fh)
+ schedules_fh.close()
+ except IOError, why:
+ return {}
+ return self.schedules
+
+
+ def saveRecordSchedule(self):
+ """ Save the recording schedule to a file """
+ _debug_('saveRecordSchedule()', 2)
+ # save the favourites as a pickle file
+ try:
+ schedules_fh = open(self.schedule_file_name, 'wb')
+ pickle.dump(self.program_list, schedules_fh)
+ schedules_fh.close()
+ except Exception, why:
+ import traceback
+ traceback.print_stack()
+ print why
+
+
def addProgram(self, prog, key=None):
+ """ """
+ _debug_('addProgram(prog=%r, key=%r)' % (prog, key), 2)
if not key:
# key = rec_interface.getKey(prog)
pass
- if not self.programList.has_key(key):
- self.programList[key] = prog
+ if not self.program_list.has_key(key):
+ self.program_list[key] = prog
_debug_('added \"%s\" %s"' % (String(key), prog), 2)
else:
_debug_('We already know about this recording \"%s\"' % (key),
DINFO)
- _debug_('"%s" items' % len(self.programList), 2)
+ _debug_('"%s" items' % len(self.program_list), 2)
def removeProgram(self, prog, key=None):
+ """ """
+ _debug_('removeProgram(prog=%r, key=%r)' % (prog, key), 2)
if not key:
# key = rec_interface.getKey(prog)
pass
- if self.programList.has_key(key):
- del self.programList[key]
- _debug_('removed \"%s\" %s"' % (String(key), prog), 2)
+ if self.program_list.has_key(key):
+ del self.program_list[key]
+ _debug_('removed %r %s"' % (key, prog), 2)
else:
_debug_('We do not know about this recording \"%s\"' % (prog),
DINFO)
def getProgramList(self):
- return self.programList
+ """ """
+ _debug_('getProgramList()', 3)
+ return self.program_list
def setProgramList(self, pl):
- self.programList = pl
+ """ """
+ _debug_('setProgramList(pl=%r)' % (pl,), 2)
+ self.program_list = pl
def loadFavorites(self):
- """ """
+ """ Load the favourites from a file """
+ _debug_('loadFavorites()', 2)
# may need to use a critical section here
self.favorites = {}
try:
@@ -101,66 +155,103 @@
def saveFavorites(self):
- """ """
+ """ Save the favourties to a file """
+ _debug_('saveFavorites()', 2)
+ # save the favourites as a pickle file
try:
favorites_fh = open(self.favorites_file_name, 'wb')
pickle.dump(self.favorites, favorites_fh)
favorites_fh.close()
except Exception, why:
- print Exception, why
- for favorite in self.favorites:
- pass
- #print 'exactchan=%r, exactdow=%r, exacttod=%r, priority=%r,
allowDuplicates=%r, onlyNew=%r' % \
- # (exactchan, exactdow, exacttod, priority, allowDuplicates,
onlyNew)
+ import traceback
+ traceback.print_stack()
+ print why
+ # save the favourites as a text file
+ try:
+ favorites_fh = open(self.favorites_text_name, 'w')
+ print >>favorites_fh, TYPES_VERSION
+ for favourite in self.favorites.keys():
+ f = self.favorites[favourite]
+ print >>favorites_fh, \
+ '%(name)r %(title)r %(channel)r %(dow)r %(mod)r
%(allowDuplicates)r %(onlyNew)r %(priority)r' % \
+ f.__dict__
+ favorites_fh.close()
+ except Exception, why:
+ import traceback
+ traceback.print_stack()
+ print why
def addFavorite(self, fav):
- print 'self.favorites=%r' % (self.favorites,)
+ """ """
+ _debug_('addFavorite(fav=%r)' % (fav,), 2)
+ print 'DJW:self.favorites=%r' % (self.favorites,)
if self.favorites and self.favorites.has_key(fav.name):
_debug_('We already have a favorite called "%s"' %
String(fav.name), DINFO)
- else:
- _debug_('added favorite "%s"' % String(fav.name), 1)
- if self.favorites is None:
- self.favorites = {}
- self.favorites[fav.name] = fav
- self.saveFavorites()
+ return
+ _debug_('added favorite "%s"' % String(fav.name), 2)
+ if self.favorites is None:
+ self.favorites = {}
+ self.favorites[fav.name] = fav
+ self.saveFavorites()
def removeFavorite(self, name):
+ """ """
+ _debug_('removeFavorite(name=%r)' % (name,), 2)
if not self.favorites.has_key(name):
_debug_('We do not have a favorite called "%s"' % String(name),
DINFO)
- else:
- _debug_('removed favorite: %s' % String(name), 1)
- del self.favorites[name]
- self.saveFavorites()
+ return
+ _debug_('removed favorite: %s' % String(name), 2)
+ del self.favorites[name]
+ self.saveFavorites()
+
+
+ def updateFavorite(self, oldname, fav):
+ """ Remove old favourite if exists and add new favourite
+ """
+ _debug_('updateFavorite(oldname=%r, fav=%r)' % (oldname, fav), 2)
+ if oldname:
+ self.removeFavorite(name)
+ self.addFavourite(fav)
def getFavorites(self):
+ """ """
+ _debug_('getFavorites()', 2)
return self.favorites
def setFavorites(self, favs):
+ """ """
+ _debug_('setFavorites(favs=%r)' % (favs,), 2)
self.favorites = favs
def setFavoritesList(self, favs):
+ """ """
+ _debug_('setFavoritesList(favs=%r)' % (favs,), 2)
newfavs = {}
-
for fav in favs:
if not newfavs.has_key(fav.name):
newfavs[fav.name] = fav
-
self.setFavorites(newfavs)
def clearFavorites(self):
+ """ """
+ _debug_('clearFavorites()', 2)
self.favorites = {}
class Favorite:
-
- def __init__(self, name=None, prog=None, exactchan=FALSE, exactdow=FALSE,
- exacttod=FALSE, priority=0, allowDuplicates=TRUE,
onlyNew=FALSE):
+ """
+ A favourite TV programme
+ """
+ def __init__(self, name=None, prog=None, exactchan=FALSE, exactdow=FALSE,
exacttod=FALSE, priority=0,
+ allowDuplicates=TRUE, onlyNew=FALSE):
+ """ """
+ _debug_('Favorite.__init__(self, name=%r, prog=%r, exactchan=%r,
exactdow=%r, exacttod=%r, priority=%r, allowDuplicates=%r, onlyNew=%r)' %
(name, prog, exactchan, exactdow, exacttod, priority, allowDuplicates,
onlyNew), 2)
self.TYPES_VERSION = TYPES_VERSION
self.name = name
@@ -198,12 +289,15 @@
class ScheduledTvProgram:
-
+ """
+ """
LOW_QUALTY = 1
MED_QUALTY = 2
HIGH_QUALTY = 3
def __init__(self):
+ """ """
+ _debug_('ScheduledTvProgram.__init__()', 2)
self.tunerid = None
self.isRecording = FALSE
self.isFavorite = FALSE
Modified: branches/rel-1-7/freevo/src/tv/tvguide.py
==============================================================================
--- branches/rel-1-7/freevo/src/tv/tvguide.py (original)
+++ branches/rel-1-7/freevo/src/tv/tvguide.py Fri Mar 21 12:55:30 2008
@@ -42,7 +42,7 @@
from event import *
import epg_xmltv, epg_types
-import record_client as ri
+import record_client
skin = skin.get_singleton()
skin.register('tv', ('screen', 'title', 'subtitle', 'view',
@@ -105,6 +105,7 @@
reload the list of scheduled programs and check for overlapping
"""
+ _debug_('update_schedules(force=%r)' % (force), 2)
if not force and self.last_update + 60 > time.time():
return
@@ -112,16 +113,12 @@
#if self.last_update + 1 > time.time():
# return
- upsoon = '%s/upsoon' % (config.FREEVO_CACHEDIR)
- if os.path.isfile(upsoon):
- os.unlink(upsoon)
-
- _debug_('update schedule',2)
+ _debug_('update schedule', 2)
self.last_update = time.time()
self.scheduled_programs = []
self.overlap_programs = []
self.favorite_programs = []
- (got_schedule, schedule) = ri.getScheduledRecordings()
+ (got_schedule, schedule) = tv.record_client.getScheduledRecordings()
util.misc.comingup(None, (got_schedule, schedule))
Modified: branches/rel-1-7/freevo/src/util/misc.py
==============================================================================
--- branches/rel-1-7/freevo/src/util/misc.py (original)
+++ branches/rel-1-7/freevo/src/util/misc.py Fri Mar 21 12:55:30 2008
@@ -395,8 +395,7 @@
def comingup(items=None, scheduledRecordings=None):
""" Coming Up for TV schedule """
- print 'comingup(items=%r, scheduledRecordings=%r)' % (items,
scheduledRecordings)
- import tv.record_client as ri
+ import tv.record_client
import time
import codecs
@@ -411,7 +410,7 @@
cache.close()
return result
- (status, recordings) = ri.getScheduledRecordings()
+ (status, recordings) = tv.record_client.getScheduledRecordings()
else:
(status, recordings) = scheduledRecordings
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog