From ee6f9b86c3e8607a491eebba5e58947b79aca979 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 25 Feb 2015 11:31:26 +0530 Subject: [PATCH] Edit book: Advertise support for importable filetypes in the OS file associations --- src/calibre/linux.py | 7 +++++-- src/calibre/utils/winreg/default_programs.py | 5 ++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/calibre/linux.py b/src/calibre/linux.py index a66e7af437..d3aeaa47a9 100644 --- a/src/calibre/linux.py +++ b/src/calibre/linux.py @@ -347,7 +347,9 @@ class ZshCompleter(object): # {{{ def do_ebook_edit(self, f): from calibre.ebooks.oeb.polish.main import SUPPORTED + from calibre.ebooks.oeb.polish.import_book import IMPORTABLE from calibre.gui2.tweak_book.main import option_parser + tweakable_fmts = SUPPORTED | IMPORTABLE parser = option_parser() opt_lines = [] for opt in parser.option_list: @@ -392,7 +394,7 @@ _ebook_edit() { return 1 } -''' % (opt_lines, '|'.join(SUPPORTED)) + '\n\n').encode('utf-8')) +''' % (opt_lines, '|'.join(tweakable_fmts)) + '\n\n').encode('utf-8')) def do_calibredb(self, f): import calibre.library.cli as cli @@ -815,6 +817,7 @@ class PostInstall: f.write('MimeType=%s;\n'%';'.join(mimetypes)) from calibre.ebooks.oeb.polish.main import SUPPORTED + from calibre.ebooks.oeb.polish.import_book import IMPORTABLE f = open('calibre-lrfviewer.desktop', 'wb') f.write(VIEWER) f.close() @@ -823,7 +826,7 @@ class PostInstall: write_mimetypes(f) f = open('calibre-ebook-edit.desktop', 'wb') f.write(ETWEAK) - mt = [guess_type('a.' + x.lower())[0] for x in SUPPORTED] + mt = {guess_type('a.' + x.lower())[0] for x in (SUPPORTED|IMPORTABLE)} - {None, 'application/octet-stream'} f.write('MimeType=%s;\n'%';'.join(mt)) f.close() f = open('calibre-gui.desktop', 'wb') diff --git a/src/calibre/utils/winreg/default_programs.py b/src/calibre/utils/winreg/default_programs.py index 10eee0bd98..ce43ca5c3a 100644 --- a/src/calibre/utils/winreg/default_programs.py +++ b/src/calibre/utils/winreg/default_programs.py @@ -43,13 +43,16 @@ def default_programs(): def extensions(basename): if basename == 'calibre.exe': from calibre.ebooks import BOOK_EXTENSIONS + # We remove rar and zip as they interfere with 7-zip associations + # http://www.mobileread.com/forums/showthread.php?t=256459 return set(BOOK_EXTENSIONS) - {'rar', 'zip'} if basename == 'ebook-viewer.exe': from calibre.customize.ui import all_input_formats return set(all_input_formats()) if basename == 'ebook-edit.exe': from calibre.ebooks.oeb.polish.main import SUPPORTED - return set(SUPPORTED) + from calibre.ebooks.oeb.polish.import_book import IMPORTABLE + return SUPPORTED | IMPORTABLE class NotAllowed(ValueError): pass