def fill(self, page):
     """
     Public slot to fill login forms with saved data.
     
     @param page reference to the web page (QWebPage)
     """
     if page is None or page.mainFrame() is None:
         return
     
     if not self.__loaded:
         self.__load()
     
     url = page.mainFrame().url()
     url = self.__stripUrl(url)
     key = self.__createKey(url, "")
     if key not in self.__loginForms or \
        key not in self.__logins:
         return
     
     form = self.__loginForms[key]
     if form.url != url:
         return
     
     if form.name == "":
         formName = QString("0")
     else:
         try:
             formName = QString("%d" % int(form.name))
         except ValueError:
             formName = QString('"%1"').arg(form.name)
     for element in form.elements:
         name = element[0]
         value = element[1]
         
         disabled = page.mainFrame().evaluateJavaScript(
             'document.forms[%s].elements["%s"].disabled' % (formName, name)).toBool()
         if disabled:
             continue
         
         readOnly = page.mainFrame().evaluateJavaScript(
             'document.forms[%s].elements["%s"].readOnly' % (formName, name)).toBool()
         if readOnly:
             continue
         
         type_ = page.mainFrame().evaluateJavaScript(
             'document.forms[%s].elements["%s"].type' % (formName, name)).toString()
         if type_ == "" or \
            type_ in ["hidden", "reset", "submit"]:
             continue
         if type_ == "password":
             value = Utilities.pwDecode(self.__logins[key][1])
         setType = type_ == "checkbox" and "checked" or "value"
         value = value.replace("\\", "\\\\")
         value = value.replace('"', '\\"')
         javascript = 'document.forms[%s].elements["%s"].%s="%s";' % \
                      (formName, name, setType, value)
         page.mainFrame().evaluateJavaScript(javascript)
 def siteInfo(self, site):
     """
     Public method to get a reference to the named site.
     
     @param site web site name (string or QString)
     @return tuple containing the user name (string) and password (string)
     """
     if not self.__loaded:
         self.__load()
     
     site = unicode(site)
     if site not in self.__logins:
         return None
     
     return self.__logins[site][0], Utilities.pwDecode(self.__logins[site][1])
 def getLogin(self, url, realm):
     """
     Public method to get the login credentials.
     
     @param url URL to get the credentials for (QUrl)
     @param realm realm to get the credentials for (string or QString)
     @return tuple containing the user name (string) and password (string)
     """
     if not self.__loaded:
         self.__load()
     
     key = self.__createKey(url, realm)
     try:
         return self.__logins[key][0], Utilities.pwDecode(self.__logins[key][1])
     except KeyError:
         return "", ""