diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py index cfb582024d..ec5f4ca731 100644 --- a/src/calibre/gui2/book_details.py +++ b/src/calibre/gui2/book_details.py @@ -7,9 +7,10 @@ __docformat__ = 'restructuredtext en' import os, collections -from PyQt4.Qt import QLabel, QPixmap, QSize, QWidget, Qt, pyqtSignal, \ +from PyQt4.Qt import QPixmap, QSize, QWidget, Qt, pyqtSignal, \ QVBoxLayout, QScrollArea, QPropertyAnimation, QEasingCurve, \ QSizePolicy, QPainter, QRect, pyqtProperty +from PyQt4.QtWebKit import QWebView from calibre import fit_image, prepare_string_for_xml from calibre.gui2.widgets import IMAGE_EXTENSIONS @@ -165,31 +166,26 @@ class CoverView(QWidget): # {{{ # }}} # Book Info {{{ -class Label(QLabel): +class InfoBook(QWebView): - mr = pyqtSignal(object) link_clicked = pyqtSignal(object) - def __init__(self): - QLabel.__init__(self) - self.setTextFormat(Qt.RichText) - self.setText('') - self.setWordWrap(True) - self.setAlignment(Qt.AlignTop) - self.linkActivated.connect(self.link_activated) + def __init__(self, parent): + QWebView.__init__(self, parent) + self.page().setLinkDelegationPolicy(self.page().DelegateAllLinks) + self.linkClicked.connect(self.link_activated) self._link_clicked = False self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + #self.loadFinished.connect(self.turnoff_scrollbar) def link_activated(self, link): self._link_clicked = True - link = unicode(link) + link = unicode(link.toString()) self.link_clicked.emit(link) - def mouseReleaseEvent(self, ev): - QLabel.mouseReleaseEvent(self, ev) - if not self._link_clicked: - self.mr.emit(ev) - self._link_clicked = False + def turnoff_scrollbar(self, *args): + self.page().mainFrame().setScrollBarPolicy(Qt.Horizontal, Qt.ScrollBarAlwaysOff) + class BookInfo(QScrollArea): @@ -197,14 +193,13 @@ class BookInfo(QScrollArea): QScrollArea.__init__(self, parent) self.vertical = vertical self.setWidgetResizable(True) - self.label = Label() + self.label = InfoView(self) self.setWidget(self.label) self.link_clicked = self.label.link_clicked - self.mr = self.label.mr self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff) def show_data(self, data): - self.label.setText('') + self.label.setHtml('') rows = render_rows(data) rows = u'\n'.join([u'
%s | %s |