2024-09-19 04:05:19 -03:00
|
|
|
import tkinter as tk
|
|
|
|
from tkinter import ttk
|
|
|
|
from tkinter import messagebox
|
|
|
|
import funciones_comunes as fc
|
|
|
|
import x1_importar_to_master
|
|
|
|
import x2_master_export2translate
|
|
|
|
import x3_llm_auto_translate
|
|
|
|
import x4_integrate_translates_to_master
|
|
|
|
import x5_complete_empty_cells_master
|
|
|
|
import x6_update_from_master
|
|
|
|
|
|
|
|
# Crear la ventana principal
|
|
|
|
ventana = tk.Tk()
|
|
|
|
ventana.title("Ayuda para traducir textos de TIA Portal y Allen Bradley")
|
|
|
|
ventana.geometry("600x550") # Aumentamos el tamaño para acomodar los nuevos widgets
|
|
|
|
|
2024-09-19 15:55:58 -03:00
|
|
|
# Diccionario para tipo_PLC
|
|
|
|
tipo_PLC_dict = {'Siemens': 'siemens', 'AllenBradley': 'allenbradley'}
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Variables para almacenar las selecciones del usuario
|
|
|
|
tipo_PLC_var = tk.StringVar()
|
2024-09-19 15:55:58 -03:00
|
|
|
codigo_columna_maestra_var = tk.StringVar()
|
2024-09-19 04:05:19 -03:00
|
|
|
idioma_var = tk.StringVar()
|
|
|
|
idioma_var2 = tk.StringVar()
|
|
|
|
|
|
|
|
# Crear listas de idiomas con sus códigos
|
2024-09-19 15:55:58 -03:00
|
|
|
idiomas_lista = [(nombre, codigo) for _, (nombre, codigo) in fc.IDIOMAS.items()]
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Crear un combobox para seleccionar el tipo de PLC
|
|
|
|
label_tipo_PLC = tk.Label(ventana, text="Selecciona el tipo de PLC:")
|
|
|
|
combo_tipo_PLC = ttk.Combobox(ventana, textvariable=tipo_PLC_var, state="readonly")
|
2024-09-19 15:55:58 -03:00
|
|
|
combo_tipo_PLC["values"] = list(tipo_PLC_dict.keys())
|
|
|
|
combo_tipo_PLC.current(0) # Selecciona 'Siemens' por defecto
|
2024-09-19 04:05:19 -03:00
|
|
|
|
2024-09-19 15:55:58 -03:00
|
|
|
# Crear combobox para seleccionar el código de columna maestra
|
|
|
|
label_codigo_maestra = tk.Label(ventana, text="Idioma Columna Maestra:")
|
|
|
|
combo_codigo_maestra = ttk.Combobox(ventana, textvariable=codigo_columna_maestra_var, state="readonly")
|
|
|
|
combo_codigo_maestra["values"] = [nombre for nombre, _ in idiomas_lista]
|
|
|
|
combo_codigo_maestra.current(0) # Selecciona el primer idioma por defecto
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Crear comboboxes para seleccionar los idiomas
|
2024-09-19 15:55:58 -03:00
|
|
|
label1 = tk.Label(ventana, text="Idioma de Traducción:")
|
2024-09-19 04:05:19 -03:00
|
|
|
combo = ttk.Combobox(ventana, textvariable=idioma_var, state="readonly")
|
|
|
|
combo["values"] = [nombre for nombre, _ in idiomas_lista]
|
2024-09-19 15:55:58 -03:00
|
|
|
combo.current(4) # Selecciona el quinto idioma por defecto
|
2024-09-19 04:05:19 -03:00
|
|
|
|
2024-09-19 15:55:58 -03:00
|
|
|
label2 = tk.Label(ventana, text="Selecciona segundo idioma:")
|
2024-09-19 04:05:19 -03:00
|
|
|
combo2 = ttk.Combobox(ventana, textvariable=idioma_var2, state="readonly")
|
|
|
|
combo2["values"] = [nombre for nombre, _ in idiomas_lista]
|
2024-09-19 15:55:58 -03:00
|
|
|
combo2.current(1) # Selecciona el segundo idioma por defecto
|
|
|
|
|
|
|
|
# Función para actualizar combo_codigo_maestra según la selección en combo_tipo_PLC
|
|
|
|
def actualizar_codigo_maestra(event):
|
|
|
|
plc_seleccionado = tipo_PLC_var.get()
|
|
|
|
if plc_seleccionado == 'Siemens':
|
|
|
|
# Buscar el índice de 'Italiano' en idiomas_lista
|
|
|
|
indice_italiano = next((i for i, (nombre, _) in enumerate(idiomas_lista) if nombre == 'Italian'), None)
|
|
|
|
if indice_italiano is not None:
|
|
|
|
combo_codigo_maestra.current(indice_italiano)
|
|
|
|
elif plc_seleccionado == 'AllenBradley':
|
|
|
|
# Buscar el índice de 'English_US' en idiomas_lista
|
|
|
|
indice_ingles = next((i for i, (nombre, _) in enumerate(idiomas_lista) if nombre == 'English_US'), None)
|
|
|
|
if indice_ingles is not None:
|
|
|
|
combo_codigo_maestra.current(indice_ingles)
|
|
|
|
|
|
|
|
# Vincular la función al evento de cambio de selección en combo_tipo_PLC
|
|
|
|
combo_tipo_PLC.bind('<<ComboboxSelected>>', actualizar_codigo_maestra)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Ubicar los widgets en la ventana
|
|
|
|
label_tipo_PLC.pack(pady=5)
|
|
|
|
combo_tipo_PLC.pack(pady=5)
|
2024-09-19 15:55:58 -03:00
|
|
|
label_codigo_maestra.pack(pady=5)
|
|
|
|
combo_codigo_maestra.pack(pady=5)
|
|
|
|
label1.pack(pady=5)
|
2024-09-19 04:05:19 -03:00
|
|
|
combo.pack(pady=5)
|
2024-09-19 15:55:58 -03:00
|
|
|
label2.pack(pady=5)
|
2024-09-19 04:05:19 -03:00
|
|
|
combo2.pack(pady=5)
|
|
|
|
|
|
|
|
# Función para obtener el código del idioma seleccionado a partir del índice
|
|
|
|
def obtener_codigo_idioma(indice):
|
|
|
|
return idiomas_lista[indice][1]
|
|
|
|
|
|
|
|
# Funciones que se llamarán cuando se presionen los botones
|
|
|
|
def accion_boton1():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
2024-09-19 04:05:19 -03:00
|
|
|
print("Ejecutando x1_importar_to_master.py")
|
|
|
|
x1_importar_to_master.run(tipo_PLC, codigo_columna_maestra)
|
|
|
|
|
|
|
|
def accion_boton2():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
|
|
|
indice_seleccionado = combo.current()
|
|
|
|
x2_master_export2translate.run(tipo_PLC, codigo_columna_maestra, indice_seleccionado)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
def accion_boton3():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
|
|
|
indice_seleccionado = combo.current()
|
2024-09-19 04:05:19 -03:00
|
|
|
traducir_todo = messagebox.askyesno("Traducir todo", "¿Desea traducir todas las celdas?")
|
2024-09-19 15:55:58 -03:00
|
|
|
x3_llm_auto_translate.run(tipo_PLC, codigo_columna_maestra, indice_seleccionado, traducir_todo)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
def accion_boton4():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
|
|
|
indice_seleccionado = combo.current()
|
|
|
|
x4_integrate_translates_to_master.run(tipo_PLC, codigo_columna_maestra, indice_seleccionado, 0.5)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
def accion_boton5():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
|
|
|
indice_seleccionado = combo.current()
|
|
|
|
indice_seleccionado2 = combo2.current()
|
|
|
|
x5_complete_empty_cells_master.run(tipo_PLC, codigo_columna_maestra, indice_seleccionado, indice_seleccionado2)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
def accion_boton6():
|
2024-09-19 15:55:58 -03:00
|
|
|
tipo_PLC = tipo_PLC_dict[tipo_PLC_var.get()]
|
|
|
|
indice_codigo_maestra = combo_codigo_maestra.current()
|
|
|
|
codigo_columna_maestra = obtener_codigo_idioma(indice_codigo_maestra)
|
|
|
|
indice_seleccionado = combo.current()
|
|
|
|
x6_update_from_master.run(tipo_PLC, codigo_columna_maestra, indice_seleccionado)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Crear los botones con el mismo ancho
|
|
|
|
button_width = 70
|
|
|
|
paso1 = tk.Button(ventana, text="1 - Importar al Master", command=accion_boton1, width=button_width)
|
|
|
|
paso2 = tk.Button(
|
|
|
|
ventana,
|
2024-09-19 15:55:58 -03:00
|
|
|
text="2 - Exportar Idioma a 2_master_export2translate.xlsx.",
|
2024-09-19 04:05:19 -03:00
|
|
|
command=accion_boton2,
|
|
|
|
width=button_width
|
|
|
|
)
|
|
|
|
paso3 = tk.Button(
|
|
|
|
ventana,
|
2024-09-19 15:55:58 -03:00
|
|
|
text="3 - Traducir y generar 3_master_export2translate_translated.xlsx.",
|
2024-09-19 04:05:19 -03:00
|
|
|
command=accion_boton3,
|
|
|
|
width=button_width
|
|
|
|
)
|
|
|
|
paso4 = tk.Button(
|
|
|
|
ventana,
|
2024-09-19 15:55:58 -03:00
|
|
|
text="4 - Integrar las traducciones al 1_hmi_master_translates.",
|
2024-09-19 04:05:19 -03:00
|
|
|
command=accion_boton4,
|
|
|
|
width=button_width
|
|
|
|
)
|
|
|
|
paso5 = tk.Button(
|
|
|
|
ventana,
|
2024-09-19 15:55:58 -03:00
|
|
|
text="5 - Completar en 1_hmi_master_translates el idioma seleccionado usando el segundo idioma.",
|
2024-09-19 04:05:19 -03:00
|
|
|
command=accion_boton5,
|
|
|
|
width=button_width
|
|
|
|
)
|
|
|
|
paso6 = tk.Button(
|
|
|
|
ventana,
|
2024-09-19 15:55:58 -03:00
|
|
|
text="6 - Exportar usando un archivo exportado desde TIA Portal usando 1_hmi_master_translates.",
|
2024-09-19 04:05:19 -03:00
|
|
|
command=accion_boton6,
|
|
|
|
width=button_width
|
|
|
|
)
|
|
|
|
|
|
|
|
# Ubicar los botones en la ventana
|
2024-09-19 15:55:58 -03:00
|
|
|
paso1.pack(pady=(10,2))
|
|
|
|
paso2.pack(pady=2)
|
|
|
|
paso3.pack(pady=2)
|
|
|
|
paso4.pack(pady=2)
|
|
|
|
paso5.pack(pady=2)
|
|
|
|
paso6.pack(pady=2)
|
2024-09-19 04:05:19 -03:00
|
|
|
|
|
|
|
# Iniciar el bucle principal de la interfaz
|
|
|
|
ventana.mainloop()
|