mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Fix #6589 (calibre crashes when trying to switch databases with device attached)
This commit is contained in:
parent
1a38a4b35c
commit
0a7835a000
@ -8,12 +8,12 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import os
|
import os
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
|
||||||
from PyQt4.Qt import QMenu
|
from PyQt4.Qt import QMenu, Qt
|
||||||
|
|
||||||
from calibre import isbytestring
|
from calibre import isbytestring
|
||||||
from calibre.constants import filesystem_encoding
|
from calibre.constants import filesystem_encoding
|
||||||
from calibre.utils.config import prefs
|
from calibre.utils.config import prefs
|
||||||
from calibre.gui2 import gprefs, warning_dialog
|
from calibre.gui2 import gprefs, warning_dialog, Dispatcher
|
||||||
from calibre.gui2.actions import InterfaceAction
|
from calibre.gui2.actions import InterfaceAction
|
||||||
|
|
||||||
class LibraryUsageStats(object):
|
class LibraryUsageStats(object):
|
||||||
@ -76,12 +76,14 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
|
|
||||||
def genesis(self):
|
def genesis(self):
|
||||||
self.count_changed(0)
|
self.count_changed(0)
|
||||||
self.qaction.triggered.connect(self.choose_library)
|
self.qaction.triggered.connect(self.choose_library,
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
|
|
||||||
self.stats = LibraryUsageStats()
|
self.stats = LibraryUsageStats()
|
||||||
self.create_action(spec=(_('Switch to library...'), 'lt.png', None,
|
self.create_action(spec=(_('Switch to library...'), 'lt.png', None,
|
||||||
None), attr='action_choose')
|
None), attr='action_choose')
|
||||||
self.action_choose.triggered.connect(self.choose_library)
|
self.action_choose.triggered.connect(self.choose_library,
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
self.choose_menu = QMenu(self.gui)
|
self.choose_menu = QMenu(self.gui)
|
||||||
self.choose_menu.addAction(self.action_choose)
|
self.choose_menu.addAction(self.action_choose)
|
||||||
self.qaction.setMenu(self.choose_menu)
|
self.qaction.setMenu(self.choose_menu)
|
||||||
@ -95,7 +97,8 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
attr='switch_action%d'%i)
|
attr='switch_action%d'%i)
|
||||||
self.switch_actions.append(ac)
|
self.switch_actions.append(ac)
|
||||||
ac.setVisible(False)
|
ac.setVisible(False)
|
||||||
ac.triggered.connect(partial(self.qs_requested, i))
|
ac.triggered.connect(partial(self.qs_requested, i),
|
||||||
|
type=Qt.QueuedConnection)
|
||||||
self.choose_menu.addAction(ac)
|
self.choose_menu.addAction(ac)
|
||||||
|
|
||||||
def library_name(self):
|
def library_name(self):
|
||||||
@ -121,8 +124,8 @@ class ChooseLibraryAction(InterfaceAction):
|
|||||||
self.quick_menu.clear()
|
self.quick_menu.clear()
|
||||||
self.qs_locations = [i[1] for i in locations]
|
self.qs_locations = [i[1] for i in locations]
|
||||||
for name, loc in locations:
|
for name, loc in locations:
|
||||||
self.quick_menu.addAction(name, partial(self.switch_requested,
|
self.quick_menu.addAction(name, Dispatcher(partial(self.switch_requested,
|
||||||
loc))
|
loc)))
|
||||||
|
|
||||||
for i, x in enumerate(locations[:len(self.switch_actions)]):
|
for i, x in enumerate(locations[:len(self.switch_actions)]):
|
||||||
name, loc = x
|
name, loc = x
|
||||||
|
Loading…
x
Reference in New Issue
Block a user