infobar.h

Clase wxInfoBar

Una barra de información es una ventana transitoria que se muestra en la parte superior o inferior de su ventana principal para mostrar información no crítica al usuario.

Jerarquía:

Jerarquía de la clase wxInfoBar

Esta clase proporciona otra forma de mostrar mensajes al usuario, intermedia entre los cuadros de mensaje y los mensajes de la barra de estado. Los cuadros de mensaje son modales y, por tanto, interrumpen el flujo de trabajo del usuario, por lo que deben utilizarse con moderación. Sin embargo, los mensajes de la barra de estado suelen pasar desapercibidos. Una barra de información proporciona una forma de presentar los mensajes que tiene muchas más posibilidades de ser notada por el usuario pero sin ser molesta.

La barra de información puede mostrar un icono (a la izquierda), un mensaje de texto y, opcionalmente, botones que permiten al usuario reaccionar a la información presentada. A menos que se haya añadido un botón personalizado a la barra de información, ésta también tiene un botón de cierre a la derecha que permite al usuario descartarla, por lo que no es necesario proporcionar un botón sólo para cerrarla.

wxInfoBar llama a su método padre wxWindow::Layout() y asume que cambiará el diseño padre apropiadamente dependiendo de si la barra de información se muestra u oculta. Normalmente esto se consigue simplemente usando un sizer para el layout de la ventana padre y añadiendo wxInfoBar a este sizer como uno de los elementos. Teniendo en cuenta la colocación habitual de las barras de información, normalmente este sizer debería ser un wxBoxSizer vertical y la barra su primer o último elemento por lo que el ejemplo más simple posible de utilizar esta clase sería:

class MyFrame : public wxFrame
{
    ...
 
    wxInfoBar *m_infoBar;
};
 
MyFrame::MyFrame()
{
    ...
    m_infoBar = new wxInfoBar(this);
 
    wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
    sizer->Add(m_infoBar, wxSizerFlags().Expand());
    ... add other frame controls to the sizer ...
    SetSizer(sizer);
}
 
void MyFrame::SomeMethod()
{
    m_infoBar->ShowMessage("Something happened", wxICON_INFORMATION);
}

Ver la muestra de diálogos para ejemplos más sofisticados.

Actualmente esta clase se implementa de forma genérica (es decir, de la misma forma independiente de la plataforma para todas las versiones) y también de forma nativa en wxGTK, pero la implementación nativa requiere la versión GTK+ 2.18 o posterior (este requisito debería ser satisfecho por cualquier sistema de escritorio actualmente en uso).

Funciones miembro

wxInfoBar()

wxInfoBar::wxInfoBar ()

Constructor por defecto.

Usar Create() para los objetos creados con este constructor.

wxInfoBar()

wxInfoBar::wxInfoBar ( wxWindow * parent, wxWindowID winid = wxID_ANY )

Constructor que crea la ventana de la barra de información.

AddButton()

void wxInfoBar::AddButton( wxWindowID btnid, const wxString & label = wxString )

Añade un botón que se mostrará en la barra de información.

El botón añadido mediante este método se mostrará a la derecha del texto (en disposición LTR), añadiéndose cada botón sucesivo a la derecha del anterior. Si se añaden botones a la barra de información mediante este método, no se mostrará el botón "Cerrar" por defecto, ya que se asume que los botones adicionales ya permiten al usuario cerrarla.

Al hacer clic en el botón se generará un evento EVT_COMMAND_BUTTON_CLICKED normal que se puede manejar como de costumbre. El manejador por defecto en la propia wxInfoBar cierra la ventana cada vez que se pulsa un botón en ella, así que si se desea que la barra de información se oculte cuando se pulsa el botón, simplemente llamar a event.Skip() en el manejador del botón para dejar que el manejador de la clase base lo haga (llamar a Dismiss() explícitamente también funciona, por supuesto). Por otro lado, si no se salta el evento, la barra de información permanecerá abierta, así que hay que asegurarse de hacerlo al menos para algunos botones para permitir al usuario cerrarla.

Hay que tener en cuenta que la implementación genérica de wxInfoBar maneja los eventos de los botones por sí misma, por lo que no se propagan al marco padre de la barra de información y se necesita heredar de wxInfoBar y manejarlos en la clase derivada o utilizar wxEvtHandler::Bind(), como se hace en el ejemplo de los diálogos, para manejar los eventos de los botones en el marco padre.

Parámetros
btnid
Id del botón. Se utilizará en el mensaje del botón que se generará al hacer clic en él.
label
Etiqueta del botón. Sólo puede estar vacía si btnid es uno de los ids de stock, en cuyo caso se utilizará la etiqueta de stock correspondiente (ver wxGetStockLabel()).
Create()

bool wxInfoBar::Create( wxWindow * parent, wxWindowID winid = wxID_ANY )

Crea la ventana de la barra de información.

Obsérvese que a diferencia de la mayoría de las otras clases derivadas de wxWindow, wxInfoBar se crea oculta y sólo se muestra cuando se llama a ShowMessage(). Esto es más conveniente ya que normalmente la barra de información se crea para ser mostrada en algún momento posterior y no inmediatamente, por lo que crearla oculta evita la necesidad de llamar explícitamente a Hide() desde el código que la utiliza.

