ChatPersonas/Controlador.py

34 lines
1.3 KiB
Python

import threading
from Modelo import ModeloCliente
from server import start_server
class ControladorChat:
def __init__(self, vista):
self.vista = vista
self.modelo = ModeloCliente()
def iniciar_servidor(self):
"""Inicia el servidor en un hilo separado."""
threading.Thread(target=start_server, daemon=True).start()
self.vista.mostrar_mensaje("[SERVIDOR] Servidor iniciado en segundo plano...\n")
def conectar_cliente(self):
"""Intenta conectar el cliente al servidor."""
mensaje = self.modelo.conectar(
on_message_received=self.vista.mostrar_mensaje,
on_error=self.vista.mostrar_mensaje
)
self.vista.mostrar_mensaje(mensaje)
if self.modelo.connected:
self.vista.habilitar_envio()
def enviar_mensaje(self):
"""Obtiene el mensaje de la vista y lo envía al servidor, además lo imprime en la interfaz."""
mensaje = self.vista.message_entry.get()
if mensaje:
self.vista.mostrar_mensaje(f"[TÚ] {mensaje}") # Agregar el mensaje a la vista
error = self.modelo.enviar_mensaje(mensaje)
if error:
self.vista.mostrar_mensaje(error)
self.vista.message_entry.delete(0, 'end') # Limpiar el campo de entrada