Add toolbar button

closes GH-3

Signed-off-by: Juraj Oravec <sgd.orava@gmail.com>
This commit is contained in:
Juraj Oravec 2019-06-13 18:26:48 +02:00
parent b0ce39ae08
commit 34882213d0
No known key found for this signature in database
GPG Key ID: 63ACB65056BC8D07
2 changed files with 69 additions and 4 deletions

View File

@ -2,18 +2,22 @@ import Falkon
import os import os
from PySide2 import QtCore, QtGui from PySide2 import QtCore, QtGui
from readability.settingsDialog import SettingsDialog from readability.settingsDialog import SettingsDialog
from readability.button import Button
class Readability(Falkon.PluginInterface, QtCore.QObject): class Readability(Falkon.PluginInterface, QtCore.QObject):
view = None
config = None config = None
view = None
buttons = None
def init(self, state, settingsPath): def init(self, state, settingsPath):
self.config = { self.config = {
"settingsFile": os.path.join(settingsPath, "readability", "settings.ini"), "settingsFile": os.path.join(settingsPath, "readability", "settings.ini"),
"icon": "dark" "icon": "dark"
} }
self.buttons = {}
self.loadSettings() self.loadSettings()
self.onConfigUpdate()
plugins = Falkon.MainApplication.instance().plugins() plugins = Falkon.MainApplication.instance().plugins()
@ -32,10 +36,15 @@ class Readability(Falkon.PluginInterface, QtCore.QObject):
return True return True
def onMainWindowCreated(self, window): def onMainWindowCreated(self, window):
pass button = Button(self.config["icon"])
button.clicked.connect(lambda: self.makeReadability(button.webView()))
window.navigationBar().addToolButton(button)
self.buttons[window] = button
def onMainWindowDeleted(self, window): def onMainWindowDeleted(self, window):
pass if window in self.buttons:
del self.buttons[window]
def populateWebViewMenu(self, menu, view, hitTestResult): def populateWebViewMenu(self, menu, view, hitTestResult):
self.view = view self.view = view
@ -52,7 +61,10 @@ class Readability(Falkon.PluginInterface, QtCore.QObject):
self.makeReadability self.makeReadability
) )
def makeReadability(self): def makeReadability(self, view=None):
if view:
self.view = view
dataDir = os.path.join(os.path.dirname(__file__), "data") dataDir = os.path.join(os.path.dirname(__file__), "data")
iconClose = Falkon.QzTools.pixmapToDataUrl( iconClose = Falkon.QzTools.pixmapToDataUrl(
@ -106,6 +118,7 @@ class Readability(Falkon.PluginInterface, QtCore.QObject):
def showSettings(self, parent): def showSettings(self, parent):
settings = SettingsDialog(self.config, parent) settings = SettingsDialog(self.config, parent)
settings.accepted.connect(self.saveSettings) settings.accepted.connect(self.saveSettings)
settings.accepted.connect(self.onConfigUpdate)
settings.exec_() settings.exec_()
def saveSettings(self): def saveSettings(self):
@ -124,5 +137,9 @@ class Readability(Falkon.PluginInterface, QtCore.QObject):
self.config["icon"] = str(settings.value("icon", self.config["icon"])) self.config["icon"] = str(settings.value("icon", self.config["icon"]))
settings.endGroup() settings.endGroup()
def onConfigUpdate(self):
for _, button in self.buttons.items():
button.updateIcon(self.config["icon"])
Falkon.registerPlugin(Readability()) Falkon.registerPlugin(Readability())

48
readability/button.py Normal file
View File

@ -0,0 +1,48 @@
# Readability - plugin for Falkon
# Copyright (C) 2019 Juraj Oravec <jurajoravec@netc.it>
#
# 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 <http://www.gnu.org/licenses/>.
import Falkon
import os
from PySide2 import QtGui
class Button(Falkon.AbstractButtonInterface):
def __init__(self, iconStyle):
super().__init__()
icon = "icon-light.png" if iconStyle == "light" else "icon-dark.png"
self.setIcon(QtGui.QIcon(
os.path.join(os.path.dirname(__file__), "data", icon))
)
self.setTitle("Button")
self.setToolTip("Activate Readability")
self.clicked.connect(self.onClicked)
def id(self):
return "readability-button"
def name(self):
return "Readability"
def onClicked(self, controller):
pass
def updateIcon(self, iconStyle):
icon = "icon-light.png" if iconStyle == "light" else "icon-dark.png"
self.setIcon(QtGui.QIcon(
os.path.join(os.path.dirname(__file__), "data", icon))
)