diff --git a/src/scripts/runaction/action.py b/src/scripts/runaction/action.py
--- a/src/scripts/runaction/action.py
+++ b/src/scripts/runaction/action.py
@@ -16,9 +16,13 @@
# along with this program. If not, see .
# ============================================================
import Falkon
-import os, re, enum, shlex
+import os
+import re
+import enum
+import shlex
from PySide2 import QtCore, QtGui
+
class Action():
class Type(enum.Enum):
Invalid, Url, Command = range(3)
@@ -53,19 +57,22 @@
self.supported = data.tryExec()
def testAction(self, condition, url):
- if not self.supported: return False
- if not condition in self.typeCondition: return False
- if not re.match(self.urlCondition, url.toString()): return False
+ if not self.supported:
+ return False
+ if condition not in self.typeCondition:
+ return False
+ if not re.match(self.urlCondition, url.toString()):
+ return False
return True
def execAction(self, url, text=""):
- url = str(url.toEncoded())
+ url = str(url.toEncoded(), "utf-8")
if self.actionType == Action.Type.Command:
url = shlex.quote(url)
text = shlex.quote(text)
elif self.actionType == Action.Type.Url:
- url = str(QtCore.QUrl.toPercentEncoding(url))
- text = str(QtCore.QUrl.toPercentEncoding(text))
+ url = str(QtCore.QUrl.toPercentEncoding(url), "utf-8")
+ text = str(QtCore.QUrl.toPercentEncoding(text), "utf-8")
command = self.normalExec if text == "" else self.textExec
command = command.replace("{url}", url)
command = command.replace("{text}", text)
diff --git a/src/scripts/runaction/actionmanager.py b/src/scripts/runaction/actionmanager.py
--- a/src/scripts/runaction/actionmanager.py
+++ b/src/scripts/runaction/actionmanager.py
@@ -16,11 +16,13 @@
# along with this program. If not, see .
# ============================================================
import Falkon
-import os, subprocess
-from PySide2 import QtCore, QtGui, QtWidgets, QtUiTools
+import os
+import subprocess
+from PySide2 import QtCore
from runaction.action import Action
from runaction.settingsdialog import SettingsDialog
+
class ActionManager(QtCore.QObject):
actions = []
@@ -58,7 +60,7 @@
act = Falkon.Action(action.icon, action.title, self)
act.triggered.connect(lambda a=action, w=webView, u=url, t=text: self.execAction(a, w, u, t))
if action.submenu:
- if not action.submenu in menus:
+ if action.submenu not in menus:
menu = Falkon.Menu(action.menuTitle, webView)
menus[action.submenu] = menu
out.append(menu)
diff --git a/src/scripts/runaction/button.py b/src/scripts/runaction/button.py
--- a/src/scripts/runaction/button.py
+++ b/src/scripts/runaction/button.py
@@ -20,6 +20,7 @@
from PySide2 import QtGui, QtWidgets
from runaction.i18n import i18n
+
class RunActionButton(Falkon.AbstractButtonInterface):
def __init__(self, manager):
super().__init__()
diff --git a/src/scripts/runaction/runaction.py b/src/scripts/runaction/runaction.py
--- a/src/scripts/runaction/runaction.py
+++ b/src/scripts/runaction/runaction.py
@@ -19,6 +19,7 @@
from PySide2 import QtCore
from runaction import actionmanager, button
+
class RunActionPlugin(Falkon.PluginInterface, QtCore.QObject):
buttons = {}
manager = None
@@ -61,10 +62,12 @@
self.buttons[window] = b
def mainWindowDeleted(self, window):
- if not window in self.buttons: return
+ if window not in self.buttons:
+ return
b = self.buttons[window]
window.statusBar().removeButton(b)
window.navigationBar().removeToolButton(b)
del self.buttons[window]
+
Falkon.registerPlugin(RunActionPlugin())
diff --git a/src/scripts/runaction/settings.ui b/src/scripts/runaction/settings.ui
--- a/src/scripts/runaction/settings.ui
+++ b/src/scripts/runaction/settings.ui
@@ -15,7 +15,14 @@
-
-
+
+
+
+ 75
+ true
+
+
+
-
@@ -28,6 +35,9 @@
16
+
+ QAbstractItemView::ScrollPerPixel
+
true
diff --git a/src/scripts/runaction/settingsdialog.py b/src/scripts/runaction/settingsdialog.py
--- a/src/scripts/runaction/settingsdialog.py
+++ b/src/scripts/runaction/settingsdialog.py
@@ -15,11 +15,11 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
# ============================================================
-import Falkon
import os
-from PySide2 import QtCore, QtGui, QtWidgets, QtUiTools
+from PySide2 import QtCore, QtWidgets, QtUiTools
from runaction.i18n import i18n
+
class SettingsDialog(QtWidgets.QDialog):
def __init__(self, manager, parent=None):
super().__init__(parent)
@@ -36,7 +36,7 @@
self.setMinimumSize(400, 250)
self.setWindowTitle(i18n("Run Action Settings"))
- self.ui.label.setText("{}".format(i18n("Available actions")))
+ self.ui.label.setText(i18n("Available actions"))
for action in self.manager.actions:
item = QtWidgets.QListWidgetItem(self.ui.listWidget)