diff --git a/src/calibre/devices/eb600/driver.py b/src/calibre/devices/eb600/driver.py index f1303fa956..5183aae96a 100644 --- a/src/calibre/devices/eb600/driver.py +++ b/src/calibre/devices/eb600/driver.py @@ -154,7 +154,7 @@ class ECLICTO(EB600): name = 'eClicto Device Interface' gui_name = 'eClicto' - FORMATS = ['epub', 'pdf', 'txt'] + FORMATS = ['epub', 'pdf', 'htm', 'html', 'txt'] VENDOR_NAME = 'ECLICTO' WINDOWS_MAIN_MEM = 'EBOOK' diff --git a/src/calibre/devices/hanvon/driver.py b/src/calibre/devices/hanvon/driver.py index 192c3e7fdb..ea8d604dd5 100644 --- a/src/calibre/devices/hanvon/driver.py +++ b/src/calibre/devices/hanvon/driver.py @@ -23,7 +23,7 @@ class N516(USBMS): VENDOR_ID = [0x0525] PRODUCT_ID = [0xa4a5] - BCD = [0x323] + BCD = [0x323, 0x326] VENDOR_NAME = 'INGENIC' WINDOWS_MAIN_MEM = '_FILE-STOR_GADGE' diff --git a/src/calibre/ebooks/pdf/reflow.py b/src/calibre/ebooks/pdf/reflow.py index 3fef8c30ce..8203b49dde 100644 --- a/src/calibre/ebooks/pdf/reflow.py +++ b/src/calibre/ebooks/pdf/reflow.py @@ -170,6 +170,10 @@ class Column(object): return self.elements[idx-1] +class Box(list): + + def __init__(self, type='p'): + self.type = type class Region(object): @@ -222,6 +226,10 @@ class Region(object): for x in self.columns: self.elements.extend(x) + # Find block quotes + indented = [i for (i, x) in enumerate(self.elements) if x.indent_fraction >= 0.2] + + class Page(object): diff --git a/src/calibre/gui2/notify.py b/src/calibre/gui2/notify.py index 76f32c5ce6..385fdd92b7 100644 --- a/src/calibre/gui2/notify.py +++ b/src/calibre/gui2/notify.py @@ -85,8 +85,21 @@ class QtNotifier(Notifier): def __call__(self, body, summary=None, replaces_id=None, timeout=0): timeout, body, summary = self.get_msg_parms(timeout, body, summary) if self.systray is not None: - self.systray.showMessage(summary, body, self.systray.Information, - timeout) + try: + hide = False + try: + if not isinstance(body, unicode): + body = body.decode('utf-8') + if isosx and not self.systray.isVisible(): + self.systray.show() + hide = True + self.systray.showMessage(summary, body, self.systray.Information, + timeout) + finally: + if hide: + self.systray.hide() + except: + pass class GrowlNotifier(Notifier): @@ -127,10 +140,10 @@ def get_notifier(systray=None): ans = FDONotifier() if not ans.ok: ans = None - if isosx: - ans = GrowlNotifier() - if not ans.ok: - ans = None + #if isosx: + # ans = GrowlNotifier() + # if not ans.ok: + # ans = None if ans is None: ans = QtNotifier(systray) if not ans.ok: diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 157a7eabf8..714b2c3a27 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -357,7 +357,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): cm.addAction(_('Bulk convert')) cm.addSeparator() ac = cm.addAction( - _('Create catalog')) + _('Create catalog of books in your calibre library')) ac.triggered.connect(self.generate_catalog) self.action_convert.setMenu(cm) self._convert_single_hook = partial(self.convert_ebook, bulk=False)