Helpviewer/CookieJar/CookiesExceptionsDialog.py

Sat, 26 Oct 2013 17:37:39 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Oct 2013 17:37:39 +0200
branch
5_3_x
changeset 3049
a6847e5eb1b9
parent 2302
f29e9405c851
child 2403
e3d7a861547c
child 3163
9f50365a0870
permissions
-rw-r--r--

Fixed an issue causing trouble if the printer name is empty.
(grafted from 83f86da6344eeb0cbdb3c56e270f2f0a276c8b14)

# -*- coding: utf-8 -*-

# Copyright (c) 2009 - 2013 Detlev Offenbach <detlev@die-offenbachs.de>
#

"""
Module implementing a dialog for the configuration of cookie exceptions.
"""

from PyQt4.QtCore import pyqtSlot
from PyQt4.QtGui import QDialog, QSortFilterProxyModel, QCompleter, QFont, QFontMetrics

from .CookieJar import CookieJar
from .CookieExceptionsModel import CookieExceptionsModel
from .CookieModel import CookieModel

from .Ui_CookiesExceptionsDialog import Ui_CookiesExceptionsDialog


class CookiesExceptionsDialog(QDialog, Ui_CookiesExceptionsDialog):
    """
    Class implementing a dialog for the configuration of cookie exceptions.
    """
    def __init__(self, cookieJar, parent=None):
        """
        Constructor
        
        @param cookieJar reference to the cookie jar (CookieJar)
        @param parent reference to the parent widget (QWidget)
        """
        super().__init__(parent)
        self.setupUi(self)
        
        self.__cookieJar = cookieJar
        
        self.removeButton.clicked[()].connect(self.exceptionsTable.removeSelected)
        self.removeAllButton.clicked[()].connect(self.exceptionsTable.removeAll)
        
        self.exceptionsTable.verticalHeader().hide()
        self.__exceptionsModel = CookieExceptionsModel(cookieJar)
        self.__proxyModel = QSortFilterProxyModel(self)
        self.__proxyModel.setSourceModel(self.__exceptionsModel)
        self.searchEdit.textChanged.connect(self.__proxyModel.setFilterFixedString)
        self.exceptionsTable.setModel(self.__proxyModel)
        
        cookieModel = CookieModel(cookieJar, self)
        self.domainEdit.setCompleter(QCompleter(cookieModel, self.domainEdit))
        
        f = QFont()
        f.setPointSize(10)
        fm = QFontMetrics(f)
        height = fm.height() + fm.height() // 3
        self.exceptionsTable.verticalHeader().setDefaultSectionSize(height)
        self.exceptionsTable.verticalHeader().setMinimumSectionSize(-1)
        for section in range(self.__exceptionsModel.columnCount()):
            header = self.exceptionsTable.horizontalHeader().sectionSizeHint(section)
            if section == 0:
                header = fm.width("averagebiglonghost.averagedomain.info")
            elif section == 1:
                header = fm.width(self.trUtf8("Allow For Session"))
            buffer = fm.width("mm")
            header += buffer
            self.exceptionsTable.horizontalHeader().resizeSection(section, header)
    
    def setDomainName(self, domain):
        """
        Public method to set the domain to be displayed.
        
        @param domain domain name to be displayed (string)
        """
        self.domainEdit.setText(domain)
    
    @pyqtSlot(str)
    def on_domainEdit_textChanged(self, txt):
        """
        Private slot to handle a change of the domain edit text.
        
        @param txt current text of the edit (string)
        """
        enabled = txt != ""
        self.blockButton.setEnabled(enabled)
        self.allowButton.setEnabled(enabled)
        self.allowForSessionButton.setEnabled(enabled)
    
    @pyqtSlot()
    def on_blockButton_clicked(self):
        """
        Private slot to block cookies of a domain.
        """
        self.__exceptionsModel.addRule(self.domainEdit.text(), CookieJar.Block)
    
    @pyqtSlot()
    def on_allowForSessionButton_clicked(self):
        """
        Private slot to allow cookies of a domain for the current session only.
        """
        self.__exceptionsModel.addRule(self.domainEdit.text(), CookieJar.AllowForSession)
    
    @pyqtSlot()
    def on_allowButton_clicked(self):
        """
        Private slot to allow cookies of a domain.
        """
        self.__exceptionsModel.addRule(self.domainEdit.text(), CookieJar.Allow)

eric ide

mercurial