import threading from Modelo import ModeloCliente from server import start_server class ControladorChat: def __init__(self, vista): self.vista = vista self.modelos = {} def iniciar_servidor(self): """Inicia el servidor en un hilo separado.""" threading.Thread(target=start_server, daemon=True).start() #vista.mostrar_mensaje("[SERVIDOR] Servidor iniciado en segundo plano...\n") def enviar_mensaje(self, host): """Envía un mensaje al servidor y lo muestra en el chat.""" if host in self.modelos: mensaje = self.vista.chats_frames[host]["entry"].get() if mensaje: self.vista.mostrar_mensaje(host, f"[TÚ] {mensaje}") self.modelos[host].enviar_mensaje(mensaje) self.vista.chats_frames[host]["entry"].delete(0, 'end') def actualizar_host_port(self): """Obtiene valores de host y port desde la interfaz y los actualiza en el modelo.""" host = self.vista.host_entry.get() port = int(self.vista.port_entry.get()) self.modelo.set_host_port(host, port) self.vista.mostrar_mensaje(f"[CONFIG] Host y puerto actualizados: {host}:{port}") def conectar_cliente(self): """Conecta un nuevo cliente y agrega su botón en el menú.""" host = self.vista.host_entry.get() port = int(self.vista.port_entry.get()) if host not in self.modelos: modelo = ModeloCliente() modelo.set_host_port(host, port) mensaje = modelo.conectar( on_message_received=lambda msg: self.vista.mostrar_mensaje(host, msg), on_error=lambda err: self.vista.mostrar_mensaje(host, err) ) if modelo.connected: self.modelos[host] = modelo self.vista.agregar_boton_chat(host) self.vista.habilitar_envio(host) self.vista.mostrar_mensaje(host, mensaje)