diff --git a/src/calibre/gui2/book_details.py b/src/calibre/gui2/book_details.py
index dd12080d7f..8e3e8b10de 100644
--- a/src/calibre/gui2/book_details.py
+++ b/src/calibre/gui2/book_details.py
@@ -8,7 +8,7 @@ __docformat__ = 'restructuredtext en'
import os, collections, sys
from Queue import Queue
-from PyQt4.Qt import QPixmap, QSize, QWidget, Qt, pyqtSignal, \
+from PyQt4.Qt import QPixmap, QSize, QWidget, Qt, pyqtSignal, QUrl, \
QPropertyAnimation, QEasingCurve, QThread, QApplication, QFontInfo, \
QSizePolicy, QPainter, QRect, pyqtProperty, QLayout, QPalette
from PyQt4.QtWebKit import QWebView
@@ -18,7 +18,7 @@ from calibre.gui2.widgets import IMAGE_EXTENSIONS
from calibre.ebooks import BOOK_EXTENSIONS
from calibre.constants import preferred_encoding
from calibre.library.comments import comments_to_html
-from calibre.gui2 import config, open_local_file
+from calibre.gui2 import config, open_local_file, open_url
from calibre.utils.icu import sort_key
# render_rows(data) {{{
@@ -412,6 +412,12 @@ class BookDetails(QWidget): # {{{
self.view_specific_format.emit(int(id_), fmt)
elif typ == 'devpath':
open_local_file(val)
+ else:
+ try:
+ open_url(QUrl(link, QUrl.TolerantMode))
+ except:
+ import traceback
+ traceback.print_exc()
def mouseDoubleClickEvent(self, ev):
diff --git a/src/calibre/gui2/dialogs/book_info.py b/src/calibre/gui2/dialogs/book_info.py
index 1384c27b8c..eac8461299 100644
--- a/src/calibre/gui2/dialogs/book_info.py
+++ b/src/calibre/gui2/dialogs/book_info.py
@@ -9,7 +9,7 @@ from PyQt4.Qt import QCoreApplication, SIGNAL, QModelIndex, QTimer, Qt, \
QDialog, QPixmap, QGraphicsScene, QIcon, QSize
from calibre.gui2.dialogs.book_info_ui import Ui_BookInfo
-from calibre.gui2 import dynamic, open_local_file
+from calibre.gui2 import dynamic, open_local_file, open_url
from calibre import fit_image
from calibre.library.comments import comments_to_html
from calibre.utils.icu import sort_key
@@ -22,6 +22,8 @@ class BookInfo(QDialog, Ui_BookInfo):
self.setupUi(self)
self.cover_pixmap = None
self.comments.sizeHint = self.comments_size_hint
+ self.comments.page().setLinkDelegationPolicy(self.comments.page().DelegateAllLinks)
+ self.comments.linkClicked(self.link_clicked)
self.view_func = view_func
@@ -41,6 +43,8 @@ class BookInfo(QDialog, Ui_BookInfo):
screen_height = desktop.availableGeometry().height() - 100
self.resize(self.size().width(), screen_height)
+ def link_clicked(self, url):
+ open_url(url)
def comments_size_hint(self):
return QSize(350, 250)
@@ -115,6 +119,7 @@ class BookInfo(QDialog, Ui_BookInfo):
lines = [x if x.strip() else '
' for x in lines]
comments = '\n'.join(lines)
self.comments.setHtml('