mirror of
git://github.com/kovidgoyal/calibre.git
synced 2026-05-09 06:03:44 +02:00
Add an entry to the Connect/share menu to open the content server in a local browser when it is running. Fixes #1948493 [Enhancement Request: Open content server in browser](https://bugs.launchpad.net/calibre/+bug/1948493)
This commit is contained in:
parent
e22319199b
commit
9a295fad07
1 changed files with 22 additions and 2 deletions
|
|
@ -6,15 +6,30 @@
|
|||
__copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
from qt.core import QIcon, QMenu, QTimer, QToolButton, pyqtSignal
|
||||
from qt.core import QIcon, QMenu, QTimer, QToolButton, pyqtSignal, QUrl
|
||||
|
||||
from calibre.gui2 import info_dialog, question_dialog
|
||||
from calibre.gui2 import info_dialog, question_dialog, open_url
|
||||
from calibre.gui2.actions import InterfaceAction
|
||||
from calibre.gui2.dialogs.smartdevice import SmartdeviceDialog
|
||||
from calibre.utils.icu import primary_sort_key
|
||||
from calibre.utils.smtp import config as email_config
|
||||
|
||||
|
||||
def local_url_for_content_server():
|
||||
from calibre.srv.opts import server_config
|
||||
opts = server_config()
|
||||
interface = opts.listen_on or '0.0.0.0'
|
||||
interface = {'0.0.0.0': '127.0.0.1', '::':'::1'}.get(interface)
|
||||
protocol = 'https' if opts.ssl_certfile and opts.ssl_keyfile else 'http'
|
||||
prefix = opts.url_prefix or ''
|
||||
port = opts.port
|
||||
return f'{protocol}://{interface}:{port}{prefix}'
|
||||
|
||||
|
||||
def open_in_browser():
|
||||
open_url(QUrl(local_url_for_content_server()))
|
||||
|
||||
|
||||
class ShareConnMenu(QMenu): # {{{
|
||||
|
||||
connect_to_folder = pyqtSignal()
|
||||
|
|
@ -41,6 +56,10 @@ def __init__(self, parent=None):
|
|||
self.addAction(QIcon(I('network-server.png')),
|
||||
_('Start Content server'))
|
||||
connect_lambda(self.toggle_server_action.triggered, self, lambda self: self.toggle_server.emit())
|
||||
self.open_server_in_browser_action = self.addAction(
|
||||
QIcon(I('forward.png')), _("Visit Content server in browser"))
|
||||
connect_lambda(self.open_server_in_browser_action.triggered, self, lambda self: open_in_browser())
|
||||
self.open_server_in_browser_action.setVisible(False)
|
||||
self.control_smartdevice_action = \
|
||||
self.addAction(QIcon(I('dot_red.png')),
|
||||
self.DEVICE_MSGS[0])
|
||||
|
|
@ -79,6 +98,7 @@ def server_state_changed(self, running):
|
|||
else:
|
||||
self.ip_text = ''
|
||||
self.toggle_server_action.setText(text)
|
||||
self.open_server_in_browser_action.setVisible(running)
|
||||
|
||||
def hide_smartdevice_menus(self):
|
||||
self.control_smartdevice_action.setVisible(False)
|
||||
|
|
|
|||
Loading…
Reference in a new issue