示例#1
0
    def handle_diff_action(self, file_1, file_2) -> None:
        self.diff_lst = []
        self.is_different = 0

        if not file_1  or not file_2:
            self.show_popup("São necessários dois arquivos para o diff!!", "Por favor, escolha dois arquivos (comprimidos ou não) e tente novamente")
            return

        file1 = self.handle_file(file_1)
        file2 = self.handle_file(file_2)

        c = self.diff_lib.lcslen(file1, file2)
        self.get_differences(c, file1, file2, len(file1) - 1, len(file2) - 1)
    
        out_path = os.path.join(script_dir, "../../../diff/") + "diff.txt"
        if self.is_different > 0:
            arquivos_comparados = \
                "==================================================== \n" + \
                "Arquivos comparados: \n" + \
                f"{file_1.split('/')[-1]} e \n" + \
                f"{file_2.split('/')[-1]} \n\n" + \
                "==================================================== \n"

            self.diff_lst.insert(0, arquivos_comparados)
            File.save_file(
                out_path, 
                file_content= "".join(self.diff_lst), 
                type='wt'
            )

            self.show_popup("Foram encontradas diferenças entre os arquivos selecionados", "Você pode vê-las no arquivo gerado em:", out_path)
        else:
            self.show_popup("Não foram encontradas diferenças entre os arquivos selecionados")
    def handle_decode_action(self, file_path: str, *args):
        file_extension = file_path.split("/")[-1].split(
            ".")[-1] == "greed_compressed"

        if not file_extension:
            self.show_popup(
                "Não foi possível abrir o arquivo selecionado",
                "Verifique se você escolheu um arquivo no formato .greed_compressed!!"
            )
            return

        try:
            file = Commons.get_file(file_path=file_path, encode_type='rb')
        except Exception as ex:
            self.show_popup(
                "Não foi possível abrir o arquivo selecionado",
                "Verifique se você escolheu um arquivo no formato .greed_compressed!!"
            )
            return

        decoded_text = DecodeCommons.get_decoded_text(file)

        decoded_content_path = abs_file_path + self.get_file_extension(
            file_path) + datetime.now().strftime("%Y-%m-%d_%H:%M:%S") + ".txt"

        decoded_file_path = os.path.join(decoded_content_path)

        File.save_file(decoded_file_path, file_content=decoded_text, type='wt')

        self.show_popup("Arquivo descomprimido com sucesso!!",
                        "Você pode vê-lo na pasta:", decoded_file_path)
    def handle_encode_action(self, file_path: str, *args):
        try:
            file = Commons.get_file(file_path=file_path, encode_type='r')
        except Exception as ex:
            print(ex)
            self.show_popup(
                "Não foi possível abrir o arquivo selecionado",
                "Verifique se você escolheu um arquivo no formato .txt!!")
            return

        file_content = EncodeCommons.encode_file(file)

        encoded_file_path = abs_file_path + self.get_file_extension(
            file_path) + ".greed_compressed"

        File.save_file(path=encoded_file_path,
                       file_content=file_content.tobytes())

        popup("Encode realizado com sucesso!!",
              "Você pode ver o arquivo comprmido em:", encoded_file_path,
              self.calculate_size_diference(file_path, encoded_file_path))