Esempio n. 1
0
    def __init__(self, parent=None):
        super(CuriWidget,
              self).__init__(parent,
                             Qt.FramelessWindowHint | Qt.WindowSystemMenuHint)
        self.addCustomAction()
        w = qApp.desktop().screenGeometry().width()
        h = qApp.desktop().screenGeometry().height()

        side = round((8 / 9) * min(w / cols, h / rows))
        self.setFixedSize(side * QSize(cols, rows))

        self.thread = SoundThread(self)
        self.dragPosition = QPoint()
        self.button = None

        self.setWindowIcon(QIcon(":curielements"))

        region = QRegion(QRect(0, 0, 2 * side, 2 * side), QRegion.Ellipse)
        region += QRegion(QRect(side, 0, 8 * side, 15 * side))
        region += QRegion(QRect(0, side, side, 13 * side))
        region += QRegion(QRect(0, 13 * side, 2 * side, 2 * side),
                          QRegion.Ellipse)
        region += QRegion(QRect(9 * side, side, side, 14 * side))
        region += QRegion(QRect(8 * side, 0, 2 * side, 2 * side),
                          QRegion.Ellipse)
        region += QRegion(QRect(10 * side, 2 * side, 19 * side, 13 * side))
        region += QRegion(QRect(28 * side, 2 * side, 2 * side, 2 * side),
                          QRegion.Ellipse)
        region += QRegion(QRect(29 * side, 3 * side, side, 11 * side))
        region += QRegion(QRect(28 * side, 13 * side, 2 * side, 2 * side),
                          QRegion.Ellipse)

        self.setMask(region)

        self.atoms = Atoms(self)
        self.atoms.setGeometry(
            QRect(1.5 * side, 1.5 * side, 7 * side, 7 * side))

        offset = QPoint(10 * side, 3 * side)
        file = QFile(":elements")
        file.open(QFile.ReadOnly | QFile.Text)
        colors = [blue, yellow]
        self.btns = []
        while not file.atEnd():
            x, y, name, symbol, electron, description, description2, _ = file.readLine(
            ).split(',')
            coordinate = QPoint(int(x), int(y))
            text = bytearray(name).decode()
            btn = ElementButton(QSize(side, side), colors, int(electron),
                                bytearray(symbol).decode(), text, self)
            btn.move(offset + coordinate * side)
            btn.clicked.connect(self.button_clicked)
            self.btns.append(btn)
        self.imageDescription = DescriptionButton(side * QSize(7, 4.5), blue,
                                                  self)
        self.imageDescription.move(1.5 * side, 9 * side)
        btnSound = DescriptionButton(side * QSize(2, 2), blue, self)
        btnSound.move(11 * side, 12 * side)
        btnSound.updateBackground(":soundOn")
        btnSound.clicked.connect(self.sound_clicled)
Esempio n. 2
0
    def __openByIODevice(self, fileName):  ##用QFile打开文件
        fileDevice = QFile(fileName)
        if not fileDevice.exists():  #判断文件是否存在
            return False

        if not fileDevice.open(QIODevice.ReadOnly | QIODevice.Text):
            return False

###整个文件一次性读取的方式,可行
##      qtBytes=fileDevice.readAll() #返回QByteArray类型
##      pyBytes=bytes(qtBytes.data())  # 将QByteArray转换为bytes类型
##      text=pyBytes.decode("utf-8")  #用utf-8编码为字符串
##      self.ui.textEdit.setPlainText(text)

##  逐行读取方式,可行
        try:
            self.ui.textEdit.clear()
            while not fileDevice.atEnd():
                qtBytes = fileDevice.readLine()  # 返回QByteArray类型
                pyBytes = bytes(qtBytes.data())  # QByteArray转换为bytes类型
                lineStr = pyBytes.decode("utf-8")  #bytes转换为str型
                lineStr = lineStr.strip()  #去除结尾增加的空行
                self.ui.textEdit.appendPlainText(lineStr)
        finally:
            fileDevice.close()

        return True
