34 lines
1.3 KiB
Python
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
|