diff --git a/articles/4. Adding entry to the extension menu.md b/articles/4. Adding entry to the extension menu.md new file mode 100644 index 0000000..83b7d5d --- /dev/null +++ b/articles/4. Adding entry to the extension menu.md @@ -0,0 +1,31 @@ +# Falkon Python Tutorial - 4. Adding entry to the extension menu + +To add an entry to extension menu the `populateExtensionsMenu(self, menu)` method has to be implemented in plugin class. +The reason can be faound in the [source code](https://github.com/KDE/falkon/blob/master/src/lib/plugins/plugininterface.h) + +The parameter menu is the menu into which the new entry / action will be added. + +```python + def populateExtensionsMenu(self, menu): + action = Falkon.Action( + "Tutorial 4 - Extension menu entry", + menu + ) + action.triggered.connect(self.onExtensionMenuTriggered) + + menu.addAction(action) + + def onExtensionMenuTriggered(self): + msgBox = QtWidgets.QMessageBox() + msgBox.setText('Tutorial 4 - Message from extension menu') + msgBox.exec_() +``` + +In this example the action will show messagebox[1] with 'Tutorial 4 - Message from extension menu'. + +The full code can be found at [extensions/Tutorial4](../extensions/Tutorial4) + +**Note:** Always create an instance of Action in `populateExtensionsMenu`. +It will be deleted / destroyed when the menu is hidden. + +[1]: https://doc.qt.io/qtforpython/PySide2/QtWidgets/QMessageBox.html diff --git a/extensions/Tutorial4/__init__.py b/extensions/Tutorial4/__init__.py new file mode 100644 index 0000000..3fad7a8 --- /dev/null +++ b/extensions/Tutorial4/__init__.py @@ -0,0 +1,50 @@ +""" +# ============================================================ +# Falkon Python Tutorial 4 - plugin for Falkon +# Copyright (C) 2019 Juraj Oravec +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# ============================================================ +""" + +import Falkon +from PySide2 import QtCore, QtWidgets + + +class Tutorial4_Plugin(Falkon.PluginInterface, QtCore.QObject): + def init(self, state, settingsPath): + pass + + def unload(self): + pass + + def testPlugin(self): + return True + + def populateExtensionsMenu(self, menu): + action = Falkon.Action( + "Tutorial 4 - Extension menu entry", + menu + ) + action.triggered.connect(self.onExtensionMenuTriggered) + + menu.addAction(action) + + def onExtensionMenuTriggered(self): + msgBox = QtWidgets.QMessageBox() + msgBox.setText('Tutorial 4 - Message from extension menu') + msgBox.exec_() + + +Falkon.registerPlugin(Tutorial4_Plugin()) diff --git a/extensions/Tutorial4/metadata.desktop b/extensions/Tutorial4/metadata.desktop new file mode 100644 index 0000000..7b9d5a8 --- /dev/null +++ b/extensions/Tutorial4/metadata.desktop @@ -0,0 +1,11 @@ +[Desktop Entry] +Name=Falkon Python Tutorial 4 +Comment=Adding an entry to the extension menu +Icon= +Type=Service +X-Falkon-Type=Extension/Python + +X-Falkon-Author=Juraj Oravec +X-Falkon-Email=sgd.orava@gmail.com +X-Falkon-Version=1.0.0 +X-Falkon-Settings=false