// -------------------------------------------------------------------------------------
// xsEasyCpp
// Demo de Objeto DialogoAcercaDe
// g++ -g DialogoAcercaDe.cpp -lxseasycpp -LC:/msys64/mingw64/lib -lgtk-3 -lgdk-3 -lz -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lwinmm -ldwmapi -lsetupapi -lcfgmgr32 -lpangowin32-1.0 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lintl -lglib-2.0 -o DialogoAcercaDe.exe
// g++ -g DialogoAcercaDe.cpp %PKG-XSEASYCPP% -o DialogoAcercaDe.exe
// -------------------------------------------------------------------------------------

// Incluye las librería de xsWindows
#include "include/xsEasyCpp.hpp"


// Detiene el Ciclo Principal iniciado por gtk_main cuando la ventana es destruida
Estatica Vacio fnSalida(xsObjetoGUI *ventana, xsApuntador datos);

// Función para controlar el Cierre de una Ventana
Estatica Entero fnCierre(xsObjetoGUI *ventana, xsEvento *evento);

// Función para Mostrar la Ventana de Diálogo
Vacio fnMostrarAcercaDe(xsObjetoGUI *objeto,xsApuntador boton);

// Función principal de xsEasyWindow
xsPrincipal
{
  // Iniciamos xsEasyWindows
  xsAppInicia;

  // Definimos un objeto de la Clase xsVentana
  xsVentana oVentana(XS_CON_CONTENEDOR);
  
  // Estableciendo un tamaño para la Ventana                                  
  oVentana.colocarDimensiones(400,400);

  // Coloca el Título
  oVentana.colocarTitulo("xsEasyCpp Demo Dialogo Acerca de");

  // Establece el Icono
  oVentana.colocarIcono("img/js.ico");
    
  // Establece la función de Salida
  oVentana.colocarFuncionSalida(XS_FUNCION_RETORNO (fnSalida));

  // Establece la función de Cierre
  oVentana.colocarFuncionCierre(XS_FUNCION_RETORNO (fnCierre));

  // Conecta una señal a la ventana
  oVentana.conectarSenal(XS_EVENTO_BOTON_PRESIONADO,XS_FUNCION_RETORNO (fnMostrarAcercaDe),(gpointer)oVentana.obtenerManejador());
  
  // Centrar la Ventana
  oVentana.centrar();

  // Texto Emergente
  oVentana.colocarTextoEmergente("Da Click en la Ventana");

  // Muestra todos los objetos
  oVentana.mostrarTodo();

  // Ciclo
  xsAppCiclo;

  // Finaliza retornando 0
  retorna 0;
}


// Detiene el Ciclo Principal iniciado por gtk_main cuando la ventana es destruida
// Puede no ser estática
Estatica Vacio fnSalida(xsObjetoGUI *ventana, xsApuntador datos)
{
	// Mensaje de Salida
	xsImprimir("Saliendo del Sistema (Estatica Vacio)...");

  // Llama a la función de la Librería que sale del Ciclo Main  
  xsAppSalida;
}

// Función para controlar el Cierre de una Ventana
Estatica Entero fnCierre(xsObjetoGUI *ventana, xsEvento *evento)
{
  retorna Falso; // Para que se cierre, lo contrario para que no se cierre
}

// Función para controlar la accción del MenuChekItem y Ocultar/Visualizar la Barra de Herramientas
Vacio fnMostrarAcercaDe(xsObjetoGUI *objeto, xsApuntador boton)
{
  // Crea la Ventana de Dialogo Acerca de
  xsDialogoAcercaDe dlg;
  dlg.crear();
  
  // Carga el Logo
  dlg.colocarLogo("img/js.jpg");

  // Cologa el nombre del Programa
  dlg.colocarNombrePrograma("Demo Dialogo Acerca de");

  // Cologa la Version
  dlg.colocarVersion("Versión Q1.2020");
  
  // Coloca los Derechos Reservados
  dlg.colocarDerechosReservados("(c) xsEasyGUI 2020");

  // Coloca los Comentarios
  dlg.colocarComentarios("Ejemplo de uso de Diálogo Acerca de.");
  
  // Coloca el Sitio Web
  dlg.colocarSitioWeb("http://www.xsEasyCGUI.net");
  
  // Coloca Llicencia
  dlg.colocarLicencia("Licencia GNU-FREE");

  // Coloca el Tipo de Licencia
  dlg.colocarLicenciaTipo(GTK_LICENSE_GPL_3_0);

  // Centra el Diálogo
  dlg.centrar(objeto);

  // Ejecuta el Dialogo
  dlg.ejecutar();
  
  // Destruye el Objeto
  xsObjeto_destruir(dlg.obtenerManejador());  
}