mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-31 14:33:54 -04:00
Add Open Book action
This commit is contained in:
parent
a7c8672233
commit
f571e6f066
@ -10,7 +10,7 @@ import tempfile, shutil
|
|||||||
|
|
||||||
from PyQt4.Qt import QObject
|
from PyQt4.Qt import QObject
|
||||||
|
|
||||||
from calibre.gui2 import error_dialog
|
from calibre.gui2 import error_dialog, choose_files
|
||||||
from calibre.ptempfile import PersistentTemporaryDirectory
|
from calibre.ptempfile import PersistentTemporaryDirectory
|
||||||
from calibre.ebooks.oeb.polish.main import SUPPORTED
|
from calibre.ebooks.oeb.polish.main import SUPPORTED
|
||||||
from calibre.ebooks.oeb.polish.container import get_container, clone_container
|
from calibre.ebooks.oeb.polish.container import get_container, clone_container
|
||||||
@ -37,7 +37,17 @@ class Boss(QObject):
|
|||||||
# TODO: Implement this
|
# TODO: Implement this
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def open_book(self, path):
|
def open_book(self, path=None):
|
||||||
|
if not self.check_dirtied():
|
||||||
|
return
|
||||||
|
|
||||||
|
if not hasattr(path, 'rpartition'):
|
||||||
|
path = choose_files(self.gui, 'open-book-for-tweaking', _('Choose book'),
|
||||||
|
[(_('Books'), [x.lower() for x in SUPPORTED])], all_files=False, select_only_single_file=True)
|
||||||
|
if not path:
|
||||||
|
return
|
||||||
|
path = path[0]
|
||||||
|
|
||||||
ext = path.rpartition('.')[-1].upper()
|
ext = path.rpartition('.')[-1].upper()
|
||||||
if ext not in SUPPORTED:
|
if ext not in SUPPORTED:
|
||||||
return error_dialog(self.gui, _('Unsupported format'),
|
return error_dialog(self.gui, _('Unsupported format'),
|
||||||
@ -45,9 +55,6 @@ class Boss(QObject):
|
|||||||
' Convert your book to one of these formats first.') % _(' and ').join(sorted(SUPPORTED)),
|
' Convert your book to one of these formats first.') % _(' and ').join(sorted(SUPPORTED)),
|
||||||
show=True)
|
show=True)
|
||||||
|
|
||||||
if not self.check_dirtied():
|
|
||||||
return
|
|
||||||
|
|
||||||
self.container_count = -1
|
self.container_count = -1
|
||||||
if self.tdir:
|
if self.tdir:
|
||||||
shutil.rmtree(self.tdir, ignore_errors=True)
|
shutil.rmtree(self.tdir, ignore_errors=True)
|
||||||
|
@ -6,13 +6,14 @@ from __future__ import (unicode_literals, division, absolute_import,
|
|||||||
__license__ = 'GPL v3'
|
__license__ = 'GPL v3'
|
||||||
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
|
||||||
|
|
||||||
from PyQt4.Qt import QDockWidget, Qt, QLabel, QIcon
|
from PyQt4.Qt import QDockWidget, Qt, QLabel, QIcon, QAction
|
||||||
|
|
||||||
from calibre.gui2.main_window import MainWindow
|
from calibre.gui2.main_window import MainWindow
|
||||||
from calibre.gui2.tweak_book import current_container
|
from calibre.gui2.tweak_book import current_container
|
||||||
from calibre.gui2.tweak_book.file_list import FileListWidget
|
from calibre.gui2.tweak_book.file_list import FileListWidget
|
||||||
from calibre.gui2.tweak_book.job import BlockingJob
|
from calibre.gui2.tweak_book.job import BlockingJob
|
||||||
from calibre.gui2.tweak_book.boss import Boss
|
from calibre.gui2.tweak_book.boss import Boss
|
||||||
|
from calibre.gui2.keyboard import Manager as KeyboardManager
|
||||||
|
|
||||||
class Main(MainWindow):
|
class Main(MainWindow):
|
||||||
|
|
||||||
@ -28,12 +29,11 @@ class Main(MainWindow):
|
|||||||
self.container = None
|
self.container = None
|
||||||
self.current_metadata = None
|
self.current_metadata = None
|
||||||
self.blocking_job = BlockingJob(self)
|
self.blocking_job = BlockingJob(self)
|
||||||
|
self.keyboard = KeyboardManager(parent=self, config_name='shortcuts/tweak')
|
||||||
|
|
||||||
self.file_list_dock = d = QDockWidget(_('&Files Browser'), self)
|
self.create_actions()
|
||||||
d.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
self.create_menubar()
|
||||||
self.file_list = FileListWidget(d)
|
self.create_docks()
|
||||||
d.setWidget(self.file_list)
|
|
||||||
self.addDockWidget(Qt.LeftDockWidgetArea, d)
|
|
||||||
|
|
||||||
self.status_bar = self.statusBar()
|
self.status_bar = self.statusBar()
|
||||||
self.l = QLabel('Placeholder')
|
self.l = QLabel('Placeholder')
|
||||||
@ -41,6 +41,35 @@ class Main(MainWindow):
|
|||||||
self.setCentralWidget(self.l)
|
self.setCentralWidget(self.l)
|
||||||
self.boss(self)
|
self.boss(self)
|
||||||
|
|
||||||
|
self.keyboard.finalize()
|
||||||
|
|
||||||
|
def create_actions(self):
|
||||||
|
group = _('Global Actions')
|
||||||
|
|
||||||
|
def reg(icon, text, target, sid, keys, description):
|
||||||
|
ac = QAction(QIcon(I(icon)), text, self)
|
||||||
|
ac.triggered.connect(target)
|
||||||
|
if isinstance(keys, type('')):
|
||||||
|
keys = (keys,)
|
||||||
|
self.keyboard.register_shortcut(
|
||||||
|
sid, unicode(ac.text()), default_keys=keys, description=description, action=ac, group=group)
|
||||||
|
self.addAction(ac)
|
||||||
|
return ac
|
||||||
|
|
||||||
|
self.action_open_book = reg('document_open.png', _('Open &book'), self.boss.open_book, 'open-book', 'Ctrl+O', _('Open a new book'))
|
||||||
|
|
||||||
|
def create_menubar(self):
|
||||||
|
b = self.menuBar()
|
||||||
|
f = b.addMenu(_('&File'))
|
||||||
|
f.addAction(self.action_open_book)
|
||||||
|
|
||||||
|
def create_docks(self):
|
||||||
|
self.file_list_dock = d = QDockWidget(_('&Files Browser'), self)
|
||||||
|
d.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
|
||||||
|
self.file_list = FileListWidget(d)
|
||||||
|
d.setWidget(self.file_list)
|
||||||
|
self.addDockWidget(Qt.LeftDockWidgetArea, d)
|
||||||
|
|
||||||
def resizeEvent(self, ev):
|
def resizeEvent(self, ev):
|
||||||
self.blocking_job.resize(ev.size())
|
self.blocking_job.resize(ev.size())
|
||||||
return super(Main, self).resizeEvent(ev)
|
return super(Main, self).resizeEvent(ev)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user