me.fier.gawk/user/addon/contextMenuGo/_main.py

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