Volver al índice
; Previo: X Toolkit
Motif
En principio Motif es un conjunto de normas propuesto por OSF que especifican
un modo de presentación y comportamiento de los interfaces de usuario
gráficos.
El modelo elegido está basado en MS-Windows y Presentation Manager.
Un programador podría construir una aplicación que cumpla las
"guías de estilo" de Motif pero, normalmente, usará una biblioteca
de objetos de diálogo que cumplan con los requisitos de la especificación, como el conjunto de widgets definido por OSF.
Además de la guía de estilo y la biblioteca de widgets, en Motif
también se incluyen un gestor de ventanas (mwm) y un lenguaje
de especificación de interfaces de usuario (UIL).
La clase Primitive de Motif es una subclase de Core que actúa
también como metaclase y de ella se derivan todas las widgets de
tipo simple (no compuesto). Incluye recursos que, entre otras cosas, controlan
la clásica apariencia tridimensional de las ventanas de Motif.
A continuación se describen algunas de las
subclases de Primitive:
- Label
- Etiqueta que incluye un texto o un pixmap.
- PushButton
- Subclase de Label. Botón de diálogo que cambia de aspecto
cuando el usuario lo "empuja".
- ToggleButton
- Subclase de Label. Botón de diálogo con dos estados entre
los que va cambiando alternativamente cada vez que el usuario lo activa.
- CascadeButton
- Subclase de Label. Un tipo especial de botón al que se le asocia
una widget que actuará como un menú que se desplegará
de forma automática cuando se active el botón.
- DrawnButton
- Subclase de Label. Muy similar a PushButton pero
usado por aplicaciones que quieren dibujar la imagen que hay dentro del
botón.
- ArrowButton
- Botón con una flecha apuntando en una dirección (arriba, abajo,
a la derecha o a la izquierda).
- Separator
- Actúa como separador entre dos zonas.
- List
- Permite construir una lista de elementos de texto que el usuario puede
seleccionar.
- ScrollBar
- Clásica barra de scroll.
- Text
- Gestiona un editor de texto completo de una (clase TextField)
o varias líneas.
Otro tipo de widget simple son los gadgets. Se trata de una widget
sin ventana asociada (la entrada y salida gráfica de la widget
se lleva a cabo sobre la ventana asociada a la widget padre).
Por lo tanto, no es una subclase de Core sino de RectObj.
Motif proporciona versiones gadget de las widgets más simples. Existe,
por ejemplo, la clase PushButtonGadget.
La clase Manager de Motif es una subclase de Constraint que actúa
también como metaclase y de ella se derivan todas las widgets de
tipo compuesto (widgets contenedoras). Incluye recursos que, entre otras cosas, controlan
la clásica apariencia tridimensional de las ventanas de Motif.
La principal diferencia entre las distintas subclases de Manager es
como gestionan la posición y tamaño de las widgets hijas.
A continuación se describen algunas de las
subclases de Manager:
- BulletinBoard
- Permite colocar a los hijos en posiciones absolutas dentro de la ventana
padre.
- Form
- Subclase de BulletinBoard. Permite un control muy fino de las
posiciones y tamaños de las widgets hijas y su comportamiento ante
un cambio de tamaño de la ventana padre.
- SelectionBox
- Subclase de BulletinBoard. Se trata de una widget muy
específica orientada a la selección de elementos de una lista, ya
sea usando el ratón o escribiendo el nombre del elemento.
Contiene una lista con barra de scroll, un campo para la entrada de una
línea de texto (clase TextField) y tres botones (clase
PushButton) etiquetados, por defecto, como: Ok, Cancel
y Help.
- MessageBox
- Subclase de BulletinBoard. Se trata de una widget muy
específica orientada a mostrar un mensaje (de información, de
aviso, de error, etc.). Además del mensaje contiene tres botones (clase
PushButton) etiquetados, por defecto, como: Ok, Cancel
y Help.
- DrawingArea
- Proporciona un área en la que la aplicación puede dibujar
gráficos. Los eventos expose se propagan a la aplicación
como callbacks.
- Frame
- Proporciona un marco con aspecto tridimensional para widgets que
normalmente no tienen borde.
- PanedWindow
- Gestiona sus hijos organizándolos en regiones verticales
ofreciendo al usuario una manera de controlar el tamaño de cada región.
- RowColumn
- Organiza sus hijos en filas y columnas. Orientado a la construcción
de menús.
- Scale
- Proporciona un objeto similar a una barra de scroll que permite al
usuario introducir valores en un determinado rango.
- ScrolledWindow
- Proporciona dos barras de scroll (horizontal y vertical) que permiten
ver una determinada parte de un objeto de gran tamaño.
- MainWindow
- Subclase de ScrolledWindow. Proporciona un marco adecuado
para ser la widget base de una aplicación típica.
En un interfaz de usuario hay diferentes tipos de menús:
- Barras de menús con menús pulldown (se despliegan
al activar la opción de la barra de menús)
- Menús en cascada
- Menús popup (aparecen encima del resto de las ventanas)
En Motif existen numerosas funciones de conveniencia que facilitan la
creación de los diferentes tipos de menús. La estructura
básica de un menú es la siguiente:
- Una widget de tipo MenuShell (subclase de OverrideShell)
que le proporciona independencia del resto de la aplicación.
- Una widget de tipo RowColumn para organizar las opciones del
menú.
- Widgets de tipo Label que sirvan como nombre del menú
o sus secciones.
- Widgets de tipo Separator que sirvan para separar las posibles
secciones del menú.
- Widgets de tipo PushButton para aquellas opciones del
menú que no despliegan a su vez otro menú.
- Widgets de tipo CascadeButton para aquellas opciones que
desplieguen otro menú.
En muchas ocasiones la aplicación quiere mostrar una ventana temporal
para, por ejemplo, mostrar un mensaje de error o pedir al usuario
que introduzca una determinada información. En estos casos, lo normal
es mostrar esta ventana con el estilo popup (aparecerá
encima del resto de las ventanas). A este tipo de comportamiento se le
denomina diálogo.
En Motif existen numerosas funciones de conveniencia que facilitan la
creación de diferentes tipos de diálogos. La estructura
básica de un diálogo es la siguiente:
- Una widget de tipo DialogShell (subclase de TransientShell)
que le proporciona independencia del resto de la aplicación.
- La widget que se quiere mostrar. Podría ser de alguna de las
siguientes clases:
BulletinBoard, SelectionBox, Form, MessageBox, etc.
Volver al índice
; Previo: X Toolkit