'Helper function for recursive listing. If info, show
tracks\' complete info; otherwise, just show items\' paths.'

def _listall(self, basepath, node, info=False):

    if isinstance(node, int):
        if info:
            item = self.lib.get_item(node)
            (yield self._item_info(item))
        else:
            (yield (u'file:    ' + basepath))
    else:
        for (name, itemid) in sorted(node.files.items()):
            newpath = self._path_join(basepath, name)
            for v in self._listall(newpath, itemid, info):
                (yield v)
        for (name, subdir) in sorted(node.dirs.items()):
            newpath = self._path_join(basepath, name)
            (yield (u'directory:    ' + newpath))
            for v in self._listall(newpath, subdir, info):
                (yield v)
