# ============================================================ # Auto Zoomer - 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 import os from PySide2 import QtCore, QtGui, QtWidgets from autoZoomer.settingsDialog import SettingsDialog from autoZoomer.str2bool import str2bool class AutoZoomer(QtCore.QObject): data = None remove = None config = None def __init__(self, settingsPath, parent=None): super().__init__(parent) self.config = { "settingsFile": os.path.join(settingsPath, "autoZoomer", "settings.ini"), "active": True } self.data = {} self.remove = [] self.loadSettings() def showSettings(self, parent=None): settings = SettingsDialog(self.config, self.data, self.remove, parent) settings.exec_() self.saveSettings() def loadSettings(self): settings = QtCore.QSettings(self.config["settingsFile"], QtCore.QSettings.IniFormat) settings.beginGroup("AutoZoomer") self.config["active"] = str2bool(settings.value("active", True)) settings.endGroup() for group in settings.childGroups(): if group == "AutoZoomer": continue settings.beginGroup(group) self.data[group] = { "active": str2bool(settings.value("active", False)), "zoom": int(settings.value("zoom", 6)) } settings.endGroup() def saveSettings(self): settings = QtCore.QSettings(self.config["settingsFile"], QtCore.QSettings.IniFormat) settings.beginGroup("AutoZoomer") settings.setValue("active", self.config["active"]) settings.endGroup() for host in self.remove: settings.remove(host) self.remove.clear() for key, value in self.data.items(): settings.beginGroup(key) settings.setValue("active", value["active"]) settings.setValue("zoom", value["zoom"]) settings.endGroup() settings.sync() def onLoadFinished(self, page): if not self.config["active"]: return view = page.view() host = page.url().host() if host in self.data.keys(): if self.data[host]["active"]: view.setZoomLevel(self.data[host]["zoom"]) def addItem(self, host, zoom=6, active=True): if not host: return if host in self.data.keys(): self.data[host]["zoom"] = zoom self.data[host]["active"] = active else: self.data[host] = { "active": active, "zoom": zoom }