Ejemplo n.º 1
0
def forum_button(frame):
    button = tk.Button(frame,
                       text=texte_bouton_forum,
                       command=lambda: main.click2url(url_forum_aide),
                       pady=5,
                       padx=5,
                       width=12)
    return button
Ejemplo n.º 2
0
def radioButton_lienExample(frame, variable_button, val, couleur_fond, text1,
                            text2, link):
    packButton = tk.Frame(frame, bg=couleur_fond)
    packButton.pack(anchor="w")
    line1 = tk.Frame(packButton, bg=couleur_fond)
    line1.pack(anchor="w")
    tk.Radiobutton(
        line1,
        bg=couleur_fond,
        text=text1,
        variable=variable_button,
        value=val,
        justify="left",
    ).pack(anchor="w", side="left")
    if link != "":
        tk.Label(line1, text="  ", bg=couleur_fond).pack(anchor="w",
                                                         side="left")
        if "http" in link:
            example_ico = tk.Button(
                line1,
                bd=0,
                justify="left",
                font="Arial 7 underline",
                text="exemple",
                fg="#0000ff",
                bg=couleur_fond,
                command=lambda: main.click2url(link),
            )
        else:
            link = os.path.join(os.path.dirname(__file__), link)
            example_ico = tk.Button(
                line1,
                bd=0,
                justify="left",
                font="Arial 7 underline",
                text="exemple",
                fg="#0000ff",
                bg=couleur_fond,
                command=lambda: funcs.open_local_file(link),
            )
        example_ico.pack(anchor="w", side="left")
    if text2 != "":
        line2 = tk.Frame(packButton, bg=couleur_fond)
        line2.pack(anchor="w")
        tk.Label(line2, bg=couleur_fond, text="      " + text2,
                 justify="left").pack(anchor="w")
