Site hosted by Angelfire.com: Build your free website today!

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).

Widgets simples

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.
Widgets compuestas
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.

Menús
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ú.

Diálogos

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.