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

Reply via email to