Ejemplo n.º 3
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()
Ejemplo n.º 4
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()
Ejemplo n.º 5
0
def formulaire_noticesaut2arkBnF(master,
                                 access_to_network=True,
                                 last_version=[0, False]):
    couleur_fond = "white"
    couleur_bouton = "#515151"

    [
        form, zone_alert_explications, zone_access2programs, zone_actions,
        zone_ok_help_cancel, zone_notes
    ] = main.form_generic_frames(
        master, "Aligner ses données d'autorité avec les notices BnF",
        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_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()
    frame_input_aut = tk.Frame(
        frame_input,
        bg=couleur_fond,
    )
    frame_input_aut.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_header = tk.Frame(frame_output, bg=couleur_fond)
    frame_output_header.pack(anchor="w")
    frame_output_file = tk.Frame(frame_output,
                                 bg=couleur_fond,
                                 padx=10,
                                 pady=10)
    frame_output_file.pack(anchor="w")
    frame_output_options = tk.Frame(frame_output,
                                    bg=couleur_fond,
                                    padx=10,
                                    pady=10)
    frame_output_options.pack(anchor="w")
    frame_output_options_marc = tk.Frame(frame_output_options, bg=couleur_fond)
    frame_output_options_marc.pack(side="left", anchor="nw")
    frame_output_options_inter = tk.Frame(frame_output_options,
                                          bg=couleur_fond)
    frame_output_options_inter.pack(side="left")
    frame_output_options_format = tk.Frame(frame_output_options,
                                           bg=couleur_fond)
    frame_output_options_format.pack(side="left", anchor="nw")

    zone_notes_message_en_cours = tk.Frame(zone_notes,
                                           padx=20,
                                           bg=couleur_fond)
    zone_notes_message_en_cours.pack()

    tk.Label(frame_input_header,
             text="En entrée",
             font="bold",
             fg=couleur_bouton,
             bg=couleur_fond).pack()

    tk.Label(frame_input_file,
             text="Fichier contenant \nles notices d'autorité à aligner\n\n",
             bg=couleur_fond,
             justify="left").pack(side="left", anchor="w")
    """entry_filename = tk.Entry(frame_input_file, width=20, bd=2, bg=couleur_fond)
    entry_filename.pack(side="left")
    entry_filename.focus_set()"""
    main.download_zone(
        frame_input_file,
        "Sélectionner un fichier\nSéparateur TAB, Encodage UTF-8",
        entry_file_list, couleur_fond, zone_notes_message_en_cours)

    #Fichier avec en-têtes ?
    headers = tk.IntVar()
    tk.Checkbutton(frame_input_aut,
                   text="Mon fichier a des en-têtes de colonne",
                   variable=headers,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w")
    headers.set(1)

    tk.Label(frame_input_aut,
             bg=couleur_fond,
             text="\nType de données en entrée",
             font="Arial 10 bold",
             anchor="w").pack(anchor="w")
    input_data_type = tk.IntVar()
    bib2ark.radioButton_lienExample(
        frame_input_aut, input_data_type, 1, couleur_fond,
        "Liste de notices d'autorité",
        "(" + " | ".join(header_columns_init_aut2aut) + ")",
        "https://raw.githubusercontent.com/Transition-bibliographique/alignements-donnees-bnf/master/examples/aut_align_aut.tsv"
    )
    bib2ark.radioButton_lienExample(
        frame_input_aut, input_data_type, 2, couleur_fond,
        "Liste de notices bibliographiques",
        "(" + " | ".join(header_columns_init_bib2aut) + ")",
        "https://raw.githubusercontent.com/Transition-bibliographique/alignements-donnees-bnf/master/examples/aut_align_bib.tsv"
    )

    input_data_type.set(1)

    #Option Relance sur isni ?
    isni_option = tk.IntVar()
    tk.Checkbutton(frame_input_aut,
                   text="Relancer sur isni.org en cas d'absence de réponse",
                   variable=isni_option,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w")
    isni_option.set(1)

    #tk.Label(frame_input_aut,bg=couleur_fond, text="\n").pack()

    tk.Label(frame_output_header,
             text="En sortie",
             font="bold",
             fg=couleur_bouton,
             bg=couleur_fond).pack()

    file_nb = tk.IntVar()
    tk.Radiobutton(frame_output_file,
                   bg=couleur_fond,
                   text="1 fichier",
                   variable=file_nb,
                   value=1,
                   justify="left").pack(anchor="w")
    tk.Radiobutton(
        frame_output_file,
        bg=couleur_fond,
        text="Plusieurs fichiers \n(Pb / 0 / 1 / plusieurs ARK trouvés)",
        variable=file_nb,
        value=2,
        justify="left").pack(anchor="w")
    file_nb.set(1)

    tk.Label(frame_output_file, bg=couleur_fond, text="\n").pack()

    #Récupérer les métadonnées BnF au passage ?
    meta_bnf = tk.IntVar()
    tk.Checkbutton(frame_output_file,
                   text="Récupérer les métadonnées BnF",
                   variable=meta_bnf,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w")
    tk.Label(frame_output_file, text="\n", bg=couleur_fond,
             justify="left").pack(anchor="w")
    tk.Label(frame_output_file,
             text="Préfixe des fichiers en sortie",
             bg=couleur_fond).pack(anchor="w")
    outputID = tk.Entry(frame_output_file, bg=couleur_fond, width=30)
    outputID.pack(anchor="w")

    tk.Label(frame_output_file, text="\n", bg=couleur_fond).pack(anchor="w")

    #file_format.focus_set()
    b = tk.Button(zone_ok_help_cancel,
                  text="Aligner\nles autorités",
                  command=lambda: launch(form, entry_file_list[0], headers.get(
                  ), input_data_type.get(), isni_option.get(), file_nb.get(),
                                         outputID.get(), meta_bnf.get()),
                  width=15,
                  borderwidth=1,
                  pady=40,
                  fg="white",
                  bg=couleur_bouton,
                  font="Arial 10 bold")
    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()
    tk.Label(zone_ok_help_cancel,
             text="\n",
             bg=couleur_fond,
             font="Arial 1 normal").pack()

    forum_button = tk.Button(
        zone_ok_help_cancel,
        text=main.texte_bouton_forum,
        command=lambda: main.click2url(main.url_forum_aide),
        pady=5,
        padx=5,
        width=12)
    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()

    tk.Label(zone_notes,
             text="Bibliostratus - Version " + str(main.version) + " - " +
             main.lastupdate,
             bg=couleur_fond).pack()
    """if (main.last_version[1] == True):
        download_update = tk.Button(zone_notes, text = "Télécharger la version " + str(main.last_version[0]), command=download_last_update)
        download_update.pack()"""

    tk.mainloop()
Ejemplo n.º 6
0
def formulaire_marc2tables(master,
                           access_to_network=True,
                           last_version=[version, 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)

    cadre_input = tk.Frame(zone_actions,
                           highlightthickness=2,
                           highlightbackground=couleur_bouton,
                           relief="groove",
                           height=150,
                           padx=10,
                           bg=couleur_fond)
    cadre_input.pack(side="left", anchor="w")
    cadre_input_header = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_header.pack(anchor="w")
    cadre_input_file = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_file.pack(anchor="w")
    cadre_input_file_name = tk.Frame(cadre_input_file, bg=couleur_fond)
    cadre_input_file_name.pack(side="left")
    cadre_input_file_browse = tk.Frame(cadre_input_file, bg=couleur_fond)
    cadre_input_file_browse.pack(side="left")
    cadre_input_infos_format = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_infos_format.pack(side="left")

    cadre_input_type_docs_interstice1 = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_type_docs_interstice1.pack(side="left")

    cadre_input_type_docs = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_type_docs.pack(side="left")
    cadre_input_type_docs_interstice2 = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_type_docs_interstice2.pack(side="left")
    cadre_input_type_rec = tk.Frame(cadre_input, bg=couleur_fond)
    cadre_input_type_rec.pack(side="left")

    cadre_inter = tk.Frame(zone_actions,
                           borderwidth=0,
                           padx=10,
                           bg=couleur_fond)
    cadre_inter.pack(side="left")
    tk.Label(cadre_inter, text=" ", bg=couleur_fond).pack()

    #=============================================================================
    #     Formulaire - Fichier en entrée
    # =============================================================================

    cadre_output = tk.Frame(zone_actions,
                            highlightthickness=2,
                            highlightbackground=couleur_bouton,
                            relief="groove",
                            height=150,
                            padx=10,
                            bg=couleur_fond)
    cadre_output.pack(side="left")
    cadre_output_header = tk.Frame(cadre_output, bg=couleur_fond)
    cadre_output_header.pack(anchor="w")
    cadre_output_nom_fichiers = tk.Frame(cadre_output, bg=couleur_fond)
    cadre_output_nom_fichiers.pack(anchor="w")
    cadre_output_repertoire = tk.Frame(cadre_output, bg=couleur_fond)
    cadre_output_repertoire.pack(anchor="w")
    cadre_output_explications = tk.Frame(cadre_output,
                                         padx=20,
                                         bg=couleur_fond)
    cadre_output_explications.pack(anchor="w")

    cadre_output_message_en_cours = tk.Frame(cadre_output,
                                             padx=20,
                                             bg=couleur_fond)
    cadre_output_message_en_cours.pack(anchor="w")

    cadre_valider = tk.Frame(zone_ok_help_cancel,
                             borderwidth=0,
                             relief="groove",
                             height=150,
                             padx=10,
                             bg=couleur_fond)
    cadre_valider.pack(side="left")

    #définition input URL (u)
    tk.Label(cadre_input_header,
             bg=couleur_fond,
             fg=couleur_bouton,
             text="En entrée\n",
             justify="left",
             font="bold").pack(anchor="w")

    #tk.Label(cadre_input_file_name,bg=couleur_fond, text="Fichier contenant les notices : ").pack(side="left")
    """entry_filename = tk.Entry(cadre_input_file, width=40, bd=2)
    entry_filename.pack(side="left")
    entry_filename.focus_set()"""
    main.download_zone(cadre_input_file,
                       "Sélectionner un fichier de notices Unimarc",
                       entry_file_list, couleur_fond,
                       cadre_output_message_en_cours)

    #tk.Button(cadre_input_file_browse, text="Sélectionner le fichier\ncontenant les notices", command=lambda:main.openfile(cadre_input_file_name, popup_filename), width=20).pack()
    """tk.Label(cadre_input_infos_format,bg=couleur_fond, text="Format MARC", 
             anchor="w", justify="left").pack(anchor="w")
    marc_format = tk.IntVar()

    bib2ark.radioButton_lienExample(cadre_input_infos_format,marc_format,1,couleur_fond,
                            "Unimarc",
                            "",
                            "")

    tk.Radiobutton(cadre_input_infos_format,bg=couleur_fond, text="Marc21", variable=marc_format, value=2,
                   anchor="w", justify="left").pack(anchor="w")
    marc_format.set(1)"""

    tk.Label(cadre_input_type_docs_interstice1,
             bg=couleur_fond,
             text="\t\t",
             justify="left").pack()

    tk.Label(cadre_input_type_docs,
             bg=couleur_fond,
             text="Format de fichier",
             anchor="w",
             justify="left",
             font="Arial 9 bold").pack(anchor="w")
    file_format = tk.IntVar()

    bib2ark.radioButton_lienExample(
        cadre_input_type_docs, file_format, 1, couleur_fond,
        "iso2709 encodé UTF-8", "",
        "https://github.com/Transition-bibliographique/bibliostratus/blob/master/examples/noticesbib.iso"
    )
    tk.Radiobutton(cadre_input_type_docs,
                   bg=couleur_fond,
                   text="iso2709 encodé ISO-8859-1",
                   variable=file_format,
                   value=3,
                   anchor="w",
                   justify="left").pack(anchor="w")

    tk.Radiobutton(cadre_input_type_docs,
                   bg=couleur_fond,
                   text="Marc XML encodé UTF-8",
                   variable=file_format,
                   value=2,
                   anchor="w",
                   justify="left").pack(anchor="w")
    file_format.set(1)

    tk.Label(cadre_input_type_docs,
             bg=couleur_fond,
             text="\n",
             font="Arial 4",
             justify="left").pack()

    lien_help_encodage = tk.Button(
        cadre_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"
        ),
    )
    lien_help_encodage.pack()
    tk.Label(cadre_input_type_docs, bg=couleur_fond, text="\n\n\n").pack()

    #    info_utf8 = tk.Label(cadre_input_type_docs,
    #                         bg=couleur_fond,justify="left", font="Arial 7 italic",
    #                         text="""Le fichier iso2709 doit être
    #en UTF-8 sans BOM.
    #En cas de problème,
    #convertissez-le en XML
    #avant de le passer dans ce module""")
    #    info_utf8.pack()

    tk.Label(cadre_input_type_docs_interstice2,
             bg=couleur_fond,
             text="\t",
             justify="left").pack()

    tk.Label(cadre_input_type_rec,
             bg=couleur_fond,
             text="\nType de notices",
             anchor="w",
             justify="left",
             font="Arial 9 bold").pack(anchor="w")
    rec_format = tk.IntVar()

    bib2ark.radioButton_lienExample(cadre_input_type_rec, rec_format, 1,
                                    couleur_fond, "bibliographiques", "", "")

    tk.Radiobutton(cadre_input_type_rec,
                   bg=couleur_fond,
                   text="autorités (personnes)",
                   variable=rec_format,
                   value=2,
                   anchor="w",
                   justify="left").pack(anchor="w")
    tk.Label(cadre_input_type_rec,
             text="\n",
             bg=couleur_fond,
             font="Arial 1 normal").pack()
    tk.Radiobutton(cadre_input_type_rec,
                   bg=couleur_fond,
                   text="biblio - pour alignement Autorités",
                   variable=rec_format,
                   value=3,
                   anchor="w",
                   justify="left").pack(anchor="w")
    rec_format.set(1)

    tk.Label(cadre_input_type_rec, text="\n\n\n\n\n\n", bg=couleur_fond).pack()

    # =============================================================================
    #     Formulaire - Fichiers en sortie
    # =============================================================================
    #

    #Choix du format
    tk.Label(cadre_output_header,
             bg=couleur_fond,
             fg=couleur_bouton,
             font="bold",
             text="En sortie",
             justify="left").pack()
    tk.Label(cadre_output_nom_fichiers,
             bg=couleur_fond,
             text="Préfixe des fichiers en sortie : ",
             justify="left").pack(side="left")
    output_ID = tk.Entry(cadre_output_nom_fichiers, width=40, bd=2)
    output_ID.pack(side="left")

    #Sélection du répertoire en sortie
    #tk.Label(cadre_output_repertoire,text="\n",bg=couleur_fond).pack()
    #main.select_directory(cadre_output_repertoire, "Dossier où déposer les fichiers",output_directory_list,couleur_fond)

    #Ajout (optionnel) d'un identifiant de traitement
    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(cadre_output_explications,
             bg=couleur_fond,
             text=message_fichiers_en_sortie,
             justify="left").pack()
    #explications.pack()

    #Bouton de validation

    b = tk.Button(
        cadre_valider,
        bg=couleur_bouton,
        fg="white",
        font="bold",
        text="OK",
        command=lambda: launch(form, entry_file_list[0], file_format.get(),
                               rec_format.get(), output_ID.get(), master),
        borderwidth=5,
        padx=10,
        pady=10,
        width=10,
        height=4)
    b.pack()

    tk.Label(cadre_valider, font="bold", text="", bg=couleur_fond).pack()

    call4help = tk.Button(cadre_valider,
                          text=main.texte_bouton_help,
                          command=lambda: main.click2url(main.url_online_help),
                          pady=5,
                          padx=5,
                          width=12)
    call4help.pack()
    tk.Label(cadre_valider, text="\n", bg=couleur_fond,
             font="Arial 1 normal").pack()

    forum_button = tk.Button(
        cadre_valider,
        text=main.texte_bouton_forum,
        command=lambda: main.click2url(main.url_forum_aide),
        pady=5,
        padx=5,
        width=12)
    forum_button.pack()

    tk.Label(cadre_valider, text="\n", bg=couleur_fond,
             font="Arial 4 normal").pack()
    cancel = tk.Button(cadre_valider,
                       text="Annuler",
                       bg=couleur_fond,
                       command=lambda: main.annuler(form),
                       pady=10,
                       padx=5,
                       width=12)
    cancel.pack()

    tk.Label(zone_notes,
             text="Bibliostratus - Version " + str(main.version) + " - " +
             main.lastupdate,
             bg=couleur_fond).pack()
    """if (main.last_version[1] == True):
        download_update = tk.Button(zone_notes, text = "Télécharger la version " + str(main.last_version[0]), command=download_last_update)
        download_update.pack()"""

    tk.mainloop()
Ejemplo n.º 7
0
def formulaire_ark2records(master,
                           access_to_network=True,
                           last_version=[version, 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 de la BnF à partir d'une liste d'ARK",
        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_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_options = tk.Frame(frame_output,
                                    bg=couleur_fond,
                                    padx=10,
                                    pady=10)
    frame_output_options.pack(anchor="w")
    frame_output_file = tk.Frame(frame_output,
                                 bg=couleur_fond,
                                 padx=10,
                                 pady=10)
    frame_output_file.pack(anchor="w")
    frame_output_options_marc = tk.Frame(frame_output_options, bg=couleur_fond)
    frame_output_options_marc.pack(side="left", anchor="nw")
    frame_output_options_inter = tk.Frame(frame_output_options,
                                          bg=couleur_fond)
    frame_output_options_inter.pack(side="left")
    frame_output_options_format = tk.Frame(frame_output_options,
                                           bg=couleur_fond)
    frame_output_options_format.pack(side="left", anchor="nw")

    zone_notes_message_en_cours = tk.Frame(zone_notes,
                                           padx=20,
                                           bg=couleur_fond)
    zone_notes_message_en_cours.pack()

    #tk.Label(frame_input_file, text="Fichier contenant les ARK\n (1 par ligne) \n\n",
    #         bg=couleur_fond, justify="left").pack(side="left", anchor="w")
    """entry_filename = tk.Entry(frame_input_file, width=20, bd=2, bg=couleur_fond)
    entry_filename.pack(side="left")
    entry_filename.focus_set()"""
    main.download_zone(
        frame_input_file,
        "Sélectionner un fichier contenant\nune liste d'ARK (un ARK par ligne)",
        entry_file_list, couleur_fond, zone_notes_message_en_cours)

    tk.Label(frame_input_aut, text="\n", bg=couleur_fond).pack()

    #ARK de BIB ou d'AUT ?
    type_records = tk.IntVar()
    bib2ark.radioButton_lienExample(
        frame_input_aut, type_records, 1, couleur_fond, "ARK de notices BIB",
        "",
        "https://raw.githubusercontent.com/Transition-bibliographique/alignements-donnees-bnf/master/examples/listeARKbib.tsv"
    )
    bib2ark.radioButton_lienExample(
        frame_input_aut, type_records, 2, couleur_fond, "ARK de notices AUT",
        "",
        "https://raw.githubusercontent.com/Transition-bibliographique/alignements-donnees-bnf/master/examples/listeARKaut.tsv"
    )
    type_records.set(1)

    tk.Label(frame_input_aut, text="-------------------",
             bg=couleur_fond).pack()

    #Fichier avec en-têtes ?
    headers = tk.IntVar()
    headerButton = tk.Checkbutton(frame_input_aut,
                                  text="Mon fichier a des en-têtes de colonne",
                                  variable=headers,
                                  bg=couleur_fond,
                                  justify="left").pack(anchor="w")

    headers.set(1)

    #notices d'autorité liées
    tk.Label(frame_input_aut,
             text="Récupérer aussi les notices d'autorité liées",
             bg=couleur_fond,
             justify="left",
             font="Arial 9 bold").pack(anchor="w")
    AUTlieesAUT = tk.IntVar()
    tk.Checkbutton(frame_input_aut,
                   text="auteurs",
                   variable=AUTlieesAUT,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w", side="left")
    #tk.Label(frame_input_aut, text="\n", bg=couleur_fond).pack()
    AUTlieesSUB = tk.IntVar()
    tk.Checkbutton(frame_input_aut,
                   text="sujets",
                   variable=AUTlieesSUB,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w", side="left")
    AUTlieesWORK = tk.IntVar()
    tk.Checkbutton(frame_input_aut,
                   text="oeuvres",
                   variable=AUTlieesWORK,
                   bg=couleur_fond,
                   justify="left").pack(anchor="w", side="left")

    #Choix du format
    tk.Label(frame_output_options_marc,
             text="Notices à récupérer en :").pack(anchor="nw")
    format_records_choice = tk.IntVar()
    tk.Radiobutton(frame_output_options_marc,
                   text="Unimarc",
                   variable=format_records_choice,
                   value=1,
                   bg=couleur_fond).pack(anchor="nw")
    tk.Radiobutton(frame_output_options_marc,
                   text="Intermarc",
                   justify="left",
                   variable=format_records_choice,
                   value=3,
                   bg=couleur_fond).pack(anchor="nw")
    tk.Radiobutton(frame_output_options_marc,
                   text="Unimarc avec notices analytiques",
                   justify="left",
                   variable=format_records_choice,
                   value=2,
                   bg=couleur_fond).pack(anchor="nw")
    tk.Radiobutton(frame_output_options_marc,
                   text="Intermarc avec notices analytiques",
                   justify="left",
                   variable=format_records_choice,
                   value=4,
                   bg=couleur_fond).pack(anchor="nw")
    format_records_choice.set(1)

    tk.Label(frame_output_options_inter, text="\n",
             bg=couleur_fond).pack(side="left")

    #tk.Label(frame_output_options,text="\n\n", justify="left", variable=format_records_choice , value=4, bg=couleur_fond).pack()

    tk.Label(frame_output_file,
             text="Préfixe fichier(s) en sortie",
             bg=couleur_fond).pack(side="left", anchor="w")
    outputID = tk.Entry(frame_output_file, bg=couleur_fond)
    outputID.pack(side="left", anchor="w")
    tk.Label(frame_output_file, text="\n\n\n\n\n\n\n",
             bg=couleur_fond).pack(side="left")

    tk.Label(frame_output_options_format,
             text="Format du fichier :").pack(anchor="nw")
    format_file = tk.IntVar()
    tk.Radiobutton(frame_output_options_format,
                   bg=couleur_fond,
                   text="iso2709",
                   variable=format_file,
                   value=1,
                   justify="left").pack(anchor="nw")
    tk.Radiobutton(frame_output_options_format,
                   bg=couleur_fond,
                   text="Marc XML",
                   variable=format_file,
                   value=2,
                   justify="left").pack(anchor="nw")
    format_file.set(1)

    #file_format.focus_set()
    b = tk.Button(zone_ok_help_cancel,
                  text="OK",
                  command=lambda: callback(master, form, entry_file_list[
                      0], type_records.get(), headers.get(), AUTlieesAUT.get(
                      ), AUTlieesSUB.get(), AUTlieesWORK.get(), outputID.get(
                      ), format_records_choice.get(), format_file.get()),
                  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()
    tk.Label(zone_ok_help_cancel,
             text="\n",
             bg=couleur_fond,
             font="Arial 1 normal").pack()

    forum_button = tk.Button(
        zone_ok_help_cancel,
        text=main.texte_bouton_forum,
        command=lambda: main.click2url(main.url_forum_aide),
        pady=5,
        padx=5,
        width=12)
    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()

    tk.Label(zone_notes,
             text="Bibliostratus - Version " + str(main.version) + " - " +
             main.lastupdate,
             bg=couleur_fond).pack()
    """if (main.last_version[1] == True):
        download_update = tk.Button(zone_notes, text = "Télécharger la version " + str(main.last_version[0]), command=download_last_update)
        download_update.pack()"""

    tk.mainloop()