calibredb:Fix regression causing calibredb to not notify the main GUI of a change

This commit is contained in:
Kovid Goyal 2009-09-10 18:30:44 -06:00
parent b9806d254d
commit 09ab1df5bb
3 changed files with 32 additions and 22 deletions

View File

@ -20,6 +20,7 @@ from calibre.constants import __version__, __appname__, \
from calibre.utils.filenames import ascii_filename from calibre.utils.filenames import ascii_filename
from calibre.ptempfile import PersistentTemporaryFile from calibre.ptempfile import PersistentTemporaryFile
from calibre.utils.config import prefs, dynamic from calibre.utils.config import prefs, dynamic
from calibre.utils.ipc import ADDRESS, RC
from calibre.utils.ipc.server import Server from calibre.utils.ipc.server import Server
from calibre.gui2 import APP_UID, warning_dialog, choose_files, error_dialog, \ from calibre.gui2 import APP_UID, warning_dialog, choose_files, error_dialog, \
initialize_file_icon_provider, question_dialog,\ initialize_file_icon_provider, question_dialog,\
@ -50,9 +51,6 @@ from calibre.ebooks import BOOK_EXTENSIONS
from calibre.library.database2 import LibraryDatabase2, CoverCache from calibre.library.database2 import LibraryDatabase2, CoverCache
from calibre.gui2.dialogs.confirm_delete import confirm from calibre.gui2.dialogs.confirm_delete import confirm
ADDRESS = r'\\.\pipe\CalibreGUI' if iswindows else \
os.path.expanduser('~/.calibre-gui.socket')
class SaveMenu(QMenu): class SaveMenu(QMenu):
def __init__(self, parent): def __init__(self, parent):
@ -1882,14 +1880,6 @@ def cant_start(msg=_('If you are sure it is not running')+', ',
d.exec_() d.exec_()
raise SystemExit(1) raise SystemExit(1)
class RC(Thread):
def run(self):
from multiprocessing.connection import Client
self.done = False
self.conn = Client(ADDRESS)
self.done = True
def communicate(args): def communicate(args):
t = RC() t = RC()
t.start() t.start()

View File

@ -13,11 +13,6 @@ from urllib import quote
from calibre import terminal_controller, preferred_encoding, prints from calibre import terminal_controller, preferred_encoding, prints
from calibre.utils.config import OptionParser, prefs from calibre.utils.config import OptionParser, prefs
try:
from calibre.utils.single_qt_application import send_message
send_message
except:
send_message = None
from calibre.ebooks.metadata.meta import get_metadata from calibre.ebooks.metadata.meta import get_metadata
from calibre.library.database2 import LibraryDatabase2 from calibre.library.database2 import LibraryDatabase2
from calibre.ebooks.metadata.opf2 import OPFCreator, OPF from calibre.ebooks.metadata.opf2 import OPFCreator, OPF
@ -102,6 +97,19 @@ STANZA_TEMPLATE='''\
</feed> </feed>
''' '''
def send_message(msg=''):
from calibre.utils.ipc import RC
import time
t = RC()
t.start()
time.sleep(3)
if t.done:
t.conn.send('refreshdb:'+msg)
t.conn.close()
def get_parser(usage): def get_parser(usage):
parser = OptionParser(usage) parser = OptionParser(usage)
go = parser.add_option_group('GLOBAL OPTIONS') go = parser.add_option_group('GLOBAL OPTIONS')
@ -314,8 +322,7 @@ def do_add(db, paths, one_book_per_directory, recurse, add_duplicates):
print >>sys.stderr, '\t', title+':' print >>sys.stderr, '\t', title+':'
print >>sys.stderr, '\t\t ', path print >>sys.stderr, '\t\t ', path
if send_message is not None: send_message()
send_message('refreshdb:', 'calibre GUI')
finally: finally:
sys.stdout = orig sys.stdout = orig
@ -356,8 +363,7 @@ def do_remove(db, ids):
for y in x: for y in x:
db.delete_book(y) db.delete_book(y)
if send_message is not None: send_message()
send_message('refreshdb:', 'calibre GUI')
def remove_option_parser(): def remove_option_parser():
return get_parser(_( return get_parser(_(
@ -484,8 +490,7 @@ def do_set_metadata(db, id, stream):
mi = OPF(stream) mi = OPF(stream)
db.set_metadata(id, mi) db.set_metadata(id, mi)
do_show_metadata(db, id, False) do_show_metadata(db, id, False)
if send_message is not None: send_message()
send_message('refreshdb:', 'calibre GUI')
def set_metadata_option_parser(): def set_metadata_option_parser():
return get_parser(_( return get_parser(_(

View File

@ -6,5 +6,20 @@ __license__ = 'GPL v3'
__copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>' __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os
from threading import Thread
from calibre.constants import iswindows
ADDRESS = r'\\.\pipe\CalibreGUI' if iswindows else \
os.path.expanduser('~/.calibre-gui.socket')
class RC(Thread):
def run(self):
from multiprocessing.connection import Client
self.done = False
self.conn = Client(ADDRESS)
self.done = True