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))