// -------------------------------------------------------------------------------------
// xsEasyCpp
// Demo de Objeto EtiquetaImagen
// g++ -g EtiquetaImagen.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 EtiquetaImagen.exe
// g++ -g EtiquetaImagen.cpp %PKG-XSEASYCPP% -o EtiquetaImagen.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 controlar la accción del MenuChekItem y Ocultar/Visualizar la Barra de Herramientas
Vacio fnEtiquetaOnOff(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(320,270);

  // Establecer el Borde
  oVentana.colocarBordeVentana(10);

  // Centrar la Ventana
  oVentana.centrar();

  // Coloca el Título
  oVentana.colocarTitulo("xsEasyCpp Demo EtiquetaImagen");

  // 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));
  

  // Creamos la Etiqueta
  xsEtiquetaImagen oEtiqueta1("Etiqueta Logo Izquierda","img/js16x16.jpg",XS_ORIENTACION_HORIZONTAL,Verdad);
  oEtiqueta1.colocarMargenInferior(10);
  xsEtiquetaImagen oEtiqueta2("Etiqueta Logo Arriba","img/js16x16.jpg",XS_ORIENTACION_VERTICAL,Verdad);
  oEtiqueta2.colocarMargenInferior(10);
  xsEtiquetaImagen oEtiqueta3("Etiqueta Logo Derecha","img/js16x16.jpg",XS_ORIENTACION_HORIZONTAL,Falso);
  oEtiqueta3.colocarMargenInferior(10);
  xsEtiquetaImagen oEtiqueta4("Etiqueta Logo Abajo","img/js16x16.jpg",XS_ORIENTACION_VERTICAL,Falso);
  oEtiqueta4.colocarMargenInferior(10);
  xsEtiquetaImagen oEtiqueta5("Etiqueta Posición Específica del Logo","img/js16x16.jpg",16,16,0,10,30,10);

  // Indica que tiene ventana para poder controlar click
  oEtiqueta1.asignarEtiquetaTieneVentana(Verdad);
  
  // Coloca el evento de presionar el boton
  oEtiqueta1.asignarEventoEtiqueta(XS_BOTON_PRESIONADO_MASCARA);

  // Coloca un tooltip
  oEtiqueta1.colocarTextoEmergente("Click para Cerrar Ventana");

  // Agregar la Etiqueta al Contenedor
  oVentana.agregarAlContenedor(oEtiqueta1.obtenerManejador());
  oVentana.agregarAlContenedor(oEtiqueta2.obtenerManejador());
  oVentana.agregarAlContenedor(oEtiqueta3.obtenerManejador());
  oVentana.agregarAlContenedor(oEtiqueta4.obtenerManejador());
  oVentana.agregarAlContenedor(oEtiqueta5.obtenerManejador());

  // Asocia la función para cerrar la Ventana
  oEtiqueta1.conectarSenalEtiqueta(XS_EVENTO_BOTON_PRESIONADO,XS_FUNCION_RETORNO (fnSalida),NULO);

  // 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
Estatica Vacio fnSalida(xsObjetoGUI* ventana, xsApuntador datos)
{
  // 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 fnEtiquetaOnOff(xsObjetoGUI* objeto, xsApuntador boton)
{
  // Verifica si está activo
  si (xsObjeto_MenuOpcionCheck_activo_obtener(XS_CHECK_MENU_OPCION(objeto)))
       // Mostramos la Barra de Estado
       xsObjeto_mostrar(XS_OBJETOGUI(boton));       
  
  // Está desactiva
  deOtroModo
       // Oculta la Barra
       xsObjeto_ocultar(XS_OBJETOGUI(boton));       
}