Author: dmeyer
Date: Tue May 1 09:40:11 2007
New Revision: 9533
Added:
trunk/ui/src/mediamenu.py
- copied, changed from r9482, /trunk/ui/src/plugins/mediamenu.py
Removed:
trunk/ui/src/plugins/mediamenu.py
Modified:
trunk/ui/src/audio/interface.py
trunk/ui/src/games/emulator.py
trunk/ui/src/image/interface.py
trunk/ui/src/video/interface.py
Log:
Make the video, image and audio plugins MediaPlugin and MainMenuPlugin.
The last changes to the plugin structure makes this possible. Move
mediamenu.py from plugins to root because it is no longer an extra
plugins. Games code needs to be adjusted, too.
Modified: trunk/ui/src/audio/interface.py
==============================================================================
--- trunk/ui/src/audio/interface.py (original)
+++ trunk/ui/src/audio/interface.py Tue May 1 09:40:11 2007
@@ -49,6 +49,8 @@
from freevo.ui import fxditem
from freevo.ui import config
from freevo.ui.menu import MediaPlugin
+from freevo.ui.mediamenu import MediaMenu
+from freevo.ui.mainmenu import MainMenuPlugin
# AudioItem
from audioitem import AudioItem
@@ -57,7 +59,7 @@
# fxdhandler for <audio> tags
from fxdhandler import fxdhandler
-class PluginInterface(MediaPlugin):
+class PluginInterface(MediaPlugin, MainMenuPlugin):
"""
Plugin to handle all kinds of audio items
"""
@@ -70,10 +72,6 @@
# add fxd parser callback
fxditem.add_parser(['audio'], 'audio', fxdhandler)
- # activate the mediamenu for audio
- args = _('Audio Main Menu'), 'audio', config.audio.items
- plugin.activate('mediamenu', level=level, args=args)
-
def suffix(self):
"""
@@ -114,3 +112,10 @@
elif not p_artist and not p_album and not artist and album:
# parent has no info, item no artist but album (== collection)
diritem.name = album
+
+
+ def items(self, parent):
+ """
+ MainMenuPlugin.items to return the audio item.
+ """
+ return [ MediaMenu(parent, _('Audio Main Menu'), 'audio',
config.audio.items) ]
Modified: trunk/ui/src/games/emulator.py
==============================================================================
--- trunk/ui/src/games/emulator.py (original)
+++ trunk/ui/src/games/emulator.py Tue May 1 09:40:11 2007
@@ -53,7 +53,7 @@
from freevo.ui.event import EJECT
from freevo.ui import plugin, application
from freevo.ui.menu import Item, Action, Menu
-from freevo.ui.plugins.mediamenu import MediaMenu
+from freevo.ui.mediamenu import MediaMenu
# games imports
import player as gameplayer
Modified: trunk/ui/src/image/interface.py
==============================================================================
--- trunk/ui/src/image/interface.py (original)
+++ trunk/ui/src/image/interface.py Tue May 1 09:40:11 2007
@@ -44,6 +44,8 @@
from freevo.ui import fxditem
from freevo.ui.menu import MediaPlugin
from freevo.ui import config
+from freevo.ui.mediamenu import MediaMenu
+from freevo.ui.mainmenu import MainMenuPlugin
# ImageItem
from imageitem import ImageItem
@@ -51,7 +53,7 @@
# fxdhandler for <slideshow> tags
from fxdhandler import fxdhandler
-class PluginInterface(MediaPlugin):
+class PluginInterface(MediaPlugin, MainMenuPlugin):
"""
Plugin to handle all kinds of image items
"""
@@ -64,10 +66,6 @@
# register the callbacks
fxditem.add_parser(['image'], 'slideshow', fxdhandler)
- # activate the mediamenu for image
- args = _('Image Main Menu'), 'image', config.image.items
- plugin.activate('mediamenu', level=level, args=args)
-
def suffix(self):
"""
@@ -85,3 +83,10 @@
for file in listing.get(suffix):
items.append(ImageItem(file, parent))
return items
+
+
+ def items(self, parent):
+ """
+ MainMenuPlugin.items to return the image item.
+ """
+ return [ MediaMenu(parent, _('Image Main Menu'), 'image',
config.image.items) ]
Copied: trunk/ui/src/mediamenu.py (from r9482,
/trunk/ui/src/plugins/mediamenu.py)
==============================================================================
--- /trunk/ui/src/plugins/mediamenu.py (original)
+++ trunk/ui/src/mediamenu.py Tue May 1 09:40:11 2007
@@ -45,36 +45,14 @@
from freevo.ui.mainmenu import MainMenuItem, MainMenuPlugin
from freevo.ui.menu import Menu, Item, MediaPlugin
-# from games import machine
-
# get logging object
log = logging.getLogger()
-class PluginInterface(MainMenuPlugin):
- """
- Plugin to integrate a mediamenu (video/audio/image/games) into
- the Freevo main menu. This plugin is auto-loaded when you activate
- the 'video', 'audio', 'image' or 'games' plugin.
- """
- def __init__(self, name, type, items):
- if not items:
- self.reason = 'No items defined for %s menu' % type
- return
- MainMenuPlugin.__init__(self)
- self._name = name
- self._type = type
- self._items = items
-
- def items(self, parent):
- return [ MediaMenu(parent, self._name, self._type, self._items) ]
-
-
-
class MediaMenu(MainMenuItem):
"""
- This is the main menu for audio, video and images. It displays the default
- directories and the ROM_DRIVES
+ This is the main menu for different media types. It displays the default
+ directories, the beacon mountpoints and sub-plugins.
"""
def __init__(self, parent, title, type, items):
@@ -83,8 +61,8 @@
self.display_type = type
self.item_menu = None
- kaa.beacon.signals['media.add'].connect(self.media_change)
- kaa.beacon.signals['media.remove'].connect(self.media_change)
+ kaa.beacon.signals['media.add'].connect_weak(self.media_change)
+ kaa.beacon.signals['media.remove'].connect_weak(self.media_change)
self.menutitle = title
@@ -101,31 +79,20 @@
kaa.beacon.monitor(filename)
- def main_menu_generate(self):
+ def _get_config_items(self):
"""
- generate the items for the main menu. This is needed when first
- generating the menu and if something changes by pressing the EJECT
- button
+ Generate items based on the config settings
"""
- # Generate the media menu, we need to create a new listing (that sucks)
- # But with the listing we have, the order will be mixed up.
items = []
-
- # add default items
for item in self._items:
try:
- # split the list on dir/file and title
- if hasattr(item, 'path'):
- # kaa.config object
- title = unicode(item.name)
- filename = item.path.replace('$(HOME)',
os.environ.get('HOME'))
- else:
- # only a filename is given
- title, filename = u'', item
-
+ # kaa.config object
+ title = unicode(item.name)
+ filename = item.path.replace('$(HOME)', os.environ.get('HOME'))
filename = os.path.abspath(filename)
listing =
kaa.beacon.query(filename=filename).get(filter='extmap')
+ # 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)
@@ -143,7 +110,14 @@
except:
log.exception('Error parsing %s' % str(item))
continue
+ return items
+
+ def _get_beacon_items(self):
+ """
+ Generate items based on beacon mountpoints
+ """
+ items = []
for media in kaa.beacon.media:
if media.mountpoint == '/':
continue
@@ -153,21 +127,33 @@
for d in listing.get('beacon:dir'):
items.append(DirItem(d, self, name=media.label,
type = self.display_type))
- # add all plugin data
- if self.display_type:
- for p in MainMenuPlugin.plugins(self.display_type):
- items += p.items( self )
+ return items
+
+ def _get_plugin_items(self):
+ """
+ Generate items based on plugins
+ """
+ items = []
+ for p in MainMenuPlugin.plugins(self.display_type):
+ items += p.items( self )
return items
+ def _get_all_items(self):
+ """
+ Return items for the menu.
+ """
+ return self._get_config_items() + self._get_beacon_items() + \
+ self._get_plugin_items()
+
+
def select(self):
"""
- display the (IMAGE|VIDEO|AUDIO|GAMES) main menu
+ Display the media menu
"""
# generate all other items
- items = self.main_menu_generate()
-
+ items = self._get_all_items()
type = '%s main menu' % self.display_type
item_menu = Menu(self.menutitle, items, type = type,
reload_func = self.reload)
@@ -182,7 +168,7 @@
Reload the menu. maybe a disc changed or some other plugin.
"""
if self.item_menu:
- self.item_menu.set_items(self.main_menu_generate())
+ self.item_menu.set_items(self._get_all_items())
def media_change(self, media):
@@ -190,10 +176,13 @@
Media change from kaa.beacon
"""
if self.item_menu:
- self.item_menu.set_items(self.main_menu_generate())
+ self.item_menu.set_items(self._get_all_items())
def eventhandler(self, event):
+ """
+ Eventhandler for the media menu
+ """
if event == EJECT and self.item_menu and \
self.item_menu.selected.info['parent'] == \
self.item_menu.selected.info['media']:
Modified: trunk/ui/src/video/interface.py
==============================================================================
--- trunk/ui/src/video/interface.py (original)
+++ trunk/ui/src/video/interface.py Tue May 1 09:40:11 2007
@@ -45,13 +45,15 @@
from freevo.ui import fxditem
from freevo.ui.menu import Files, MediaPlugin
from freevo.ui import config
+from freevo.ui.mediamenu import MediaMenu
+from freevo.ui.mainmenu import MainMenuPlugin
# video imports
from videoitem import VideoItem
import database
import fxdhandler
-class PluginInterface(MediaPlugin):
+class PluginInterface(MediaPlugin, MainMenuPlugin):
"""
Plugin to handle all kinds of video items
"""
@@ -67,10 +69,6 @@
# update the database
database.update()
-
- # activate the mediamenu for video
- args = _('Video Main Menu'), 'video', config.video.items
- plugin.activate('mediamenu', level=level, args=args)
def suffix(self):
@@ -103,3 +101,10 @@
def database(self):
return database
+
+
+ def items(self, parent):
+ """
+ MainMenuPlugin.items to return the video item.
+ """
+ return [ MediaMenu(parent, _('Video Main Menu'), 'video',
config.video.items) ]
-------------------------------------------------------------------------
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