def formulaire_ark2records(master, access_to_network=True, last_version=[0.0, False]): couleur_fond = "white" couleur_bouton = "#99182D" [ form, zone_alert_explications, zone_access2programs, zone_actions, zone_ok_help_cancel, zone_notes ] = main.form_generic_frames( master, "Bibliostratus : Récupérer les notices complètes BnF / Sudoc / IdRef à partir d'une liste de n° de notices", couleur_fond, couleur_bouton, access_to_network) zone_ok_help_cancel.config(padx=10) frame_input = tk.Frame(zone_actions, bg=couleur_fond, padx=10, pady=10, highlightthickness=2, highlightbackground=couleur_bouton) frame_input.pack(side="left", anchor="w", padx=10, pady=10) frame_input_file = tk.Frame(frame_input, bg=couleur_fond) frame_input_file.pack() frame_input_aut = tk.Frame(frame_input, bg=couleur_fond) frame_input_aut.pack() frame_input_aut_file = tk.Frame(frame_input_aut, bg=couleur_fond) frame_input_aut_file.pack() frame_input_aut_headers = tk.Frame(frame_input_aut, bg=couleur_fond) frame_input_aut_headers.pack(anchor="w") frame_input_aut_liees = tk.Frame(frame_input_aut, bg=couleur_fond) frame_input_aut_liees.pack(anchor="w") frame_output = tk.Frame(zone_actions, bg=couleur_fond, padx=10, pady=10, highlightthickness=2, highlightbackground=couleur_bouton) frame_output.pack(side="left", anchor="w") frame_output_file = tk.Frame(frame_output, bg=couleur_fond, padx=10, pady=10) frame_output_file.pack() frame_output_options = tk.Frame(frame_output, bg=couleur_fond, padx=10, pady=10) frame_output_options.pack() frame_output_options_marc = tk.Frame(frame_output_options, bg=couleur_fond) frame_output_options_marc.pack(anchor="w") frame_output_options_format_global = tk.Frame(frame_output_options, bg=couleur_fond) frame_output_options_format_global.pack() frame_output_options_format = tk.Frame(frame_output_options_format_global, bg=couleur_fond) frame_output_options_format.pack(side="left", anchor="nw") frame_output_options_intermediaire = tk.Frame( frame_output_options_format_global, bg=couleur_fond) frame_output_options_intermediaire.pack(side="left", anchor="nw") frame_output_options_si_xml = tk.Frame(frame_output_options_format_global, bg=couleur_fond) frame_output_options_si_xml.pack(side="left", anchor="nw") frame_outputID = tk.Frame(frame_output, bg=couleur_fond) frame_outputID.pack(anchor="w") # forms.add_saut_de_ligne(frame_outputID) zone_notes_message_en_cours = tk.Frame(zone_notes, padx=20, bg=couleur_fond) zone_notes_message_en_cours.pack() main.download_zone( frame_input_file, "Sélectionner un fichier contenant\nune liste de n° de notices\nARK BnF ou PPN Abes\n(un numéro par ligne)", entry_file_list, couleur_fond, zone_notes_message_en_cours) main.download_zone(frame_output_file, "Sélectionner un dossier de destination", main.output_directory, couleur_fond, type_action="askdirectory", widthb=[40, 1]) type_records = tk.IntVar() # ARK de BIB ou d'AUT ? correct_record_option = tk.IntVar() # 1 ou 2 colonnes ? headers = tk.IntVar() # Fichier avec en-têtes ? headers.set(1) AUTlieesAUT = tk.IntVar() # notices d'autorité liées AUTlieesSUB = tk.IntVar() AUTlieesWORK = tk.IntVar() format_records_choice = tk.IntVar() # Choix du format format_records_choice.set(1) format_file = tk.IntVar() format_file.set(1) frame2var = [{ "frame": frame_input_aut_file, "name": "frame_input_aut_file", "variables": [["type_records", type_records], ["correct_record_option", correct_record_option]] }, { "frame": frame_input_aut_headers, "name": "frame_input_aut_headers", "variables": [["headers", headers]] }, { "frame": frame_input_aut_liees, "name": "frame_input_aut_liees", "variables": [["AUTlieesAUT", AUTlieesAUT], ["AUTlieesSUB", AUTlieesSUB], ["AUTlieesWORK", AUTlieesWORK]] }, { "frame": frame_output_options_format, "name": "frame_output_options_format", "variables": [["format_file", format_file]] }, { "frame": frame_output_options_marc, "name": "frame_output_options_marc", "variables": [["format_records_choice", format_records_choice]] }] forms.display_options(frame2var, forms.form_ark2records) xml_encoding_option = forms.Combobox( frame_output_options_si_xml, forms.form_ark2records["frame_output_options_si_xml"] ["xml_encoding_option"]["title"], forms.form_ark2records["frame_output_options_si_xml"] ["xml_encoding_option"]["values"], forms.form_ark2records["frame_output_options_si_xml"] ["xml_encoding_option"]["params"]) select_fields = forms.Entry( frame_output_options_si_xml, forms.form_ark2records["frame_output_options_si_xml"]["select_fields"] ["title"], forms.form_ark2records["frame_output_options_si_xml"] ["select_fields"]["params"]) outputID = forms.Entry( frame_outputID, forms.form_ark2records["frame_outputID"]["outputID"]["title"], forms.form_ark2records["frame_outputID"]["outputID"]["params"]) forms.add_saut_de_ligne(frame_input_aut_liees, nb_sauts=5) forms.add_saut_de_ligne(frame_output_options_intermediaire, nb_sauts=1) forms.add_saut_de_ligne(frame_outputID, nb_sauts=1) # file_format.focus_set() b = tk.Button( zone_ok_help_cancel, text="OK", command=lambda: launch( entry_file_list, type_records.get(), correct_record_option.get(), headers.get(), AUTlieesAUT.get(), AUTlieesSUB.get(), AUTlieesWORK.get(), outputID.value.get(), format_records_choice.get(), format_file.get(), xml_encoding_option.options.get(), select_fields.value.get(), master, form, ), width=15, borderwidth=1, pady=20, fg="white", bg=couleur_bouton, ) b.pack() main.form_saut_de_ligne(zone_ok_help_cancel, couleur_fond) call4help = tk.Button(zone_ok_help_cancel, text=main.texte_bouton_help, command=lambda: main.click2url(main.url_online_help), pady=5, padx=5, width=12) call4help.pack() forms.add_saut_de_ligne(zone_ok_help_cancel) forum_button = forms.forum_button(zone_ok_help_cancel) forum_button.pack() tk.Label(zone_ok_help_cancel, text="\n", bg=couleur_fond, font="Arial 4 normal").pack() cancel = tk.Button(zone_ok_help_cancel, text="Annuler", bg=couleur_fond, command=lambda: main.annuler(form), pady=10, padx=5, width=12) cancel.pack() forms.footer(zone_notes, couleur_fond) tk.mainloop()
def formulaire_marc2tables(master, access_to_network=True, last_version=[0.0, False]): # ============================================================================= # Structure du formulaire - Cadres # ============================================================================= couleur_fond = "white" couleur_bouton = "#2D4991" # couleur_bouton = "#99182D" [ form, zone_alert_explications, zone_access2programs, zone_actions, zone_ok_help_cancel, zone_notes ] = main.form_generic_frames( master, "Conversion de fichiers de notices Unimarc en tableaux", couleur_fond, couleur_bouton, access_to_network) frame_input = tk.Frame(zone_actions, highlightthickness=2, highlightbackground=couleur_bouton, relief="groove", height=150, padx=10, bg=couleur_fond) frame_input.pack(side="left", anchor="w") frame_input_header = tk.Frame(frame_input, bg=couleur_fond) frame_input_header.pack(anchor="w") frame_input_file = tk.Frame(frame_input, bg=couleur_fond) frame_input_file.pack(anchor="w") frame_input_file_name = tk.Frame(frame_input_file, bg=couleur_fond) frame_input_file_name.pack(side="left") frame_input_file_browse = tk.Frame(frame_input_file, bg=couleur_fond) frame_input_file_browse.pack(side="left") frame_input_infos_format = tk.Frame(frame_input, bg=couleur_fond) frame_input_infos_format.pack(side="left") frame_input_type_docs = tk.Frame(frame_input, bg=couleur_fond) frame_input_type_docs.pack(anchor="w") frame_input_type_rec = tk.Frame(frame_input, bg=couleur_fond) frame_input_type_rec.pack(anchor="w") frame_inter = tk.Frame(zone_actions, borderwidth=0, padx=10, bg=couleur_fond) frame_inter.pack(side="left") # ============================================================================= # Formulaire - Fichier en entrée # ============================================================================= frame_output = tk.Frame(zone_actions, highlightthickness=2, highlightbackground=couleur_bouton, relief="groove", height=120, padx=10, bg=couleur_fond) frame_output.pack(side="left") frame_output_header = tk.Frame(frame_output, bg=couleur_fond) frame_output_header.pack(anchor="w") frame_output_nom_fichiers = tk.Frame(frame_output, bg=couleur_fond) frame_output_nom_fichiers.pack(anchor="w") frame_output_directory = tk.Frame(frame_output, bg=couleur_fond) frame_output_directory.pack(anchor="w") frame_outputID = tk.Frame(frame_output, bg=couleur_fond) frame_outputID.pack(anchor="w") frame_output_explications = tk.Frame(frame_output, bg=couleur_fond) frame_output_explications.pack(anchor="w") frame_output_message_en_cours = tk.Frame(zone_notes, padx=20, bg=couleur_fond) frame_output_message_en_cours.pack(anchor="w") frame_valider = tk.Frame(zone_ok_help_cancel, borderwidth=0, relief="groove", height=150, padx=10, bg=couleur_fond) frame_valider.pack(side="left") # définition input URL (u) tk.Label(frame_inter, text=" ", bg=couleur_fond).pack() tk.Label(frame_input_header, bg=couleur_fond, fg=couleur_bouton, text="En entrée\n", justify="left", font="bold").pack(anchor="w") main.download_zone(frame_input_file, "Sélectionner un fichier de notices Unimarc", entry_file_list, couleur_fond, frame_output_message_en_cours) tk.Label(frame_output_header, bg=couleur_fond, fg=couleur_bouton, font="bold", text="En sortie", justify="left").pack() main.download_zone(frame_output_directory, "Sélectionner un dossier de destination", main.output_directory, couleur_fond, type_action="askdirectory", widthb=[40, 1]) # Format du fichier file_format = tk.IntVar() file_format.set(1) # Type de notices rec_format = tk.IntVar() rec_format.set(1) outputID = forms.Entry( frame_outputID, forms.form_ark2records["frame_outputID"]["outputID"]["title"], forms.form_ark2records["frame_outputID"]["outputID"]["params"]) frame2var = [{ "frame": frame_input_type_docs, "name": "frame_input_type_docs", "variables": [["file_format", file_format]] }, { "frame": frame_input_type_rec, "name": "frame_input_type_rec", "variables": [["rec_format", rec_format]] }] forms.display_options(frame2var, forms.form_marc2tables) #forms.add_saut_de_ligne(frame_input_type_docs) lien_help_encodage = tk.Button( frame_input_type_docs, font="Arial 8 italic", border=0, text="Je ne sais pas / Je ne comprends pas", command=lambda: main.click2url( "https://github.com/Transition-bibliographique/bibliostratus/wiki/1-%5BBleu%5D-Pr%C3%A9parer-ses-donn%C3%A9es-pour-l'alignement-%C3%A0-partir-d'un-export-catalogue#lencodage-des-fichiers-en-entr%C3%A9e" # noqa ), ).pack() forms.add_saut_de_ligne(frame_input_type_docs) #forms.add_saut_de_ligne(frame_input_type_docs_interstice2) #forms.add_saut_de_ligne(frame_input_type_rec, 11) message_fichiers_en_sortie = """ Le programme va générer plusieurs fichiers, par type de document, en fonction du processus d'alignement avec les données de la BnF et des métadonnées utilisées pour cela : - code TEX : monographies - code VID : audiovisuel (CD/DVD) - code PER : périodiques - autres non prévus pour le module d'alignement (blanc) Les codes indiquent l'option d'alignement à choisir dans le module blanc S'il n'y a pas de code, le fichier ne peut être chargé tel quel dans le module blanc : il faut au moins reprendre les colonnes. Pour répartir les notices en fichiers, le programme utilise les informations présentes dans les zones codées de chaque notice Unimarc """ tk.Label(frame_output_explications, bg=couleur_fond, text=message_fichiers_en_sortie, justify="left").pack() # explications.pack() # Bouton de validation b = tk.Button(frame_valider, bg=couleur_bouton, fg="white", font="bold", text="OK", command=lambda: launch(entry_file_list, file_format.get( ), rec_format.get(), outputID.value.get(), master, form), borderwidth=5, padx=10, pady=10, width=10, height=4) b.pack() tk.Label(frame_valider, font="bold", text="", bg=couleur_fond).pack() call4help = tk.Button(frame_valider, text=main.texte_bouton_help, command=lambda: main.click2url(main.url_online_help), pady=5, padx=5, width=12) call4help.pack() tk.Label(frame_valider, text="\n", bg=couleur_fond, font="Arial 1 normal").pack() forum_button = forms.forum_button(frame_valider) forum_button.pack() tk.Label(frame_valider, text="\n", bg=couleur_fond, font="Arial 4 normal").pack() cancel = tk.Button(frame_valider, text="Annuler", bg=couleur_fond, command=lambda: main.annuler(form), pady=10, padx=5, width=12) cancel.pack() forms.footer(zone_notes, couleur_fond) tk.mainloop()