mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Allow running of multiple instances of the GUI. Removed HAL based detection code as it needs too many workarounds. Version bump to 0.3.0 final.
This commit is contained in:
parent
7a814b5401
commit
6472b7a24a
@ -37,6 +37,6 @@ the following rule in C{/etc/udev/rules.d/90-local.rules} ::
|
||||
You may have to adjust the GROUP and the location of the rules file to
|
||||
suit your distribution.
|
||||
"""
|
||||
__version__ = "0.3.0b6"
|
||||
__version__ = "0.3.0"
|
||||
__docformat__ = "epytext"
|
||||
__author__ = "Kovid Goyal <kovid@kovidgoyal.net>"
|
||||
|
@ -36,7 +36,8 @@ def installErrorHandler(dialog):
|
||||
|
||||
def _Warning(msg, e):
|
||||
print >> sys.stderr, msg
|
||||
if e: traceback.print_exc(e)
|
||||
if e:
|
||||
traceback.print_exc(e)
|
||||
|
||||
def Error(msg, e):
|
||||
if error_dialog:
|
||||
|
@ -493,7 +493,9 @@ class Main(QObject, Ui_MainWindow):
|
||||
self.df.setText(self.df_template.arg("").arg("").arg(""))
|
||||
self.device_tree.hide_reader(True)
|
||||
self.device_tree.hide_card(True)
|
||||
self.device_tree.selectionModel().reset()
|
||||
self.device_tree.selectionModel().reset()
|
||||
self.status('SONY Reader disconnected')
|
||||
self.progress(100)
|
||||
if self.device_view.isVisible():
|
||||
self.device_view.hide()
|
||||
self.library_view.selectionModel().reset()
|
||||
@ -519,12 +521,11 @@ class Main(QObject, Ui_MainWindow):
|
||||
self.status("Connecting to device")
|
||||
try:
|
||||
info = self.dev.get_device_information(end_session=False)
|
||||
except DeviceBusy, err:
|
||||
Error("Device is in use by another application", None)
|
||||
self.status("Device busy")
|
||||
except DeviceBusy:
|
||||
self.status("Device is in use by another application")
|
||||
self.window.setCursor(Qt.ArrowCursor)
|
||||
return
|
||||
except DeviceError, err:
|
||||
except DeviceError:
|
||||
self.dev.reconnect()
|
||||
self.thread().msleep(100)
|
||||
return self.establish_connection()
|
||||
@ -563,47 +564,12 @@ class DeviceConnectDetector(QObject):
|
||||
elif not is_connected and self.is_connected:
|
||||
self.is_connected = False
|
||||
self.emit(SIGNAL("device_removed()"))
|
||||
|
||||
def udi_is_device(self, udi):
|
||||
ans = False
|
||||
try:
|
||||
devobj = bus.get_object('org.freedesktop.Hal', udi)
|
||||
dev = dbus.Interface(devobj, "org.freedesktop.Hal.Device")
|
||||
properties = dev.GetAllProperties()
|
||||
vendor_id = int(properties["usb_device.vendor_id"]),
|
||||
product_id = int(properties["usb_device.product_id"])
|
||||
if self.dev.signature() == (vendor_id, product_id): ans = True
|
||||
except:
|
||||
self.device_detector = self.startTimer(1000)
|
||||
return ans
|
||||
|
||||
def device_added_callback(self, udi):
|
||||
if self.udi_is_device(udi):
|
||||
self.emit(SIGNAL("device_connected()"))
|
||||
|
||||
def device_removed_callback(self, udi):
|
||||
if self.udi_is_device(udi):
|
||||
self.emit(SIGNAL("device_removed()"))
|
||||
|
||||
|
||||
def __init__(self, dev):
|
||||
QObject.__init__(self)
|
||||
self.dev = dev
|
||||
try:
|
||||
raise Exception("DBUS doesn't support the Qt mainloop")
|
||||
import dbus
|
||||
bus = dbus.SystemBus()
|
||||
hal_manager_obj = bus.get_object('org.freedesktop.Hal',\
|
||||
'/org/freedesktop/Hal/Manager')
|
||||
hal_manager = dbus.Interface(hal_manager_obj,\
|
||||
'org.freedesktop.Hal.Manager')
|
||||
hal_manager.connect_to_signal('DeviceAdded', \
|
||||
self.device_added_callback)
|
||||
hal_manager.connect_to_signal('DeviceRemoved', \
|
||||
self.device_removed_callback)
|
||||
except Exception, e:
|
||||
#_Warning("Could not connect to HAL", e)
|
||||
self.is_connected = False
|
||||
self.device_detector = self.startTimer(1000)
|
||||
self.is_connected = False
|
||||
self.device_detector = self.startTimer(1000)
|
||||
|
||||
def main():
|
||||
from optparse import OptionParser
|
||||
|
Loading…
x
Reference in New Issue
Block a user