HMI_Translate_Helper_wMaste.../menu_pasos_traduccion.py

156 lines
5.6 KiB
Python

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
# Opciones para tipo_PLC
opciones_tipo_PLC = ['siemens', 'allenbradley']
# Variables para almacenar las selecciones del usuario
tipo_PLC_var = tk.StringVar()
idioma_maestra_var = tk.StringVar()
idioma_var = tk.StringVar()
idioma_var2 = tk.StringVar()
# Crear listas de idiomas con sus códigos
idiomas_lista = sorted([(nombre, codigo) for _, (nombre, codigo) in fc.IDIOMAS.items()])
# 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")
combo_tipo_PLC["values"] = opciones_tipo_PLC
combo_tipo_PLC.current(0) # Selecciona 'siemens' por defecto
# Crear combobox para seleccionar el Idioma Columna Maestra
label_maestra = tk.Label(ventana, text="Idioma Columna Maestra:")
combo_maestra = ttk.Combobox(ventana, textvariable=idioma_maestra_var, state="readonly")
combo_maestra["values"] = [nombre for nombre, _ in idiomas_lista]
combo_maestra.current(0) # Selecciona el primer idioma por defecto
# Crear comboboxes para seleccionar los idiomas
label_idioma1 = tk.Label(ventana, text="Selecciona el idioma principal:")
combo = ttk.Combobox(ventana, textvariable=idioma_var, state="readonly")
combo["values"] = [nombre for nombre, _ in idiomas_lista]
combo.current(1) # Selecciona el segundo idioma por defecto
label_idioma2 = tk.Label(ventana, text="Selecciona el segundo idioma:")
combo2 = ttk.Combobox(ventana, textvariable=idioma_var2, state="readonly")
combo2["values"] = [nombre for nombre, _ in idiomas_lista]
combo2.current(2) # Selecciona el tercer idioma por defecto
# Ubicar los widgets en la ventana
label_tipo_PLC.pack(pady=5)
combo_tipo_PLC.pack(pady=5)
label_maestra.pack(pady=5)
combo_maestra.pack(pady=5)
label_idioma1.pack(pady=5)
combo.pack(pady=5)
label_idioma2.pack(pady=5)
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():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
print("Ejecutando x1_importar_to_master.py")
x1_importar_to_master.run(tipo_PLC, codigo_columna_maestra)
def accion_boton2():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
print("Ejecutando x2_master_export2translate.py")
x2_master_export2translate.run(tipo_PLC, codigo_columna_maestra)
def accion_boton3():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
traducir_todo = messagebox.askyesno("Traducir todo", "¿Desea traducir todas las celdas?")
print("Ejecutando x3_llm_auto_translate.py")
x3_llm_auto_translate.run(tipo_PLC, codigo_columna_maestra, traducir_todo)
def accion_boton4():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
print("Ejecutando x4_integrate_translates_to_master.py")
x4_integrate_translates_to_master.run(tipo_PLC, codigo_columna_maestra)
def accion_boton5():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
indice_idioma1 = combo.current()
codigo_columna_secundaria = obtener_codigo_idioma(indice_idioma1)
print("Ejecutando x5_complete_empty_cells_master.py")
x5_complete_empty_cells_master.run(tipo_PLC, codigo_columna_maestra, codigo_columna_secundaria)
def accion_boton6():
tipo_PLC = tipo_PLC_var.get()
indice_maestra = combo_maestra.current()
codigo_columna_maestra = obtener_codigo_idioma(indice_maestra)
print("Ejecutando x6_update_from_master.py")
x6_update_from_master.run(tipo_PLC, codigo_columna_maestra)
# 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,
text="2 - Exportar idioma a '2_master_export2translate.xlsx'",
command=accion_boton2,
width=button_width
)
paso3 = tk.Button(
ventana,
text="3 - Traducir y generar '3_master_export2translate_translated.xlsx'",
command=accion_boton3,
width=button_width
)
paso4 = tk.Button(
ventana,
text="4 - Integrar las traducciones al '1_hmi_master_translates'",
command=accion_boton4,
width=button_width
)
paso5 = tk.Button(
ventana,
text="5 - Completar celdas vacías usando el segundo idioma",
command=accion_boton5,
width=button_width
)
paso6 = tk.Button(
ventana,
text="6 - Exportar desde '1_hmi_master_translates' al PLC",
command=accion_boton6,
width=button_width
)
# Ubicar los botones en la ventana
paso1.pack(pady=5)
paso2.pack(pady=5)
paso3.pack(pady=5)
paso4.pack(pady=5)
paso5.pack(pady=5)
paso6.pack(pady=5)
# Iniciar el bucle principal de la interfaz
ventana.mainloop()