Esempio n. 3
0
    def __parseData(self, dataFile, loadPrivateDomains=False):
        """
        Private method to parse TLD data.
        
        @param dataFile name of the file containing the TLD data
        @type str
        @param loadPrivateDomains flag indicating to load private domains
        @type bool
        @return flag indicating success
        @rtype bool
        """
        # start with a fresh dictionary
        self.__tldDict = collections.defaultdict(list)

        file = QFile(dataFile)

        if not file.open(QFile.ReadOnly | QFile.Text):
            return False

        seekToEndOfPrivateDomains = False

        while not file.atEnd():
            line = bytes(file.readLine()).decode("utf-8").strip()
            if not line:
                continue

            if line.startswith("."):
                line = line[1:]

            if line.startswith("//"):
                if "===END PRIVATE DOMAINS===" in line:
                    seekToEndOfPrivateDomains = False

                if (not loadPrivateDomains
                        and "===BEGIN PRIVATE DOMAINS===" in line):
                    seekToEndOfPrivateDomains = True

                continue

            if seekToEndOfPrivateDomains:
                continue

            # only data up to the first whitespace is used
            line = line.split(None, 1)[0]

            if "." not in line:
                self.__tldDict[line].append(line)
            else:
                key = line[line.rfind(".") + 1:]
                self.__tldDict[key].append(line)

        return self.isDataLoaded()
Esempio n. 4
0
    def __openByIODevice(self, fileName):
        fileDevice = QFile(fileName)
        if not fileDevice.exists():
            return False
        if not fileDevice.open(QIODevice.ReadOnly | QIODevice.Text):
            return False

        try:
            self.ui.textEdit.clear()
            while not fileDevice.atEnd():
                qtBytes = fileDevice.readLine()
                pyBytes = bytes(qtBytes.data())
                lineStr = pyBytes.decode("utf-8")
                lineStr = lineStr.strip()
                self.ui.textEdit.appendPlainText(lineStr)
        finally:
            fileDevice.close()

        return True
Esempio n. 5
0
    def modelFromFile(self, fileName):
        f = QFile(fileName)
        if not f.open(QFile.ReadOnly):
            return QStringListModel(self.completer)

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        words = []
        while not f.atEnd():
            line = f.readLine().trimmed()
            if line.length() != 0:
                try:
                    line = str(line, encoding='ascii')
                except TypeError:
                    line = str(line)

                words.append(line)

        QApplication.restoreOverrideCursor()

        return QStringListModel(words, self.completer)
Esempio n. 6
0
    def modelFromFile(self, fileName):
        f = QFile(fileName)
        if not f.open(QFile.ReadOnly):
            return QStringListModel(self.completer)

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        words = []
        while not f.atEnd():
            line = f.readLine().trimmed()
            if line.length() != 0:
                try:
                    line = str(line, encoding='ascii')
                except TypeError:
                    line = str(line)

                words.append(line)

        QApplication.restoreOverrideCursor()

        return QStringListModel(words, self.completer)
Esempio n. 7
0
 def open(self):
     self.offerSave()
     path = (QFileInfo(self.filename).path()
             if self.filename else ".")
     fname,filetype = QFileDialog.getOpenFileName(self,
             "Page Designer - Open", path,
             "Page Designer Files (*.pgd)")
     if not fname:
         return
     self.filename = fname
     fh = None
     try:
         fh = QFile(self.filename)
         if not fh.open(QIODevice.ReadOnly):
             raise IOError(str(fh.errorString()))
         items = self.scene.items()
         while items:
             item = items.pop()
             self.scene.removeItem(item)
             del item
         self.addBorders()
         stream = QDataStream(fh)
         stream.setVersion(QDataStream.Qt_5_7)
         magic = stream.readInt32()
         if magic != MagicNumber:
             raise IOError("not a valid .pgd file")
         fileVersion = stream.readInt16()
         if fileVersion != FileVersion:
             raise IOError("unrecognised .pgd file version")
         while not fh.atEnd():
             self.readItemFromStream(stream)
     except IOError as e:
         QMessageBox.warning(self, "Page Designer -- Open Error",
                 "Failed to open {0}: {1}".format(self.filename, e))
     finally:
         if fh is not None:
             fh.close()
     global Dirty
     Dirty = False
Esempio n. 8
0
    def loadFromFile(self, fileName):
        f = QFile(fileName)
        if not f.open(QFile.ReadOnly):
            model = QStringListModel()
            self._completer.setModel(model)

        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))

        words = []
        while not f.atEnd():
            line = f.readLine().trimmed()
            if line.length() != 0:
                try:
                    line = str(line, encoding='utf-8')
                except TypeError:
                    line = str(line)

                words.append(line)

        QApplication.restoreOverrideCursor()

        model = QStringListModel(words)
        self._completer.setModel(model)
