32 Commits
0.5 ... master

Author SHA1 Message Date
BasioMeusPuga
4389a0f5aa Merge pull request #120 from terrycloth/packaging
AppStream metadata, for giving Lector a proper page in Linux app stores
2020-01-15 00:08:44 +05:30
Andrew Toskin
b54ff37828 Replace empty dummy text with actual release notes, at least for now
We don't necessarily *need* to maintain release notes in the
.metainfo.xml file, but for my local test package builds, it would be
better to have actual information than to leave in the dummy text. (The
duplicate empty versions cause it to fail validation.)
2020-01-13 11:02:32 -08:00
Andrew Toskin
e7dd10fa3a Preferred naming scheme for .desktop files is also "reverse-DNS" 2019-12-30 20:40:40 -08:00
Andrew Toskin
3ede5b78fa Add AppStream .metainfo.xml file for Linux app stores
I had to make a number of assumptions here, like what the ID and
metainfo.xml license should be, whether to include the releases, etc. I
think it will be easier to talk about them in the pull request, though,
as then I'll be able to highlight the relevant lines for each point.
2019-12-30 20:37:19 -08:00
BasioMeusPuga
418d9e0c1c Merge pull request #116 from timgates42/bugfix/typo_specific
Fix simple typo: specifc -> specific
2019-12-02 22:33:28 -08:00
Tim Gates
e977826ea1 Fix simple typo: specifc -> specific 2019-12-03 15:05:57 +11:00
BasioMeusPuga
c661ed54de Update translations: Portuguese 2019-10-31 09:10:17 -07:00
BasioMeusPuga
dd3aa8a49c Merge pull request #112 from elisamalzoni/master
Portuguese support
2019-10-31 08:59:18 -07:00
elisamalzoni
65ad48c442 Portuguese support 2019-10-29 09:44:32 -03:00
BasioMeusPuga
fd433d6432 Tag generation stopgap 2019-08-26 17:42:56 -07:00
BasioMeusPuga
2bc73450fe Update translations: Czech 2019-07-06 21:47:45 -07:00
BasioMeusPuga
8b6800e14f Merge pull request #104 from VirtualThief/txt-support
Support for TXT files
2019-07-06 04:42:29 -07:00
Dmitrii Petukhov
d0cdd531a9 Check for textile installation 2019-07-06 07:37:32 +01:00
Dmitrii Petukhov
5e74b6f261 Fix for bookmarks in books without cover 2019-07-06 07:30:40 +01:00
Dmitrii Petukhov
24e45ac2b7 Support for opening txt files 2019-07-06 00:09:50 +01:00
BasioMeusPuga
916bdb5b14 Update translations: Japanese 2019-05-26 07:43:12 -04:00
BasioMeusPuga
ca108da948 Merge pull request #100 from sorairolake/japanese-translation
Add Japanese translation
2019-05-26 07:36:29 -04:00
Shun Sakai
6762f2cfce Add Japanese translation 2019-05-24 22:02:10 +09:00
BasioMeusPuga
0aea9ec33b Implement text pagination
Start double page mode
2019-04-01 22:25:09 -04:00
BasioMeusPuga
af1b988d93 Minor fixes 2019-03-22 21:35:09 -04:00
BasioMeusPuga
8fd6a0d432 Improve navigation bar 2019-03-16 21:53:19 -04:00
BasioMeusPuga
56f15528c2 Markdown support 2019-03-16 12:02:30 -04:00
BasioMeusPuga
f358ad169c Preliminary Navigation Bar 2019-03-16 10:27:07 -04:00
BasioMeusPuga
4cf0a9e78c Implement image rotation 2019-03-16 00:06:53 -04:00
BasioMeusPuga
38de0dcd13 Improve DjVu support 2019-03-15 19:08:06 -04:00
BasioMeusPuga
eb49ca92a4 Update README.md 2019-03-14 23:07:37 -04:00
BasioMeusPuga
bf93c7beab Preliminary DjVu support
SideDock fade in animation
2019-03-14 23:00:42 -04:00
BasioMeusPuga
ca57983739 Fix cover image name assignment 2019-03-11 07:06:54 -04:00
BasioMeusPuga
c71985f621 Minor fixes 2019-03-09 10:11:12 -05:00
BasioMeusPuga
c8fe0ba8b6 Make dependency checks less... crashy 2019-03-03 07:56:05 -05:00
BasioMeusPuga
d6df28c503 Merge pull request #92 from guoyunhe/hidpi-icons
Make icons sharp in HiDPI screen
2019-03-02 19:47:50 -05:00
Guo Yunhe
75ace25c57 Make icons sharp in HiDPI screen 2019-03-02 13:37:04 +01:00
49 changed files with 15644 additions and 6879 deletions

View File

@@ -30,8 +30,11 @@ SOURCES += lector/__main__.py \
lector/resources/metadata.py \
lector/resources/mainwindow.py
TRANSLATIONS += lector/resources/translations/Lector_es.ts \
TRANSLATIONS += lector/resources/translations/Lector_cs.ts \
lector/resources/translations/Lector_es.ts \
lector/resources/translations/Lector_fr.ts \
lector/resources/translations/Lector_de.ts \
lector/resources/translations/Lector_zh.ts \
lector/resources/translations/Lector_ja.ts \
lector/resources/translations/Lector_pt.ts \
lector/resources/translations/SAMPLE.ts

View File

