1
from xl.nls import gettext as _
3
from xlgui.panel import device
7
importer = imp.load_source("importer",
8
os.path.join(os.path.dirname(__file__), "importer.py"))
11
import logging, threading
12
logger = logging.getLogger(__name__)
14
class CDImportThread(threading.Thread):
15
def __init__(self, imp, panel):
16
threading.Thread.__init__(self)
22
def stop_thread(self):
25
def progress_update(self, progress=None):
27
progress = self.imp.get_progress()*100
28
event.log_event("progress_update", self, progress)
32
id = gobject.timeout_add(1000, self.progress_update)
34
gobject.source_remove(id)
35
self.progress_update(100)
38
class CDPanel(device.FlatPlaylistDevicePanel):
39
def __init__(self, *args):
40
device.FlatPlaylistDevicePanel.__init__(self, *args)
41
self.__importing = False
43
event.add_callback(self._tree_queue_draw, 'cddb_info_retrieved')
45
def _tree_queue_draw(self, type, cdplaylist, object=None):
46
if not hasattr(self.fppanel, 'tree'):
49
if cdplaylist in self.device.playlists:
50
logger.info("Calling queue_draw for %s" % str(cdplaylist))
51
self.fppanel.tree.queue_draw()
53
def do_import(self, tracks):
56
self.__importing == True
57
imp = importer.CDImporter(tracks)
58
impthread = CDImportThread(imp, self)
59
self.main.controller.progress_manager.add_monitor(impthread,
60
_("Importing CD..."), 'gtk-harddisk')
63
def _import_finish(self):
64
self.__importing = False