~andrewsomething/exaile/karmic

« back to all changes in this revision

Viewing changes to plugins/cd/_cdguipanel.py

  • Committer: Aren Olson
  • Date: 2009-09-12 00:36:59 UTC
  • Revision ID: reacocard@gmail.com-20090912003659-w373sg0n04uoa8op
remove useless files, add soem of the fixes from lp bug 420019

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
from xl.nls import gettext as _
2
 
 
3
 
from xlgui.panel import device
4
 
from xl import event
5
 
 
6
 
import imp, os
7
 
importer = imp.load_source("importer", 
8
 
        os.path.join(os.path.dirname(__file__), "importer.py"))
9
 
 
10
 
import gobject
11
 
import logging, threading
12
 
logger = logging.getLogger(__name__)
13
 
 
14
 
class CDImportThread(threading.Thread):
15
 
    def __init__(self, imp, panel):
16
 
        threading.Thread.__init__(self)
17
 
        self.setDaemon(True)
18
 
 
19
 
        self.imp = imp
20
 
        self.panel = panel
21
 
 
22
 
    def stop_thread(self):
23
 
        self.imp.stop()
24
 
 
25
 
    def progress_update(self, progress=None):
26
 
        if progress is None:
27
 
            progress = self.imp.get_progress()*100
28
 
        event.log_event("progress_update", self, progress)
29
 
        return True
30
 
 
31
 
    def run(self):
32
 
        id = gobject.timeout_add(1000, self.progress_update)
33
 
        self.imp.do_import()
34
 
        gobject.source_remove(id)
35
 
        self.progress_update(100)
36
 
 
37
 
 
38
 
class CDPanel(device.FlatPlaylistDevicePanel):
39
 
    def __init__(self, *args):
40
 
        device.FlatPlaylistDevicePanel.__init__(self, *args)
41
 
        self.__importing = False
42
 
 
43
 
        event.add_callback(self._tree_queue_draw, 'cddb_info_retrieved')
44
 
 
45
 
    def _tree_queue_draw(self, type, cdplaylist, object=None):
46
 
        if not hasattr(self.fppanel, 'tree'): 
47
 
            return
48
 
 
49
 
        if cdplaylist in self.device.playlists:
50
 
            logger.info("Calling queue_draw for %s" % str(cdplaylist))
51
 
            self.fppanel.tree.queue_draw()
52
 
 
53
 
    def do_import(self, tracks):
54
 
        if self.__importing:
55
 
            return
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')
61
 
 
62
 
 
63
 
    def _import_finish(self):
64
 
        self.__importing = False
65