Author: dmeyer
Date: Tue May 1 11:19:01 2007
New Revision: 9535
Modified:
trunk/ui/src/audio/audiodiskitem.py
trunk/ui/src/audio/interface.py
trunk/ui/src/directory.py
trunk/ui/src/event.py
trunk/ui/src/fxditem.py
trunk/ui/src/games/emulator.py
trunk/ui/src/gui/areas/listing_area.py
trunk/ui/src/gui/imagelib.py
trunk/ui/src/image/fxdhandler.py
trunk/ui/src/image/interface.py
trunk/ui/src/mediamenu.py
trunk/ui/src/menu/menu.py
trunk/ui/src/menu/plugin.py
trunk/ui/src/menu/stack.py
trunk/ui/src/playlist.py
trunk/ui/src/video/database.py
trunk/ui/src/video/interface.py
Log:
Clean up the display_type mess. It is now media_type for
most modules. Only directory.py has an extra menu_type
to have a different video menu when shown in the tv
part.
Modified: trunk/ui/src/audio/audiodiskitem.py
==============================================================================
--- trunk/ui/src/audio/audiodiskitem.py (original)
+++ trunk/ui/src/audio/audiodiskitem.py Tue May 1 11:19:01 2007
@@ -95,5 +95,5 @@
# d.name = _('Data files on disc')
# items.append(d)
- item_menu = Menu(self.name, items, type = self.display_type)
+ item_menu = Menu(self.name, items, type = 'audio')
self.pushmenu(item_menu)
Modified: trunk/ui/src/audio/interface.py
==============================================================================
--- trunk/ui/src/audio/interface.py (original)
+++ trunk/ui/src/audio/interface.py Tue May 1 11:19:01 2007
@@ -63,7 +63,7 @@
"""
Plugin to handle all kinds of audio items
"""
- mediatype = [ 'audio' ]
+ possible_media_types = [ 'audio' ]
def plugin_activate(self, level):
"""
Modified: trunk/ui/src/directory.py
==============================================================================
--- trunk/ui/src/directory.py (original)
+++ trunk/ui/src/directory.py Tue May 1 11:19:01 2007
@@ -51,7 +51,7 @@
from menu import Files, Action, ActionItem, MediaPlugin
from playlist import Playlist
-from event import OSD_MESSAGE, DIRECTORY_CHANGE_DISPLAY_TYPE, \
+from event import OSD_MESSAGE, DIRECTORY_CHANGE_MENU_TYPE, \
DIRECTORY_TOGGLE_HIDE_PLAYED
from application import MessageWindow
@@ -125,6 +125,15 @@
type = 'dir'
def __init__(self, directory, parent, name = '', type = None):
+
+ # store type as menu_type and go on handling it as media_type
+ # with tv replaced by video. Only DirItem has a difference between
+ # media_type and menu_type with the extra tv value. This is needed
+ # to show a tv based skin when browsing a dir from the tv plugin.
+ self.menu_type = type
+ if type == 'tv':
+ type = 'video'
+
Playlist.__init__(self, parent=parent, type=type)
self.item_menu = None
@@ -144,14 +153,10 @@
if self['show_all_items']:
# FIXME: no way to set this
- self.display_type = None
-
- # set tv to video now
- if self.display_type == 'tv':
- type = 'video'
+ self.media_type = None
# Check media plugins if they want to add something
- for p in MediaPlugin.plugins(type):
+ for p in MediaPlugin.plugins(self.media_type):
p.dirinfo(self)
@@ -165,23 +170,20 @@
if key.startswith('num_'):
# special keys to get number of playable items or the
# sum of all items in that directory
- display_type = self.display_type
- if self.display_type == 'tv':
- display_type = 'video'
# get number of items info from beacon
num_items_all = self.info.get('freevo_num_items') or {}
- num_items = num_items_all.get(display_type)
+ num_items = num_items_all.get(self.media_type)
if num_items and num_items[0] != self.info.get('mtime'):
num_items = None
if not num_items:
log.info('create metainfo for %s', self.filename)
listing =
kaa.beacon.query(parent=self.info).get(filter='extmap')
num_items = [ self.info.get('mtime'), 0 ]
- for p in MediaPlugin.plugins(display_type):
+ for p in MediaPlugin.plugins(self.media_type):
num_items[1] += p.count(self, listing)
num_items.append(len(listing.get('beacon:dir')))
if self.info.scanned():
- num_items_all[display_type] = num_items
+ num_items_all[self.media_type] = num_items
self.info['freevo_num_items'] = copy.copy(num_items_all)
if key == 'num_items':
return num_items[1] + num_items[2]
@@ -211,16 +213,14 @@
if isinstance(self.parent, DirItem):
return self.parent[key]
if key == 'config:sort':
- if self.display_type == 'tv':
+ if self.menu_type == 'tv':
return config.tvsort
return config.sort
# config does not know about hide_played
value = getattr(config, key[7:], False)
if isinstance(value, bool):
return value
- if self.display_type == 'tv':
- return 'video' in value.split(',')
- return self.display_type in value.split(',')
+ return self.media_type in value.split(',')
return Playlist.__getitem__(self, key)
@@ -231,21 +231,21 @@
if self.item_menu == None:
return Playlist.eventhandler(self, event)
- if event == DIRECTORY_CHANGE_DISPLAY_TYPE:
+ if event == DIRECTORY_CHANGE_MENU_TYPE:
possible = [ ]
for p in MediaPlugin.plugins():
- for t in p.mediatype:
+ for t in p.possible_media_types:
if not t in possible:
possible.append(t)
try:
- pos = possible.index(self.display_type)
+ pos = possible.index(self.media_type)
type = possible[(pos+1) % len(possible)]
except (IndexError, ValueError), e:
return Playlist.eventhandler(self, event)
- self.display_type = type
+ self.media_type = self.menu_type = type
self['tmp:autoplay_single_item'] = False
self.item_menu.autoselect = False
self.browse(update=True)
@@ -312,13 +312,9 @@
if not os.path.exists(self.filename):
MessageWindow(_('Directory does not exist')).show()
return
- display_type = self.display_type
- if self.display_type == 'tv':
- display_type = 'video'
-
query = kaa.beacon.query(parent=self.info, recursive=recursive)
pl = Playlist(playlist = query, parent = self,
- type=display_type, random=random)
+ type=self.media_type, random=random)
pl.play()
# Now this is ugly. If we do nothing 'pl' will be deleted by the
@@ -350,10 +346,6 @@
MessageWindow(_('Directory does not exist')).show()
return
- display_type = self.display_type
- if self.display_type == 'tv':
- display_type = 'video'
-
if not update:
self.query = kaa.beacon.query(parent=self.info)
self.query.signals['changed'].connect_weak(self.browse,
update=True)
@@ -364,7 +356,7 @@
# build items
#
# build play_items, pl_items and dir_items
- for p in MediaPlugin.plugins(display_type):
+ for p in MediaPlugin.plugins(self.media_type):
for i in p.get(self, listing):
if i.type == 'playlist':
pl_items.append(i)
@@ -375,7 +367,7 @@
# normal DirItems
for item in listing.get('beacon:dir'):
- d = DirItem(item, self, type = self.display_type)
+ d = DirItem(item, self, type = self.menu_type)
dir_items.append(d)
# remember listing
@@ -412,7 +404,7 @@
dir_items.sort(_sortfunc('name'))
# sort playlist by name or delete if they should not be displayed
- if self.display_type and not self.display_type in \
+ if self.menu_type and not self.menu_type in \
config.add_playlist_items.split(','):
pl_items = []
else:
@@ -429,7 +421,7 @@
# update num_items information if needed
num_items_all = self.info.get('freevo_num_items') or {}
- num_items = num_items_all.get(display_type)
+ num_items = num_items_all.get(self.media_type)
if num_items and (num_items[1] != len(play_items) + len(pl_items) or \
num_items[2] != len(dir_items)):
num_items[1] = len(play_items) + len(pl_items)
@@ -446,10 +438,10 @@
items = dir_items + pl_items + play_items
# random playlist (only active for audio)
- if self.display_type and self.display_type in \
+ if self.menu_type and self.menu_type in \
config.add_random_playlist and len(play_items) > 1:
pl = Playlist(_('Random playlist'), play_items, self,
- random=True)
+ random=True, type=self.media_type)
pl.autoplay = True
items = [ pl ] + items
@@ -464,7 +456,7 @@
return
# normal menu build
- item_menu = menu.Menu(self.name, items, type = display_type)
+ item_menu = menu.Menu(self.name, items, type = self.menu_type)
item_menu.autoselect = self['config:autoplay_single_item']
self.pushmenu(item_menu)
self.item_menu = weakref(item_menu)
Modified: trunk/ui/src/event.py
==============================================================================
--- trunk/ui/src/event.py (original)
+++ trunk/ui/src/event.py Tue May 1 11:19:01 2007
@@ -110,8 +110,8 @@
MENU_CHANGE_STYLE = Event('MENU_CHANGE_STYLE')
-DIRECTORY_CHANGE_DISPLAY_TYPE = Event('DIRECTORY_CHANGE_DISPLAY_TYPE')
-DIRECTORY_TOGGLE_HIDE_PLAYED = Event('DIRECTORY_TOGGLE_HIDE_PLAYED')
+DIRECTORY_CHANGE_MENU_TYPE = Event('DIRECTORY_CHANGE_MENU_TYPE')
+DIRECTORY_TOGGLE_HIDE_PLAYED = Event('DIRECTORY_TOGGLE_HIDE_PLAYED')
#
# TV module
Modified: trunk/ui/src/fxditem.py
==============================================================================
--- trunk/ui/src/fxditem.py (original)
+++ trunk/ui/src/fxditem.py Tue May 1 11:19:01 2007
@@ -53,12 +53,12 @@
"""
A simple container containing for items parsed from the fxd
"""
- def __init__(self, title, image, info, parent):
+ def __init__(self, title, image, info, parent, type):
Item.__init__(self, parent)
self.items = []
self.name = title
self.image = image
- self.display_type = parent.display_type
+ self.media_type = type
def actions(self):
@@ -72,7 +72,7 @@
"""
Show all items
"""
- self.pushmenu(Menu(self.name, self.items, type=self.display_type))
+ self.pushmenu(Menu(self.name, self.items, type=self.media_type))
@@ -94,15 +94,16 @@
if not fxd_files:
return []
- type = parent.display_type
- if type == 'tv':
- type = 'video'
+ # get media_type from parent
+ media_type = getattr(parent, 'media_type', None)
+ if media_type == 'tv':
+ media_type = 'video'
items = []
for fxd_file in fxd_files:
try:
doc = freevo.fxdparser.Document(fxd_file.filename)
- items.extend(self._parse(doc, parent, listing, type))
+ items.extend(self._parse(doc, parent, listing, media_type))
except:
log.exception("fxd file %s corrupt" % fxd_file.filename)
continue
@@ -130,7 +131,7 @@
self._callbacks.append((types, node, callback))
- def _parse(self, node, parent, listing, display_type):
+ def _parse(self, node, parent, listing, media_type):
"""
Internal parser function
"""
@@ -151,7 +152,7 @@
c.info[str(i.name)] = i.content
for types, tag, handler in self._callbacks:
- if display_type and types and not display_type in types:
+ if media_type and types and not media_type in types:
# wrong type
continue
if tag == c.name:
@@ -159,8 +160,8 @@
if i is not None:
items.append(i)
if c.name == 'container':
- con = Container(c.title, c.image, c.info, parent)
- con.items = self._parse(c, con, listing, display_type)
+ con = Container(c.title, c.image, c.info, parent, media_type)
+ con.items = self._parse(c, con, listing, media_type)
if con.items:
items.append(con)
return items
Modified: trunk/ui/src/games/emulator.py
==============================================================================
--- trunk/ui/src/games/emulator.py (original)
+++ trunk/ui/src/games/emulator.py Tue May 1 11:19:01 2007
@@ -65,7 +65,7 @@
"""
Add the emualtor items to the games menu
"""
- mediatype = [ 'games' ]
+ possible_media_types = [ 'games' ]
def roms(self, parent, listing, configitem):
"""
Modified: trunk/ui/src/gui/areas/listing_area.py
==============================================================================
--- trunk/ui/src/gui/areas/listing_area.py (original)
+++ trunk/ui/src/gui/areas/listing_area.py Tue May 1 11:19:01 2007
@@ -163,13 +163,12 @@
# menu to draw correctly
possible_types = {}
for i in menu.choices:
- if hasattr(i, 'display_type') and i.display_type:
- x = i.display_type
- if settings.types.has_key(x) and not possible_types.has_key(x):
- possible_types[x] = settings.types[x]
- x = '%s selected' % i.display_type
- if settings.types.has_key(x) and not possible_types.has_key(x):
- possible_types[x] = settings.types[x]
+ x = i.type
+ if settings.types.has_key(x) and not possible_types.has_key(x):
+ possible_types[x] = settings.types[x]
+ x = '%s selected' % i.type
+ if settings.types.has_key(x) and not possible_types.has_key(x):
+ possible_types[x] = settings.types[x]
if settings.types.has_key('default'):
possible_types['default'] = settings.types['default']
if settings.types.has_key('selected'):
Modified: trunk/ui/src/gui/imagelib.py
==============================================================================
--- trunk/ui/src/gui/imagelib.py (original)
+++ trunk/ui/src/gui/imagelib.py Tue May 1 11:19:01 2007
@@ -132,11 +132,6 @@
"""
width, height = size
- try:
- type = item.display_type
- except:
- type = item.type
-
image = None
imagefile = None
@@ -145,28 +140,30 @@
if item['rotation']:
image.rotate(item['rotation'])
+ type = item.type
if not image:
if not force:
return None
if item.type == 'dir':
if os.path.isfile('%s/mimetypes/folder_%s.png' % \
- (icon_dir, item.display_type)):
+ (icon_dir, item.media_type)):
imagefile = '%s/mimetypes/folder_%s.png' % \
- (icon_dir, item.display_type)
+ (icon_dir, item.media_type)
else:
imagefile = '%s/mimetypes/folder.png' % icon_dir
elif item.type == 'playlist':
if item.parent and \
os.path.isfile('%s/mimetypes/playlist_%s.png' % \
- (icon_dir, item.parent.display_type)):
+ (icon_dir, item.parent.media_type)):
imagefile = '%s/mimetypes/playlist_%s.png' % \
- (icon_dir, item.parent.display_type)
+ (icon_dir, item.parent.media_type)
else:
imagefile = '%s/mimetypes/playlist.png' % icon_dir
else:
+
try:
type = item.info['mime'].replace('/', '_')
except:
Modified: trunk/ui/src/image/fxdhandler.py
==============================================================================
--- trunk/ui/src/image/fxdhandler.py (original)
+++ trunk/ui/src/image/fxdhandler.py Tue May 1 11:19:01 2007
@@ -142,7 +142,7 @@
if files:
bg = Playlist(playlist=files, random = random,
- repeat=True, display_type='audio')
+ repeat=True, type='audio')
pl.background_playlist = bg
# add item to list
Modified: trunk/ui/src/image/interface.py
==============================================================================
--- trunk/ui/src/image/interface.py (original)
+++ trunk/ui/src/image/interface.py Tue May 1 11:19:01 2007
@@ -57,7 +57,7 @@
"""
Plugin to handle all kinds of image items
"""
- mediatype = [ 'image' ]
+ possible_media_types = [ 'image' ]
def plugin_activate(self, level):
"""
Modified: trunk/ui/src/mediamenu.py
==============================================================================
--- trunk/ui/src/mediamenu.py (original)
+++ trunk/ui/src/mediamenu.py Tue May 1 11:19:01 2007
@@ -57,7 +57,7 @@
def __init__(self, parent, title, type, items):
MainMenuItem.__init__(self, parent, skin_type=type)
- self.display_type = type
+ self.media_type = type
self.item_menu = None
kaa.beacon.signals['media.add'].connect_weak(self.media_change)
@@ -94,12 +94,12 @@
# path is a directory
if os.path.isdir(filename):
for d in listing.get('beacon:dir'):
- d = DirItem(d, self, name = title, type =
self.display_type)
+ d = DirItem(d, self, name = title, type =
self.media_type)
items.append(d)
continue
# normal file
- for p in MediaPlugin.plugins(self.display_type):
+ for p in MediaPlugin.plugins(self.media_type):
p_items = p.get(self, listing)
if title:
for i in p_items:
@@ -121,11 +121,11 @@
if media.mountpoint == '/':
continue
listing = kaa.beacon.wrap(media.root, filter='extmap')
- for p in MediaPlugin.plugins(self.display_type):
+ for p in MediaPlugin.plugins(self.media_type):
items.extend(p.get(self, listing))
for d in listing.get('beacon:dir'):
items.append(DirItem(d, self, name=media.label,
- type = self.display_type))
+ type = self.media_type))
return items
@@ -134,7 +134,7 @@
Generate items based on plugins
"""
items = []
- for p in MainMenuPlugin.plugins(self.display_type):
+ for p in MainMenuPlugin.plugins(self.media_type):
items += p.items( self )
return items
@@ -153,7 +153,7 @@
"""
# generate all other items
items = self._get_all_items()
- type = '%s main menu' % self.display_type
+ type = '%s main menu' % self.media_type
item_menu = Menu(self.menutitle, items, type = type,
reload_func = self.reload)
item_menu.autoselect = True
Modified: trunk/ui/src/menu/menu.py
==============================================================================
--- trunk/ui/src/menu/menu.py (original)
+++ trunk/ui/src/menu/menu.py Tue May 1 11:19:01 2007
@@ -209,10 +209,6 @@
for i in items:
if not self.selected.type == 'main':
i.image = self.selected.image
- if hasattr(self.selected, 'display_type'):
- i.display_type = self.selected.display_type
- else:
- i.display_type = self.selected.type
s = Menu(self.selected.name, items)
s.submenu = True
Modified: trunk/ui/src/menu/plugin.py
==============================================================================
--- trunk/ui/src/menu/plugin.py (original)
+++ trunk/ui/src/menu/plugin.py Tue May 1 11:19:01 2007
@@ -72,10 +72,10 @@
class MediaPlugin(plugin.Plugin):
"""
Plugin class for medias handled in a directory/playlist.
- self.mediatype is a list of display types where this media
- should be displayed, [] for always.
+ self.possible_media_types is a list of display types where this
+ media should be displayed, [] for always.
"""
- mediatype = []
+ possible_media_types = []
def suffix(self):
"""
@@ -115,16 +115,16 @@
return None
- def plugins(mediatype=None):
+ def plugins(media_type=None):
"""
- Static function to return all MediaPlugins for the given mediatype.
- If mediatype is None, return all MediaPlugins.
+ Static function to return all MediaPlugins for the given media_type.
+ If media_type is None, return all MediaPlugins.
"""
- if not mediatype:
+ if not media_type:
return MediaPlugin.plugin_list
ret = []
for p in MediaPlugin.plugin_list:
- if not p.mediatype or mediatype in p.mediatype:
+ if not p.possible_media_types or media_type in
p.possible_media_types:
ret.append(p)
return ret
Modified: trunk/ui/src/menu/stack.py
==============================================================================
--- trunk/ui/src/menu/stack.py (original)
+++ trunk/ui/src/menu/stack.py Tue May 1 11:19:01 2007
@@ -210,16 +210,13 @@
# TODO: it would be nice to remember the current menu stack
# but that is something we have to do inside mediamenu if it
# is possible at all.
- # FIXME: using display_type here is ugly
if len(self.menustack) > 1 and \
- hasattr(self.menustack[0].selected, 'display_type') and \
- self.menustack[0].selected.display_type == event.arg:
+ getattr(self.menustack[0].selected, 'media_type', None) ==
event.arg:
# already in that menu
return True
menu = self.menustack[0]
for item in menu.choices:
- if hasattr(item, 'display_type') and \
- item.display_type == event.arg:
+ if getattr(item, 'media_type', None) == event.arg:
self.menustack = [ menu ]
menu.select(item)
item.actions()[0]()
Modified: trunk/ui/src/playlist.py
==============================================================================
--- trunk/ui/src/playlist.py (original)
+++ trunk/ui/src/playlist.py Tue May 1 11:19:01 2007
@@ -64,7 +64,7 @@
type = 'playlist'
- def __init__(self, name='', playlist=[], parent=None, type=type,
+ def __init__(self, name='', playlist=[], parent=None, type=None,
random=False, autoplay=False, repeat=REPEAT_OFF):
"""
Init the playlist
@@ -74,17 +74,21 @@
1) Items
2) filenames
3) a list (directoryname, recursive=0|1)
+
+ type is either a media (video,audio,image) or None for all
"""
MediaItem.__init__(self, parent)
ItemList.__init__(self)
-
self.name = str_to_unicode(name)
+ if self.type == 'tv':
+ type = 'video'
+
# variables only for Playlist
self._playlist = playlist
self.autoplay = autoplay
self.repeat = repeat
- self.display_type = type
+ self.media_type = type
self.next_pos = None
# if playlist is empty (like for directory items) the playlist
# is always valid. The inheriting class has to make sure when
@@ -175,7 +179,7 @@
# Note: playlist is a list of Items, strings (filenames) or a
# beacon queries now.
- plugins = MediaPlugin.plugins(self.display_type)
+ plugins = MediaPlugin.plugins(self.media_type)
for item in self._playlist:
if isinstance(item, Item):
@@ -258,11 +262,7 @@
# randomize if needed
self._randomize()
- display_type = self.display_type
- if self.display_type == 'tv':
- display_type = 'video'
-
- menu = Menu(self.name, self.choices, type = display_type)
+ menu = Menu(self.name, self.choices, type = self.media_type)
self.pushmenu(menu)
@@ -296,7 +296,7 @@
play the playlist in random order
"""
Playlist(playlist=self.choices, parent=self.parent,
- type=self.display_type, random=True,
+ type=self.media_type, random=True,
repeat=self.repeat).play()
@@ -459,15 +459,13 @@
return a list of items based on the files
"""
items = []
- if parent and hasattr(parent, 'display_type'):
- display_type = parent.display_type
- else:
- display_type = None
+ # get media_type from parent
+ media_type = getattr(parent, 'media_type', None)
for suffix in self.suffix():
for filename in listing.get(suffix):
items.append(Playlist(playlist=filename.filename,
parent=parent,
- type=display_type))
+ type=media_type))
return items
@@ -504,7 +502,8 @@
items.append(query)
# create playlist object
- pl = Playlist(node.title, items, parent, parent.display_type,
+ media_type = getattr(parent, 'media_type', None)
+ pl = Playlist(node.title, items, parent, media_type,
random=node.getattr('random') == '1',
repeat=node.getattr('repeat') == '1')
pl.image = node.image
Modified: trunk/ui/src/video/database.py
==============================================================================
--- trunk/ui/src/video/database.py (original)
+++ trunk/ui/src/video/database.py Tue May 1 11:19:01 2007
@@ -77,7 +77,7 @@
# listing = Listing(discset)
# files += listing.get('fxd')
- for info in fxditem.mimetype.parse(None, files, [], display_type='video'):
+ for info in fxditem.mimetype.parse(None, files, [], type='video'):
if info.type != 'video':
continue
k = os.path.splitext(os.path.basename(info.files.fxd_file))[0]
Modified: trunk/ui/src/video/interface.py
==============================================================================
--- trunk/ui/src/video/interface.py (original)
+++ trunk/ui/src/video/interface.py Tue May 1 11:19:01 2007
@@ -57,7 +57,7 @@
"""
Plugin to handle all kinds of video items
"""
- mediatype = [ 'video' ]
+ possible_media_types = [ 'video' ]
def plugin_activate(self, level):
"""
-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog