[pitivi/ges: 173/287] utils: Move PathWalker to misc utils



commit a284457283a142fd8e0de1dd4c7371cfcb500b40
Author: Thibault Saunier <thibault saunier collabora com>
Date:   Mon Jan 9 17:19:47 2012 -0300

    utils: Move PathWalker to misc utils

 pitivi/sourcelist.py     |    5 +--
 pitivi/ui/Makefile.am    |    1 -
 pitivi/ui/pathwalker.py  |   64 ----------------------------------------------
 pitivi/utils/Makefile.am |    1 +
 pitivi/utils/misc.py     |   49 +++++++++++++++++++++++++++++++++--
 5 files changed, 49 insertions(+), 71 deletions(-)
---
diff --git a/pitivi/sourcelist.py b/pitivi/sourcelist.py
index 016787c..fedf45e 100644
--- a/pitivi/sourcelist.py
+++ b/pitivi/sourcelist.py
@@ -40,12 +40,11 @@ from pitivi.configure import get_pixmap_dir
 from pitivi.settings import GlobalSettings
 
 from pitivi.utils.ui import beautify_length
-from pitivi.utils.signal import SignalGroup
-from pitivi.utils.signal import Signallable
+from pitivi.utils.misc import PathWalker, quote_uri
+from pitivi.utils.signal import SignalGroup, Signallable
 from pitivi.utils.loggable import Loggable
 
 import pitivi.utils.ui as dnd
-from pitivi.ui.pathwalker import PathWalker, quote_uri
 from pitivi.ui.filechooserpreview import PreviewWidget
 from pitivi.ui.filelisterrordialog import FileListErrorDialog
 from pitivi.utils.ui import beautify_info, info_name, \
diff --git a/pitivi/ui/Makefile.am b/pitivi/ui/Makefile.am
index 003265d..fc3dc62 100644
--- a/pitivi/ui/Makefile.am
+++ b/pitivi/ui/Makefile.am
@@ -12,7 +12,6 @@ ui_PYTHON =			\
 	filelisterrordialog.py	\
 	gstwidget.py		\
 	mainwindow.py		\
-	pathwalker.py		\
 	prefs.py		\
 	preset.py		\
 	previewer.py		\
diff --git a/pitivi/utils/Makefile.am b/pitivi/utils/Makefile.am
index a207b65..72950b9 100644
--- a/pitivi/utils/Makefile.am
+++ b/pitivi/utils/Makefile.am
@@ -13,6 +13,7 @@ utils_PYTHON = 	\
 	system.py       \
 	threads.py      \
 	receiver.py     \
+	pathwalker.py   \
 	misc.py
 
 clean-local:
diff --git a/pitivi/utils/misc.py b/pitivi/utils/misc.py
index a433012..f367c12 100644
--- a/pitivi/utils/misc.py
+++ b/pitivi/utils/misc.py
@@ -30,11 +30,16 @@ import bisect
 import os
 import struct
 import time
+import threading
+
+from urlparse import urlsplit, urlunsplit
+from urllib import quote, unquote
 
-from pitivi.configure import APPMANUALURL_OFFLINE, APPMANUALURL_ONLINE
-from pitivi.utils.signal import Signallable
 import pitivi.utils.loggable as log
-from gettext import ngettext
+from pitivi.utils.threads import Thread
+
+from pitivi.configure import APPMANUALURL_OFFLINE, APPMANUALURL_ONLINE
+
 try:
     import cProfile
 except ImportError:
@@ -129,6 +134,44 @@ def get_filesystem_encoding():
     return sys.getfilesystemencoding() or "utf-8"
 
 
+def quote_uri(uri):
+    parts = list(urlsplit(uri, allow_fragments=False))
+    parts[2] = quote(parts[2])
+    uri = urlunsplit(parts)
+    return uri
+
+
+class PathWalker(Thread):
+    """
+    Thread for recursively searching in a list of directories
+    """
+
+    def __init__(self, paths, callback):
+        Thread.__init__(self)
+        self.log("New PathWalker for %s" % paths)
+        self.paths = paths
+        self.callback = callback
+        self.stopme = threading.Event()
+
+    def process(self):
+        for folder in self.paths:
+            self.log("folder %s" % folder)
+            if folder.startswith("file://"):
+                folder = unquote(folder[len("file://"):])
+            for path, dirs, files in os.walk(folder):
+                if self.stopme.isSet():
+                    return
+                uris = []
+                for afile in files:
+                    uris.append(quote_uri("file://%s" %
+                            os.path.join(path, afile)))
+                if uris:
+                    self.callback(uris)
+
+    def abort(self):
+        self.stopme.set()
+
+
 #------------------------------ Gst helpers   --------------------------------#
 def get_controllable_properties(element):
     """



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]