def load_javascript(self, evaljs):
        '''
        from calibre docs:
        This method is called every time a new HTML document is
        loaded in the viewer. Use it to load javascript libraries
        into the viewer.
        '''

        dlog('loading javascript...')
        for js_file in (
                'annotator-full.1.2.7/annotator-full.min.js',
                'store.js',
                ):
            evaljs(get_resources(js_file))
        dlog('javascript ok')

        # NOTE: EbookViewer.iterator is None upon init.  it doesn't get reified
        # until the book is ready to render (or at least javascript is ready to
        # load). that's why the annotation toc is populated at this late stage.
        if self._view.annotation_toc_model is None and \
                self._view.iterator is not None:

            # QtWidgets.QWidget(self._view)
            ui = self._view

            # not sure if needed?
            splitter = QtWidgets.QSplitter(self._view)
            splitter.setOrientation(QtCore.Qt.Horizontal)
            splitter.setChildrenCollapsible(False)
            splitter.setObjectName('annotation_toc_splitter')
            # not sure if correct:
            # an_list = TOCView(splitter)

            w = ui.annotation_toc_container
            an_list = TOCView(w)
            an_list.setMinimumSize(QtCore.QSize(150, 0))
            an_list.setMinimumWidth(80)
            an_list.setObjectName('annotation_toc')
            an_list.setCursor(Qt.PointingHandCursor)

            self._view.annotation_toc_model = AnnotationTOC(ui.iterator.spine, self._view.current_title)
            an_list.setModel(self._view.annotation_toc_model)

            ui.annotation_toc = an_list

            an_list.pressed[QModelIndex].connect(self.annotation_toc_clicked)
            an_list.setCursor(Qt.PointingHandCursor)

            w.l.addWidget(ui.annotation_toc)

            # search box setup
            # ref calibre/gui2/viewer/toc.py
            ui.annotation_toc_search = AnnotationSearchBox(self._view)
            ui.annotation_toc_search.setMinimumContentsLength(15)
            ui.annotation_toc_search.line_edit.setPlaceholderText(_('Search Annotations'))
            ui.annotation_toc_search.setToolTip(_('Search for text in the Annotations'))
            ui.annotation_toc_search.search.connect(self.do_annotation_search)
            w.l.addWidget(ui.annotation_toc_search)

            w.l.setContentsMargins(0, 0, 0, 0)
