Author: dmeyer
Date: Tue Nov 20 11:35:51 2007
New Revision: 10149

Log:
split browse function

Modified:
   trunk/ui/src/directory.py

Modified: trunk/ui/src/directory.py
==============================================================================
--- trunk/ui/src/directory.py   (original)
+++ trunk/ui/src/directory.py   Tue Nov 20 11:35:51 2007
@@ -330,14 +330,10 @@
     @kaa.notifier.yield_execution()
     def browse(self):
         """
-        build the items for the directory
+        Show the items in the directory in the menu
         """
         # FIXME: check for password
 
-        play_items = []
-        dir_items  = []
-        pl_items   = []
-
         # Delete possible skin settings
         # FIXME: This is a very bad handling, maybe signals?
         if hasattr(self.item_menu, 'skin_default_has_description'):
@@ -350,12 +346,39 @@
            MessageWindow(_('Directory does not exist')).show()
             return
 
-        if self.query is None:
-            self.query = kaa.beacon.query(parent=self.info)
-            if not self.query.valid:
-                yield self.query.wait()
-            self.query.signals['changed'].connect_weak(self.browse)
-            self.query.monitor()
+        self.item_menu = None
+        self.query = kaa.beacon.query(parent=self.info)
+        if not self.query.valid:
+            yield self.query.wait()
+        self.query.signals['changed'].connect_weak(self._update_listing)
+        self.query.monitor()
+
+        items = self._get_items()
+        item_menu = menu.Menu(self.name, items, type = self.menu_type)
+        item_menu.autoselect = self['cfg:autoplay_single_item']
+        self.get_menustack().pushmenu(item_menu)
+        self.item_menu = weakref(item_menu)
+
+
+    def _update_listing(self):
+        """
+        Update the listing.
+        """
+        if self.item_menu:
+            # not in the stack anymore
+            self.query = None
+        else:
+            # update menu
+            self.item_menu.set_items(self._get_items())
+
+
+    def _get_items(self):
+        """
+        Build the items for the directory
+        """
+        play_items = []
+        dir_items  = []
+        pl_items   = []
 
         listing = self.query.get(filter='extmap')
 
@@ -378,6 +401,7 @@
             dir_items.append(d)
 
         # remember listing
+        # FIXME: WHY?
         self.listing = listing
 
         # handle hide_played
@@ -446,26 +470,7 @@
             pl.autoplay = True
             items = [ pl ] + items
 
-
-        #
-        # action
-        #
-
-        if self.item_menu is not None:
-            # we could update it
-            if self.item_menu:
-                # still in the stack
-                self.item_menu.set_items(items)
-                return
-            # weakref is gone
-            self.query = None
-            return
-
-        # normal menu build
-        item_menu = menu.Menu(self.name, items, type = self.menu_type)
-        item_menu.autoselect = self['cfg:autoplay_single_item']
-        self.get_menustack().pushmenu(item_menu)
-        self.item_menu = weakref(item_menu)
+        return items
 
 
     def get_configure_items(self):

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
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