def slot_ouvrir(__, start=False): if not start: __.archive = unicode(qt.QFileDialog.getOpenFileName(__, "Ouvrir archive", __.path*bool(not __.archive)+__.archive, "*.fuz"), "cp1252") __.Struct.Archive_name.setText(__.archive) if __.archive: __.archive_ind = ".".join(__.archive.split(".")[:-1]) + ".zid" type_ = int(file(__.archive, "r").read(1)) __.Status_bar.showMessage("Indexation du contenu") if type_: if not file_exists(__.archive_ind): create_index_dir(__.archive) __.Status_bar.showMessage("Création de l'arborescence") __.arborescence = __.tri_arborescence(get_arborescence(file(__.archive, "rb"))) __.show_dirs_in_dir(0, 1, False) __.show_files_in_dir(0) __.Struct.Name.setText(__.arborescence[0][0][0][-1]) else: if not file_exists(__.archive_ind): create_index_file(__.archive) __.Status_bar.showMessage("Indexation terminée") __.Struct.Name.setText(".".join(get_name(__.archive).split(".")[:-1])) __.show_files() __.Status_bar.showMessage("Ouverture de l'archive terminée")
def slot_ouvrir(__, start=False): if not start: __.archive = unicode( qt.QFileDialog.getOpenFileName( __, "Ouvrir archive", __.path * bool(not __.archive) + __.archive, "*.fuz"), "cp1252") __.Struct.Archive_name.setText(__.archive) if __.archive: __.archive_ind = ".".join(__.archive.split(".")[:-1]) + ".zid" type_ = int(file(__.archive, "r").read(1)) __.Status_bar.showMessage("Indexation du contenu") if type_: if not file_exists(__.archive_ind): create_index_dir(__.archive) __.Status_bar.showMessage("Création de l'arborescence") __.arborescence = __.tri_arborescence( get_arborescence(file(__.archive, "rb"))) __.show_dirs_in_dir(0, 1, False) __.show_files_in_dir(0) __.Struct.Name.setText(__.arborescence[0][0][0][-1]) else: if not file_exists(__.archive_ind): create_index_file(__.archive) __.Status_bar.showMessage("Indexation terminée") __.Struct.Name.setText(".".join( get_name(__.archive).split(".")[:-1])) __.show_files() __.Status_bar.showMessage("Ouverture de l'archive terminée")
def slot_fusionner(__, fonction=fusion): __.Status_bar.showMessage("Fusion en cours") liste = [] for i in range(__.Struct2.List_dossier.count()): liste.append( unicode(__.Struct2.List_dossier.item(i).text(), "cp1252")[:-1]) for i in range(__.Struct2.List_fichier.count()): liste.append( unicode(__.Struct2.List_fichier.item(i).text(), "cp1252")) if liste: path = unicode(__.Path.text(), "cp1252") name = unicode(__.Struct2.Archive_name.text(), "cp1252") if path and name: if path[-1] != "/": path += "/" path += name elif path and not name: if path[-1] != "/": path += "/" path += get_name(liste[0]) elif not path and name: path = get_path(liste[0]) + name else: if liste[0].count("."): path = ".".join(liste[0].split(".")[:-1]) else: path = liste[0][:] if get_ext(path) != "fuz": path += ".fuz" fonction(liste, False, path) __.Status_bar.showMessage("Fusion terminée")
def slot_extraire_all(__): if __.archive: __.Status_bar.showMessage("Defusion en cours") path = unicode(__.Path.text(), "cp1252") if not path: path = get_path(__.archive) if __.Struct.Name.text() != get_name(__.archive)[ : -4]: name = unicode(__.Struct.Name.text(), "cp1252") else: name = "" defusion(__.archive, False,False,path+name) __.Status_bar.showMessage("Defusion terminée") else: __.Status_bar.showMessage("Aucune archive ouverte")
def slot_extraire_all(__): if __.archive: __.Status_bar.showMessage("Defusion en cours") path = unicode(__.Path.text(), "cp1252") if not path: path = get_path(__.archive) if __.Struct.Name.text() != get_name(__.archive)[:-4]: name = unicode(__.Struct.Name.text(), "cp1252") else: name = "" defusion(__.archive, False, False, path + name) __.Status_bar.showMessage("Defusion terminée") else: __.Status_bar.showMessage("Aucune archive ouverte")
def get_contenu(__, index_dir): liste_contenu = [] fichier = file(__.archive_ind, "rb") fichier.read(1) nbr_c = base_int(fichier.read(1)) fichier.read(1) arborescence = get_arborescence(file(__.archive, "rb")) num_dossier = base_int(fichier.read(nbr_c)) nbr_fichier = base_int(fichier.readline()[:-1], 254) while num_dossier != index_dir: for i in range(nbr_fichier * 3): fichier.readline() num_dossier = base_int(fichier.read(nbr_c)) nbr_fichier = base_int(fichier.readline()[:-1], 254) liste_contenu.append([arborescence[0][num_dossier], []]) liste_fichier = [] for i in range(nbr_fichier): nom = fichier.readline()[:-1] start = base_int(fichier.readline()[:-1], 254) stop = base_int(fichier.readline()[:-1], 254) liste_contenu[-1][1].append([nom, start, stop]) dossier = arborescence[0][base_int( fichier.read(nbr_c))][:-1].split("/") nbr_fichier = base_int(fichier.readline()[:-1], 254) lim = len(liste_contenu[0][0]) path = get_path(__.archive) lim_start = len(path) index_slash = len(liste_contenu[0][0][:-1].split("/")) - 1 name = get_name(liste_contenu[0][0][:-1]) liste_contenu[0][0] = path + name lim_end = lim_start + lim while dossier[index_slash] == name: liste_contenu.append([path + "/".join(dossier[index_slash:]), []]) for i in range(nbr_fichier): nom = fichier.readline()[:-1] start = base_int(fichier.readline()[:-1], 254) stop = base_int(fichier.readline()[:-1], 254) liste_contenu[-1][1].append([nom, start, stop]) dossier = arborescence[0][base_int( fichier.read(nbr_c))][:-1].split("/") if len(dossier) <= index_slash: break nbr_fichier = base_int(fichier.readline()[:-1], 254) return liste_contenu
def get_contenu(__, index_dir): liste_contenu = [] fichier = file(__.archive_ind, "rb") fichier.read(1) nbr_c = base_int(fichier.read(1)) fichier.read(1) arborescence = get_arborescence(file(__.archive, "rb")) num_dossier = base_int(fichier.read(nbr_c)) nbr_fichier = base_int(fichier.readline()[:-1], 254) while num_dossier != index_dir: for i in range(nbr_fichier * 3): fichier.readline() num_dossier = base_int(fichier.read(nbr_c)) nbr_fichier = base_int(fichier.readline()[:-1], 254) liste_contenu.append([arborescence[0][num_dossier], []]) liste_fichier = [] for i in range(nbr_fichier): nom = fichier.readline()[:-1] start = base_int(fichier.readline()[:-1], 254) stop = base_int(fichier.readline()[:-1], 254) liste_contenu[-1][1].append([nom, start, stop]) dossier = arborescence[0][base_int(fichier.read(nbr_c))][:-1].split("/") nbr_fichier = base_int(fichier.readline()[:-1], 254) lim = len(liste_contenu[0][0]) path = get_path(__.archive) lim_start = len(path) index_slash = len(liste_contenu[0][0][:-1].split("/")) - 1 name = get_name(liste_contenu[0][0][:-1]) liste_contenu[0][0] = path + name lim_end = lim_start + lim while dossier[index_slash] == name: liste_contenu.append([path + "/".join(dossier[index_slash:]), []]) for i in range(nbr_fichier): nom = fichier.readline()[:-1] start = base_int(fichier.readline()[:-1], 254) stop = base_int(fichier.readline()[:-1], 254) liste_contenu[-1][1].append([nom, start, stop]) dossier = arborescence[0][base_int(fichier.read(nbr_c))][:-1].split("/") if len(dossier) <= index_slash: break nbr_fichier = base_int(fichier.readline()[:-1], 254) return liste_contenu
def slot_fusionner(__, fonction=fusion): __.Status_bar.showMessage("Fusion en cours") liste = [] for i in range(__.Struct2.List_dossier.count()): liste.append(unicode(__.Struct2.List_dossier.item(i).text(), "cp1252")[:-1]) for i in range(__.Struct2.List_fichier.count()): liste.append(unicode(__.Struct2.List_fichier.item(i).text(), "cp1252")) if liste: path = unicode(__.Path.text(), "cp1252") name = unicode(__.Struct2.Archive_name.text(), "cp1252") if path and name: if path[-1] != "/": path += "/" path += name elif path and not name: if path[-1] != "/": path += "/" path += get_name(liste[0]) elif not path and name: path = get_path(liste[0]) + name else: if liste[0].count("."): path = ".".join(liste[0].split(".")[:-1]) else: path = liste[0][:] if get_ext(path) != "fuz": path += ".fuz" fonction(liste, False, path) __.Status_bar.showMessage("Fusion terminée")