SDK Multiplataforma en C logo

SDK Multiplataforma en C

Panel

❮ Anterior
Siguiente ❯

Funciones

Panel*panel_create (void)
uint32_tpanel_layout (...)
Layout*panel_get_layout (...)
voidpanel_visible_layout (...)
voidpanel_update (...)
voidpanel_data (...)
type*panel_get_data (...)

Un Panel es un control dentro de una ventana que agrupa otros controles. Define su propio sistema de referencia, es decir, si desplazamos un panel todos sus descendientes se moverán al unísono ya que sus ubicaciones serán relativas al origen de su predecesor. Admitirá otros (sub)-paneles como descendientes, lo que permite conformar una Jerarquía de ventana (Figura 1). En pro de la portabilidad, esta librería Gui no permite indicar directamente coordenadas ni tamaños concretos para los elementos vinculados a un panel, sino que la asociación se lleva a cabo mediante un objeto Layout que se encarga de calcular en tiempo de ejecución las ubicaciones finales de los controles en función de la plataforma y gestor de ventanas. En ¡Hola Subpanel! tienes un ejemplo elemental del uso de paneles.

  • Utiliza panel_create para crear un nuevo panel.
  • Utiliza panel_layout para añadir controles al panel.
  • Esquema que muestra la jerarquía producida por paneles, subpaneles y controles.
    Figura 1: Jerarquía de ventana.

Cada panel admite varios layouts y permite alternar entre ellos en tiempo de ejecución (Figura 2). Esto permite crear interfaces dinámicas responsivas con muy poco esfuerzo, ya que el propio panel se encarga de vincular y dimensionar los controles en función del layout activo en cada caso. En ¡Hola Multi-layout! tienes un ejemplo.

  • Utiliza panel_visible_layout para alternar entre layouts.
  • Dos configuraciones diferentes de ventana utilizando los mismos controles.
    Figura 2: Panel con dos organizaciones diferentes para los mismos controles.

Debido a que los layout son estructuras lógicas fuera de la jerarquía de ventana, pueden compartir controles al estar vinculados con el mismo panel (Figura 3). Lo que no está permitido es utilizar los mismos objetos en diferentes paneles, por el propio concepto de jerarquía.

Esquema que muestra como compartir correctamente los elementos entre layouts.
Figura 3: Es posible reutilizar los mismos componentes entre layouts del mismo panel.

panel_create ()

Crea un panel.

Panel*
panel_create(void);

Retorna

El nuevo panel.


panel_layout ()

Añade un layout a un panel.

uint32_t
panel_layout(Panel *panel,
             Layout *layout);
panel

El panel.

layout

El layout.

Retorna

El índice del layout recién añadido.


panel_get_layout ()

Obtiene un layout de un panel.

Layout*
panel_get_layout(Panel *panel,
                 const uint32_t index);
panel

El panel.

index

El índice del layout.

Retorna

El layout.


panel_visible_layout ()

Establece el layout activo dentro del panel.

void
panel_visible_layout(Panel *panel,
                     const uint32_t index);
panel

El panel.

index

El índice del layout.

Observaciones

Para el cambio se haga efectivo, hay que llamar a panel_update.


panel_update ()

Refresca el contenido de la ventana que contiene el panel.

void
panel_update(Panel *panel);
panel

El panel.

Observaciones

Es equivalente a llamar a window_update.


panel_data ()

Asocia datos de usuario con el panel.

void
panel_data(Panel *panel,
           type **data,
           FPtr_destroy func_destroy_data,
           type);
panel

El panel.

data

Datos de usuario.

func_destroy_data

Destructor de los datos de usuario. Será llamado al destruir el panel.

type

Tipo de datos de usuario.


panel_get_data ()

Obtiene los datos de usuario asociados con el panel.

type*
panel_get_data(const Panel *panel,
               type);
panel

El panel.

type

Tipo de datos de usuario.

Retorna

Los datos de usuario.

❮ Anterior
Siguiente ❯