Compare commits

...

2 Commits

Author SHA1 Message Date
Fierelier c68e6843c3 Add addon: downloader 2023-03-03 02:06:37 +01:00
Fierelier fbfebe7c58 Open a new tab on middle click 2023-03-03 00:28:00 +01:00
3 changed files with 55 additions and 3 deletions

View File

@ -4,6 +4,7 @@ title
favicon
history
newWindow
downloader
# Settings
settings

View File

@ -0,0 +1,47 @@
import gi
gi.require_version("Gtk","3.0")
gi.require_version("WebKit2","4.0")
from gi.repository import Gtk,WebKit2,GLib
browser = mfp.require("browser")
eventHandler = mfp.Bunch()
def downloadProgress(download,data_length):
progress = str(int(download.props.estimated_progress * 100))
if progress == download.cProgress: return
download.cProgress = progress
print(download.props.destination.replace("file://","",1)+ ": " +progress+ "%")
def downloadFailed(download,error):
download.cError = error.message
def downloadFinished(download):
print(download.props.destination.replace("file://","",1)+ ": " +download.cError)
def decideDestination(download,suggested_filename):
fileChooser = Gtk.FileChooserNative()
fileChooser.set_action(Gtk.FileChooserAction.SAVE)
response = fileChooser.run()
if response != Gtk.ResponseType.ACCEPT:
download.cancel()
return False
download.props.allow_overwrite = True
download.set_destination("file://" +fileChooser.get_filename())
download.cProgress = "-1.00"
download.connect("received-data",downloadProgress)
download.cError = "Finished."
download.connect("failed",downloadFailed)
download.connect("finished",downloadFinished)
return False
def download(webContext,download):
download.connect("decide-destination",decideDestination)
contextConnected = None
def onWebviewCreated(webView):
global contextConnected
if contextConnected == None:
contextConnected = webView.props.web_context
contextConnected.connect("download-started",download)
eventHandler["webview:created"] = onWebviewCreated

View File

@ -6,9 +6,13 @@ browser = mfp.require("browser")
eventHandler = mfp.Bunch()
def decidePolicy(webView,decision,decisionType):
if decisionType == WebKit2.PolicyDecisionType.NEW_WINDOW_ACTION:
webView.cNewWindow = True
decision.use()
if decisionType == WebKit2.PolicyDecisionType.NAVIGATION_ACTION:
navAction = decision.get_navigation_action()
button = navAction.get_mouse_button()
if button != 2: return False
create(webView,navAction)
decision.ignore()
return True
return False
def create(webView,navigationAction):