@@ -5,10 +5,12 @@ Qt based ebook reader
Currently supports:
* pdf
* epub
* djvu
* fb2
* mobi
* azw / azw3 / azw4
* cbr / cbz
* md
## Contribute
[Paypal](https://www.paypal.me/supportlector)
@@ -26,9 +28,12 @@ Bitcoin: 17jaxj26vFJNqQ2hEVerbBV5fpTusfqFro
| python-xmltodict | 0.11.0 |
### Optional
| Package | Version tested |
| --- | --- |
| python-pymupdf | 1.14.5 |
| Package | Version tested | Required for |
| --- | --- | --- |
| python-pymupdf | 1.14.5 | PDF support |
| python-djvulibre | 0.8.4 | DjVu support |
| python-markdown | 3.0.1 | Markdown support |
| textile | 3.0.4 | TXT support |
## Support
When reporting issues:

13
TODO
View File

@@ -37,6 +37,7 @@ TODO
✓ Create covers for books without them - VERY SLOW
Set focus to newly added file
Reading:
✓ Navbar
✓ Drop down for TOC
✓ Treeview navigation for TOC
✓ Override the keypress event of the textedit
@@ -64,6 +65,7 @@ TODO
✓ Paragraph indentation
✓ Comic view keyboard shortcuts
✓ Comic view context menu
✓ Image rotation
✓ Make the bookmark dock float over the reading area
✓ Spacebar should not cut off lines at the top
✓ Track open bookmark windows so they can be closed quickly at exit
@@ -89,22 +91,25 @@ TODO
Have them save to memory
✓ fb2 support
✓ Images need to show up in their placeholders
✓ djvu support
✓ markdown support
Other:
✓ Define every widget in code
Bugs:
Deselecting all directories in the settings dialog also filters out manually added books
Last line in QTextBrowser should never be cut off
Bookmark name for a page that's not on the TOC and has nothing before
Screen position still keeps jumping when inside a paragraph
Better recursion needed for fb2 toc
Search results should ignore punctuation
Keep text size for annotations
Sort by new is not working
Drag and drop is acting out
Search and annotation buttons become visible when font settings are hidden in comics
Secondary:
Auto switch between flow and single page mode
Text to speech
Definitions dialog needs to respond to escape
Zoom slider for comics
Zoom slider for comics / library
Tab tooltip
Additional Settings:
Find definitions on Google
@@ -119,7 +124,7 @@ TODO
Goodreads API: Ratings, Read, Recommendations
Get ISBN using python-isbnlib
Use embedded fonts + CSS
txt, doc, chm, djvu support
txt, doc, chm support
Include icons for filetype emblems
Comic view modes
Continuous paging

View File

@@ -273,7 +273,7 @@ class OPFProcessor(object):
del metadata['CoverOffset']
handleMetaPairs(data, metadata, 'Codec', 'output encoding')
# handle kindlegen specifc tags
# handle kindlegen specific tags
handleTag(data, metadata, 'DictInLanguage', 'DictionaryInLanguage')
handleTag(data, metadata, 'DictOutLanguage', 'DictionaryOutLanguage')
handleMetaPairs(data, metadata, 'RegionMagnification', 'RegionMagnification')

View File

@@ -204,6 +204,8 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.bookToolBar.doublePageButton.triggered.connect(self.change_page_view)
self.bookToolBar.mangaModeButton.triggered.connect(self.change_page_view)
self.bookToolBar.invertButton.triggered.connect(self.change_page_view)
self.bookToolBar.rotateRightButton.triggered.connect(self.change_page_view)
self.bookToolBar.rotateLeftButton.triggered.connect(self.change_page_view)
if self.settings['double_page_mode']:
self.bookToolBar.doublePageButton.setChecked(True)
if self.settings['manga_mode']:
@@ -263,7 +265,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
# Get list of available parsers
self.available_parsers = '*.' + ' *.'.join(sorter.available_parsers)
logger.info('Available parsers: ' + self.available_parsers)
logger.log(60, 'Available parsers: ' + self.available_parsers)
# The Library tab gets no button
self.tabWidget.tabBar().setTabButton(
@@ -476,7 +478,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
ebooks_string = self._translate('Main_UI', 'eBooks')
opened_files = QtWidgets.QFileDialog.getOpenFileNames(
self, dialog_prompt, self.settings['last_open_path'],
f'{ebooks_string} ({self.available_parsers})')
f'{ebooks_string}({self.available_parsers})')
if not opened_files[0]:
return
@@ -696,7 +698,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
# The set_content method is universal
# It's going to do position tracking
current_tab = self.tabWidget.currentWidget()
current_tab.set_content(required_position, False, True)
current_tab.set_content(required_position, True, True)
def library_doubleclick(self, index):
sender = self.sender().objectName()
@@ -742,7 +744,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
else:
self.settingsDialog.hide()
#____________________________________________
#==================================================================
# The contentView modification functions are in the guifunctions
# module. self.profile_functions is the reference here.
@@ -763,15 +765,30 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.profile_functions.modify_comic_view(
signal_sender, key_pressed)
#____________________________________________
#=================================================================
def change_page_view(self, key_pressed=False):
# Switch page to whatever index is selected in the tocBox
current_tab = self.tabWidget.currentWidget()
chapter_number = current_tab.metadata['position']['current_chapter']
# Set zoom mode to best fit to
# make the transition less jarring
# if the sender isn't the invert colors button
if self.sender() != self.bookToolBar.invertButton:
self.comic_profile['zoom_mode'] = 'bestFit'
# Rotate the image left or right
# The double page mode is incompatible with this
if self.sender() == self.bookToolBar.rotateLeftButton:
current_tab.generate_rotation(-90)
self.bookToolBar.doublePageButton.setChecked(False)
if self.sender() == self.bookToolBar.rotateRightButton:
current_tab.generate_rotation(90)
self.bookToolBar.doublePageButton.setChecked(False)
if self.sender() == self.bookToolBar.doublePageButton:
current_tab.image_rotation = 0
# Toggle Double page mode / manga mode on keypress
if key_pressed == QtCore.Qt.Key_D:
self.bookToolBar.doublePageButton.setChecked(
@@ -786,9 +803,6 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
self.settings['manga_mode'] = self.bookToolBar.mangaModeButton.isChecked()
self.settings['invert_colors'] = self.bookToolBar.invertButton.isChecked()
# Switch page to whatever index is selected in the tocBox
current_tab = self.tabWidget.currentWidget()
chapter_number = current_tab.metadata['position']['current_chapter']
current_tab.set_content(chapter_number, False)
def generate_library_context_menu(self, position):
@@ -891,9 +905,12 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
last_accessed_time = QtCore.QDateTime().currentDateTime()
position_perc = 1
self.lib_ref.libraryModel.setData(i, metadata, QtCore.Qt.UserRole + 3)
self.lib_ref.libraryModel.setData(i, position_perc, QtCore.Qt.UserRole + 7)
self.lib_ref.libraryModel.setData(i, last_accessed_time, QtCore.Qt.UserRole + 12)
self.lib_ref.libraryModel.setData(
i, metadata, QtCore.Qt.UserRole + 3)
self.lib_ref.libraryModel.setData(
i, position_perc, QtCore.Qt.UserRole + 7)
self.lib_ref.libraryModel.setData(
i, last_accessed_time, QtCore.Qt.UserRole + 12)
self.lib_ref.update_proxymodels()
database_dict = {
@@ -976,7 +993,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow):
def start_culling_timer(self):
if self.settings['perform_culling']:
self.culling_timer.start(30)
self.culling_timer.start(90)
def resizeEvent(self, event=None):
if event:
@@ -1059,6 +1076,8 @@ def main():
app = QtWidgets.QApplication(sys.argv)
app.setApplicationName('Lector') # This is needed for QStandardPaths
# and my own hubris
# Make icons sharp in HiDPI screen
app.setAttribute(QtCore.Qt.AA_UseHighDpiPixmaps, True)
# Internationalization support
translator = QtCore.QTranslator()

View File

@@ -25,6 +25,12 @@ try:
except ImportError:
pass
try:
import djvu.decode
from lector.parsers.djvu import render_djvu_page
except ImportError:
pass
from PyQt5 import QtWidgets, QtGui, QtCore
from lector.rarfile import rarfile
@@ -60,11 +66,17 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
elif self.filetype == 'pdf':
self.book = fitz.open(self.filepath)
elif self.filetype == 'djvu':
self.book = djvu.decode.Context().new_document(
djvu.decode.FileURI(self.filepath))
self.book.decoding_job.wait()
self.common_functions = PliantWidgetsCommonFunctions(
self, self.main_window)
self.ignore_wheel_event = False
self.ignore_wheel_event_number = 0
self.mousePosition = None
self.setMouseTracking(True)
self.setDragMode(QtWidgets.QGraphicsView.ScrollHandDrag)
@@ -93,6 +105,10 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
page_data = self.book.loadPage(page)
pixmap = render_pdf_page(page_data)
elif self.filetype == 'djvu':
page_data = self.book.pages[page]
pixmap = render_djvu_page(page_data)
return pixmap
firstPixmap = page_loader(current_page)
@@ -168,13 +184,21 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
# TODO
# Get caching working for double page view
if not double_page_mode and self.main_window.settings['caching_enabled']:
# All of these must be True
caching_conditions = (
not double_page_mode,
self.main_window.settings['caching_enabled'])
if False not in caching_conditions:
return_pixmap = None
while not return_pixmap:
return_pixmap = check_cache(current_page)
else:
return_pixmap = load_page(current_page)
# Final pixmap transformations may take place here
## Color inversion
if self.main_window.settings['invert_colors']:
qImg = return_pixmap.toImage()
qImg.invertPixels()
@@ -183,6 +207,12 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
else:
logger.error('Color inversion failed: ' + current_page)
## Image rotation
if not self.parent.image_rotation == 0:
transformation = QtGui.QTransform()
transformation.rotate(self.parent.image_rotation)
return_pixmap = return_pixmap.transformed(transformation)
self.image_pixmap = return_pixmap
self.resizeEvent()
@@ -284,12 +314,26 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
self.common_functions.update_model()
def mouseMoveEvent(self, event):
if QtWidgets.QApplication.mouseButtons() == QtCore.Qt.NoButton:
self.viewport().setCursor(QtCore.Qt.OpenHandCursor)
else:
self.viewport().setCursor(QtCore.Qt.ClosedHandCursor)
self.parent.mouse_hide_timer.start(2000)
# Compare mouse positions
# This allows to filter out scrolling
# from a normal mouseEvent
QtWidgets.QGraphicsView.mouseMoveEvent(self, event)
if not self.mousePosition:
self.mousePosition = event.pos()
return
current_position = event.pos()
if current_position == self.mousePosition or self.parent.sideDock.isVisible():
return
else:
self.mousePosition = event.pos()
self.parent.navBar.show()
if QtWidgets.QApplication.mouseButtons() == QtCore.Qt.NoButton:
self.viewport().setCursor(QtCore.Qt.OpenHandCursor)
else:
self.viewport().setCursor(QtCore.Qt.ClosedHandCursor)
self.parent.mouseHideTimer.start(2000)
def generate_graphicsview_context_menu(self, position):
contextMenu = QtWidgets.QMenu()
@@ -329,6 +373,14 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
mangaModeAction.setCheckable(True)
mangaModeAction.setChecked(
self.main_window.bookToolBar.mangaModeButton.isChecked())
invertColorsAction = viewSubMenu.addAction(
self.main_window.QImageFactory.get_image('invert'),
self._translate('PliantQGraphicsView', 'Invert page colors'))
invertColorsAction.setCheckable(True)
invertColorsAction.setChecked(
self.main_window.bookToolBar.invertButton.isChecked())
viewSubMenu.addSeparator()
zoominAction = viewSubMenu.addAction(
@@ -365,6 +417,8 @@ class PliantQGraphicsView(QtWidgets.QGraphicsView):
self.main_window.bookToolBar.doublePageButton.trigger()
if action == mangaModeAction:
self.main_window.bookToolBar.mangaModeButton.trigger()
if action == invertColorsAction:
self.main_window.bookToolBar.invertButton.trigger()
if action == saveAction:
dialog_prompt = self._translate('Main_UI', 'Save page as...')
@@ -411,6 +465,18 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
self.parent = parent
self.main_window = main_window
# Available modes:
# flow - default
# singlePage
# doublePage
self.text_mode = 'flow'
# New pages will be generated following a resize
# This is timed so as not to drive the processor nuts
self.resizeTimer = QtCore.QTimer()
self.resizeTimer.setSingleShot(True)
self.resizeTimer.timeout.connect(self.create_pages)
self.annotation_mode = False
self.annotator = AnnotationPlacement()
self.current_annotation = None
@@ -426,18 +492,30 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
self.setMouseTracking(True)
self.verticalScrollBar().sliderMoved.connect(
self.record_position)
self.mousePosition = None
self.ignore_wheel_event = False
self.ignore_wheel_event_number = 0
self.at_end = False
self.page_cursors = []
self.page_number = 0
def wheelEvent(self, event):
if self.text_mode in ('singlePage', 'doublePage'):
vertical_pdelta = event.pixelDelta().y()
direction = -1
if vertical_pdelta < 0:
direction = 1
self.turn_page(direction)
return
self.record_position()
self.common_functions.wheelEvent(event)
def keyPressEvent(self, event):
QtWidgets.QTextEdit.keyPressEvent(self, event)
if event.key() == QtCore.Qt.Key_Space:
QtWidgets.QTextEdit.keyPressEvent(self, event)
if self.verticalScrollBar().value() == self.verticalScrollBar().maximum():
if self.at_end: # This makes sure the last lines of the chapter don't get skipped
self.common_functions.change_chapter(1, True)
@@ -445,15 +523,132 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
else:
self.at_end = False
self.set_top_line_cleanly()
self.record_position()
return
if self.text_mode == 'singlePage':
if event.key() == QtCore.Qt.Key_Down:
self.turn_page(1)
if event.key() == QtCore.Qt.Key_Up:
self.turn_page(-1)
self.record_position()
return
QtWidgets.QTextEdit.keyPressEvent(self, event)
def move_to_cursor(self, cursor):
self.setTextCursor(cursor)
self.verticalScrollBar().setValue(
self.verticalScrollBar().maximum())
self.ensureCursorVisible()
def set_top_line_cleanly(self):
# Find the cursor position of the top line and move to it
find_cursor = self.cursorForPosition(QtCore.QPoint(0, 0))
find_cursor.movePosition(
find_cursor.position(), QtGui.QTextCursor.KeepAnchor)
self.setTextCursor(find_cursor)
self.ensureCursorVisible()
cursorTop = self.cursorForPosition(QtCore.QPoint(0, 0))
self.move_to_cursor(cursorTop)
def resizeEvent(self, event=None):
QtWidgets.QTextBrowser.resizeEvent(self, event)
self.resizeTimer.start(100)
def create_pages(self, text_mode=None):
# Return to this value after page calcuation is done
cursorTop = self.cursorForPosition(QtCore.QPoint(0, 0))
# No changes in mode
# if text_mode == self.text_mode:
# return
# Account for resizeEvent
if not text_mode:
if self.text_mode == 'flow':
return
text_mode = self.text_mode
# Single Page mode
page_width = self.viewport().size().width()
page_height = self.viewport().size().height()
# Flow mode
if text_mode == 'flow':
page_height = -1
# TODO
# See what's an appropriate value to pad the text with
# profile_index = self.bookToolBar.profileBox.currentIndex()
# current_profile = self.bookToolBar.profileBox.itemData(
# profile_index, QtCore.Qt.UserRole)
# padding = 20
# Double page mode
if text_mode == 'doublePage':
page_width = page_width // 2 - 10
self.text_mode = text_mode
self.document().setPageSize(
QtCore.QSizeF(page_width, page_height))
self.generate_page_positions()
self.set_page(cursorTop)
def generate_page_positions(self):
self.verticalScrollBar().setValue(0)
cursorEnd = QtGui.QTextCursor(self.document())
cursorEnd.movePosition(QtGui.QTextCursor.End)
self.page_cursors = []
while True:
cursorTopLeft = self.cursorForPosition(
self.viewport().rect().topLeft())
cursorBottomLeft = self.cursorForPosition(
self.viewport().rect().bottomLeft())
cursorBottomRight = self.cursorForPosition(
self.viewport().rect().bottomRight())
self.page_cursors.append(
(cursorTopLeft.position(), cursorBottomRight.position()))
self.move_to_cursor(cursorBottomRight)
# TODO
# See if this requires a failsafe per number of iterations
if cursorEnd.position() == cursorBottomRight.position():
break
def set_page(self, originalCursor):
required_position = originalCursor.position()
if self.text_mode == 'flow':
page_start = required_position
if self.text_mode == 'singlePage':
for count, i in enumerate(self.page_cursors):
if i[0] <= required_position < i[1]:
page_start = i[0]
self.page_number = count
break
cursorGoTo = QtGui.QTextCursor(self.document())
cursorGoTo.setPosition(page_start)
self.move_to_cursor(cursorGoTo)
def turn_page(self, direction):
self.page_number += direction
if self.page_number in (-1, self.document().pageCount()):
self.page_number = 0
self.common_functions.change_chapter(direction)
self.create_pages()
else:
try:
page_start = self.page_cursors[self.page_number][0]
cursorGoTo = QtGui.QTextCursor(self.document())
cursorGoTo.setPosition(page_start)
self.move_to_cursor(cursorGoTo)
self.set_top_line_cleanly()
except IndexError:
pass
def record_position(self, return_as_bookmark=False):
self.parent.metadata['position']['is_read'] = False
@@ -562,8 +757,26 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
searchWikipediaAction = searchYoutubeAction = 'Does anyone know something funny in Latin?'
searchAction = searchGoogleAction = bookmarksToggleAction = 'TODO Insert Latin Joke'
deleteAnnotationAction = editAnnotationNoteAction = 'Latin quote 2. Electric Boogaloo.'
flowModeAction = singlePageAction = doublePageAction = 'We know the rules, you and I'
annotationActions = []
view_submenu_string = self._translate('PliantQTextBrowser', 'View')
viewSubMenu = contextMenu.addMenu(view_submenu_string)
viewSubMenu.setIcon(
self.main_window.QImageFactory.get_image('mail-thread-watch'))
flowModeAction = viewSubMenu.addAction(
self.main_window.QImageFactory.get_image('page-flow'),
self._translate('PliantQTextBrowser', 'Flow text'))
singlePageAction = viewSubMenu.addAction(
self.main_window.QImageFactory.get_image('page-single'),
self._translate('PliantQTextBrowser', 'Single page'))
doublePageAction = viewSubMenu.addAction(
self.main_window.QImageFactory.get_image('page-double'),
self._translate('PliantQTextBrowser', 'Double page'))
if self.parent.is_fullscreen:
fsToggleAction = contextMenu.addAction(
self.main_window.QImageFactory.get_image('view-fullscreen'),
@@ -654,6 +867,15 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
action = contextMenu.exec_(self.sender().mapToGlobal(position))
if action == flowModeAction:
self.create_pages('flow')
if action == singlePageAction:
self.create_pages('singlePage')
if action == doublePageAction:
self.create_pages('doublePages')
if action == addBookMarkAction:
self.parent.sideDock.bookmarks.add_bookmark(cursor_at_mouse.position())
@@ -697,12 +919,27 @@ class PliantQTextBrowser(QtWidgets.QTextBrowser):
self.main_window.closeEvent()
def mouseMoveEvent(self, event):
if self.annotation_mode:
self.viewport().setCursor(QtCore.Qt.IBeamCursor)
else:
self.viewport().setCursor(QtCore.Qt.ArrowCursor)
self.parent.mouse_hide_timer.start(2000)
# Compare mouse positions
# This allows to filter out scrolling
# from a normal mouseEvent
QtWidgets.QTextBrowser.mouseMoveEvent(self, event)
if not self.mousePosition:
self.mousePosition = event.pos()
return
current_position = event.pos()
if current_position == self.mousePosition or self.parent.sideDock.isVisible():
return
else:
self.mousePosition = event.pos()
self.parent.navBar.show()
if self.annotation_mode:
self.viewport().setCursor(QtCore.Qt.IBeamCursor)
else:
self.viewport().setCursor(QtCore.Qt.ArrowCursor)
self.parent.mouseHideTimer.start(2000)
class PliantWidgetsCommonFunctions:
@@ -723,6 +960,8 @@ class PliantWidgetsCommonFunctions:
self.pw.ignore_wheel_event_number = 0
return
# TODO
# This can probably be cleaned up
if self.are_we_doing_images_only:
QtWidgets.QGraphicsView.wheelEvent(self.pw, event)
else:

View File

@@ -51,6 +51,12 @@ class PliantDockWidget(QtWidgets.QDockWidget):
# Except this one
self.sideDockTabWidget = None
# Animate appearance
self.animation = QtCore.QPropertyAnimation(self, b'windowOpacity')
self.animation.setStartValue(0)
self.animation.setEndValue(1)
self.animation.setDuration(200)
def showEvent(self, event=None):
viewport_topRight = self.contentView.mapToGlobal(
self.contentView.viewport().rect().topRight())
@@ -66,9 +72,11 @@ class PliantDockWidget(QtWidgets.QDockWidget):
else:
dock_width = desktop_size.width() // 5
dock_x = viewport_topRight.x() - dock_width + 1
self.parent.navBar.hide()
self.main_window.active_docks.append(self)
self.setGeometry(dock_x, dock_y, dock_width, dock_height)
self.animation.start()
def hideEvent(self, event=None):
if self.notes_only:
@@ -518,3 +526,136 @@ class PliantLabelWidget(QtWidgets.QLabel):
def mousePressEvent(self, QMouseEvent):
self.navigate_to_search_result(self.index)
QtWidgets.QLabel.mousePressEvent(self, QMouseEvent)
class PliantNavBarWidget(QtWidgets.QDockWidget):
def __init__(self, main_window, contentView, parent):
super(PliantNavBarWidget, self).__init__(parent)
self.main_window = main_window
self.contentView = contentView
self.parent = parent
self.setWindowTitle('Navigation')
# Animate appearance
self.animation = QtCore.QPropertyAnimation(self, b'windowOpacity')
self.animation.setDuration(200)
self.animation.setStartValue(0)
self.animation.setEndValue(.8)
background = self.main_window.settings['dialog_background']
self.setStyleSheet(
"QDockWidget {{background-color: {0}}}".format(background.name()))
self.backButton = QtWidgets.QPushButton()
self.backButton.setFlat(True)
icon = QtGui.QIcon()
icon.addPixmap(
QtGui.QPixmap(":/images/previous.png"),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.backButton.setIcon(icon)
self.backButton.setIconSize(QtCore.QSize(24, 24))
self.nextButton = QtWidgets.QPushButton()
self.nextButton.setFlat(True)
icon = QtGui.QIcon()
icon.addPixmap(
QtGui.QPixmap(":/images/next.png"),
QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.nextButton.setIcon(icon)
self.nextButton.setIconSize(QtCore.QSize(24, 24))
self.backButton.clicked.connect(lambda: self.button_click(-1))
self.nextButton.clicked.connect(lambda: self.button_click(1))
self.tocComboBox = FixedComboBox(self)
self.populate_combo_box()
self.navLayout = QtWidgets.QHBoxLayout()
self.navLayout.addWidget(self.backButton)
self.navLayout.addWidget(self.tocComboBox)
self.navLayout.addWidget(self.nextButton)
self.navWidget = QtWidgets.QWidget()
self.navWidget.setLayout(self.navLayout)
self.setWidget(self.navWidget)
def showEvent(self, event=None):
# TODO
# See what happens when the size of the viewport is smaller
# than the size of the dock
viewport_bottomRight = self.contentView.mapToGlobal(
self.contentView.viewport().rect().bottomRight())
# Dock dimensions
desktop_size = QtWidgets.QDesktopWidget().screenGeometry()
dock_width = desktop_size.width() // 4.5
dock_height = 30
dock_x = viewport_bottomRight.x() - dock_width - 30
dock_y = viewport_bottomRight.y() - 70
self.main_window.active_docks.append(self)
self.setGeometry(dock_x, dock_y, dock_width, dock_height)
# Rounded
radius = 20
path = QtGui.QPainterPath()
path.addRoundedRect(QtCore.QRectF(self.rect()), radius, radius)
try:
mask = QtGui.QRegion(path.toFillPolygon().toPolygon())
self.setMask(mask)
except TypeError: # Required for older versions of Qt
pass
self.animation.start()
def populate_combo_box(self):
def set_toc_position(tocTree):
currentIndex = tocTree.currentIndex()
required_position = currentIndex.data(QtCore.Qt.UserRole)
self.return_focus()
self.parent.set_content(required_position, True, True)
# Create the Combobox / Treeview combination
tocTree = QtWidgets.QTreeView()
self.tocComboBox.setView(tocTree)
self.tocComboBox.setModel(self.parent.tocModel)
tocTree.setRootIsDecorated(False)
tocTree.setItemsExpandable(False)
tocTree.expandAll()
# Set the position of the QComboBox
self.parent.set_tocBox_index(None, self.tocComboBox)
# Make clicking do something
self.tocComboBox.currentIndexChanged.connect(
lambda: set_toc_position(tocTree))
def button_click(self, change):
self.contentView.common_functions.change_chapter(change)
self.return_focus()
def return_focus(self):
# The NavBar needs to be hidden after clicking
self.parent.activateWindow()
self.parent.contentView.setFocus()
self.parent.mouseHideTimer.start()
class FixedComboBox(QtWidgets.QComboBox):
def __init__(self, parent=None):
super(FixedComboBox, self).__init__(parent)
screen_width = QtWidgets.QDesktopWidget().screenGeometry().width()
self.adjusted_size = screen_width // 6
def sizeHint(self):
return self.minimumSizeHint()
def minimumSizeHint(self):
return QtCore.QSize(self.adjusted_size, 32)
def wheelEvent(self, QWheelEvent):
# Disable mouse wheel scrolling in the ComboBox
return

View File

@@ -131,7 +131,8 @@ class CoverLoadingAndCulling:
img_pixmap.loadFromData(cover)
else:
img_pixmap.load(':/images/NotFound.png')
img_pixmap = img_pixmap.scaled(420, 600, QtCore.Qt.IgnoreAspectRatio)
img_pixmap = img_pixmap.scaled(
420, 600, QtCore.Qt.IgnoreAspectRatio)
item.setIcon(QtGui.QIcon(img_pixmap))
item.setData(True, QtCore.Qt.UserRole + 8)

View File

@@ -61,9 +61,13 @@ class Library:
books = []
current_qdatetime = QtCore.QDateTime().currentDateTime()
for i in parsed_books.items():
_tags = i[1]['tags']
if _tags:
_tags = ', '.join([j for j in _tags if j])
try:
_tags = i[1]['tags']
if _tags:
_tags = ', '.join([j for j in _tags if j])
except: # Continuing seems more important than being correct
_tags = []
logger.warning('Tag generation error for: ' + i[1]['path'])
books.append([
i[1]['title'], i[1]['author'], i[1]['year'], current_qdatetime,
@@ -101,18 +105,7 @@ class Library:
position = i[5]
if position:
position = pickle.loads(position)
if position['is_read']:
position_perc = 1
else:
try:
position_perc = (
position['current_block'] / position['total_blocks'])
except (KeyError, ZeroDivisionError):
try:
position_perc = (
position['current_chapter'] / position['total_chapters'])
except KeyError:
position_perc = None
position_perc = generate_position_percentage(position)
try:
file_exists = os.path.exists(path)
@@ -339,3 +332,23 @@ class Library:
# Remove invalid paths from the database as well
database.DatabaseFunctions(
self.main_window.database_path).delete_from_database('Path', invalid_paths)
def generate_position_percentage(position):
if not position:
return None
if position['is_read']:
position_perc = 1
else:
try:
position_perc = (
position['current_block'] / position['total_blocks'])
except (KeyError, ZeroDivisionError):
try:
position_perc = (
position['current_chapter'] / position['total_chapters'])
except KeyError:
position_perc = None
return position_perc

View File

@@ -14,7 +14,7 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
VERSION = '0.5.0'
VERSION = '0.5.GittyGittyBangBang'
import os
import logging

98
lector/parsers/djvu.py Normal file
View File

@@ -0,0 +1,98 @@
# This file is a part of Lector, a Qt based ebook reader
# Copyright (C) 2017-2019 BasioMeusPuga
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import collections
import djvu.decode
from PyQt5 import QtGui
class ParseDJVU:
def __init__(self, filename, *args):
self.book = None
self.filename = filename
def read_book(self):
self.book = djvu.decode.Context().new_document(
djvu.decode.FileURI(self.filename))
self.book.decoding_job.wait()
def generate_metadata(self):
# TODO
# What even is this?
title = os.path.basename(self.filename)
author = 'Unknown'
year = 9999
isbn = None
tags = []
cover_page = self.book.pages[0]
cover = render_djvu_page(cover_page, True)
Metadata = collections.namedtuple(
'Metadata', ['title', 'author', 'year', 'isbn', 'tags', 'cover'])
return Metadata(title, author, year, isbn, tags, cover)
def generate_content(self):
# TODO
# See if it's possible to generate a more involved ToC
content = list(range(len(self.book.pages)))
toc = [(1, f'Page {i + 1}', i + 1) for i in content]
# Return toc, content, images_only
return toc, content, True
def render_djvu_page(page, for_cover=False):
# TODO
# Figure out how to calculate image stride
# and if it impacts row_alignment in the render
# method below
# bytes_per_line = 13200
djvu_pixel_format = djvu.decode.PixelFormatRgbMask(
0xFF0000, 0xFF00, 0xFF, bpp=32)
djvu_pixel_format.rows_top_to_bottom = 1
djvu_pixel_format.y_top_to_bottom = 0
# ¯\_(ツ)_/¯
mode = 0
page_job = page.decode(wait=True)
width, height = page_job.size
rect = (0, 0, width, height)
output = page_job.render(
mode, rect, rect, djvu_pixel_format)
# row_alignment=bytes_per_line)
imageFormat = QtGui.QImage.Format_RGB32
pageQImage = QtGui.QImage(output, width, height, imageFormat)
# Format conversion not only keeps the damn thing from
# segfaulting when converting from QImage to QPixmap,
# but it also allows for the double page mode to keep
# working properly. We like format conversion.
pageQImage = pageQImage.convertToFormat(
QtGui.QImage.Format_ARGB32_Premultiplied)
if for_cover:
return pageQImage
pixmap = QtGui.QPixmap()
pixmap.convertFromImage(pageQImage)
return pixmap

View File

@@ -0,0 +1,54 @@
# This file is a part of Lector, a Qt based ebook reader
# Copyright (C) 2017-2019 BasioMeusPuga
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import os
import logging
import collections
import markdown
logger = logging.getLogger(__name__)
class ParseMD:
def __init__(self, filename, *args):
self.book = None
self.filename = filename
def read_book(self):
self.book = None
def generate_metadata(self):
title = os.path.basename(self.filename)
author = 'Unknown'
year = 9999
isbn = None
tags = []
cover = None
Metadata = collections.namedtuple(
'Metadata', ['title', 'author', 'year', 'isbn', 'tags', 'cover'])
return Metadata(title, author, year, isbn, tags, cover)
def generate_content(self):
with open(self.filename, 'r') as book:
text = book.read()
content = [markdown.markdown(text)]
toc = [(1, 'Markdown', 1)]
# Return toc, content, images_only
return toc, content, False

55
lector/parsers/txt.py Normal file
View File

@@ -0,0 +1,55 @@
# This file is a part of Lector, a Qt based ebook reader
# Copyright (C) 2017-2019 BasioMeusPuga
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
import collections
import os
import textile
class ParseTXT:
"""Parser for TXT files."""
def __init__(self, filename, *args):
"""Initialize new instance of the TXT parser."""
self.filename = filename
def read_book(self):
"""Prepare the parser to read book."""
pass
def generate_metadata(self):
"""Generate metadata for the book."""
title = os.path.basename(self.filename)
author = 'Unknown'
year = 9999
isbn = None
tags = []
cover = None
Metadata = collections.namedtuple(
'Metadata', ['title', 'author', 'year', 'isbn', 'tags', 'cover'])
return Metadata(title, author, year, isbn, tags, cover)
def generate_content(self):
"""Generate content of the book."""
with open(self.filename, 'rt') as txt:
text = txt.read()
content = [textile.textile(text)]
toc = [(1, 'Text', 1)]
return toc, content, False

View File

@@ -89,7 +89,7 @@ class EPUB:
return i
# If the file isn't found
logger.error(filename + ' not found in ' + self.book_filename)
logger.warning(filename + ' not found in ' + self.book_filename)
return False
def generate_toc(self):
@@ -109,7 +109,7 @@ class EPUB:
if not toc_filename:
if not toc_filename_alternative:
logger.error('No ToC found for: ' + self.book_filename)
logger.warning('No ToC found for: ' + self.book_filename)
else:
toc_filename = toc_filename_alternative
@@ -451,26 +451,28 @@ class EPUB:
if i['@media-type'].split('/')[0] == 'image' and
'cover' in i['@id']][0]
book_cover = self.zip_file.read(self.find_file(cover_image))
self.cover_image_name = os.path.splitext(
os.path.basename(cover_image))[0]
except:
pass
logger.warning('Cover not found in opf: ' + self.book_filename)
# Find book cover the hard way
if not book_cover:
biggest_image_size = 0
biggest_image = None
cover_image = None
for j in self.zip_file.filelist:
if os.path.splitext(j.filename)[1] in ['.jpg', '.jpeg', '.png', '.gif']:
if j.file_size > biggest_image_size:
biggest_image = j.filename
cover_image = j.filename
biggest_image_size = j.file_size
if biggest_image:
if cover_image:
book_cover = self.zip_file.read(
self.find_file(biggest_image))
self.find_file(cover_image))
if not book_cover:
self.cover_image_name = ''
logger.warning('Cover not found: ' + self.book_filename)
else:
self.cover_image_name = os.path.splitext(
os.path.basename(cover_image))[0]
return book_cover

View File

@@ -1,8 +1,62 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style id="current-color-scheme" type="text/css">
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="invert.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="855"
inkscape:window-height="480"
id="namedview9"
showgrid="false"
inkscape:zoom="10.727273"
inkscape:cx="11"
inkscape:cy="11"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#444444; } .ColorScheme-Highlight { color:#5294e2; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 15 L 9 15 L 9 13 A 5 5 0 0 1 4 8 A 5 5 0 0 1 9 3 L 9 1 L 2 1 z M 9 3 L 9 13 C 11.7614 13 14 10.7614 14 8 C 14 5.2386 11.7614 3 9 3 z" transform="translate(3 3)"/>
</defs>
<path
style="fill:#5c616c;fill-opacity:1"
class="ColorScheme-Text"
d="M 2 1 L 2 15 L 9 15 L 9 13 A 5 5 0 0 1 4 8 A 5 5 0 0 1 9 3 L 9 1 L 2 1 z M 9 3 L 9 13 C 11.7614 13 14 10.7614 14 8 C 14 5.2386 11.7614 3 9 3 z"
transform="translate(3 3)"
id="path5" />
</svg>

Before

Width:  |  Height:  |  Size: 487 B

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,8 +1,62 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#5c616c; } .ColorScheme-Highlight { color:#5294e2; }
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="page-double.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview9"
showgrid="false"
inkscape:zoom="10.727273"
inkscape:cx="11"
inkscape:cy="11"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#444444; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 15 L 14 15 L 14 1 L 2 1 z M 4 3 L 12 3 L 12 13 L 4 13 L 4 3 z" transform="translate(4 4)"/>
</defs>
<path
style="fill:#5c616c;fill-opacity:1"
class="ColorScheme-Text"
d="M 1 1 L 1 15 L 15 15 L 15 1 L 1 1 z M 3 3 L 7 3 L 7 13 L 3 13 L 3 3 z M 9 3 L 13 3 L 13 13 L 9 13 L 9 3 z"
transform="translate(3 3)"
id="path5" />
</svg>

Before

Width:  |  Height:  |  Size: 416 B

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="page-flow.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview9"
showgrid="false"
inkscape:zoom="15.170655"
inkscape:cx="-1.2825494"
inkscape:cy="5.330307"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path
style="fill:#5c616c;fill-opacity:1"
class="ColorScheme-Text"
d="M 2 1 L 2 15 L 14 15 L 14 1 L 2 1 z M 4 3 L 12 3 L 12 13 L 4 13 L 4 3 z"
transform="translate(3 3)"
id="path5" />
<g
transform="matrix(0.64844409,0,0,0.64844409,5.8379769,5.8670545)"
id="g7"
style="fill:#5c616c;fill-opacity:1">
<path
inkscape:connector-curvature="0"
class="ColorScheme-Text"
d="m 7,2 v 8 L 3.5,6.5 2,8 8,14 14,8 12.5,6.5 9,10 V 2 Z"
style="color:#dfdfdf;fill:#5c616c;fill-opacity:1"
id="path5-3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#5c616c; } .ColorScheme-Highlight { color:#5294e2; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 15 L 14 15 L 14 1 L 2 1 z M 4 3 L 12 3 L 12 13 L 4 13 L 4 3 z" transform="translate(4 4)"/>
</svg>

After

Width:  |  Height:  |  Size: 416 B

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="rotate-left.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="855"
inkscape:window-height="480"
id="namedview9"
showgrid="false"
inkscape:zoom="10.727273"
inkscape:cx="11"
inkscape:cy="11"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#444444; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path
style="fill:#5c616c;fill-opacity:1"
class="ColorScheme-Text"
d="M 8.0292969 0.001953125 L 4.0292969 3.0019531 L 8.0292969 6.0019531 L 8.0292969 4.0019531 C 10.238397 4.0019531 12.029297 5.7928531 12.029297 8.0019531 C 12.029297 10.211053 10.238397 12.001953 8.0292969 12.001953 C 5.8201969 12.001953 4.0292969 10.211053 4.0292969 8.0019531 A 1 1 0 0 0 3.0292969 7.0019531 A 1 1 0 0 0 2.0292969 8.0019531 A 1 1 0 0 0 2.0351562 8.1015625 C 2.0889563 11.368762 4.7491969 14.001953 8.0292969 14.001953 C 11.342997 14.001953 14.029297 11.315653 14.029297 8.0019531 C 14.029297 4.6882531 11.342997 2.0019531 8.0292969 2.0019531 L 8.0292969 0.001953125 z"
transform="translate(3 3)"
id="path5" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="rotate-right.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="855"
inkscape:window-height="480"
id="namedview9"
showgrid="false"
inkscape:zoom="10.727273"
inkscape:cx="11"
inkscape:cy="11"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#444444; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path
style="fill:#5c616c;fill-opacity:1"
class="ColorScheme-Text"
d="M 7.9804688 0.001953125 L 7.9804688 2.0019531 C 4.6667688 2.0019531 1.9804688 4.6882531 1.9804688 8.0019531 C 1.9804688 11.315653 4.6667688 14.001953 7.9804688 14.001953 C 11.260569 14.001953 13.920809 11.368762 13.974609 8.1015625 A 1 1 0 0 0 13.980469 8.0019531 A 1 1 0 0 0 12.980469 7.0019531 A 1 1 0 0 0 11.980469 8.0019531 C 11.980469 10.211053 10.189569 12.001953 7.9804688 12.001953 C 5.7713688 12.001953 3.9804688 10.211053 3.9804688 8.0019531 C 3.9804688 5.7928531 5.7713688 4.0019531 7.9804688 4.0019531 L 7.9804688 6.0019531 L 11.980469 3.0019531 L 7.9804688 0.001953125 z"
transform="translate(3 3)"
id="path5" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 22 22"
version="1.1"
id="svg7"
sodipodi:docname="page-flow.svg"
inkscape:version="0.92.4 5da689c313, 2019-01-14">
<metadata
id="metadata11">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1043"
id="namedview9"
showgrid="false"
inkscape:zoom="15.170655"
inkscape:cx="-1.2825494"
inkscape:cy="5.330307"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg7" />
<defs
id="defs3">
<style
id="current-color-scheme"
type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path
style="fill:currentColor"
class="ColorScheme-Text"
d="M 2 1 L 2 15 L 14 15 L 14 1 L 2 1 z M 4 3 L 12 3 L 12 13 L 4 13 L 4 3 z"
transform="translate(3 3)"
id="path5" />
<g
transform="matrix(0.64844409,0,0,0.64844409,5.8379769,5.8670545)"
id="g7">
<path
inkscape:connector-curvature="0"
class="ColorScheme-Text"
d="m 7,2 v 8 L 3.5,6.5 2,8 8,14 14,8 12.5,6.5 9,10 V 2 Z"
style="color:#dfdfdf;fill:currentColor"
id="path5-3" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 2 1 L 2 15 L 14 15 L 14 1 L 2 1 z M 4 3 L 12 3 L 12 13 L 4 13 L 4 3 z" transform="translate(3 3)"/>
</svg>

After

Width:  |  Height:  |  Size: 416 B

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 8.0292969 0.001953125 L 4.0292969 3.0019531 L 8.0292969 6.0019531 L 8.0292969 4.0019531 C 10.238397 4.0019531 12.029297 5.7928531 12.029297 8.0019531 C 12.029297 10.211053 10.238397 12.001953 8.0292969 12.001953 C 5.8201969 12.001953 4.0292969 10.211053 4.0292969 8.0019531 A 1 1 0 0 0 3.0292969 7.0019531 A 1 1 0 0 0 2.0292969 8.0019531 A 1 1 0 0 0 2.0351562 8.1015625 C 2.0889563 11.368762 4.7491969 14.001953 8.0292969 14.001953 C 11.342997 14.001953 14.029297 11.315653 14.029297 8.0019531 C 14.029297 4.6882531 11.342997 2.0019531 8.0292969 2.0019531 L 8.0292969 0.001953125 z" transform="translate(3 3)"/>
</svg>

After

Width:  |  Height:  |  Size: 928 B

View File

@@ -0,0 +1,8 @@
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 22 22">
<defs>
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text { color:#dfdfdf; } .ColorScheme-Highlight { color:#4285f4; }
</style>
</defs>
<path style="fill:currentColor" class="ColorScheme-Text" d="M 7.9804688 0.001953125 L 7.9804688 2.0019531 C 4.6667688 2.0019531 1.9804688 4.6882531 1.9804688 8.0019531 C 1.9804688 11.315653 4.6667688 14.001953 7.9804688 14.001953 C 11.260569 14.001953 13.920809 11.368762 13.974609 8.1015625 A 1 1 0 0 0 13.980469 8.0019531 A 1 1 0 0 0 12.980469 7.0019531 A 1 1 0 0 0 11.980469 8.0019531 C 11.980469 10.211053 10.189569 12.001953 7.9804688 12.001953 C 5.7713688 12.001953 3.9804688 10.211053 3.9804688 8.0019531 C 3.9804688 5.7928531 5.7713688 4.0019531 7.9804688 4.0019531 L 7.9804688 6.0019531 L 11.980469 3.0019531 L 7.9804688 0.001953125 z" transform="translate(3 3)"/>
</svg>

After

Width:  |  Height:  |  Size: 928 B

View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2019 BasioMeusPuga <https://github.com/BasioMeusPuga> -->
<!-- See <https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html> for an overview of the AppStream metainfo.xml spec. -->
<component type="desktop-application">
<id>io.github.BasioMeusPuga.Lector</id>
<metadata_license>FSFAP</metadata_license>
<project_license>GPL-3.0+</project_license>
<name>Lector</name>
<summary>Ebook reader and collection manager</summary>
<description>
<p>
Lector is an ebook reader and collection manager. It offers a
full-screen distraction-free view, document highlighting and
annotations, a built-in dictionary, bookmarks, and multiple profiles for
changing the way the books are presented. Lector can also edit metadata,
so you can correct information about the books, and add keywords to make
them easier to find.
</p>
<p>
It supports the following file formats:
</p>
<ul>
<li>PDF</li>
<li>EPUB</li>
<li>DjVu</li>
<li>FictionBook (.fb2)</li>
<li>Mobipocket (.mobi)</li>
<li>Amazon Kindle (.azw, .azw3, .azw4)</li>
<li>Comic book archives (.cbr, .cbz)</li>
<li>Markdown</li>
</ul>
</description>
<launchable type="desktop-id">io.github.BasioMeusPuga.Lector.desktop</launchable>
<screenshots>
<screenshot type="default">
<caption>Main window</caption>
<image>https://camo.githubusercontent.com/9e2f7346616dfdb67a77c2e6b5db148d9b4669ca/68747470733a2f2f692e696d6775722e636f6d2f35313668526b532e706e67</image>
</screenshot>
<screenshot>
<caption>Table view</caption>
<image>https://camo.githubusercontent.com/66cb4f09a81d164af50180eaa024f8e116c83815/68747470733a2f2f692e696d6775722e636f6d2f6f39416e3741522e706e67</image>
</screenshot>
<screenshot>
<caption>Book reading view, in optional Solarized display profile</caption>
<image>https://camo.githubusercontent.com/1b60a0c27383715e59ccfd9d2585544d303e08d9/68747470733a2f2f692e696d6775722e636f6d2f495447363346632e706e67</image>
</screenshot>
<screenshot>
<caption>Distraction-free view</caption>
<image>https://camo.githubusercontent.com/3289abadb668ad3e53b8ba779b52768b14b25bcf/68747470733a2f2f692e696d6775722e636f6d2f67384c747570792e706e67</image>
</screenshot>
<screenshot>
<caption>Annotation support</caption>
<image>https://camo.githubusercontent.com/80e7423b488e59ed2c05e556b4918c25522edfd1/68747470733a2f2f692e696d6775722e636f6d2f674c4b323946342e706e67</image>
</screenshot>
<screenshot>
<caption>Comic reading view</caption>
<image>https://camo.githubusercontent.com/81aaa963c6e9ed19a1605e2f2b017ce8c83ca656/68747470733a2f2f692e696d6775722e636f6d2f7276765451434d2e706e67</image>
</screenshot>
<screenshot>
<caption>Bookmark support</caption>
<image>https://camo.githubusercontent.com/ebbaffedcbd4f743ba9d67e5eaab2108407832cd/68747470733a2f2f692e696d6775722e636f6d2f5937716f55386d2e706e67</image>
</screenshot>
<screenshot>
<caption>Customizable view profiles</caption>
<image>https://camo.githubusercontent.com/0cea5e37e5c40abd4988544ba32b187db3cbe783/68747470733a2f2f692e696d6775722e636f6d2f6177453271324b2e706e67</image>
</screenshot>
<screenshot>
<caption>Metadata editor</caption>
<image>https://camo.githubusercontent.com/15362fb47e79b2d50eef507133cee8de6c1baa5c/68747470733a2f2f692e696d6775722e636f6d2f304344704e4f382e706e67</image>
</screenshot>
<screenshot>
<caption>In-app dictionary</caption>
<image>https://camo.githubusercontent.com/de3bfc5359db85da8ad94850d12fe563b5eefb87/68747470733a2f2f692e696d6775722e636f6d2f524637326d32682e706e67</image>
</screenshot>
<screenshot>
<caption>Settings window</caption>
<image>https://camo.githubusercontent.com/9ef376164f311cf518b4825684e7d5cc9d1f538c/68747470733a2f2f692e696d6775722e636f6d2f6c367a4a5861482e706e67</image>
</screenshot>
</screenshots>
<url type="homepage">https://github.com/BasioMeusPuga/Lector</url>
<url type="bugtracker">https://github.com/BasioMeusPuga/Lector/issues</url>
<provides>
<binary>lector</binary>
</provides>
<releases>
<release version="0.5.1" date="2019-03-09">
<description>
<p>Sharper icons on hiDPI screens. More reliable dependency checks, and slight tweaks to the GUI.</p>
</description>
</release>
</releases>
</component>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -1,5 +1,9 @@
<RCC>
<qresource prefix="images">
<file>DarkIcons/rotate-left.svg</file>
<file>DarkIcons/rotate-right.svg</file>
<file>LightIcons/rotate-left.svg</file>
<file>LightIcons/rotate-right.svg</file>
<file>DarkIcons/invert.svg</file>
<file>LightIcons/invert.svg</file>
<file>DarkIcons/manga-mode.svg</file>
@@ -10,7 +14,11 @@
<file>LightIcons/search-word.svg</file>
<file>LightIcons/search-case.svg</file>
<file>DarkIcons/page-double.svg</file>
<file>DarkIcons/page-single.svg</file>
<file>DarkIcons/page-flow.svg</file>
<file>LightIcons/page-double.svg</file>
<file>LightIcons/page-single.svg</file>
<file>LightIcons/page-flow.svg</file>
<file>DarkIcons/about.svg</file>
<file>DarkIcons/switches.svg</file>
<file>LightIcons/about.svg</file>
@@ -92,6 +100,8 @@
<file>LightIcons/zoom-in.svg</file>
<file>LightIcons/zoom-original.svg</file>
<file>LightIcons/zoom-out.svg</file>
<file>next.png</file>
<file>previous.png</file>
<file>QMPlay2.svg</file>
<file>color.svg</file>
<file>blank.png</file>
@@ -101,9 +111,12 @@
<file>error.svg</file>
</qresource>
<qresource prefix="translations">
<file>translations_bin/Lector_cs.qm</file>
<file>translations_bin/Lector_es.qm</file>
<file>translations_bin/Lector_de.qm</file>
<file>translations_bin/Lector_fr.qm</file>
<file>translations_bin/Lector_ja.qm</file>
<file>translations_bin/Lector_zh.qm</file>
<file>translations_bin/Lector_pt.qm</file>
</qresource>
</RCC>

View File

@@ -70,6 +70,22 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="readAtPercent">
<property name="minimum">
@@ -177,6 +193,13 @@
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_16">
<item>
<widget class="QCheckBox" name="navBarVisible">
<property name="text">
<string>Show navigation bar</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="autoCover">
<property name="toolTip">
@@ -241,6 +264,22 @@ Reopen book to see changes</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="smallIncrementBox">
<property name="toolTip">
@@ -267,6 +306,22 @@ Reopen book to see changes</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSpinBox" name="largeIncrementBox">
<property name="toolTip">
@@ -308,7 +363,30 @@ Reopen book to see changes</string>
</widget>
</item>
<item>
<widget class="QComboBox" name="languageBox"/>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Preferred</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QComboBox" name="languageBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</item>
@@ -327,6 +405,22 @@ Reopen book to see changes</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QSlider" name="scrollSpeedSlider">
<property name="sizePolicy">

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -2,12 +2,13 @@
# Form implementation generated from reading ui file 'raw/settings.ui'
#
# Created by: PyQt5 UI code generator 5.11.3
# Created by: PyQt5 UI code generator 5.12
#
# WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
@@ -60,6 +61,8 @@ class Ui_Dialog(object):
self.readAtLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.readAtLabel.setObjectName("readAtLabel")
self.horizontalLayout_14.addWidget(self.readAtLabel)
spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_14.addItem(spacerItem)
self.readAtPercent = QtWidgets.QSpinBox(self.groupBox)
self.readAtPercent.setMinimum(90)
self.readAtPercent.setProperty("value", 95)
@@ -108,6 +111,9 @@ class Ui_Dialog(object):
self.verticalLayout_2.addLayout(self.horizontalLayout_9)
self.horizontalLayout_16 = QtWidgets.QHBoxLayout()
self.horizontalLayout_16.setObjectName("horizontalLayout_16")
self.navBarVisible = QtWidgets.QCheckBox(self.groupBox)
self.navBarVisible.setObjectName("navBarVisible")
self.horizontalLayout_16.addWidget(self.navBarVisible)
self.autoCover = QtWidgets.QCheckBox(self.groupBox)
self.autoCover.setObjectName("autoCover")
self.horizontalLayout_16.addWidget(self.autoCover)
@@ -136,6 +142,8 @@ class Ui_Dialog(object):
self.smallIncrementLabel = QtWidgets.QLabel(self.groupBox_2)
self.smallIncrementLabel.setObjectName("smallIncrementLabel")
self.horizontalLayout_15.addWidget(self.smallIncrementLabel)
spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_15.addItem(spacerItem1)
self.smallIncrementBox = QtWidgets.QSpinBox(self.groupBox_2)
self.smallIncrementBox.setMinimum(4)
self.smallIncrementBox.setMaximum(10)
@@ -145,6 +153,8 @@ class Ui_Dialog(object):
self.largeIncrementLabel = QtWidgets.QLabel(self.groupBox_2)
self.largeIncrementLabel.setObjectName("largeIncrementLabel")
self.horizontalLayout_15.addWidget(self.largeIncrementLabel)
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_15.addItem(spacerItem2)
self.largeIncrementBox = QtWidgets.QSpinBox(self.groupBox_2)
self.largeIncrementBox.setMinimum(1)
self.largeIncrementBox.setMaximum(10)
@@ -166,7 +176,14 @@ class Ui_Dialog(object):
self.languageLabel.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignVCenter)
self.languageLabel.setObjectName("languageLabel")
self.horizontalLayout_5.addWidget(self.languageLabel)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_5.addItem(spacerItem3)
self.languageBox = QtWidgets.QComboBox(self.groupBox_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.languageBox.sizePolicy().hasHeightForWidth())
self.languageBox.setSizePolicy(sizePolicy)
self.languageBox.setObjectName("languageBox")
self.horizontalLayout_5.addWidget(self.languageBox)
self.horizontalLayout_8.addLayout(self.horizontalLayout_5)
@@ -180,6 +197,8 @@ class Ui_Dialog(object):
self.scrollSpeedLabel.setSizePolicy(sizePolicy)
self.scrollSpeedLabel.setObjectName("scrollSpeedLabel")
self.horizontalLayout.addWidget(self.scrollSpeedLabel)
spacerItem4 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout.addItem(spacerItem4)
self.scrollSpeedSlider = QtWidgets.QSlider(self.groupBox_2)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -196,8 +215,8 @@ class Ui_Dialog(object):
self.gridLayout_3.addLayout(self.verticalLayout_3, 2, 0, 1, 1)
self.verticalLayout.addWidget(self.groupBox_2)
self.gridLayout_2.addLayout(self.verticalLayout, 0, 0, 1, 1)
spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_2.addItem(spacerItem, 1, 0, 1, 1)
spacerItem5 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.gridLayout_2.addItem(spacerItem5, 1, 0, 1, 1)
self.stackedWidget.addWidget(self.switchPage)
self.annotationsPage = QtWidgets.QWidget()
self.annotationsPage.setObjectName("annotationsPage")
@@ -215,8 +234,8 @@ class Ui_Dialog(object):
self.horizontalLayout_11.setObjectName("horizontalLayout_11")
self.verticalLayout_6 = QtWidgets.QVBoxLayout()
self.verticalLayout_6.setObjectName("verticalLayout_6")
spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem1)
spacerItem6 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem6)
self.newAnnotation = QtWidgets.QPushButton(self.textTab)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed)
sizePolicy.setHorizontalStretch(0)
@@ -272,8 +291,8 @@ class Ui_Dialog(object):
self.moveDown.setText("")
self.moveDown.setObjectName("moveDown")
self.verticalLayout_6.addWidget(self.moveDown)
spacerItem2 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem2)
spacerItem7 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding)
self.verticalLayout_6.addItem(spacerItem7)
self.horizontalLayout_11.addLayout(self.verticalLayout_6)
self.annotationsList = QtWidgets.QListView(self.textTab)
self.annotationsList.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
@@ -337,8 +356,8 @@ class Ui_Dialog(object):
self.clearLogButton = QtWidgets.QPushButton(Dialog)
self.clearLogButton.setObjectName("clearLogButton")
self.horizontalLayout_10.addWidget(self.clearLogButton)
spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_10.addItem(spacerItem3)
spacerItem8 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.horizontalLayout_10.addItem(spacerItem8)
self.okButton = QtWidgets.QPushButton(Dialog)
self.okButton.setObjectName("okButton")
self.horizontalLayout_10.addWidget(self.okButton)
@@ -371,6 +390,7 @@ class Ui_Dialog(object):
self.performCulling.setText(_translate("Dialog", "Load covers only when needed"))
self.autoTags.setText(_translate("Dialog", "Generate tags from files"))
self.attenuateTitles.setText(_translate("Dialog", "Shrink long book titles"))
self.navBarVisible.setText(_translate("Dialog", "Show navigation bar"))
self.autoCover.setToolTip(_translate("Dialog", "<html><head/><body><p>Attempt to download missing book covers from Google books - SLOW</p></body></html>"))
self.autoCover.setText(_translate("Dialog", "Download missing covers"))
self.groupBox_2.setTitle(_translate("Dialog", "Reading"))
@@ -401,4 +421,5 @@ class Ui_Dialog(object):
self.okButton.setText(_translate("Dialog", "Scan Library"))
self.cancelButton.setText(_translate("Dialog", "Close"))
from lector.widgets import SaysHelloWhenClicked

View File

@@ -0,0 +1,976 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="cs" sourcelanguage="">
<context>
<name>AnnotationsUI</name>
<message>
<location filename="../../annotations.py" line="39"/>
<source>Text markup</source>
<translation>Značení textu</translation>
</message>
<message>
<location filename="../../annotations.py" line="126"/>
<source>New annotation</source>
<translation>Nová vysvětlivka</translation>
</message>
</context>
<context>
<name>BookToolBar</name>
<message>
<location filename="../../toolbars.py" line="43"/>
<source>View settings</source>
<translation>Zobrazit nastavení</translation>
</message>
<message>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation>Oddálit (-)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation>Původní velikost (O)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="59"/>
<source>Search (Ctrl + F)</source>
<translation>Hledat (Ctrl+F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="122"/>
<source>Left align text</source>
<translation>Zarovnat text vlevo</translation>
</message>
<message>
<location filename="../../toolbars.py" line="136"/>
<source>Center align text</source>
<translation>Zarovnat text na střed</translation>
</message>
<message>
<location filename="../../toolbars.py" line="51"/>
<source>Add bookmark</source>
<translation>Přidat záložku</translation>
</message>
<message>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation>Obsah</translation>
</message>
<message>
<location filename="../../toolbars.py" line="129"/>
<source>Right align text</source>
<translation>Zarovnat text vpravo</translation>
</message>
<message>
<location filename="../../toolbars.py" line="216"/>
<source>Double page mode (D)</source>
<translation>Režim dvou stran (D)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="96"/>
<source>Font size</source>
<translation>Velikost písma</translation>
</message>
<message>
<location filename="../../toolbars.py" line="230"/>
<source>Invert page colors</source>
<translation>Obrátit barvy strany</translation>
</message>
<message>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation>Přiblížit (+)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation>Přizpůsobit šířku (W)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation>Barva pozadí</translation>
</message>
<message>
<location filename="../../toolbars.py" line="67"/>
<source>Fullscreen (F)</source>
<translation>Celá obrazovka (F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="111"/>
<source>Increase line spacing</source>
<translation>Zvětšit odstup řádku</translation>
</message>
<message>
<location filename="../../toolbars.py" line="116"/>
<source>Decrease line spacing</source>
<translation>Zmenšit odstup řádku</translation>
</message>
<message>
<location filename="../../toolbars.py" line="143"/>
<source>Justify text</source>
<translation>Zarovnat text do bloku</translation>
</message>
<message>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation>Nejlepší umístění (B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation>Otočit obrázek proti směru hodinových ručiček</translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation>Otočit obrázek po směru hodinových ručiček</translation>
</message>
<message>
<location filename="../../toolbars.py" line="47"/>
<source>Annotations (Ctrl + N)</source>
<translation>Vysvětlivky (Ctrl+N)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="55"/>
<source>Bookmarks (Ctrl + B)</source>
<translation>Záložky (Ctrl+B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="223"/>
<source>Manga mode (M)</source>
<translation>Režim manga (M)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="105"/>
<source>Decrease padding</source>
<translation>Zmenšit odstup</translation>
</message>
<message>
<location filename="../../toolbars.py" line="100"/>
<source>Increase padding</source>
<translation>Zvětšit odstup</translation>
</message>
<message>
<location filename="../../toolbars.py" line="71"/>
<source>Reset profile</source>
<translation>Obnovit výchozí profil</translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation>Žádná vymezení nenalezena v</translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../metadata.py" line="98"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation>Záznam</translation>
</message>
<message>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation>Nový</translation>
</message>
<message>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation>Upravit</translation>
</message>
<message>
<location filename="../metadata.py" line="97"/>
<source>Tags</source>
<translation>Značky</translation>
</message>
<message>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation>Text</translation>
</message>
<message>
<location filename="../metadata.py" line="95"/>
<source>Year</source>
<translation>Rok</translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>Povolení zmenší čas potřebný ke spuštění a využití paměti</translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation>&amp;Tmavý</translation>
</message>
<message>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation>O programu</translation>
</message>
<message>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
<message>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation>Obrázek</translation>
</message>
<message>
<location filename="../metadata.py" line="91"/>
<source>Title</source>
<translation>Název</translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation>Vodorovné posunování pomocí Alt+posun
Otevřít knihu znovu pro zobrazení změn</translation>
</message>
<message>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation>Velký přírůstek</translation>
</message>
<message>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation>Malý přírůstek</translation>
</message>
<message>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation>Knihovna</translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation>Nahrát obaly, jen když je to potřeba</translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation>Stíny obalů</translation>
</message>
<message>
<location filename="../metadata.py" line="89"/>
<source>Cover (click to change)</source>
<translation>Obal knihy (klepnout pro jeho změnu)</translation>
</message>
<message>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation>Posunout nahoru</translation>
</message>
<message>
<location filename="../metadata.py" line="93"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../metadata.py" line="99"/>
<source>Cancel</source>
<translation>Zrušit</translation>
</message>
<message>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation>Smazat</translation>
</message>
<message>
<location filename="../definitions.py" line="65"/>
<source>Dialog</source>
<translation>Dialog</translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation>Zapamatovat si otevřené soubory</translation>
</message>
<message>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation>&amp;Světlý</translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation>Stáhnout chybějící obaly</translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation>Začátek: Nahrát knihovnu znovu</translation>
</message>
<message>
<location filename="../metadata.py" line="88"/>
<source>Edit metadata</source>
<translation>Upravit popisné údaje</translation>
</message>
<message>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation>Prohledat knihovnu</translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation>Čtení</translation>
</message>
<message>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ŠIPKA NAHORU/DOLŮ - Počet kroků před obrácením strany kresleného příběhu&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation>Při čtení skrýt posuvníky</translation>
</message>
<message>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation>Nastavit výchozí stav programu</translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation>Považovat knihu přečtenu při procentu</translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Pokus o stažení chybějících obalů z Knih Google - POMALÝ&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation>Jazyk slovníku</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>Vyrovnávací paměť pro kreslené příběhy/strany PDF</translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation>Zmenšit dlouhé názvy knih</translation>
</message>
<message>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation>Smazat záznam</translation>
</message>
<message>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation>Rychlost posunu</translation>
</message>
<message>
<location filename="../definitions.py" line="67"/>
<source>Play pronunciation of root word</source>
<translation>Přehrát výslovnost kořenového slova</translation>
</message>
<message>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation>Posunout dolů</translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation>Nastavení</translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>Ohromně zmenší čas přechodu stránky za cenu více paměti</translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation>Vytvořit značky ze souborů</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>Vzhled symbolů:</translation>
</message>
<message>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;MEZERNÍK - Počet kroků před obrácením strany kresleného příběhu&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../metadata.py" line="96"/>
<source>Tags (comma separated)</source>
<translation>Značky (odděleny čárkou)</translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation>Ukázat panel pro pohyb v knize</translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation>Kvůli změnám spustit program znovu</translation>
</message>
<message>
<location filename="../definitions.py" line="66"/>
<source>WERDS</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation>Rok</translation>
</message>
<message>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation> knihy</translation>
</message>
<message>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation>přidáno ručně</translation>
</message>
<message>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation>Autor</translation>
</message>
</context>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation>Rok</translation>
</message>
<message>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation>O</translation>
</message>
<message>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation>Název</translation>
</message>
<message>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation>Filtrovat knihovnu</translation>
</message>
<message>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation>Nejnovější</translation>
</message>
<message>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation>Prohledat knihovnu</translation>
</message>
<message>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation>Postup</translation>
</message>
<message>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation>Zobrazit jako obaly</translation>
</message>
<message>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation>Zobrazit jako tabulku</translation>
</message>
<message>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation>Smazat knihu</translation>
</message>
<message>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation>Naposledy čteno</translation>
</message>
<message>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation>Přidat knihu</translation>
</message>
<message>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation>Řadit dle</translation>
</message>
<message>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation>Barva pozadí knihovny</translation>
</message>
<message>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>Hledat název, autora, značky...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation>Nastavení</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.py" line="68"/>
<source>Library</source>
<translation>Knihovna</translation>
</message>
<message>
<location filename="../mainwindow.py" line="67"/>
<source>Lector</source>
<translation>Lector</translation>
</message>
</context>
<context>
<name>Main_BookToolBarUI</name>
<message>
<location filename="../../toolbars.py" line="63"/>
<source>Toggle distraction free mode (Ctrl + D)</source>
<translation>Zapnout/Vypnout režim bez rozptylování (Ctrl+D)</translation>
</message>
</context>
<context>
<name>Main_UI</name>
<message>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation>Upravit</translation>
</message>
<message>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation>Číst</translation>
</message>
<message>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation>Knihy</translation>
</message>
<message>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation> knihy</translation>
</message>
<message>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation>Přidáno ručně</translation>
</message>
<message>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation>Smazat</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation>Obrázky</translation>
</message>
<message>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation>Uložit změny a začít prohledávat knihovnu</translation>
</message>
<message>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation>Elektronické knihy</translation>
</message>
<message>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation>Potvrdit smazání</translation>
</message>
<message>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation>Označit jako nepřečtené</translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation>Smazat knihu(y)?</translation>
</message>
<message>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation>Označit jako přečtené</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation>Uložit stranu jako...</translation>
</message>
<message>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation>Přidat knihy do databáze</translation>
</message>
<message>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>Přidávají se knihy...</translation>
</message>
</context>
<context>
<name>MetadataUI</name>
<message>
<location filename="../../metadatadialog.py" line="107"/>
<source>Year</source>
<translation>Rok</translation>
</message>
<message>
<location filename="../../metadatadialog.py" line="106"/>
<source>Author</source>
<translation>Autor</translation>
</message>
</context>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation>Vybrat nový obal</translation>
</message>
<message>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation>Obrázky</translation>
</message>
</context>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation>Pohled</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation>Ukončit režim bez rozptylování</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation>Oddálit (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation>Původní velikost (O)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation>Ukončit celou obrazovku</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation>Režim dvou stran (D)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation>Obrátit barvy strany</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation>Záložky</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation>Přiblížit (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation>Přizpůsobit na šířku okna (W)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation>Nejlepší umístění (B)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation>Uložit stranu jako...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation>Režim manga (M)</translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation>Pohled</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation>Upravit poznámku</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation>Ukončit režim bez rozptylování</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation>Jedna strana</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation>Dvě strany</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation>Přidat záložku</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation>Ukončit celou obrazovku</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation>Vymezit</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation>Přidat vysvětlivku</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation>V této knize</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation>Hledat</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation>Záložky</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation>Plynulý text</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation>Hledat</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation>Smazat vysvětlivku</translation>
</message>
</context>
<context>
<name>SettingsUI</name>
<message>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation>O</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="71"/>
<source>Hindi</source>
<translation>Hindština</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation>Smazat databázi a ukončit?</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation>Knihovna</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="84"/>
<source>Save changes and start library scan</source>
<translation>Uložit změny a začít prohledávat knihovnu</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>Probíhá prohledávání knihovny...</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation>Prověřují se složky s knihovnou</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation>Potvrdit</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="70"/>
<source>Spanish</source>
<translation>Španělština</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation>Vysvětlivky</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="69"/>
<source>English</source>
<translation>Angličtina</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation>Přepínače</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation>Zpracovávají se soubory</translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation>Lesezeichen hinzufügen</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation>Hledat</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation>Záložky</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation>Hledat v celé knize</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation>Shoda slov</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation>Rozlišovat velká a malá písmena</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation>Vysvětlivky</translation>
</message>
</context>
<context>
<name>Tab</name>
<message>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation>Upravit</translation>
</message>
<message>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation>Poznámka</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation>Smazat</translation>
</message>
</context>
<context>
<name>TableProxyModel</name>
<message>
<location filename="../../models.py" line="75"/>
<source>Tags</source>
<translation>Značky</translation>
</message>
<message>
<location filename="../../models.py" line="73"/>
<source>Year</source>
<translation>Rok</translation>
</message>
<message>
<location filename="../../models.py" line="71"/>
<source>Title</source>
<translation>Název</translation>
</message>
<message>
<location filename="../../models.py" line="72"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../models.py" line="74"/>
<source>Last Read</source>
<translation>Naposledy čteno</translation>
</message>
</context>
</TS>

View File

@@ -86,7 +86,7 @@
<translation>Blocksatz</translation>
</message>
<message>
<location filename="../../toolbars.py" line="268"/>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation>Hintergrund</translation>
</message>
@@ -116,7 +116,7 @@
<translation type="obsolete">Suchen...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="304"/>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation>Inhaltsverzeichnis</translation>
</message>
@@ -151,27 +151,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="242"/>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="248"/>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="254"/>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="260"/>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
@@ -180,11 +180,21 @@
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="144"/>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation>Keine Definition gefunden in</translation>
</message>
@@ -207,12 +217,12 @@
<translation>Aussprache des Root-Wortes abspielen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="358"/>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="359"/>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation>Bibliothek</translation>
</message>
@@ -222,17 +232,17 @@
<translation type="obsolete">Schalter</translation>
</message>
<message>
<location filename="../settingswindow.py" line="367"/>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation>Start: Bibliothek neu laden</translation>
</message>
<message>
<location filename="../settingswindow.py" line="368"/>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation>Offen Dateien merken</translation>
</message>
<message>
<location filename="../settingswindow.py" line="372"/>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation>Tags aus Dateien generieren</translation>
</message>
@@ -242,27 +252,27 @@
<translation type="obsolete">Wörterbuch:</translation>
</message>
<message>
<location filename="../settingswindow.py" line="369"/>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation>Cover Schatten</translation>
</message>
<message>
<location filename="../settingswindow.py" line="370"/>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>Aktivierung verringert die benötigte Zeit zum Starten und die Speicher Nutzung</translation>
</message>
<message>
<location filename="../settingswindow.py" line="371"/>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation>Cover nur laden wenn benötigt</translation>
</message>
<message>
<location filename="../settingswindow.py" line="380"/>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>Drastische verkürzung der Seitenübergangszeit auf Kosten des Speichers</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>Comic / PDF Seiten zwischenspeichern</translation>
</message>
@@ -272,7 +282,7 @@
<translation type="obsolete">Neustarten um Änderungen zu übernehmen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="362"/>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>Symbol Thema:</translation>
</message>
@@ -287,17 +297,17 @@
<translation type="obsolete">He&amp;ll</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation>Bibliothek scannen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="402"/>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation type="unfinished">Über</translation>
</message>
@@ -347,156 +357,161 @@
<translation>Abbrechen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="365"/>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="364"/>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="366"/>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="376"/>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="360"/>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation type="unfinished">Löschen</translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation type="unfinished">Bearbeiten</translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="373"/>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="374"/>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="375"/>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="398"/>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="136"/>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../library.py" line="137"/>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation>Jahr</translation>
</message>
<message>
<location filename="../../library.py" line="296"/>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation>Manuell hinzugefügt</translation>
</message>
<message>
<location filename="../../library.py" line="219"/>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
@@ -504,87 +519,87 @@ Reopen book to see changes</source>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="387"/>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation>Buch hinzufügen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="391"/>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation>Buch löschen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="418"/>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation>Hintergrund der Bibliothek</translation>
</message>
<message>
<location filename="../../toolbars.py" line="423"/>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation>Einstellungen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="396"/>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation>Als Cover anzeigen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="401"/>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation>Als Tabelle anzeigen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="415"/>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation>Bibliothek filtern</translation>
</message>
<message>
<location filename="../../toolbars.py" line="460"/>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>Suche nach Titel, Autor, Tags...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="479"/>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation>Sortieren nach</translation>
</message>
<message>
<location filename="../../toolbars.py" line="407"/>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation type="unfinished">Bibliothek scannen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="466"/>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation type="unfinished">Titel</translation>
</message>
<message>
<location filename="../../toolbars.py" line="467"/>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation type="unfinished">Autor</translation>
</message>
<message>
<location filename="../../toolbars.py" line="468"/>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation type="unfinished">Jahr</translation>
</message>
<message>
<location filename="../../toolbars.py" line="469"/>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation type="unfinished">Neueste</translation>
</message>
<message>
<location filename="../../toolbars.py" line="470"/>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation type="unfinished">Zuletzt gelesen</translation>
</message>
<message>
<location filename="../../toolbars.py" line="471"/>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="429"/>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
@@ -623,80 +638,85 @@ Reopen book to see changes</source>
<translation type="obsolete">Biblothek scannen </translation>
</message>
<message>
<location filename="../../__main__.py" line="475"/>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation>Bücher zur Datenbank hinzufügen</translation>
</message>
<message>
<location filename="../../__main__.py" line="476"/>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation>eBooks</translation>
</message>
<message>
<location filename="../../__main__.py" line="490"/>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>Bücher werden hinzugefügt...</translation>
</message>
<message>
<location filename="../../__main__.py" line="548"/>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation>Löschen bestätigen</translation>
</message>
<message>
<location filename="../../__main__.py" line="561"/>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation>Änderungen speichern &amp; Bibliotheksscan starten</translation>
</message>
<message>
<location filename="../../__main__.py" line="628"/>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation>Bücher</translation>
</message>
<message>
<location filename="../../__main__.py" line="805"/>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation>Lesen</translation>
</message>
<message>
<location filename="../../__main__.py" line="811"/>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation>Bearbeiten</translation>
</message>
<message>
<location filename="../../__main__.py" line="815"/>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
<location filename="../../__main__.py" line="818"/>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation>Als gelesen kennzeichnen</translation>
</message>
<message>
<location filename="../../__main__.py" line="821"/>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation>Als ungelesen kennzeichnen</translation>
</message>
<message>
<location filename="../../__main__.py" line="923"/>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation>Manuell hinzugefügt</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation type="unfinished">Seite speichern als...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="371"/>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation type="unfinished">Bilder</translation>
</message>
<message>
<location filename="../../__main__.py" line="579"/>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
@@ -714,12 +734,12 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="587"/>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation>Neues Cover auswählen</translation>
</message>
<message>
<location filename="../../widgets.py" line="588"/>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation>Bilder</translation>
</message>
@@ -727,27 +747,27 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="310"/>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation type="unfinished">Seite speichern als...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="334"/>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation type="unfinished">Vergrößern (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="338"/>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation type="unfinished">Verkleinern (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="342"/>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation type="unfinished">An Fensterbreite anpassen</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="350"/>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation type="unfinished">Original Größe (O)</translation>
</message>
@@ -757,50 +777,55 @@ Reopen book to see changes</source>
<translation type="obsolete">Ablenkungsfreien Modus ein-/ausschalten</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="299"/>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="303"/>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="314"/>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="319"/>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="326"/>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="346"/>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="356"/>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation type="unfinished">Lesezeichen</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="584"/>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation type="unfinished">Definieren</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="628"/>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation type="unfinished">Suchen</translation>
</message>
@@ -810,50 +835,70 @@ Reopen book to see changes</source>
<translation type="obsolete">Ablenkungsfreien Modus ein-/ausschalten</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="568"/>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="572"/>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="589"/>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="594"/>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="636"/>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="639"/>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="643"/>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="649"/>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation type="unfinished">Lesezeichen</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="610"/>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
@@ -878,80 +923,85 @@ Reopen book to see changes</source>
<translation>Änderungen speichern &amp; Bibliotheksscan starten</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="327"/>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>Bibliotheksscan in Arbeit...</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="331"/>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation>Bibliotheksverzeichnisse werden überprüft</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="347"/>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation>Dateien werden analysiert</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="129"/>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation type="unfinished">Bibliothek</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="130"/>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation type="unfinished">Schalter</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation type="unfinished">Über</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="551"/>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="123"/>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation type="unfinished">Lesezeichen</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="124"/>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation type="unfinished">Lesezeichen hinzufügen</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="300"/>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="347"/>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="348"/>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="349"/>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="350"/>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation type="unfinished"></translation>
</message>
@@ -969,17 +1019,17 @@ Reopen book to see changes</source>
<translation type="obsolete">Lesezeichen hinzufügen</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="264"/>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation>Bearbeiten</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="267"/>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
<location filename="../../widgets.py" line="146"/>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -86,7 +86,7 @@
<translation>Justificar el texto</translation>
</message>
<message>
<location filename="../../toolbars.py" line="268"/>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation>Color del fondo</translation>
</message>
@@ -121,7 +121,7 @@
<translation type="obsolete">Buscar</translation>
</message>
<message>
<location filename="../../toolbars.py" line="304"/>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation>Sumario</translation>
</message>
@@ -156,27 +156,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="242"/>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="248"/>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="254"/>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="260"/>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
@@ -185,11 +185,21 @@
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="144"/>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation>No se encontró ninguna definición en</translation>
</message>
@@ -212,12 +222,12 @@
<translation>Reproducir la pronunciación de la palabra raíz</translation>
</message>
<message>
<location filename="../settingswindow.py" line="358"/>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
<location filename="../settingswindow.py" line="359"/>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation>Biblioteca</translation>
</message>
@@ -227,17 +237,17 @@
<translation type="obsolete">Modificadores</translation>
</message>
<message>
<location filename="../settingswindow.py" line="367"/>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation>Inicio: actualizar la biblioteca</translation>
</message>
<message>
<location filename="../settingswindow.py" line="368"/>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation>Recordar los archivos abiertos</translation>
</message>
<message>
<location filename="../settingswindow.py" line="372"/>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation>Generar etiquetas a partir de los archivos</translation>
</message>
@@ -247,27 +257,27 @@
<translation type="obsolete">Diccionario:</translation>
</message>
<message>
<location filename="../settingswindow.py" line="369"/>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation>Sombras en las cubiertas</translation>
</message>
<message>
<location filename="../settingswindow.py" line="370"/>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>Activar esta opción reduce el tiempo de inicio y el uso de memoria</translation>
</message>
<message>
<location filename="../settingswindow.py" line="371"/>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation>Cargar las cubiertas solo cuando se necesiten</translation>
</message>
<message>
<location filename="../settingswindow.py" line="380"/>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>Reduce en gran medida el tiempo de transición de las páginas a costa de más memoria</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>Almacenar en antememoria las páginas de cómics/PDF</translation>
</message>
@@ -277,7 +287,7 @@
<translation type="obsolete">Reinicie la aplicación para ver los cambios</translation>
</message>
<message>
<location filename="../settingswindow.py" line="362"/>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>Tema de iconos: </translation>
</message>
@@ -292,17 +302,17 @@
<translation type="obsolete">&amp;Claro</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation>Explorar la biblioteca</translation>
</message>
<message>
<location filename="../settingswindow.py" line="402"/>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation>Cerrar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation type="unfinished">Acerca de</translation>
</message>
@@ -352,156 +362,161 @@
<translation>Cancelar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="365"/>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="364"/>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="366"/>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="376"/>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="360"/>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation type="unfinished">Eliminar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation type="unfinished">Editar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="373"/>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="374"/>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="375"/>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="398"/>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="136"/>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../library.py" line="137"/>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation>Año</translation>
</message>
<message>
<location filename="../../library.py" line="296"/>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation>añadido manualmente</translation>
</message>
<message>
<location filename="../../library.py" line="219"/>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
@@ -509,87 +524,87 @@ Reopen book to see changes</source>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="387"/>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation>Añadir un libro</translation>
</message>
<message>
<location filename="../../toolbars.py" line="391"/>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation>Eliminar el libro</translation>
</message>
<message>
<location filename="../../toolbars.py" line="418"/>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation>Color de fondo de la biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="423"/>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation>Configuración</translation>
</message>
<message>
<location filename="../../toolbars.py" line="396"/>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation>Ver como cubiertas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="401"/>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation>Ver como tabla</translation>
</message>
<message>
<location filename="../../toolbars.py" line="415"/>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation>Filtrar la biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="460"/>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>Buscar títulos, autores, etiquetas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="479"/>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation>Ordenar por</translation>
</message>
<message>
<location filename="../../toolbars.py" line="407"/>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation type="unfinished">Explorar la biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="466"/>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation type="unfinished">Título</translation>
</message>
<message>
<location filename="../../toolbars.py" line="467"/>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation type="unfinished">Autor</translation>
</message>
<message>
<location filename="../../toolbars.py" line="468"/>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation type="unfinished">Año</translation>
</message>
<message>
<location filename="../../toolbars.py" line="469"/>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation type="unfinished">Más recientes</translation>
</message>
<message>
<location filename="../../toolbars.py" line="470"/>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation type="unfinished">Última lectura</translation>
</message>
<message>
<location filename="../../toolbars.py" line="471"/>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="429"/>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
@@ -628,80 +643,85 @@ Reopen book to see changes</source>
<translation type="obsolete">Explorar la biblioteca</translation>
</message>
<message>
<location filename="../../__main__.py" line="475"/>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation>Añadir libros a la base de datos</translation>
</message>
<message>
<location filename="../../__main__.py" line="476"/>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation>Libros electrónicos</translation>
</message>
<message>
<location filename="../../__main__.py" line="490"/>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>Añadiendo los libros</translation>
</message>
<message>
<location filename="../../__main__.py" line="548"/>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation>Confirmar la eliminación</translation>
</message>
<message>
<location filename="../../__main__.py" line="561"/>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation>Guardar cambios e iniciar exploración de biblioteca</translation>
</message>
<message>
<location filename="../../__main__.py" line="628"/>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation> Libros</translation>
</message>
<message>
<location filename="../../__main__.py" line="805"/>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation>Comenzar a leer</translation>
</message>
<message>
<location filename="../../__main__.py" line="811"/>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../../__main__.py" line="815"/>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
<message>
<location filename="../../__main__.py" line="818"/>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation>Marcar como leído</translation>
</message>
<message>
<location filename="../../__main__.py" line="821"/>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation>Marcar como no leído</translation>
</message>
<message>
<location filename="../../__main__.py" line="923"/>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation>Añadido manualmente</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation type="unfinished">Guardar la página como</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="371"/>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation type="unfinished">Imágenes</translation>
</message>
<message>
<location filename="../../__main__.py" line="579"/>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
@@ -719,12 +739,12 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="587"/>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation>Seleccione una cubierta nueva</translation>
</message>
<message>
<location filename="../../widgets.py" line="588"/>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation>Imágenes</translation>
</message>
@@ -732,32 +752,32 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="310"/>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation type="unfinished">Guardar la página como</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="334"/>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation type="unfinished">Ampliar (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="338"/>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation type="unfinished">Reducir (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="342"/>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation type="unfinished">Ajustar a la anchura (W)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="346"/>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation type="unfinished">Ajuste perfecto (B)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="350"/>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation type="unfinished">Tamaño original (O)</translation>
</message>
@@ -772,45 +792,50 @@ Reopen book to see changes</source>
<translation type="obsolete">Sumario</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="299"/>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="303"/>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="314"/>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="319"/>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="326"/>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="356"/>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation type="unfinished">Marcadores</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="584"/>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation type="unfinished">Definir</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="628"/>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation type="unfinished">Buscar</translation>
</message>
@@ -825,50 +850,70 @@ Reopen book to see changes</source>
<translation type="obsolete">Sumario</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="568"/>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="572"/>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="589"/>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="594"/>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="636"/>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="639"/>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="643"/>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="649"/>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation type="unfinished">Marcadores</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="610"/>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
@@ -893,80 +938,85 @@ Reopen book to see changes</source>
<translation>Guardar cambios e iniciar exploración de biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="327"/>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>Se está explorando la biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="331"/>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation>Comprobando las carpetas de la biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="347"/>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation>Procesando los archivos</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="129"/>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation type="unfinished">Biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="130"/>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation type="unfinished">Modificadores</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation type="unfinished">Acerca de</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="551"/>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="123"/>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation type="unfinished">Marcadores</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="124"/>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation type="unfinished">Marcador nuevo</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="300"/>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="347"/>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="348"/>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="349"/>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="350"/>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation type="unfinished"></translation>
</message>
@@ -984,17 +1034,17 @@ Reopen book to see changes</source>
<translation type="obsolete">Marcador nuevo</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="264"/>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="267"/>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation>Eliminar</translation>
</message>
<message>
<location filename="../../widgets.py" line="146"/>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -86,7 +86,7 @@
<translation>Justifier le texte</translation>
</message>
<message>
<location filename="../../toolbars.py" line="268"/>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation>Couleur d&apos;arrière-plan</translation>
</message>
@@ -121,7 +121,7 @@
<translation type="obsolete">Rechercher</translation>
</message>
<message>
<location filename="../../toolbars.py" line="304"/>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation>Sommaire</translation>
</message>
@@ -156,27 +156,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="242"/>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="248"/>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="254"/>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="260"/>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
@@ -185,11 +185,21 @@
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="144"/>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation>Aucune définitions trouvées dans</translation>
</message>
@@ -212,12 +222,12 @@
<translation>Lire la prononciation de la racine</translation>
</message>
<message>
<location filename="../settingswindow.py" line="358"/>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation>Options</translation>
</message>
<message>
<location filename="../settingswindow.py" line="359"/>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation>Bibliothèque</translation>
</message>
@@ -227,17 +237,17 @@
<translation type="obsolete">Options</translation>
</message>
<message>
<location filename="../settingswindow.py" line="367"/>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation>Au démarrage: Rafraîchir la bibliothèque</translation>
</message>
<message>
<location filename="../settingswindow.py" line="368"/>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation>Se souvenir des fichiers ouverts</translation>
</message>
<message>
<location filename="../settingswindow.py" line="372"/>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation>Générer des étiquettes à partir des fichiers</translation>
</message>
@@ -247,27 +257,27 @@
<translation type="obsolete">Dictionnaire:</translation>
</message>
<message>
<location filename="../settingswindow.py" line="369"/>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation>Ombres des couverture</translation>
</message>
<message>
<location filename="../settingswindow.py" line="370"/>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>Si activé, réduit le temps de chargement et l&apos;utilisation de la mémoire</translation>
</message>
<message>
<location filename="../settingswindow.py" line="371"/>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation>Charger les couvertures seulement quand nécessaire</translation>
</message>
<message>
<location filename="../settingswindow.py" line="380"/>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>Réduit grandement le temps de transition des pages contre plus d&apos;utilisation de la mémoire</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>Mettre en cache les pages de bande dessinée / pdf</translation>
</message>
@@ -277,7 +287,7 @@
<translation type="obsolete">Redémarrer pour voir les modifications</translation>
</message>
<message>
<location filename="../settingswindow.py" line="362"/>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>Thème d&apos;icones: </translation>
</message>
@@ -292,17 +302,17 @@
<translation type="obsolete">C&amp;lair</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation>Analyser la bibliothèque</translation>
</message>
<message>
<location filename="../settingswindow.py" line="402"/>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation type="unfinished">À propos</translation>
</message>
@@ -352,156 +362,161 @@
<translation>Annuler</translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="365"/>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="364"/>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="366"/>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="376"/>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="360"/>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation type="unfinished">Supprimer</translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation type="unfinished">Modifier</translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="373"/>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="374"/>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="375"/>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="398"/>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="136"/>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation>Auteur</translation>
</message>
<message>
<location filename="../../library.py" line="137"/>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation>Année</translation>
</message>
<message>
<location filename="../../library.py" line="296"/>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation>manuellement ajouté</translation>
</message>
<message>
<location filename="../../library.py" line="219"/>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
@@ -509,87 +524,87 @@ Reopen book to see changes</source>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="387"/>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation>Ajouter un livre</translation>
</message>
<message>
<location filename="../../toolbars.py" line="391"/>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation>Supprimer un livre</translation>
</message>
<message>
<location filename="../../toolbars.py" line="418"/>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation>Couleur d&apos;arrière-plan de la bibliothèque</translation>
</message>
<message>
<location filename="../../toolbars.py" line="423"/>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation>Options</translation>
</message>
<message>
<location filename="../../toolbars.py" line="396"/>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation>Vue par couvertures</translation>
</message>
<message>
<location filename="../../toolbars.py" line="401"/>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation>Vue par table</translation>
</message>
<message>
<location filename="../../toolbars.py" line="415"/>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation>Filtrer la bibliothèque</translation>
</message>
<message>
<location filename="../../toolbars.py" line="460"/>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>Rechercher par Titre, Auteur, Étiquettes</translation>
</message>
<message>
<location filename="../../toolbars.py" line="479"/>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation>Trier par</translation>
</message>
<message>
<location filename="../../toolbars.py" line="407"/>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation type="unfinished">Analyser la bibliothèque</translation>
</message>
<message>
<location filename="../../toolbars.py" line="466"/>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation type="unfinished">Titre</translation>
</message>
<message>
<location filename="../../toolbars.py" line="467"/>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation type="unfinished">Auteur</translation>
</message>
<message>
<location filename="../../toolbars.py" line="468"/>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation type="unfinished">Année</translation>
</message>
<message>
<location filename="../../toolbars.py" line="469"/>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation type="unfinished">Nouveau</translation>
</message>
<message>
<location filename="../../toolbars.py" line="470"/>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation type="unfinished">Lu pour la dernière fois</translation>
</message>
<message>
<location filename="../../toolbars.py" line="471"/>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="429"/>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
@@ -628,80 +643,85 @@ Reopen book to see changes</source>
<translation type="obsolete">Analyser la bibliothèque</translation>
</message>
<message>
<location filename="../../__main__.py" line="475"/>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation>Ajouter des livres à la base de données</translation>
</message>
<message>
<location filename="../../__main__.py" line="476"/>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation>eBooks</translation>
</message>
<message>
<location filename="../../__main__.py" line="490"/>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>Ajout des livres</translation>
</message>
<message>
<location filename="../../__main__.py" line="548"/>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation>Confirmez la suppression</translation>
</message>
<message>
<location filename="../../__main__.py" line="561"/>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation>
</message>
<message>
<location filename="../../__main__.py" line="628"/>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation> Livres</translation>
</message>
<message>
<location filename="../../__main__.py" line="805"/>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation>Commencer à lire</translation>
</message>
<message>
<location filename="../../__main__.py" line="811"/>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="../../__main__.py" line="815"/>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../../__main__.py" line="818"/>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation>Marquer comme lu</translation>
</message>
<message>
<location filename="../../__main__.py" line="821"/>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation>Marquer comme non-lu</translation>
</message>
<message>
<location filename="../../__main__.py" line="923"/>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation>Manuellement ajouté</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation type="unfinished">Enregistrerla page sous</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="371"/>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation type="unfinished">Images</translation>
</message>
<message>
<location filename="../../__main__.py" line="579"/>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
@@ -719,12 +739,12 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="587"/>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation>Choisissez une nouvelle couverture</translation>
</message>
<message>
<location filename="../../widgets.py" line="588"/>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation>Images</translation>
</message>
@@ -732,32 +752,32 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="310"/>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation type="unfinished">Enregistrerla page sous</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="334"/>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation type="unfinished">Zoom avant (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="338"/>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation type="unfinished">Zoom arrière (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="342"/>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation type="unfinished">Ajuster à la largeur (W)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="346"/>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation type="unfinished">Meilleur ajustement (B)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="350"/>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation type="unfinished">Taille d&apos;origine (O)</translation>
</message>
@@ -767,45 +787,50 @@ Reopen book to see changes</source>
<translation type="obsolete">Basculer en mode sans distraction</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="299"/>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="303"/>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="314"/>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="319"/>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="326"/>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="356"/>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation type="unfinished">Marque-pages</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="584"/>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation type="unfinished">Définir</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="628"/>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation type="unfinished">Rechercher</translation>
</message>
@@ -815,50 +840,70 @@ Reopen book to see changes</source>
<translation type="obsolete">Basculer en mode sans distraction</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="568"/>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="572"/>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="589"/>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="594"/>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="636"/>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="639"/>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="643"/>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="649"/>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation type="unfinished">Marque-pages</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="610"/>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
@@ -883,80 +928,85 @@ Reopen book to see changes</source>
<translation>Enregistrer les modifications et démarrer l&apos;analyse de la bibliothèque</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="327"/>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>Analyse de la bibliothèque en cours</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="331"/>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation>Vérification des dossiers de la bibliothèque</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="347"/>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation>Lecture des fichiers</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="129"/>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation type="unfinished">Bibliothèque</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="130"/>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation type="unfinished">Options</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation type="unfinished">À propos</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="551"/>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="123"/>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation type="unfinished">Marque-pages</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="124"/>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation type="unfinished">Nouveau marque-page</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="300"/>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="347"/>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="348"/>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="349"/>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="350"/>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation type="unfinished"></translation>
</message>
@@ -974,17 +1024,17 @@ Reopen book to see changes</source>
<translation type="obsolete">Nouveau marque-page</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="264"/>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation>Modifier</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="267"/>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation>Supprimer</translation>
</message>
<message>
<location filename="../../widgets.py" line="146"/>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -0,0 +1,976 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="ja_JP" sourcelanguage="">
<context>
<name>AnnotationsUI</name>
<message>
<location filename="../../annotations.py" line="39"/>
<source>Text markup</source>
<translation></translation>
</message>
<message>
<location filename="../../annotations.py" line="126"/>
<source>New annotation</source>
<translation></translation>
</message>
</context>
<context>
<name>BookToolBar</name>
<message>
<location filename="../../toolbars.py" line="43"/>
<source>View settings</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="51"/>
<source>Add bookmark</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="71"/>
<source>Reset profile</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="96"/>
<source>Font size</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="100"/>
<source>Increase padding</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="105"/>
<source>Decrease padding</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="111"/>
<source>Increase line spacing</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="116"/>
<source>Decrease line spacing</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="122"/>
<source>Left align text</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="129"/>
<source>Right align text</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="136"/>
<source>Center align text</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="143"/>
<source>Justify text</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="55"/>
<source>Bookmarks (Ctrl + B)</source>
<translation> (Ctrl + B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="47"/>
<source>Annotations (Ctrl + N)</source>
<translation> (Ctrl + N)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="59"/>
<source>Search (Ctrl + F)</source>
<translation> (Ctrl + F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="67"/>
<source>Fullscreen (F)</source>
<translation> (F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="216"/>
<source>Double page mode (D)</source>
<translation> (D)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="223"/>
<source>Manga mode (M)</source>
<translation> (M)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation> (+)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation> (-)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation> (W)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation> (B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation> (O)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="230"/>
<source>Invert page colors</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation></translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../definitions.py" line="65"/>
<source>Dialog</source>
<translation></translation>
</message>
<message>
<location filename="../definitions.py" line="66"/>
<source>WERDS</source>
<translation>WERDS</translation>
</message>
<message>
<location filename="../definitions.py" line="67"/>
<source>Play pronunciation of root word</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>使</translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>使</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>PDFのページをキャッシュする</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>: </translation>
</message>
<message>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="88"/>
<source>Edit metadata</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="89"/>
<source>Cover (click to change)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../metadata.py" line="91"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="93"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="95"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="96"/>
<source>Tags (comma separated)</source>
<translation> ()</translation>
</message>
<message>
<location filename="../metadata.py" line="97"/>
<source>Tags</source>
<translation></translation>
</message>
<message>
<location filename="../metadata.py" line="98"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
<location filename="../metadata.py" line="99"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation>Alt + Scroll
</translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation> (&amp;D)</translation>
</message>
<message>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation> (&amp;i)</translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt; - &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt; - &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt; Google - &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation>About</translation>
</message>
<message>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation> </translation>
</message>
</context>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation>Lector </translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.py" line="67"/>
<source>Lector</source>
<translation>Lector</translation>
</message>
<message>
<location filename="../mainwindow.py" line="68"/>
<source>Library</source>
<translation></translation>
</message>
</context>
<context>
<name>Main_BookToolBarUI</name>
<message>
<location filename="../../toolbars.py" line="63"/>
<source>Toggle distraction free mode (Ctrl + D)</source>
<translation> (Ctrl + D)</translation>
</message>
</context>
<context>
<name>Main_UI</name>
<message>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation> </translation>
</message>
<message>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation> </translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
<message>
<location filename="../../metadatadialog.py" line="106"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../metadatadialog.py" line="107"/>
<source>Year</source>
<translation></translation>
</message>
</context>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation></translation>
</message>
<message>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation></translation>
</message>
</context>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation> (D)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation> (M)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation> (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation> (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation> (W)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation> (B)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation> (O)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
<message>
<location filename="../../settingsdialog.py" line="69"/>
<source>English</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="70"/>
<source>Spanish</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="71"/>
<source>Hindi</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="84"/>
<source>Save changes and start library scan</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation>About</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation></translation>
</message>
</context>
<context>
<name>Tab</name>
<message>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation></translation>
</message>
</context>
<context>
<name>TableProxyModel</name>
<message>
<location filename="../../models.py" line="71"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../../models.py" line="72"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../models.py" line="73"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../../models.py" line="74"/>
<source>Last Read</source>
<translation></translation>
</message>
<message>
<location filename="../../models.py" line="75"/>
<source>Tags</source>
<translation></translation>
</message>
</context>
</TS>

View File

@@ -0,0 +1,976 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="2.0" language="pt_BR" sourcelanguage="">
<context>
<name>AnnotationsUI</name>
<message>
<location filename="../../annotations.py" line="39"/>
<source>Text markup</source>
<translation>Marcação do texto</translation>
</message>
<message>
<location filename="../../annotations.py" line="126"/>
<source>New annotation</source>
<translation>Nova anotação</translation>
</message>
</context>
<context>
<name>BookToolBar</name>
<message>
<location filename="../../toolbars.py" line="43"/>
<source>View settings</source>
<translation>Ver configurações</translation>
</message>
<message>
<location filename="../../toolbars.py" line="51"/>
<source>Add bookmark</source>
<translation>Adicionar marca páginas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="71"/>
<source>Reset profile</source>
<translation>Reinicializar perfil</translation>
</message>
<message>
<location filename="../../toolbars.py" line="96"/>
<source>Font size</source>
<translation>Tamanho da fonte</translation>
</message>
<message>
<location filename="../../toolbars.py" line="100"/>
<source>Increase padding</source>
<translation>Aumentar padding</translation>
</message>
<message>
<location filename="../../toolbars.py" line="105"/>
<source>Decrease padding</source>
<translation>Diminuir padding</translation>
</message>
<message>
<location filename="../../toolbars.py" line="111"/>
<source>Increase line spacing</source>
<translation>Aumentar espaçamento entre linhas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="116"/>
<source>Decrease line spacing</source>
<translation>Diminuir espaçamento entre linhas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="122"/>
<source>Left align text</source>
<translation>Alinhar texto à esquerda</translation>
</message>
<message>
<location filename="../../toolbars.py" line="129"/>
<source>Right align text</source>
<translation>Alinhar texto à direita</translation>
</message>
<message>
<location filename="../../toolbars.py" line="136"/>
<source>Center align text</source>
<translation>Centralizar texto</translation>
</message>
<message>
<location filename="../../toolbars.py" line="143"/>
<source>Justify text</source>
<translation>Justificar texto</translation>
</message>
<message>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation>Cor do fundo</translation>
</message>
<message>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation>Índice</translation>
</message>
<message>
<location filename="../../toolbars.py" line="55"/>
<source>Bookmarks (Ctrl + B)</source>
<translation>Marcadores de página (Ctrl + B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="47"/>
<source>Annotations (Ctrl + N)</source>
<translation>Anotações (Ctrl + N)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="59"/>
<source>Search (Ctrl + F)</source>
<translation>Procurar (Ctrl + F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="67"/>
<source>Fullscreen (F)</source>
<translation>Tela cheia (F)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="216"/>
<source>Double page mode (D)</source>
<translation>Modo de páginas dupla (D)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="223"/>
<source>Manga mode (M)</source>
<translation>Modo mangá (M)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation>Aumentar zoom (+)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation>Diminuir zoom (-)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation>Ajustar largura (W)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation>Melhor ajuste (B)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation>Tamanho original (O)</translation>
</message>
<message>
<location filename="../../toolbars.py" line="230"/>
<source>Invert page colors</source>
<translation>Inverter cores da página</translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation>Rotacionar imagem no sentido horário</translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation>Rotacionar imagem no sentido anti-horário</translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation>Nenhuma definição achada em</translation>
</message>
</context>
<context>
<name>Dialog</name>
<message>
<location filename="../definitions.py" line="65"/>
<source>Dialog</source>
<translation>Diálogo</translation>
</message>
<message>
<location filename="../definitions.py" line="66"/>
<source>WERDS</source>
<translation>PALAVRAS</translation>
</message>
<message>
<location filename="../definitions.py" line="67"/>
<source>Play pronunciation of root word</source>
<translation>Reproduzir pronúncia da palavra raiz</translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation>Biblioteca</translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation>Inicialização: Atualizar biblioteca</translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation>Lembrar dos arquivos abertos</translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation>Gerar palavras-chave a partir de arquivos</translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation>Sombra nas capas</translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation>Habilitar diminuir tempo de inicialização e uso de memória</translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation>Carregar capas somente quando necessário</translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation>Reduz bastante o tempo de transição de páginas pelo custo de mais memória</translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation>Armazenar comic / páginas pdf em cache</translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation>Tema do ícone: </translation>
</message>
<message>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation>Scanear Biblioteca</translation>
</message>
<message>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation>Fechar</translation>
</message>
<message>
<location filename="../metadata.py" line="88"/>
<source>Edit metadata</source>
<translation>Editar metadados</translation>
</message>
<message>
<location filename="../metadata.py" line="89"/>
<source>Cover (click to change)</source>
<translation>Capa (clique para mudar)</translation>
</message>
<message>
<location filename="../metadata.py" line="91"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../metadata.py" line="93"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../metadata.py" line="95"/>
<source>Year</source>
<translation>Ano</translation>
</message>
<message>
<location filename="../metadata.py" line="96"/>
<source>Tags (comma separated)</source>
<translation>Palavras-chave (separadas por vígula)</translation>
</message>
<message>
<location filename="../metadata.py" line="97"/>
<source>Tags</source>
<translation>Palavras-chave</translation>
</message>
<message>
<location filename="../metadata.py" line="98"/>
<source>OK</source>
<translation>OK</translation>
</message>
<message>
<location filename="../metadata.py" line="99"/>
<source>Cancel</source>
<translation>Cancelar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation>Rolagem horizontal com Alt + rolagem
Reabrir livro para ver mudanças</translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation>Esconder barra de rolagem quando estiver lendo</translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation>Reabrir aplicativo para ver as mudanças</translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation>&amp;Escuro</translation>
</message>
<message>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation>C&amp;laro</translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation>Leitura</translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation>Considerar livro lido na porcentagem</translation>
</message>
<message>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation>Língua do dicionário</translation>
</message>
<message>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation>Velocidade de rolagem</translation>
</message>
<message>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation>Texto</translation>
</message>
<message>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation>Novo</translation>
</message>
<message>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation>Deletar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation>Mover para cima</translation>
</message>
<message>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation>Mover para baixo</translation>
</message>
<message>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation>Imagem</translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation>Encurtar títulos de livros longos</translation>
</message>
<message>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SETAS CIMA/BAIXO - Passos para virar a página de história em quadrinhos&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation>Pequeno incremento</translation>
</message>
<message>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;BARRA DE ESPAÇO - Passos para virar a página de história em quadrinhos&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation>Grande incremento</translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tentativa de baixar capas ausentes do Google books - DEVAGAR&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation>Fazer download das capas ausentes</translation>
</message>
<message>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation>Log</translation>
</message>
<message>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation>Resetar aplicativo</translation>
</message>
<message>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation>Apagar log</translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation>Mostrar barra de navegação</translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation>Ano</translation>
</message>
<message>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation>adicionado manualmente</translation>
</message>
<message>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation> livros</translation>
</message>
</context>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation>Adicionar livro</translation>
</message>
<message>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation>Deletar livro</translation>
</message>
<message>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation>Cor de fundo da biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation>Visualizar como capas</translation>
</message>
<message>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation>Visualizar como tabela</translation>
</message>
<message>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation>Filtrar biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>Procurar por título, autor, palavras-chave...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation>Ordenar por</translation>
</message>
<message>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation>Scanear biblioteca</translation>
</message>
<message>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation>Ano</translation>
</message>
<message>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation>Mais novo</translation>
</message>
<message>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation>Último lido</translation>
</message>
<message>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation>Progresso</translation>
</message>
<message>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation>Sobre</translation>
</message>
</context>
<context>
<name>MainWindow</name>
<message>
<location filename="../mainwindow.py" line="67"/>
<source>Lector</source>
<translation>Lector</translation>
</message>
<message>
<location filename="../mainwindow.py" line="68"/>
<source>Library</source>
<translation>Biblioteca</translation>
</message>
</context>
<context>
<name>Main_BookToolBarUI</name>
<message>
<location filename="../../toolbars.py" line="63"/>
<source>Toggle distraction free mode (Ctrl + D)</source>
<translation>Alternar modo sem distrações (Ctrl +D)</translation>
</message>
</context>
<context>
<name>Main_UI</name>
<message>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation>Adicionar livros na base de dados</translation>
</message>
<message>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation>eBooks</translation>
</message>
<message>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>Adicionando livros...</translation>
</message>
<message>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation>Confirmar remoção</translation>
</message>
<message>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation>Salvar mudanças e começar scanear bibloteca</translation>
</message>
<message>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation> Livros</translation>
</message>
<message>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation>Começar leitura</translation>
</message>
<message>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation>Deletar</translation>
</message>
<message>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation>Marcar como lido</translation>
</message>
<message>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation>Marcar como não-lido</translation>
</message>
<message>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation>Adicionado manualmente</translation>
</message>
<message>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation> livros</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation>Salvar página como...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation>Imagens</translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation>Deletar livro(s)?</translation>
</message>
</context>
<context>
<name>MetadataUI</name>
<message>
<location filename="../../metadatadialog.py" line="106"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../metadatadialog.py" line="107"/>
<source>Year</source>
<translation>Ano</translation>
</message>
</context>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation>Selecionar nova capa</translation>
</message>
<message>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation>Imagens</translation>
</message>
</context>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation>Sair da tela cheia</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation>Sair do modo sem distrações</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation>Salvar página como...</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation>Visualização</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation>Modo de páginas dupla (D)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation>Modo mangá (M)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation>Aumentar zoom (+)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation>Diminuir zoom (-)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation>Ajustar largura (W)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation>Melhor ajuste (B)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation>Tamanho original (O)</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation>Marca páginas</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation>Inverter cores da página</translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation>Sair da tela cheia</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation>Sair do modo sem distrações</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation>Definir</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation>Procurar por</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation>Neste livro</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation>Procurar</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation>Editar nota</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation>Deletar anotação</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation>Adicionar marca páginas</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation>Marca páginas</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation>Anotar</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation>Visualização</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation>Página simples</translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation>Página dupla</translation>
</message>
</context>
<context>
<name>SettingsUI</name>
<message>
<location filename="../../settingsdialog.py" line="69"/>
<source>English</source>
<translation>Inglês</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="70"/>
<source>Spanish</source>
<translation>Espanhol</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="71"/>
<source>Hindi</source>
<translation>Hindi</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="84"/>
<source>Save changes and start library scan</source>
<translation>Salvar mudanças e começar scanear bibloteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation>Scan da biblioteca em progresso...</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation>Checando pastas da biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation>Analisando arquivos</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation>Biblioteca</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation>Configurações</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation>Sobre</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation>Anotações</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation>Confirmar</translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation>Deletar banco de dados e sair?</translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation>Marca páginas</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation>Novo marca páginas</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation>Anotações</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation>Procurar</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation>Procurar no livro todo</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation>Caso correspondente</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation>Palavra correspondente</translation>
</message>
</context>
<context>
<name>Tab</name>
<message>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation>Editar</translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation>Deletar</translation>
</message>
<message>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation>Nota</translation>
</message>
</context>
<context>
<name>TableProxyModel</name>
<message>
<location filename="../../models.py" line="71"/>
<source>Title</source>
<translation>Título</translation>
</message>
<message>
<location filename="../../models.py" line="72"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../../models.py" line="73"/>
<source>Year</source>
<translation>Ano</translation>
</message>
<message>
<location filename="../../models.py" line="74"/>
<source>Last Read</source>
<translation>Último lido</translation>
</message>
<message>
<location filename="../../models.py" line="75"/>
<source>Tags</source>
<translation>Palavras-chave</translation>
</message>
</context>
</TS>

View File

@@ -76,7 +76,7 @@
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="268"/>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation></translation>
</message>
@@ -111,7 +111,7 @@
<translation type="obsolete">...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="304"/>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation></translation>
</message>
@@ -156,27 +156,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="242"/>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="248"/>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="254"/>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="260"/>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
@@ -185,11 +185,21 @@
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="144"/>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation></translation>
</message>
@@ -212,67 +222,67 @@
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="358"/>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="359"/>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="367"/>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="368"/>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="372"/>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="369"/>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="370"/>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="371"/>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="380"/>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation> / pdf </translation>
</message>
<message>
<location filename="../settingswindow.py" line="362"/>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="402"/>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation></translation>
</message>
@@ -322,49 +332,49 @@
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation> Alt + Scroll
</translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="365"/>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="364"/>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation>&amp;</translation>
</message>
<message>
<location filename="../settingswindow.py" line="366"/>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="376"/>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="360"/>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation></translation>
</message>
@@ -414,7 +424,7 @@ Reopen book to see changes</source>
<translation type="obsolete">线</translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation></translation>
</message>
@@ -424,110 +434,115 @@ Reopen book to see changes</source>
<translation type="obsolete"> / PDF</translation>
</message>
<message>
<location filename="../settingswindow.py" line="373"/>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="374"/>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="375"/>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="398"/>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="136"/>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="137"/>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="296"/>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation></translation>
</message>
<message>
<location filename="../../library.py" line="219"/>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation> </translation>
</message>
@@ -535,87 +550,87 @@ Reopen book to see changes</source>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="387"/>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="391"/>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="418"/>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="423"/>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="396"/>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="401"/>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="415"/>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="460"/>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../toolbars.py" line="479"/>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="407"/>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="466"/>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="467"/>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="468"/>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="469"/>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="470"/>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="471"/>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation></translation>
</message>
<message>
<location filename="../../toolbars.py" line="429"/>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
@@ -644,80 +659,85 @@ Reopen book to see changes</source>
<context>
<name>Main_UI</name>
<message>
<location filename="../../__main__.py" line="475"/>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="476"/>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="490"/>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation>...</translation>
</message>
<message>
<location filename="../../__main__.py" line="548"/>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="561"/>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="628"/>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation> </translation>
</message>
<message>
<location filename="../../__main__.py" line="805"/>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="811"/>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="815"/>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="818"/>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="821"/>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="923"/>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation></translation>
</message>
<message>
<location filename="../../__main__.py" line="579"/>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation> </translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="371"/>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
@@ -735,12 +755,12 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="587"/>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation></translation>
</message>
<message>
<location filename="../../widgets.py" line="588"/>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation></translation>
</message>
@@ -748,123 +768,148 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="299"/>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="303"/>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="310"/>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="314"/>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="319"/>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="326"/>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="334"/>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="338"/>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="342"/>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="346"/>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="350"/>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="356"/>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="568"/>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="572"/>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="584"/>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="589"/>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="594"/>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="628"/>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="636"/>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="639"/>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="643"/>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="649"/>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="610"/>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
@@ -889,80 +934,85 @@ Reopen book to see changes</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="327"/>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="331"/>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="347"/>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="129"/>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="130"/>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="551"/>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="123"/>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="124"/>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="300"/>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="347"/>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="348"/>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="349"/>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="350"/>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation type="unfinished"></translation>
</message>
@@ -980,12 +1030,12 @@ Reopen book to see changes</source>
<translation type="obsolete"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="264"/>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="267"/>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation></translation>
</message>
@@ -995,7 +1045,7 @@ Reopen book to see changes</source>
<translation type="obsolete"></translation>
</message>
<message>
<location filename="../../widgets.py" line="146"/>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -76,12 +76,12 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="268"/>
<location filename="../../toolbars.py" line="277"/>
<source>Background color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="304"/>
<location filename="../../toolbars.py" line="319"/>
<source>Table of Contents</source>
<translation type="unfinished"></translation>
</message>
@@ -116,27 +116,27 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<location filename="../../toolbars.py" line="246"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="242"/>
<location filename="../../toolbars.py" line="251"/>
<source>Zoom Out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="248"/>
<location filename="../../toolbars.py" line="257"/>
<source>Fit Width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="254"/>
<location filename="../../toolbars.py" line="263"/>
<source>Best Fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="260"/>
<location filename="../../toolbars.py" line="269"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
@@ -145,11 +145,21 @@
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="237"/>
<source>Rotate image clockwise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="241"/>
<source>Rotate image anti-clockwise</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>DefinitionsUI</name>
<message>
<location filename="../../definitionsdialog.py" line="144"/>
<location filename="../../definitionsdialog.py" line="143"/>
<source>No definitions found in</source>
<translation type="unfinished"></translation>
</message>
@@ -172,67 +182,67 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="358"/>
<location filename="../settingswindow.py" line="377"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="359"/>
<location filename="../settingswindow.py" line="378"/>
<source>Library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="367"/>
<location filename="../settingswindow.py" line="386"/>
<source>Startup: Refresh library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="368"/>
<location filename="../settingswindow.py" line="387"/>
<source>Remember open files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="372"/>
<location filename="../settingswindow.py" line="391"/>
<source>Generate tags from files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="369"/>
<location filename="../settingswindow.py" line="388"/>
<source>Cover shadows</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="370"/>
<location filename="../settingswindow.py" line="389"/>
<source>Enabling reduces startup time and memory usage</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="371"/>
<location filename="../settingswindow.py" line="390"/>
<source>Load covers only when needed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="380"/>
<location filename="../settingswindow.py" line="400"/>
<source>Greatly reduces page transition time at the cost of more memory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="381"/>
<location filename="../settingswindow.py" line="401"/>
<source>Cache comic / pdf pages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="362"/>
<location filename="../settingswindow.py" line="381"/>
<source>Icon theme: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="401"/>
<location filename="../settingswindow.py" line="421"/>
<source>Scan Library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="402"/>
<location filename="../settingswindow.py" line="422"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
@@ -282,161 +292,166 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="377"/>
<location filename="../settingswindow.py" line="397"/>
<source>Horizontal scrolling with Alt + Scroll
Reopen book to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="379"/>
<location filename="../settingswindow.py" line="399"/>
<source>Hide scrollbars when reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="365"/>
<location filename="../settingswindow.py" line="384"/>
<source>Restart application to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="364"/>
<location filename="../settingswindow.py" line="383"/>
<source>&amp;Dark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="366"/>
<location filename="../settingswindow.py" line="385"/>
<source>L&amp;ight</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="376"/>
<location filename="../settingswindow.py" line="396"/>
<source>Reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="360"/>
<location filename="../settingswindow.py" line="379"/>
<source>Consider book read at percent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="388"/>
<location filename="../settingswindow.py" line="408"/>
<source>Dictionary language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="389"/>
<location filename="../settingswindow.py" line="409"/>
<source>Scroll speed</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="395"/>
<location filename="../settingswindow.py" line="415"/>
<source>Text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="390"/>
<location filename="../settingswindow.py" line="410"/>
<source>New</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="391"/>
<location filename="../settingswindow.py" line="411"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="392"/>
<location filename="../settingswindow.py" line="412"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<location filename="../settingswindow.py" line="413"/>
<source>Move Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="394"/>
<location filename="../settingswindow.py" line="414"/>
<source>Move Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="396"/>
<location filename="../settingswindow.py" line="416"/>
<source>Image</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="373"/>
<location filename="../settingswindow.py" line="392"/>
<source>Shrink long book titles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="384"/>
<location filename="../settingswindow.py" line="404"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UP/DOWN ARROW - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="383"/>
<location filename="../settingswindow.py" line="403"/>
<source>Small increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="387"/>
<location filename="../settingswindow.py" line="407"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;SPACEBAR - Steps to take before turning comicbook page&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="386"/>
<location filename="../settingswindow.py" line="406"/>
<source>Large increment</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="374"/>
<location filename="../settingswindow.py" line="394"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Attempt to download missing book covers from Google books - SLOW&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="375"/>
<location filename="../settingswindow.py" line="395"/>
<source>Download missing covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="397"/>
<location filename="../settingswindow.py" line="417"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="398"/>
<location filename="../settingswindow.py" line="418"/>
<source>Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="399"/>
<location filename="../settingswindow.py" line="419"/>
<source>Reset Application</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="400"/>
<location filename="../settingswindow.py" line="420"/>
<source>Clear Log</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../settingswindow.py" line="393"/>
<source>Show navigation bar</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Library</name>
<message>
<location filename="../../library.py" line="136"/>
<location filename="../../library.py" line="129"/>
<source>Author</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../library.py" line="137"/>
<location filename="../../library.py" line="130"/>
<source>Year</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../library.py" line="296"/>
<location filename="../../library.py" line="289"/>
<source>manually added</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../library.py" line="219"/>
<location filename="../../library.py" line="212"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
@@ -444,87 +459,87 @@ Reopen book to see changes</source>
<context>
<name>LibraryToolBar</name>
<message>
<location filename="../../toolbars.py" line="387"/>
<location filename="../../toolbars.py" line="402"/>
<source>Add book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="391"/>
<location filename="../../toolbars.py" line="406"/>
<source>Delete book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="418"/>
<location filename="../../toolbars.py" line="433"/>
<source>Library background color</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="423"/>
<location filename="../../toolbars.py" line="438"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="396"/>
<location filename="../../toolbars.py" line="411"/>
<source>View as covers</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="401"/>
<location filename="../../toolbars.py" line="416"/>
<source>View as table</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="415"/>
<location filename="../../toolbars.py" line="430"/>
<source>Filter library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="460"/>
<location filename="../../toolbars.py" line="475"/>
<source>Search for Title, Author, Tags...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="479"/>
<location filename="../../toolbars.py" line="494"/>
<source>Sort by</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="407"/>
<location filename="../../toolbars.py" line="422"/>
<source>Scan Library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="466"/>
<location filename="../../toolbars.py" line="481"/>
<source>Title</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="467"/>
<location filename="../../toolbars.py" line="482"/>
<source>Author</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="468"/>
<location filename="../../toolbars.py" line="483"/>
<source>Year</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="469"/>
<location filename="../../toolbars.py" line="484"/>
<source>Newest</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="470"/>
<location filename="../../toolbars.py" line="485"/>
<source>Last Read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="471"/>
<location filename="../../toolbars.py" line="486"/>
<source>Progress</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../toolbars.py" line="429"/>
<location filename="../../toolbars.py" line="444"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
@@ -553,80 +568,85 @@ Reopen book to see changes</source>
<context>
<name>Main_UI</name>
<message>
<location filename="../../__main__.py" line="475"/>
<location filename="../../__main__.py" line="477"/>
<source>Add books to database</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="476"/>
<location filename="../../__main__.py" line="478"/>
<source>eBooks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="490"/>
<location filename="../../__main__.py" line="492"/>
<source>Adding books...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="548"/>
<location filename="../../__main__.py" line="550"/>
<source>Confirm deletion</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="561"/>
<location filename="../../__main__.py" line="563"/>
<source>Save changes and start library scan</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="628"/>
<location filename="../../__main__.py" line="630"/>
<source> Books</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="805"/>
<location filename="../../__main__.py" line="819"/>
<source>Start reading</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="811"/>
<location filename="../../__main__.py" line="825"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="815"/>
<location filename="../../__main__.py" line="829"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="818"/>
<location filename="../../__main__.py" line="832"/>
<source>Mark read</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="821"/>
<location filename="../../__main__.py" line="835"/>
<source>Mark unread</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="923"/>
<location filename="../../__main__.py" line="940"/>
<source>Manually Added</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="579"/>
<location filename="../../__main__.py" line="581"/>
<source> books</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="370"/>
<location filename="../../contentwidgets.py" line="424"/>
<source>Save page as...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="371"/>
<location filename="../../contentwidgets.py" line="425"/>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../__main__.py" line="546"/>
<source>Delete book(s)?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetadataUI</name>
@@ -644,12 +664,12 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsScene</name>
<message>
<location filename="../../widgets.py" line="587"/>
<location filename="../../widgets.py" line="621"/>
<source>Select new cover</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../widgets.py" line="588"/>
<location filename="../../widgets.py" line="622"/>
<source>Images</source>
<translation type="unfinished"></translation>
</message>
@@ -657,123 +677,148 @@ Reopen book to see changes</source>
<context>
<name>PliantQGraphicsView</name>
<message>
<location filename="../../contentwidgets.py" line="299"/>
<location filename="../../contentwidgets.py" line="343"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="303"/>
<location filename="../../contentwidgets.py" line="347"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="310"/>
<location filename="../../contentwidgets.py" line="354"/>
<source>Save page as...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="314"/>
<location filename="../../contentwidgets.py" line="358"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="319"/>
<location filename="../../contentwidgets.py" line="363"/>
<source>Double page mode (D)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="326"/>
<location filename="../../contentwidgets.py" line="370"/>
<source>Manga mode (M)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="334"/>
<location filename="../../contentwidgets.py" line="386"/>
<source>Zoom in (+)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="338"/>
<location filename="../../contentwidgets.py" line="390"/>
<source>Zoom out (-)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="342"/>
<location filename="../../contentwidgets.py" line="394"/>
<source>Fit width (W)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="346"/>
<location filename="../../contentwidgets.py" line="398"/>
<source>Best fit (B)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="350"/>
<location filename="../../contentwidgets.py" line="402"/>
<source>Original size (O)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="356"/>
<location filename="../../contentwidgets.py" line="408"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="377"/>
<source>Invert page colors</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PliantQTextBrowser</name>
<message>
<location filename="../../contentwidgets.py" line="568"/>
<location filename="../../contentwidgets.py" line="781"/>
<source>Exit fullscreen</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="572"/>
<location filename="../../contentwidgets.py" line="785"/>
<source>Exit Distraction Free mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="584"/>
<location filename="../../contentwidgets.py" line="797"/>
<source>Define</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="589"/>
<location filename="../../contentwidgets.py" line="802"/>
<source>Search for</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="594"/>
<location filename="../../contentwidgets.py" line="807"/>
<source>In this book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="628"/>
<location filename="../../contentwidgets.py" line="841"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="636"/>
<location filename="../../contentwidgets.py" line="849"/>
<source>Edit note</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="639"/>
<location filename="../../contentwidgets.py" line="852"/>
<source>Delete annotation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="643"/>
<location filename="../../contentwidgets.py" line="856"/>
<source>Add Bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="649"/>
<location filename="../../contentwidgets.py" line="862"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="610"/>
<location filename="../../contentwidgets.py" line="823"/>
<source>Annotate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="763"/>
<source>View</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="768"/>
<source>Flow text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="772"/>
<source>Single page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../contentwidgets.py" line="776"/>
<source>Double page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SettingsUI</name>
@@ -798,80 +843,85 @@ Reopen book to see changes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="327"/>
<location filename="../../settingsdialog.py" line="329"/>
<source>Library scan in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="331"/>
<location filename="../../settingsdialog.py" line="333"/>
<source>Checking library folders</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="347"/>
<location filename="../../settingsdialog.py" line="349"/>
<source>Parsing files</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="129"/>
<location filename="../../settingsdialog.py" line="131"/>
<source>Library</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="130"/>
<location filename="../../settingsdialog.py" line="132"/>
<source>Switches</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="132"/>
<location filename="../../settingsdialog.py" line="134"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="131"/>
<location filename="../../settingsdialog.py" line="133"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="551"/>
<location filename="../../settingsdialog.py" line="554"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../settingsdialog.py" line="550"/>
<source>Delete database and exit?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SideDock</name>
<message>
<location filename="../../dockwidgets.py" line="123"/>
<location filename="../../dockwidgets.py" line="131"/>
<source>Bookmarks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="124"/>
<location filename="../../dockwidgets.py" line="132"/>
<source>New bookmark</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="300"/>
<location filename="../../dockwidgets.py" line="308"/>
<source>Annotations</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="347"/>
<location filename="../../dockwidgets.py" line="355"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="348"/>
<location filename="../../dockwidgets.py" line="356"/>
<source>Search entire book</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="349"/>
<location filename="../../dockwidgets.py" line="357"/>
<source>Match case</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="350"/>
<location filename="../../dockwidgets.py" line="358"/>
<source>Match word</source>
<translation type="unfinished"></translation>
</message>
@@ -879,17 +929,17 @@ Reopen book to see changes</source>
<context>
<name>Tab</name>
<message>
<location filename="../../dockwidgets.py" line="264"/>
<location filename="../../dockwidgets.py" line="272"/>
<source>Edit</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../dockwidgets.py" line="267"/>
<location filename="../../dockwidgets.py" line="275"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../widgets.py" line="146"/>
<location filename="../../widgets.py" line="160"/>
<source>Note</source>
<translation type="unfinished"></translation>
</message>

View File

@@ -124,6 +124,8 @@ class Settings:
'hideScrollBars', 'False').capitalize())
self.parent.settings['auto_cover'] = literal_eval(self.settings.value(
'autoCover', 'False').capitalize())
self.parent.settings['nav_bar'] = literal_eval(self.settings.value(
'navBar', 'False').capitalize())
self.parent.settings['scroll_speed'] = int(self.settings.value('scrollSpeed', 7))
self.parent.settings['consider_read_at'] = int(self.settings.value('considerReadAt', 95))
self.parent.settings['small_increment'] = int(self.settings.value('smallIncrement', 4))
@@ -215,6 +217,7 @@ class Settings:
self.settings.setValue('cachingEnabled', str(current_settings['caching_enabled']))
self.settings.setValue('hideScrollBars', str(current_settings['hide_scrollbars']))
self.settings.setValue('attenuateTitles', str(current_settings['attenuate_titles']))
self.settings.setValue('navBar', str(current_settings['nav_bar']))
self.settings.setValue('autoCover', str(current_settings['auto_cover']))
self.settings.setValue('scrollSpeed', current_settings['scroll_speed'])
self.settings.setValue('considerReadAt', current_settings['consider_read_at'])

View File

@@ -103,6 +103,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
self.cachingEnabled.setChecked(self.main_window.settings['caching_enabled'])
self.hideScrollBars.setChecked(self.main_window.settings['hide_scrollbars'])
self.attenuateTitles.setChecked(self.main_window.settings['attenuate_titles'])
self.navBarVisible.setChecked(self.main_window.settings['nav_bar'])
self.autoCover.setChecked(self.main_window.settings['auto_cover'])
self.scrollSpeedSlider.setValue(self.main_window.settings['scroll_speed'])
self.readAtPercent.setValue(self.main_window.settings['consider_read_at'])
@@ -117,6 +118,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
self.cachingEnabled.clicked.connect(self.manage_checkboxes)
self.hideScrollBars.clicked.connect(self.manage_checkboxes)
self.attenuateTitles.clicked.connect(self.manage_checkboxes)
self.navBarVisible.clicked.connect(self.manage_checkboxes)
self.autoCover.clicked.connect(self.manage_checkboxes)
self.scrollSpeedSlider.valueChanged.connect(self.change_scroll_speed)
self.readAtPercent.valueChanged.connect(self.change_read_at)
@@ -427,6 +429,7 @@ class SettingsUI(QtWidgets.QDialog, settingswindow.Ui_Dialog):
'cachingEnabled': 'caching_enabled',
'hideScrollBars': 'hide_scrollbars',
'attenuateTitles': 'attenuate_titles',
'navBarVisible': 'nav_bar',
'autoCover': 'auto_cover'}
self.main_window.settings[

View File

@@ -43,10 +43,6 @@ else:
from PyQt5 import QtCore, QtGui
from lector import database
from lector.parsers.epub import ParseEPUB
from lector.parsers.mobi import ParseMOBI
from lector.parsers.fb2 import ParseFB2
from lector.parsers.comicbooks import ParseCOMIC
logger = logging.getLogger(__name__)
@@ -62,14 +58,38 @@ if mupdf_check:
from lector.parsers.pdf import ParsePDF
sorter['pdf'] = ParsePDF
else:
error_string = 'pymupdf is not installed. Will be unable to load PDFs.'
error_string = 'pymupdf is not installed. Will be unable to load PDF files.'
print(error_string)
logger.error(error_string)
# djvu - Optional
djvu_check = importlib.util.find_spec('djvu')
if djvu_check:
from lector.parsers.djvu import ParseDJVU
sorter['djvu'] = ParseDJVU
else:
error_string = 'djvulibre is not installed. Will be unable to load Djvu files.'
print(error_string)
logger.error(error_string)
# markdown - Optional
markdown_check = importlib.util.find_spec('markdown')
if markdown_check:
from lector.parsers.markdown import ParseMD
sorter['md'] = ParseMD
else:
error_string = 'markdown is not installed. Will be unable to load Markdown files.'
print(error_string)
logger.error(error_string)
# python-lxml - Required for everything except comics
lxml_check = importlib.util.find_spec('lxml')
xmltodict_check = importlib.util.find_spec('xmltodict')
if lxml_check:
if lxml_check and xmltodict_check:
from lector.parsers.epub import ParseEPUB
from lector.parsers.mobi import ParseMOBI
from lector.parsers.fb2 import ParseFB2
lxml_dependent = {
'epub': ParseEPUB,
'mobi': ParseMOBI,
@@ -81,10 +101,20 @@ if lxml_check:
'fb2.zip': ParseFB2}
sorter.update(lxml_dependent)
else:
critical_sting = 'python-lxml / xmltodict is not installed. Only comics will load.'
critical_sting = 'lxml / xmltodict is not installed. Only comics will load.'
print(critical_sting)
logger.critical(critical_sting)
# txt - Optional
textile_check = importlib.util.find_spec('textile')
if textile_check:
from lector.parsers.txt import ParseTXT
sorter['txt'] = ParseTXT
else:
error_string = 'textile is not installed. Will be unable to load TXT files.'
print(error_string)
logger.error(error_string)
available_parsers = [i for i in sorter]
progressbar = None # This is populated by __main__
_progress_emitter = None # This is to be made into a global variable
@@ -164,7 +194,7 @@ class BookSorter:
return book_data
def read_book(self, filename):
# filename is expected as a string containg the
# filename is expected as a string containing the
# full path of the ebook file
with open(filename, 'rb') as current_book:
@@ -201,7 +231,9 @@ class BookSorter:
break
if not valid_extension:
logger.error('Unsupported extension: ' + filename)
this_error = 'Unsupported extension: ' + filename
self.errors.append(this_error)
logger.error(this_error)
return
book_ref = sorter[file_extension](filename, self.temp_dir, file_md5)
@@ -209,8 +241,6 @@ class BookSorter:
# None of the following have an exception type specified
# This will keep everything from crashing, but will make
# troubleshooting difficult
# TODO
# In application notifications
try:
book_ref.read_book()

View File

@@ -25,11 +25,17 @@ from PyQt5 import QtCore, QtGui
from lector import sorter
from lector import database
# The following have to be separate
try:
from lector.parsers.pdf import render_pdf_page
except ImportError:
pass
try:
from lector.parsers.djvu import render_djvu_page
except ImportError:
pass
logger = logging.getLogger(__name__)
@@ -165,6 +171,10 @@ class BackGroundCacheRefill(QtCore.QThread):
page_data = self.book.loadPage(current_page)
pixmap = render_pdf_page(page_data)
elif self.filetype == 'djvu':
page_data = self.book.pages[current_page]
pixmap = render_djvu_page(page_data)
return pixmap
remove_index = self.image_cache.index(self.remove_value)

View File

@@ -234,6 +234,15 @@ class BookToolBar(QtWidgets.QToolBar):
self.invertButton.setObjectName('mangaModeButton')
self.invertButton.setCheckable(True)
self.rotateRightButton = QtWidgets.QAction(
image_factory.get_image('rotate-right'),
self._translate('BookToolBar', 'Rotate image clockwise'),
self)
self.rotateLeftButton = QtWidgets.QAction(
image_factory.get_image('rotate-left'),
self._translate('BookToolBar', 'Rotate image anti-clockwise'),
self)
self.zoomIn = QtWidgets.QAction(
image_factory.get_image('zoom-in'),
self._translate('BookToolBar', 'Zoom in (+)'),
@@ -273,12 +282,15 @@ class BookToolBar(QtWidgets.QToolBar):
self.addAction(self.mangaModeButton)
self.addAction(self.invertButton)
self.comicSeparator2 = self.addSeparator()
self.addAction(self.rotateRightButton)
self.addAction(self.rotateLeftButton)
self.comicSeparator3 = self.addSeparator()
self.addAction(self.zoomIn)
self.addAction(self.zoomOut)
self.addAction(self.fitWidth)
self.addAction(self.bestFit)
self.addAction(self.originalSize)
self.comicSeparator3 = self.addSeparator()
self.comicSeparator4 = self.addSeparator()
self.comicBGColorAction = self.addWidget(self.comicBGColor)
self.comicActions = [
@@ -286,6 +298,8 @@ class BookToolBar(QtWidgets.QToolBar):
self.mangaModeButton,
self.invertButton,
self.comicBGColorAction,
self.rotateLeftButton,
self.rotateRightButton,
self.zoomIn,
self.zoomOut,
self.fitWidth,
@@ -293,7 +307,8 @@ class BookToolBar(QtWidgets.QToolBar):
self.originalSize,
self.comicSeparator1,
self.comicSeparator2,
self.comicSeparator3]
self.comicSeparator3,
self.comicSeparator4]
for i in self.comicActions:
i.setVisible(False)
@@ -498,7 +513,10 @@ class FixedComboBox(QtWidgets.QComboBox):
def sizeHint(self):
# This and the one below should adjust to screen size
return QtCore.QSize(self.adjusted_size, 22)
return self.minimumSizeHint()
def minimumSizeHint(self):
return QtCore.QSize(self.adjusted_size, 32)
def wheelEvent(self, QWheelEvent):
# Disable mouse wheel scrolling in the ComboBox
@@ -511,7 +529,10 @@ class FixedLineEdit(QtWidgets.QLineEdit):
self.adjusted_size = screen_width // 4.5
def sizeHint(self):
return QtCore.QSize(self.adjusted_size, 22)
return self.minimumSizeHint()
def minimumSizeHint(self):
return QtCore.QSize(self.adjusted_size, 32)
def keyReleaseEvent(self, event):
if event.key() == QtCore.Qt.Key_Escape:

View File

@@ -24,7 +24,7 @@ import logging
from PyQt5 import QtWidgets, QtGui, QtCore
from lector.sorter import resize_image
from lector.dockwidgets import PliantDockWidget
from lector.dockwidgets import PliantDockWidget, PliantNavBarWidget
from lector.contentwidgets import PliantQGraphicsView, PliantQTextBrowser
logger = logging.getLogger(__name__)
@@ -78,6 +78,7 @@ class Tab(QtWidgets.QWidget):
if self.are_we_doing_images_only:
self.contentView = PliantQGraphicsView(
self.metadata['path'], self.main_window, self)
self.image_rotation = 0
else:
self.contentView = PliantQTextBrowser(
@@ -135,6 +136,19 @@ class Tab(QtWidgets.QWidget):
self.contentView.setVerticalScrollBarPolicy(
QtCore.Qt.ScrollBarAsNeeded)
# Create a NavBar widget
if self.main_window.settings['nav_bar']:
self.navBar = PliantNavBarWidget(
self.main_window, self.contentView, self)
self.navBar.setFloating(True)
self.navBar.setTitleBarWidget(QtWidgets.QWidget(self))
self.navBar.hide()
else:
# This keeps from having to set visibility conditions
# everywhere
self.navBar = QtWidgets.QWidget()
self.navBar.setFixedSize(0, 0)
# Create a common dock for bookmarks, annotations, and search
self.sideDock = PliantDockWidget(
self.main_window, False, self.contentView, self)
@@ -178,9 +192,9 @@ class Tab(QtWidgets.QWidget):
this_tab_index, QtGui.QIcon(cover_icon))
# Hide mouse cursor timer
self.mouse_hide_timer = QtCore.QTimer()
self.mouse_hide_timer.setSingleShot(True)
self.mouse_hide_timer.timeout.connect(self.hide_mouse)
self.mouseHideTimer = QtCore.QTimer()
self.mouseHideTimer.setSingleShot(True)
self.mouseHideTimer.timeout.connect(self.hide_mouse)
# Hide the tab bar in case distraction free mode is active
if not self.main_window.settings['show_bars']:
@@ -202,6 +216,15 @@ class Tab(QtWidgets.QWidget):
self.sideDock.sideDockTabWidget.setCurrentIndex(tab_required)
def generate_rotation(self, delta_angle):
self.image_rotation += delta_angle
# Set bounds for rotation angle
if self.image_rotation == 360:
self.image_rotation = 0
if self.image_rotation == -90:
self.image_rotation = 270
def update_last_accessed_time(self):
self.metadata['last_accessed'] = QtCore.QDateTime().currentDateTime()
@@ -249,7 +272,7 @@ class Tab(QtWidgets.QWidget):
# Finally, to make sure the cover image isn't
# scrolled halfway through on first open,
if self.metadata['position']['current_chapter'] == 1:
if self.metadata['cover'] and self.metadata['position']['current_chapter'] == 1:
self.contentView.verticalScrollBar().setValue(0)
def generate_position(self, is_read=False):
@@ -380,7 +403,7 @@ class Tab(QtWidgets.QWidget):
if not self.are_we_doing_images_only:
self.hiddenButton.animateClick(50)
self.mouse_hide_timer.start(2000)
self.mouseHideTimer.start(2000)
self.is_fullscreen = True
def exit_fullscreen(self):
@@ -413,7 +436,8 @@ class Tab(QtWidgets.QWidget):
if not self.main_window.settings['show_bars']:
self.main_window.toggle_distraction_free()
self.mouse_hide_timer.start(2000)
self.navBar.hide()
self.mouseHideTimer.start(2000)
self.contentView.setFocus()
def set_content(self, required_position, tocBox_readjust=False, record_position=False):
@@ -450,6 +474,13 @@ class Tab(QtWidgets.QWidget):
if tocBox_readjust:
self.set_tocBox_index(required_position, None)
# The NavBar doesn't get declared until later
try:
self.set_tocBox_index(
required_position, self.navBar.tocComboBox)
except AttributeError:
pass
self.contentView.setFocus()
def set_tocBox_index(self, current_position=None, tocBox=None):
@@ -561,6 +592,9 @@ class Tab(QtWidgets.QWidget):
def hide_mouse(self):
self.contentView.viewport().setCursor(QtCore.Qt.BlankCursor)
if self.contentView.hasFocus():
self.navBar.hide()
def sneaky_change(self):
direction = -1
if self.sender().objectName() == 'nextChapter':