Este método sólo debería ser llamado si el objeto fue creado usando su constructor por defecto.

Parámetros
parent
Un puntero válido a la ventana padre.
winid
El id de la ventana de la barra de información, normalmente sin usar ya que actualmente esta clase no genera eventos.
Dismiss()

virtual void wxInfoBar::Dismiss()

Oculta la ventana de la barra de información.

Este método oculta la ventana y dispone la ventana padre para dar cuenta de su desaparición (a diferencia de un simple Hide()).

GetButtonCount()

virtual size_t wxInfoBar::GetButtonCount() const

Devuelve el número de botones mostrados actualmente.

Esto es simplemente el número de llamadas a AddButton() menos el número de llamadas a RemoveButton() hasta el momento.

Valor de retorno

El número de botones mostrados actualmente, posiblemente 0.

GetButtonId()

virtual wxWindowID wxInfoBar::GetButtonId(size_t idx) const

Devuelve el ID del botón en la posición dada.

Las posiciones de los botones se cuentan por orden de adición.

Parámetros
idx
La posición del botón en el rango de 0 a GetButtonCount().
Valor de retorno

El ID del botón en la posición dada o wxID_NONE si está fuera del rango (esto también resulta en un fallo de aserción).

GetEffectDuration()

int wxInfoBar::GetEffectDuration() const

Devuelve la duración de la animación del efecto utilizada actualmente.

GetHideEffect()

wxShowEffect wxInfoBar::GetHideEffect() const

Devuelve el efecto utilizado actualmente para ocultar la barra.

GetShowEffect()

wxShowEffect wxInfoBar::GetShowEffect() const

Devuelve el efecto utilizado actualmente para mostrar la barra.

HasButtonId()

virtual bool wxInfoBar::HasButtonId(wxWindowID btnid) const

Devuelve true si un botón con el ID dado se muestra actualmente.

Parámetros
btnid
ID del botón a comprobar.
Valor de retorno

true si el botón con este ID se muestra actualmente.

RemoveButton()

void wxInfoBar::RemoveButton(wxWindowID btnid)

Elimina un botón previamente añadido por AddButton().

Parámetros
btnid
Id del botón a eliminar. Si se utiliza más de un botón con el mismo id en la barra de información (lo que en cualquier caso no es recomendable), se eliminará el último botón con este id, es decir, el añadido más recientemente.
SetEffectDuration()

void wxInfoBar::SetEffectDuration(int duration)

Establece la duración de la animación utilizada al mostrar u ocultar la barra.

Por defecto, se utiliza una duración de 500 ms.

Parámetros
duration
Duración de la animación, en milisegundos.
SetFont()

virtual bool wxInfoBar::SetFont(const wxFont & font)

Los métodos anulados de la clase base cambian el tipo de letra del mensaje de texto.

wxInfoBar sobrescribe este método para utilizar la fuente que se le pasa para su parte de mensaje de texto. Por defecto se utiliza una versión más grande y en negrita de la fuente estándar.

Este método es sólo genérico.

Reimplementado desde wxWindow.

SetShowHideEffects()

void wxInfoBar::SetShowHideEffects( wxShowEffect showEffect, wxShowEffect hideEffect )

Establece los efectos a utilizar al mostrar y ocultar la barra.

Cualquiera de los parámetros, o ambos, pueden establecerse a wxSHOW_EFFECT_NONE para deshabilitar completamente el uso de efectos.

Por defecto, la barra de información utiliza el efecto wxSHOW_EFFECT_SLIDE_TO_BOTTOM para mostrarse y wxSHOW_EFFECT_SLIDE_TO_TOP para ocultarse si es el primer elemento del sizer que la contiene y efectos inversos si es el último. Si no es ni el primer ni el último elemento, no se utiliza ningún efecto para evitar el uso de uno inapropiado y se debe llamar a esta función si se desea un efecto.

Parámetros
showEffect
El efecto a utilizar cuando se muestra la barra.
hideEffect
El efecto a utilizar cuando se oculta la barra.
ShowMessage()

void wxInfoBar::ShowMessage( const wxString & msg, int flags = wxICON_INFORMATION )

Muestra un mensaje en la barra.

Si la barra está actualmente oculta, se mostrará. Si no, el mensaje se actualizará en su lugar.

Parámetros
msg
El texto del mensaje.
flags
Uno de los valores wxICON_NONE, wxICON_INFORMATION (por defecto), wxICON_QUESTION, wxICON_WARNING o wxICON_ERROR. Estas banderas tienen el mismo significado que en wxMessageDialog para la versión genérica, es decir, mostrar (o no, en caso de wxICON_NONE) el icono correspondiente en la barra, pero pueden ser interpretadas por las versiones nativas. Por ejemplo, la implementación nativa GTK+ no muestra iconos en absoluto pero utiliza este parámetro para seleccionar el color de fondo apropiado para la notificación.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject, wxWindow, wxEvtHandler y wxControl.