71 lines
2.0 KiB
Python
71 lines
2.0 KiB
Python
import gi
|
|
gi.require_version("Gtk","3.0")
|
|
gi.require_version("WebKit2","4.0")
|
|
from gi.repository import Gtk,WebKit2
|
|
|
|
browser = mfp.require("browser")
|
|
browserWindow = browser.module.require(mfp.p("window","browser.py"))
|
|
defaultProtocol = "http"
|
|
|
|
def resizeHandler(obj,event):
|
|
onResize(obj,event.width,event.height)
|
|
|
|
def onResize(obj,width,height):
|
|
obj.cMain.move(obj.cUrlBox,5,5)
|
|
obj.cUrlBox.set_size_request(width - 10,32)
|
|
obj.cMain.move(obj.cGoButton,width - 65,height - 35)
|
|
obj.cGoButton.set_size_request(60,30)
|
|
|
|
def doGo(button):
|
|
window = button.get_toplevel()
|
|
webView = window.cStatus.webView
|
|
mainWindow = webView.get_toplevel()
|
|
webViewIndex = mainWindow.cWebViews.index(webView)
|
|
|
|
oldUri = webView.get_uri()
|
|
if oldUri == None: oldUri = ""
|
|
uri = window.cUrlBox.get_text()
|
|
|
|
if oldUri == uri or oldUri.split("#",1)[0] != uri.split("#",1)[0]: # If the URL is 100% the same, or the URL without the hash is different.
|
|
webView.destroy()
|
|
webView = browser.createWebView()
|
|
browserWindow.addWebView(mainWindow,webView,webViewIndex)
|
|
browserWindow.onResize(mainWindow)
|
|
mainWindow.show_all()
|
|
|
|
uri = uri.split(":",1)
|
|
if len(uri) < 2: uri = [defaultProtocol] + uri
|
|
webView.load_uri(":".join(uri))
|
|
window.close()
|
|
|
|
def goAction(status):
|
|
obj = Gtk.Window()
|
|
obj.set_title("Go ... (" +status.webView.get_toplevel().get_title()+ ")")
|
|
obj.resize(320,80)
|
|
obj.connect("configure-event",resizeHandler)
|
|
|
|
obj.cMainWrapper = Gtk.ScrolledWindow()
|
|
obj.add(obj.cMainWrapper)
|
|
obj.cMain = Gtk.Fixed()
|
|
obj.cMainWrapper.add(obj.cMain)
|
|
|
|
obj.cStatus = status
|
|
obj.cUrlBox = Gtk.Entry()
|
|
url = status.webView.get_uri()
|
|
if url == None: url = ""
|
|
obj.cUrlBox.set_text(url)
|
|
obj.cUrlBox.connect("activate",doGo)
|
|
obj.cMain.add(obj.cUrlBox)
|
|
obj.cGoButton = Gtk.Button()
|
|
obj.cGoButton.set_label("Go!")
|
|
obj.cGoButton.connect("clicked",doGo)
|
|
obj.cMain.add(obj.cGoButton)
|
|
|
|
onResize(obj,320,80)
|
|
obj.show_all()
|
|
|
|
def addGo(status):
|
|
status.addon.addItem(status,"Go ...",goAction)
|
|
|
|
eventHandler = mfp.Bunch()
|
|
eventHandler["contextMenu:created"] = addGo |