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()
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_main(access_to_network, last_version): couleur_fond = "white" couleur_bouton = "#e1e1e1" [ master, zone_alert_explications, zone_access2programs, zone_actions, zone_ok_help_cancel, zone_notes ] = main_form_frames( "Bibliostratus : Stratégie d'alignement d'URIs pour la Transition bibliographique", couleur_fond, couleur_bouton, access_to_network) frame_left = tk.Frame(zone_actions, bg=couleur_fond, pady=0, padx=0) frame_left.pack(side="left", anchor="w") frame_logo = tk.Frame(frame_left, highlightbackground=couleur_fond, highlightcolor=couleur_fond, bg=couleur_fond, pady=0, padx=0) frame_logo.pack(anchor="center") logo = tk.PhotoImage(file="main/files/logo_bbs.png") logo = logo.zoom(50) #with 250, I ended up running out of memory logo = logo.subsample( 50) #mechanically, here it is adjusted to 32 instead of 320 zone_logo = tk.Label(frame_logo, image=logo, borderwidth=0) zone_logo.image = logo zone_logo.pack(anchor="center") frame1 = tk.Frame(frame_left, highlightthickness=2, highlightbackground=couleur_bouton, bg=couleur_fond, pady=20, padx=20) frame1.pack() frame2 = tk.Frame(zone_actions, highlightthickness=0, highlightbackground=couleur_bouton, bg=couleur_fond, pady=20, padx=5) frame2.pack(side="left", anchor="w") frame3 = tk.Frame(zone_actions, highlightthickness=2, highlightbackground=couleur_bouton, bg=couleur_fond, pady=20, padx=20) frame3.pack(side="left") frame_help_cancel = tk.Frame(zone_ok_help_cancel, bg=couleur_fond, pady=10, padx=10) frame_help_cancel.pack() # ============================================================================= # Module blanc : aligner ses données bibliographiques ou AUT # ============================================================================= tk.Label(frame1, text="Aligner des données bibliographiques", bg=couleur_fond, fg="#365B43", font="Arial 11 bold").pack(anchor="w") tk.Label(frame1, text="\n", font="Arial 2 bold", bg=couleur_fond).pack() bib2arkButton = tk.Button( frame1, text= "Aligner ses données BIB\n avec la BnF ou le Sudoc\nà partir de fichiers tableaux", command=lambda: bib2id.form_bib2id(master, access_to_network, [0, False]), padx=40, pady=47, bg="#fefefe", font="Arial 9 bold", ) bib2arkButton.pack() tk.Label(frame1, text="\n", bg=couleur_fond, font="Arial 3 normal").pack() aut2arkButton = tk.Button(frame1, text="Aligner ses données AUT ", command=lambda: aut2id.form_aut2id( master, access_to_network, [0, False]), padx=55, pady=25, bg="#fefefe", font="Arial 8 normal") aut2arkButton.pack() #tk.Label(frame1, text="\n\n", bg=couleur_fond).pack() tk.Label(frame2, text="\n\n", bg=couleur_fond).pack() # ============================================================================= # Module bleu : convertir un fichier MARC en tables # ============================================================================= tk.Label(frame3, text="Outils d'accompagnement", bg=couleur_fond, fg="#365B43", font="Arial 11 bold").pack(anchor="w") tk.Label(frame3, text="\n", bg=couleur_fond, font="Arial 4 normal").pack() tk.Label(frame3, text="Avant alignement", bg=couleur_fond, fg="#2D4991", font="Arial 10 bold").pack(anchor="w") tk.Label(frame3, text="Préparer ses données", bg=couleur_fond, fg="#365B43", font="Arial 9 bold").pack(anchor="w") tk.Label(frame3, text="(constitution de tableaux\nà partir d'un export catalogue)", bg=couleur_fond, fg="#365B43", font="Arial 9 normal", justify="left").pack(anchor="w") marc2tableButton = tk.Button( frame3, text="Convertir un fichier Unimarc\n en tableaux", command=lambda: marc2tables.formulaire_marc2tables( master, access_to_network), padx=10, pady=10, bg="#2D4991", fg="white") marc2tableButton.pack() # ☺tk.Label(frame3,text="\n",bg=couleur_fond).pack() tk.Label(frame3, text="\n" + "-" * 50, bg=couleur_fond, fg="#a1a1a1").pack() # ============================================================================= # Module rouge : exporter des notices à partir d'une liste d'ARK # ============================================================================= tk.Label(frame3, text="Après alignement", bg=couleur_fond, fg="#99182D", font="Arial 10 bold").pack(anchor="w") tk.Label(frame3, text="Exporter les notices après alignement", bg=couleur_fond, fg="#365B43", font="Arial 9 bold").pack(anchor="w") ark2recordsButton = tk.Button( frame3, text= "Exporter des notices BnF / Abes\nà partir d'une liste d'identifiants\n(ARK / PPN)", command=lambda: ark2records.formulaire_ark2records( master, access_to_network, [0, False]), padx=10, pady=10, bg="#99182D", fg="white") ark2recordsButton.pack() forms.add_saut_de_ligne(frame3) tk.Label(zone_ok_help_cancel, text=" ", pady=5, bg=couleur_fond).pack() call4help = tk.Button(frame_help_cancel, text=texte_bouton_help, command=lambda: click2url(url_online_help), pady=25, padx=5, width=12) call4help.pack() tk.Label(frame_help_cancel, text="\n", bg=couleur_fond, font="Arial 1 normal").pack() forum_button = forms.forum_button(frame_help_cancel) forum_button.pack() forms.add_saut_de_ligne(frame_help_cancel) cancel = tk.Button(frame_help_cancel, text="Annuler", bg=couleur_fond, command=lambda: annuler(master), pady=45, padx=5, width=12) cancel.pack() tk.Label(frame_help_cancel, text="\n\nPréférences", bg=couleur_fond, font="Arial 8 normal").pack() edit_settings_img = tk.PhotoImage(file='main/files/settings.png') edit_settings_button = tk.Button( frame_help_cancel, image=edit_settings_img, command=lambda: settings.edit_preferences( master, prefs_file_name, access_to_network, last_version), padx=0, pady=0, bg="white", font="Arial 9 bold", ) edit_settings_button.pack() tk.Label(zone_notes, text="Bibliostratus - Version " + str(version) + " - " + lastupdate, bg=couleur_fond).pack() if last_version[1]: download_update = tk.Button(zone_notes, text="Télécharger la version " + str(last_version[0]), command=download_last_update) download_update.pack() url_release_notes = ( "https://github.com/Transition-bibliographique/bibliostratus/blob/master/bibliostratus/release_notes.md#" # noqa + "version-" + str(last_version[0]).replace(".", "")) release_notes = tk.Button( zone_notes, bg=couleur_fond, font="Arial 8 bold italic", border=0, text="Liste des nouveautés", command=lambda: download_last_update(url_release_notes)) release_notes.pack() tk.mainloop()