Esempio n. 9
0
    file = QFile('/Users/junahyung/emomovie/SimpsonSen.mp4')

    print(1)
    isOpen = file.open(QIODevice.ReadOnly)
    print(2)

    buffer = QBuffer()
    buffer.open(QIODevice.ReadWrite)
    print(3)

    player.setMedia(QMediaContent(), buffer)
    print(4)

    if isOpen:
        while not file.atEnd():
            temp = file.readLine()
            # temp = QByteArray.fromBase64(temp)
            buffer.write(temp)

    print(5)
    videoWidget = QVideoWidget()
    print(6)
    player.setVideoOutput(videoWidget)
    print(7)
    videoWidget.show()
    print(8)

    player.play()
    while(player.MediaStatus()==QMediaPlayer.UnknownMediaStatus):
        print("a")
def ConverttxtToPack(in1,out1):
    dsoIn = QFile(in1)
    if dsoIn.open(QIODevice.ReadOnly | QIODevice.Text) is False:
        return
    dsoOut=QFile(out1)
    if dsoOut.open(QIODevice.WriteOnly) is False:
        return
    totalRecords = 0
    while (dsoIn.atEnd() is False):
        dsoIn.readLine()
        totalRecords+=1
    dsoIn.seek(0)
    dsoOutStream = QDataStream(dsoOut)
    dsoOutStream.setVersion(QDataStream.Qt_5_2)
    readOk = 0
    dsoOutStream.writeQString('3.11')
    dsoOutStream.writeQString('standard')
    while (dsoIn.atEnd() is False):
        record = str(dsoIn.readLine(), encoding='utf-8')
        vp = re.match("ersion\s+([\d\.]+)\s+(\w+)",record)
        if (record.startswith("//") or record.startswith("#")):
            totalRecords-=1
            continue
        lis=record.split('\t')
        try:
        # if 1:
            id = int(lis[0])
            ra = float((lis[1]).strip())
            dec = float((lis[2]).strip())
            bMag = float(lis[3])
            vMag = float(lis[4])
            oType = (lis[5]).strip()
            mType = (lis[6]).strip()
            majorAxisSize = float(lis[7])
            minorAxisSize = float(lis[8])
            orientationAngle = int(float(lis[9]))
            z = float(lis[10])
            zErr = float(lis[11])
            plx = float(lis[12])
            plxErr = float(lis[13])
            dist = float(lis[14])
            distErr = float(lis[15])
            NGC = int(lis[16])
            IC = int(lis[17])
            M = int(lis[18])
            C = int(lis[19])
            B = int(lis[20])
            Sh2 = int(lis[21])
            VdB = int(lis[22])
            RCW = int(lis[23])
            LDN = int(lis[24])
            LBN = int(lis[25])
            Cr = int(lis[26])
            Mel = int(lis[27])
            PGC = int(lis[28])
            UGC = int(lis[29])
            Ced = (lis[30]).strip()
            Arp = int(lis[31])
            VV = int(lis[32])
            PK = (lis[33]).strip()
            PNG = (lis[34]).strip()
            SNRG = (lis[35]).strip()
            ACO = (lis[36]).strip()
            HCG = (lis[37]).strip()
            ESO = (lis[38]).strip()
            VdBH = (lis[39]).strip()
            DWB = int(lis[40])
            Tr = int(lis[41])
            St = int(lis[42])
            Ru = int(lis[43])
            VdBHa = int(lis[44])
            raRad = float(ra) * math.pi / 180
            decRad = float(dec) * math.pi / 180
            majorAxisSize /= 60
            minorAxisSize /= 60
            if (bMag <= 0):
                bMag = 99
            if (vMag <= 0):
                vMag = 99
            if oType.upper() in otypedic:
                nType = otypedic[oType.upper()]
            else:
                nType = 36
            readOk += 1
            dsoOutStream.writeInt(id)
            dsoOutStream.writeFloat(ra/180*math.pi)
            dsoOutStream.writeFloat(dec/180*math.pi)
            dsoOutStream.writeFloat(bMag)
            dsoOutStream.writeFloat(vMag)
            dsoOutStream.writeInt(nType)
            # dsoOutStream.writeUInt64(nType)
            dsoOutStream.writeQString(mType)
            dsoOutStream.writeFloat(majorAxisSize)
            dsoOutStream.writeFloat(minorAxisSize)
            dsoOutStream.writeInt(orientationAngle)
            dsoOutStream.writeFloat(z)
            dsoOutStream.writeFloat(zErr)
            dsoOutStream.writeFloat(plx)
            dsoOutStream.writeFloat(plxErr)
            dsoOutStream.writeFloat(dist)
            dsoOutStream.writeFloat(distErr)
            dsoOutStream.writeInt(NGC)
            dsoOutStream.writeInt(IC)
            dsoOutStream.writeInt(M)
            dsoOutStream.writeInt(C)
            dsoOutStream.writeInt(B)
            dsoOutStream.writeInt(Sh2)
            dsoOutStream.writeInt(VdB)
            dsoOutStream.writeInt(RCW)
            dsoOutStream.writeInt(LDN)
            dsoOutStream.writeInt(LBN)
            dsoOutStream.writeInt(Cr)
            dsoOutStream.writeInt(Mel)
            dsoOutStream.writeInt(PGC)
            dsoOutStream.writeInt(UGC)
            dsoOutStream.writeQString(Ced)
            dsoOutStream.writeInt(Arp)
            dsoOutStream.writeInt(VV)
            dsoOutStream.writeQString(PK)
            dsoOutStream.writeQString(PNG)
            dsoOutStream.writeQString(SNRG)
            dsoOutStream.writeQString(ACO)
            dsoOutStream.writeQString(HCG)
            dsoOutStream.writeQString(ESO)
            dsoOutStream.writeQString(VdBH)
            dsoOutStream.writeInt(DWB)
            dsoOutStream.writeInt(Tr)
            dsoOutStream.writeInt(St)
            dsoOutStream.writeInt(Ru)
            dsoOutStream.writeInt(VdBHa)
        except:
            print(record)
            continue
    dsoIn.close()
    dsoOut.flush()
    dsoOut.close()
    return
Esempio n. 11
0
def decodePack2Txt(in1, out1, dem='\t'):
    dsoIn = QFile(in1)
    if dsoIn.open(QIODevice.ReadOnly) is False:
        return

    OTdic = {}
    for it in otypedic:
        if str(otypedic[it]) not in OTdic:
            OTdic[str(otypedic[it])] = it

    dsoIn.seek(0)
    dsoInStream = QDataStream(dsoIn)
    dsoInStream.setVersion(QDataStream.Qt_5_2)
    print(dsoInStream.readQString())
    print(dsoInStream.readQString())
    lines = []
    while dsoIn.atEnd() is False:
        id = dsoInStream.readInt()
        raRad = dsoInStream.readFloat()
        decRad = dsoInStream.readFloat()
        bMag = dsoInStream.readFloat()
        vMag = dsoInStream.readFloat()
        nType = dsoInStream.readInt()
        mType = dsoInStream.readQString()
        majorAxisSize = dsoInStream.readFloat()
        minorAxisSize = dsoInStream.readFloat()
        orientationAngle = dsoInStream.readInt()
        z = dsoInStream.readFloat()
        zErr = dsoInStream.readFloat()
        plx = dsoInStream.readFloat()
        plxErr = dsoInStream.readFloat()
        dist = dsoInStream.readFloat()
        distErr = dsoInStream.readFloat()
        NGC = dsoInStream.readInt()
        IC = dsoInStream.readInt()
        M = dsoInStream.readInt()
        C = dsoInStream.readInt()
        B = dsoInStream.readInt()
        Sh2 = dsoInStream.readInt()
        VdB = dsoInStream.readInt()
        RCW = dsoInStream.readInt()
        LDN = dsoInStream.readInt()
        LBN = dsoInStream.readInt()
        Cr = dsoInStream.readInt()
        Mel = dsoInStream.readInt()
        PGC = dsoInStream.readInt()
        UGC = dsoInStream.readInt()
        Ced = dsoInStream.readQString()
        Arp = dsoInStream.readInt()
        VV = dsoInStream.readInt()
        PK = dsoInStream.readQString()
        PNG = dsoInStream.readQString()
        SNRG = dsoInStream.readQString()
        ACO = dsoInStream.readQString()
        HCG = dsoInStream.readQString()
        ESO = dsoInStream.readQString()
        VdBH = dsoInStream.readQString()
        DWB = dsoInStream.readInt()
        Tr = dsoInStream.readInt()
        St = dsoInStream.readInt()
        Ru = dsoInStream.readInt()
        VdBHa = dsoInStream.readInt()

        ra = float(raRad * 180 / math.pi)
        dec = float(decRad * 180 / math.pi)
        majorAxisSize *= 60
        minorAxisSize *= 60

        if str(nType) in OTdic:
            oType = OTdic[str(nType)]

        lis = [
            id, ra, dec, bMag, vMag, oType, mType, majorAxisSize,
            minorAxisSize, orientationAngle, z, zErr, plx, plxErr, dist,
            distErr, NGC, IC, M, C, B, Sh2, VdB, RCW, LDN, LBN, Cr, Mel, PGC,
            UGC, Ced, Arp, VV, PK, PNG, SNRG, ACO, HCG, ESO, VdBH, DWB, Tr, St,
            Ru, VdBHa
        ]

        lis = list(str(x) for x in lis)
        lines.append(dem.join(lis))
    writealllines(lines, out1)
Esempio n. 12
0
def ConverttxtToPack(in1, out1, default_ver='3.13', default_type='standard'):
    dsoIn = QFile(in1)
    if dsoIn.open(QIODevice.ReadOnly | QIODevice.Text) is False:
        return
    dsoOut = QFile(out1)
    if dsoOut.open(QIODevice.WriteOnly) is False:
        return

    totalRecords = 0
    while (dsoIn.atEnd() is False):
        dsoIn.readLine()
        totalRecords += 1
    dsoIn.seek(0)
    dsoOutStream = QDataStream(dsoOut)
    dsoOutStream.setVersion(QDataStream.Qt_5_2)
    readOk = 0

    addedHead = False

    while (dsoIn.atEnd() is False):
        record = str(dsoIn.readLine(), encoding='utf-8')
        vp = re.match("^.*ersion\s+([\d\.]+)\s+(\w+)", record)

        if vp:
            print(vp.group(1), vp.group(2))
            dsoOutStream.writeQString(vp.group(1))
            dsoOutStream.writeQString(vp.group(2))
            addedHead = True

        if (record.startswith("//") or record.startswith("#")):
            totalRecords -= 1
            continue

        # write when could not get label from txt
        if not addedHead:
            dsoOutStream.writeQString(default_ver)
            dsoOutStream.writeQString(default_type)
            addedHead = True

        lis = record.split('\t')

        if 1:
            id = int(lis[0] if lis[0] != "" else 0)
            ra = float((lis[1]).strip())
            dec = float((lis[2]).strip())
            bMag = float(lis[3])
            vMag = float(lis[4])
            oType = (lis[5]).strip()  #
            mType = (lis[6]).strip()  #
            majorAxisSize = float(lis[7])
            minorAxisSize = float(lis[8])
            orientationAngle = int(float(lis[9]) if float(lis[9]) != "" else 0)
            z = float(lis[10])
            zErr = float(lis[11])
            plx = float(lis[12])
            plxErr = float(lis[13])
            dist = float(lis[14])
            distErr = float(lis[15])
            NGC = int(lis[16] if lis[16] != "" else 0)
            IC = int(lis[17] if lis[17] != "" else 0)
            M = int(lis[18] if lis[18] != "" else 0)
            C = int(lis[19] if lis[19] != "" else 0)
            B = int(lis[20] if lis[20] != "" else 0)
            Sh2 = int(lis[21] if lis[21] != "" else 0)
            VdB = int(lis[22] if lis[22] != "" else 0)
            RCW = int(lis[23] if lis[23] != "" else 0)
            LDN = int(lis[24] if lis[24] != "" else 0)
            LBN = int(lis[25] if lis[25] != "" else 0)
            Cr = int(lis[26] if lis[26] != "" else 0)
            Mel = int(lis[27] if lis[27] != "" else 0)
            PGC = int(lis[28] if lis[28] != "" else 0)
            UGC = int(lis[29] if lis[29] != "" else 0)
            Ced = (lis[30]).strip()  #
            Arp = int(lis[31] if lis[31] != "" else 0)
            VV = int(lis[32] if lis[32] != "" else 0)
            PK = (lis[33]).strip()  #
            PNG = (lis[34]).strip()  #
            SNRG = (lis[35]).strip()  #
            ACO = (lis[36]).strip()  #
            HCG = (lis[37]).strip()  #
            ESO = (lis[38]).strip()  #
            VdBH = (lis[39]).strip()  #
            DWB = int(lis[40] if lis[40] != "" else 0)
            Tr = int(lis[41] if lis[41] != "" else 0)
            St = int(lis[42] if lis[42] != "" else 0)
            Ru = int(lis[43] if lis[43] != "" else 0)
            VdBHa = int(lis[44] if lis[44] != "" else 0)

            raRad = float(ra) * math.pi / 180
            decRad = float(dec) * math.pi / 180
            majorAxisSize /= 60
            minorAxisSize /= 60
            if (bMag <= 0):
                bMag = 99
            if (vMag <= 0):
                vMag = 99

            if oType.upper() in otypedic:
                nType = otypedic[oType.upper()]
            else:
                nType = 36

            readOk += 1
            dsoOutStream.writeInt(id)
            dsoOutStream.writeFloat(raRad)
            dsoOutStream.writeFloat(decRad)
            dsoOutStream.writeFloat(bMag)
            dsoOutStream.writeFloat(vMag)
            dsoOutStream.writeInt(nType)
            dsoOutStream.writeQString(mType)
            dsoOutStream.writeFloat(majorAxisSize)
            dsoOutStream.writeFloat(minorAxisSize)
            dsoOutStream.writeInt(orientationAngle)
            dsoOutStream.writeFloat(z)
            dsoOutStream.writeFloat(zErr)
            dsoOutStream.writeFloat(plx)
            dsoOutStream.writeFloat(plxErr)
            dsoOutStream.writeFloat(dist)
            dsoOutStream.writeFloat(distErr)
            dsoOutStream.writeInt(NGC)
            dsoOutStream.writeInt(IC)
            dsoOutStream.writeInt(M)
            dsoOutStream.writeInt(C)
            dsoOutStream.writeInt(B)
            dsoOutStream.writeInt(Sh2)
            dsoOutStream.writeInt(VdB)
            dsoOutStream.writeInt(RCW)
            dsoOutStream.writeInt(LDN)
            dsoOutStream.writeInt(LBN)
            dsoOutStream.writeInt(Cr)
            dsoOutStream.writeInt(Mel)
            dsoOutStream.writeInt(PGC)
            dsoOutStream.writeInt(UGC)
            dsoOutStream.writeQString(Ced)
            dsoOutStream.writeInt(Arp)
            dsoOutStream.writeInt(VV)
            dsoOutStream.writeQString(PK)
            dsoOutStream.writeQString(PNG)
            dsoOutStream.writeQString(SNRG)
            dsoOutStream.writeQString(ACO)
            dsoOutStream.writeQString(HCG)
            dsoOutStream.writeQString(ESO)
            dsoOutStream.writeQString(VdBH)
            dsoOutStream.writeInt(DWB)
            dsoOutStream.writeInt(Tr)
            dsoOutStream.writeInt(St)
            dsoOutStream.writeInt(Ru)
            dsoOutStream.writeInt(VdBHa)
    dsoIn.close()
    dsoOut.flush()
    dsoOut.close()
    return
Esempio n. 13
0
    def test(self):
        """
        Public method to execute the tests.
        
        @return flag indicating the test result
        @rtype bool
        """
        self.__withPrivate = True
        self.__loadData()
        if not self.__tldDict:
            return False

        testDataFileName = ""
        testDataFileExist = False

        for path in self.__dataSearchPaths:
            testDataFileName = (QFileInfo(path +
                                          "/test_psl.txt").absoluteFilePath())
            if QFileInfo(testDataFileName).exists():
                testDataFileExist = True
                break

        if not testDataFileExist:
            testFileDownloadLink = (
                "http://mxr.mozilla.org/mozilla-central/source/netwerk/test/"
                "unit/data/test_psl.txt?raw=1")
            E5MessageBox.information(
                None, self.tr("TLD Data File not found"),
                self.tr("""<p>The file 'test_psl.txt' was not found!"""
                        """<br/>You can download it from '<a href="{0}">"""
                        """<b>here</b></a>' to one of the following"""
                        """ paths:</p><ul>{1}</ul>""").format(
                            testFileDownloadLink, "".join([
                                "<li>{0}</li>".format(p)
                                for p in self.__dataSearchPaths
                            ])))
            return False

        file = QFile(testDataFileName)

        if not file.open(QFile.ReadOnly | QFile.Text):
            return False

        testRegExp = QRegExp(
            "checkPublicSuffix\\(('([^']+)'|null), ('([^']+)'|null)\\);")
        allTestSuccess = True

        while not file.atEnd():
            line = bytes(file.readLine()).decode("utf-8").strip()
            if not line or line.startswith("//"):
                continue

            if testRegExp.indexIn(line) == -1:
                allTestSuccess = False
            else:
                hostName = testRegExp.cap(2)
                registrableName = testRegExp.cap(4)

                if not self.__checkPublicSuffix(hostName, registrableName):
                    allTestSuccess = False

        if allTestSuccess:
            qWarning("E5TldExtractor: Test passed successfully.")
        else:
            qWarning("E5TldExtractor: Test finished with some errors!")

        # reset the TLD dictionary
        self.__tldDict = collections.defaultdict(list)

        return allTestSuccess