예제 #1
0
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()
예제 #2
0
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()