Author: dmeyer
Date: Fri Mar 16 15:22:27 2007
New Revision: 9333
Modified:
trunk/ui/src/tv/plugins/genre.py
Log:
add genre patch from Tanja
Modified: trunk/ui/src/tv/plugins/genre.py
==============================================================================
--- trunk/ui/src/tv/plugins/genre.py (original)
+++ trunk/ui/src/tv/plugins/genre.py Fri Mar 16 15:22:27 2007
@@ -47,14 +47,17 @@
# get logging object
log = logging.getLogger('tv')
+EXCLUDE_GENRES = ('unknown', 'none', '', None)
+ALL = _('All Genre')
class GenreItem(Item):
"""
Item for the TV genre
"""
- def __init__(self, parent, name):
+ def __init__(self, parent, name, category=None):
Item.__init__(self, parent)
self.name = name
+ self.cat = category
def actions(self):
@@ -68,21 +71,71 @@
"""
items = []
# query epg in background
- query_data = kaa.epg.search(genre=self.name)
+ if self.cat:
+ query_data = kaa.epg.search(genre=self.name, category=self.cat)
+ else:
+ query_data = kaa.epg.search(genre=self.name)
yield query_data
# fetch epg data from InProgress object
query_data = query_data()
for prg in query_data:
items.append(ProgramItem(prg, self))
- self.get_menustack().pushmenu(Menu(self.name, items, type='tv program
menu'))
+ # create menu for programs
+ menu = Menu(self.name, items, type='tv program menu')
+ self.get_menustack().pushmenu(menu)
+
+
+class CategoryItem(Item):
+ """
+ Item for a TV category
+ """
+ def __init__(self, parent, name):
+ Item.__init__(self, parent)
+ self.name = name
+ self.parent = parent
+
+
+ def actions(self):
+ return [ Action(_('Browse list'), self.browse)]
+
+
+ @kaa.notifier.yield_execution()
+ def browse(self):
+ """
+ Find all genres that are in this category
+ """
+ items = []
+
+ if self.name==ALL:
+ # query epg in background for all genres
+ query_data = kaa.epg.search(attrs=['genre'], distinct=True)
+ else:
+ # query epg in background for a specific category
+ query_data = kaa.epg.search(attrs=['genre'], category=self.name,
+ distinct=True)
+
+ yield query_data
+ # fetch epg data from InProgress object
+ query_data = query_data()
+ query_data.sort()
+ if self.name == ALL:
+ for genre, in query_data:
+ if genre not in EXCLUDE_GENRES:
+ items.append(GenreItem(self.parent, genre))
+ else:
+ for genre, in query_data:
+ if genre not in EXCLUDE_GENRES:
+ items.append(GenreItem(self.parent, genre, self.name))
+ # create menu
+ menu = Menu(self.name, items, type='tv listing')
+ self.get_menustack().pushmenu(menu)
+
#
# the plugin is defined here
#
-EXCLUDE_GENRES = ('unknown', 'none', '', None)
-
class PluginInterface(MainMenuPlugin):
"""
Add 'Browse by Genre' to the TV menu.
@@ -94,15 +147,31 @@
Show all category.
"""
items = []
- genres = []
- # find the available category/genre in background
- query_data = kaa.epg.search(attrs=['genre'], distinct=True)
+
+ # look if there is category data in the epg data
+ query_data = kaa.epg.search(attrs=['category'], distinct=True)
yield query_data
# fetch epg data from InProgress object
query_data = query_data()
- for genre, in query_data:
- if genre not in EXCLUDE_GENRES:
- items.append(GenreItem(parent, genre))
+ query_data.sort()
+ if len(query_data) > 1:
+ items.append(CategoryItem(parent, ALL))
+ # there is category data in the epg
+ for cat, in query_data:
+ if cat not in EXCLUDE_GENRES:
+ items.append(CategoryItem(parent, cat))
+ else:
+ # maybe there is only genre data in the epg
+ query_data = kaa.epg.search(attrs=['genre'], distinct=True)
+ yield query_data
+ # fetch epg data from InProgress object
+ query_data = query_data()
+ query_data.sort()
+ for genre, in query_data:
+ if genre not in EXCLUDE_GENRES:
+ items.append(GenreItem(parent, genre))
+
+ # create menu
parent.pushmenu(Menu(_('Genre'), items, type='tv listing'))
@@ -110,4 +179,4 @@
"""
Return the main menu item.
"""
- return [ ActionItem(_('Browse by genre'), parent, self.category) ]
+ return [ ActionItem(_('Browse by Genre'), parent, self.category) ]
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog