Exemple #1
0
class StringManager(QDialog):
    def __init__(self, parent=None):
        super(StringManager, self).__init__(parent)
        self.ui = Ui_StringManager()
        self.ui.setupUi(self)

        self.ui.FrameIn.hide()
        self.ui.FrameOut.hide()
        self.__initLists()

        self.ui.CheckReadFromFile.clicked.connect(lambda: self.ui.FrameIn.setVisible(self.ui.CheckReadFromFile.isChecked()))
        self.ui.CheckWriteToFile.clicked.connect(lambda: self.ui.FrameOut.setVisible(self.ui.CheckWriteToFile.isChecked()))
        self.ui.FileButtonIn.clicked.connect(lambda: self.__connectAndShowDialog("in"))
        self.ui.FileButtonOut.clicked.connect(lambda: self.__connectAndShowDialog("out"))
        self.ui.ConvertButton.clicked.connect(self.convert)

        self.fileDialog = QFileDialog(self)
        self.fileDialog.setFileMode(QFileDialog.AnyFile)

        self.pathIn = None
        self.pathOut = None

    def __initLists(self):
        for i in range(0, len(su.listOfTextEncodings), 1):
            self.ui.FormatBoxInput.addItem(su.textEncodingBeautifier(i))
            self.ui.FormatBoxOutput.addItem(su.textEncodingBeautifier(i))

        for key in su.bitOperations.keys():
            self.ui.DecodeBox.addItem(key)
            self.ui.EncodeBox.addItem(key)

    def __connectAndShowDialog(self, field):
        self.fileDialog.accepted.connect(lambda: self.__getSelectedFile(field))
        self.fileDialog.show()

    def __getSelectedFile(self, field):
        if field == "in":
            self.pathIn = str(self.fileDialog.selectedFiles()[0])
            self.ui.AddrLineIn.setText(self.pathIn)
        elif field == "out":
            self.pathOut = str(self.fileDialog.selectedFiles()[0])
            self.ui.AddrLineOut.setText(self.pathOut)
        self.fileDialog.disconnect()

    def readFile(self):
        file = open(self.pathIn, "r")
        text = file.read()
        self.ui.TextIn.setText(text)
        file.close()

    def writeFile(self, append=bool):
        if append:
            file = open(self.pathOut, "a")
        else:
            file = open(self.pathOut, "w")
        file.write(self.ui.TextOut.toPlainText())
        file.close()

    def convert(self):
        try:
            encodingIn = su.getEncoding(self.ui.FormatBoxInput.currentText())
            encodingOut = su.getEncoding(self.ui.FormatBoxOutput.currentText())
            decodeOp = self.ui.DecodeBox.currentText()
            encodeOp = self.ui.EncodeBox.currentText()

            if self.ui.CheckReadFromFile.isChecked():
                self.readFile()

            text = self.ui.TextIn.toPlainText()
            textOut = su.convert(text, encodingIn, encodingOut, decodeOp, encodeOp)
            self.ui.TextOut.setText(textOut)
            if self.ui.CheckWriteToFile.isChecked():
                self.writeFile(self.ui.OptAppend.isChecked())
        except Exception as e:
            self.ui.TextOut.setText(str(e))