Ejecting removes device from GUI

This commit is contained in:
Kovid Goyal 2009-06-05 09:09:26 -07:00
parent 1b52e46586
commit d620bb43d3
2 changed files with 17 additions and 4 deletions

View File

@ -79,7 +79,7 @@ class DevicePlugin(Plugin):
are pending GUI jobs that need to communicate with the device. are pending GUI jobs that need to communicate with the device.
''' '''
raise NotImplementedError() raise NotImplementedError()
def set_progress_reporter(self, report_progress): def set_progress_reporter(self, report_progress):
''' '''
@param report_progress: Function that is called with a % progress @param report_progress: Function that is called with a % progress

View File

@ -77,7 +77,8 @@ class DeviceManager(Thread):
''' '''
Thread.__init__(self) Thread.__init__(self)
self.setDaemon(True) self.setDaemon(True)
self.devices = [[d, False] for d in device_plugins()] # [Device driver, Showing in GUI, Ejected]
self.devices = [[d, False, False] for d in device_plugins()]
self.device = None self.device = None
self.device_class = None self.device_class = None
self.sleep_time = sleep_time self.sleep_time = sleep_time
@ -93,6 +94,8 @@ class DeviceManager(Thread):
for device in self.devices: for device in self.devices:
connected = self.scanner.is_device_connected(device[0]) connected = self.scanner.is_device_connected(device[0])
if connected and not device[1]: if connected and not device[1]:
if device[2]:
continue
try: try:
dev = device[0] dev = device[0]
dev.reset() dev.reset()
@ -119,13 +122,23 @@ class DeviceManager(Thread):
job.abort(Exception(_('Device no longer connected.'))) job.abort(Exception(_('Device no longer connected.')))
except Queue.Empty: except Queue.Empty:
break break
device[2] = False
self.device = None self.device = None
self.connected_slot(False) self.connected_slot(False)
device[1] ^= True device[1] ^= True
def umount_device(self): def umount_device(self):
self.device.eject() if self.device is not None:
self.device = None self.device.eject()
dev = None
for x in self.devices:
if x[0] is self.device:
dev = x
break
if dev is not None:
dev[2] = True
self.connected_slot(False)
def next(self): def next(self):
if not self.jobs.empty(): if not self.jobs.empty():