Example #2
0
class Ui_EbookViewer(object):
    def setupUi(self, EbookViewer):
        EbookViewer.setObjectName(_fromUtf8("EbookViewer"))
        EbookViewer.resize(653, 672)
        icon = QtGui.QIcon()
        icon.addPixmap(QtGui.QPixmap(_fromUtf8(I("viewer.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        EbookViewer.setWindowIcon(icon)
        self.centralwidget = QtGui.QWidget(EbookViewer)
        self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
        self.gridLayout_2 = QtGui.QGridLayout(self.centralwidget)
        self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
        self.splitter = QtGui.QSplitter(self.centralwidget)
        self.splitter.setOrientation(QtCore.Qt.Horizontal)
        self.splitter.setObjectName(_fromUtf8("splitter"))
        self.toc = TOCView(self.splitter)
        self.toc.setObjectName(_fromUtf8("toc"))
        self.frame = QtGui.QFrame(self.splitter)
        self.frame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtGui.QFrame.Raised)
        self.frame.setObjectName(_fromUtf8("frame"))
        self.gridLayout = QtGui.QGridLayout(self.frame)
        self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
        self.vertical_scrollbar = QtGui.QScrollBar(self.frame)
        self.vertical_scrollbar.setOrientation(QtCore.Qt.Vertical)
        self.vertical_scrollbar.setObjectName(_fromUtf8("vertical_scrollbar"))
        self.gridLayout.addWidget(self.vertical_scrollbar, 1, 1, 1, 1)
        self.horizontal_scrollbar = QtGui.QScrollBar(self.frame)
        self.horizontal_scrollbar.setOrientation(QtCore.Qt.Horizontal)
        self.horizontal_scrollbar.setObjectName(_fromUtf8("horizontal_scrollbar"))
        self.gridLayout.addWidget(self.horizontal_scrollbar, 2, 0, 1, 1)
        self.dictionary_box = QtGui.QFrame(self.frame)
        self.dictionary_box.setFrameShape(QtGui.QFrame.StyledPanel)
        self.dictionary_box.setFrameShadow(QtGui.QFrame.Raised)
        self.dictionary_box.setObjectName(_fromUtf8("dictionary_box"))
        self.horizontalLayout = QtGui.QHBoxLayout(self.dictionary_box)
        self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
        self.dictionary_view = QtWebKit.QWebView(self.dictionary_box)
        self.dictionary_view.setMinimumSize(QtCore.QSize(0, 150))
        self.dictionary_view.setUrl(QtCore.QUrl(_fromUtf8("about:blank")))
        self.dictionary_view.setObjectName(_fromUtf8("dictionary_view"))
        self.horizontalLayout.addWidget(self.dictionary_view)
        self.close_dictionary_view = QtGui.QToolButton(self.dictionary_box)
        icon1 = QtGui.QIcon()
        icon1.addPixmap(QtGui.QPixmap(_fromUtf8(I("window-close.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.close_dictionary_view.setIcon(icon1)
        self.close_dictionary_view.setObjectName(_fromUtf8("close_dictionary_view"))
        self.horizontalLayout.addWidget(self.close_dictionary_view)
        self.gridLayout.addWidget(self.dictionary_box, 3, 0, 1, 2)
        self.view = DocumentView(self.frame)
        self.view.setObjectName(_fromUtf8("view"))
        self.gridLayout.addWidget(self.view, 1, 0, 1, 1)
        self.gridLayout_2.addWidget(self.splitter, 0, 0, 1, 1)
        EbookViewer.setCentralWidget(self.centralwidget)
        self.tool_bar = QtGui.QToolBar(EbookViewer)
        self.tool_bar.setIconSize(QtCore.QSize(32, 32))
        self.tool_bar.setObjectName(_fromUtf8("tool_bar"))
        EbookViewer.addToolBar(QtCore.Qt.LeftToolBarArea, self.tool_bar)
        self.tool_bar2 = QtGui.QToolBar(EbookViewer)
        self.tool_bar2.setObjectName(_fromUtf8("tool_bar2"))
        EbookViewer.addToolBar(QtCore.Qt.TopToolBarArea, self.tool_bar2)
        self.action_back = QtGui.QAction(EbookViewer)
        icon2 = QtGui.QIcon()
        icon2.addPixmap(QtGui.QPixmap(_fromUtf8(I("back.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_back.setIcon(icon2)
        self.action_back.setObjectName(_fromUtf8("action_back"))
        self.action_forward = QtGui.QAction(EbookViewer)
        icon3 = QtGui.QIcon()
        icon3.addPixmap(QtGui.QPixmap(_fromUtf8(I("forward.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_forward.setIcon(icon3)
        self.action_forward.setObjectName(_fromUtf8("action_forward"))
        self.action_next_page = QtGui.QAction(EbookViewer)
        icon4 = QtGui.QIcon()
        icon4.addPixmap(QtGui.QPixmap(_fromUtf8(I("next.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_next_page.setIcon(icon4)
        self.action_next_page.setObjectName(_fromUtf8("action_next_page"))
        self.action_previous_page = QtGui.QAction(EbookViewer)
        icon5 = QtGui.QIcon()
        icon5.addPixmap(QtGui.QPixmap(_fromUtf8(I("previous.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_previous_page.setIcon(icon5)
        self.action_previous_page.setObjectName(_fromUtf8("action_previous_page"))
        self.action_font_size_larger = QtGui.QAction(EbookViewer)
        icon6 = QtGui.QIcon()
        icon6.addPixmap(QtGui.QPixmap(_fromUtf8(I("font_size_larger.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_font_size_larger.setIcon(icon6)
        self.action_font_size_larger.setObjectName(_fromUtf8("action_font_size_larger"))
        self.action_font_size_smaller = QtGui.QAction(EbookViewer)
        icon7 = QtGui.QIcon()
        icon7.addPixmap(QtGui.QPixmap(_fromUtf8(I("font_size_smaller.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_font_size_smaller.setIcon(icon7)
        self.action_font_size_smaller.setObjectName(_fromUtf8("action_font_size_smaller"))
        self.action_table_of_contents = QtGui.QAction(EbookViewer)
        icon8 = QtGui.QIcon()
        icon8.addPixmap(QtGui.QPixmap(_fromUtf8(I("highlight_only_on.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_table_of_contents.setIcon(icon8)
        self.action_table_of_contents.setObjectName(_fromUtf8("action_table_of_contents"))
        self.action_metadata = QtGui.QAction(EbookViewer)
        icon9 = QtGui.QIcon()
        icon9.addPixmap(QtGui.QPixmap(_fromUtf8(I("dialog_information.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_metadata.setIcon(icon9)
        self.action_metadata.setObjectName(_fromUtf8("action_metadata"))
        self.action_open_ebook = QtGui.QAction(EbookViewer)
        icon10 = QtGui.QIcon()
        icon10.addPixmap(QtGui.QPixmap(_fromUtf8(I("document_open.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_open_ebook.setIcon(icon10)
        self.action_open_ebook.setObjectName(_fromUtf8("action_open_ebook"))
        self.action_find_next = QtGui.QAction(EbookViewer)
        icon11 = QtGui.QIcon()
        icon11.addPixmap(QtGui.QPixmap(_fromUtf8(I("arrow-down.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_find_next.setIcon(icon11)
        self.action_find_next.setObjectName(_fromUtf8("action_find_next"))
        self.action_copy = QtGui.QAction(EbookViewer)
        icon12 = QtGui.QIcon()
        icon12.addPixmap(QtGui.QPixmap(_fromUtf8(I("edit-copy.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_copy.setIcon(icon12)
        self.action_copy.setObjectName(_fromUtf8("action_copy"))
        self.action_preferences = QtGui.QAction(EbookViewer)
        icon13 = QtGui.QIcon()
        icon13.addPixmap(QtGui.QPixmap(_fromUtf8(I("config.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_preferences.setIcon(icon13)
        self.action_preferences.setObjectName(_fromUtf8("action_preferences"))
        self.action_reference_mode = QtGui.QAction(EbookViewer)
        icon14 = QtGui.QIcon()
        icon14.addPixmap(QtGui.QPixmap(_fromUtf8(I("lookfeel.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_reference_mode.setIcon(icon14)
        self.action_reference_mode.setObjectName(_fromUtf8("action_reference_mode"))
        self.action_bookmark = QtGui.QAction(EbookViewer)
        icon15 = QtGui.QIcon()
        icon15.addPixmap(QtGui.QPixmap(_fromUtf8(I("bookmarks.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_bookmark.setIcon(icon15)
        self.action_bookmark.setObjectName(_fromUtf8("action_bookmark"))
        self.action_full_screen = QtGui.QAction(EbookViewer)
        icon16 = QtGui.QIcon()
        icon16.addPixmap(QtGui.QPixmap(_fromUtf8(I("page.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_full_screen.setIcon(icon16)
        self.action_full_screen.setObjectName(_fromUtf8("action_full_screen"))
        self.action_print = QtGui.QAction(EbookViewer)
        icon17 = QtGui.QIcon()
        icon17.addPixmap(QtGui.QPixmap(_fromUtf8(I("print.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_print.setIcon(icon17)
        self.action_print.setObjectName(_fromUtf8("action_print"))
        self.action_find_previous = QtGui.QAction(EbookViewer)
        icon18 = QtGui.QIcon()
        icon18.addPixmap(QtGui.QPixmap(_fromUtf8(I("arrow-up.png"))), QtGui.QIcon.Normal, QtGui.QIcon.Off)
        self.action_find_previous.setIcon(icon18)
        self.action_find_previous.setObjectName(_fromUtf8("action_find_previous"))
        self.tool_bar.addAction(self.action_back)
        self.tool_bar.addAction(self.action_forward)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_open_ebook)
        self.tool_bar.addAction(self.action_copy)
        self.tool_bar.addAction(self.action_font_size_larger)
        self.tool_bar.addAction(self.action_font_size_smaller)
        self.tool_bar.addAction(self.action_table_of_contents)
        self.tool_bar.addAction(self.action_full_screen)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_previous_page)
        self.tool_bar.addAction(self.action_next_page)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_bookmark)
        self.tool_bar.addAction(self.action_reference_mode)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_preferences)
        self.tool_bar.addAction(self.action_metadata)
        self.tool_bar.addSeparator()
        self.tool_bar.addAction(self.action_print)
        self.tool_bar2.addAction(self.action_find_next)
        self.tool_bar2.addAction(self.action_find_previous)

        self.retranslateUi(EbookViewer)
        QtCore.QMetaObject.connectSlotsByName(EbookViewer)

    def retranslateUi(self, EbookViewer):
        EbookViewer.setWindowTitle(_("E-book Viewer"))
        self.close_dictionary_view.setToolTip(_("Close dictionary"))
        self.close_dictionary_view.setText(_("..."))
        self.tool_bar.setWindowTitle(_("toolBar"))
        self.action_back.setText(_("Back"))
        self.action_forward.setText(_("Forward"))
        self.action_next_page.setText(_("Next page"))
        self.action_previous_page.setText(_("Previous page"))
        self.action_font_size_larger.setText(_("Font size larger"))
        self.action_font_size_smaller.setText(_("Font size smaller"))
        self.action_table_of_contents.setText(_("Table of Contents"))
        self.action_metadata.setText(_("Metadata"))
        self.action_open_ebook.setText(_("Open ebook"))
        self.action_find_next.setText(_("Find next"))
        self.action_find_next.setToolTip(_("Find next occurrence"))
        self.action_find_next.setShortcut(_("F3"))
        self.action_copy.setText(_("Copy to clipboard"))
        self.action_preferences.setText(_("Preferences"))
        self.action_reference_mode.setText(_("Reference Mode"))
        self.action_bookmark.setText(_("Bookmark"))
        self.action_full_screen.setText(_("Toggle full screen"))
        self.action_print.setText(_("Print"))
        self.action_find_previous.setText(_("Find previous"))
        self.action_find_previous.setToolTip(_("Find previous occurrence"))
        self.action_find_previous.setShortcut(_("Shift+F3"))
    def load_javascript(self, evaljs):
        '''
        from calibre docs:
        This method is called every time a new HTML document is
        loaded in the viewer. Use it to load javascript libraries
        into the viewer.
        '''

        dlog('loading javascript...')
        for js_file in (
                'annotator-full.1.2.7/annotator-full.min.js',
                'store.js',
        ):
            evaljs(get_resources(js_file))
        dlog('javascript ok')

        # NOTE: EbookViewer.iterator is None upon init.  it doesn't get reified
        # until the book is ready to render (or at least javascript is ready to
        # load). that's why the annotation toc is populated at this late stage.
        if self._view.annotation_toc_model is None and \
                self._view.iterator is not None:

            # QtWidgets.QWidget(self._view)
            ui = self._view

            # not sure if needed?
            splitter = QtWidgets.QSplitter(self._view)
            splitter.setOrientation(QtCore.Qt.Horizontal)
            splitter.setChildrenCollapsible(False)
            splitter.setObjectName('annotation_toc_splitter')
            # not sure if correct:
            # an_list = TOCView(splitter)

            w = ui.annotation_toc_container
            an_list = TOCView(w)
            an_list.setMinimumSize(QtCore.QSize(150, 0))
            an_list.setMinimumWidth(80)
            an_list.setObjectName('annotation_toc')
            an_list.setCursor(Qt.PointingHandCursor)

            self._view.annotation_toc_model = AnnotationTOC(
                ui.iterator.spine, self._view.current_title)
            an_list.setModel(self._view.annotation_toc_model)

            ui.annotation_toc = an_list

            an_list.pressed[QModelIndex].connect(self.annotation_toc_clicked)
            an_list.setCursor(Qt.PointingHandCursor)

            w.l.addWidget(ui.annotation_toc)

            # search box setup
            # ref calibre/gui2/viewer/toc.py
            ui.annotation_toc_search = AnnotationSearchBox(self._view)
            ui.annotation_toc_search.setMinimumContentsLength(15)
            ui.annotation_toc_search.line_edit.setPlaceholderText(
                _('Search Annotations'))
            ui.annotation_toc_search.setToolTip(
                _('Search for text in the Annotations'))
            ui.annotation_toc_search.search.connect(self.do_annotation_search)
            w.l.addWidget(ui.annotation_toc_search)

            w.l.setContentsMargins(0, 0, 0, 0)