23.2. Formato de los Ficheros rc de GTK+

El formato del fichero rc se muestra en el siguiente ejemplo. Éste es el fichero testgtkrc de la distribución GTK+, pero se le han añadido unos algunos comentarios y cosas varias. Se puede incluir esta explicación en los programas para permitir al usuario afinar su aplicación.

Existen varias directivas para modificar los atributos de un control.

Además de estas propiedades también existen varios estados en los que puede encontrarse un control y se pueden cambiar los diferentes colores, pixmaps y fuentes de cada estado. Estos estados son:

NORMAL (Normal)

El estado normal de un control, sin que el ratón esté encima de él, sin que haya sido pulsado, etc.

PRELIGHT (Preiluminado)

Cuando el ratón está encima del control, los colores definidos en este estado tendrán efecto.

ACTIVE (Activo)

Cuando el control está presionado o se ha hecho clic en él estará activo y los atributos asignados con este valor tendrán efecto.

INSENSITIVE (Insensible)

Cuando un control está insensible, y no puede ser activado, tendrá estos atributos.

SELECTED (Seleccionado)

Cuando un objeto está seleccionado se usan estos atributos.

Cuando se usan las palabras "fg" y "bg" para modificar los colores de los controles, el formato es:

  fg[<STATE>] = { Rojo, Verde, Azul }
    

Donde STATE es uno de los estados anteriores (PRELIGHT, ACTIVE, etc), y Rojo, Verde y Azul son valores en el rango de 0 - 1.0, siendo { 1.0, 1.0, 1.0 } el blanco. Deben estar en formato float (decimal), o se les asignará 0. Por tanto, un simple "1" no es correcto, debe ser "1.0". Un simple "0" funciona, ya que los valores no reconocidos se establecen como 0.

bg_pixmap es muy similar al anterior excepto que los colores se sustituyen por un nombre de fichero.

pixmap_path es una lista de rutas separadas por ":". Cuando se especifique un pixmap, se buscará en esta lista.

La directiva "font" (fuente) es muy sencilla:

  font = "<font name>"

Lo único dificil es saber la cadena de la fuente font. Y, para ello, el programa xfontsel o una utilidad similar puede ser de gran ayuda.

La directiva "widget_class" determina el estilo de una clase de controles. Estas clases se enumeran en el resumen general de controles en la jerarquía de clases.

La directiva "widget" determina el estilo de un conjunto de controles con un nombre específico, reemplazando cualquier otro estilo de la clase del control en cuestión. Estos controles se registran en la aplicación usando el método set_name() . Esto permite cambiar los atributos de un control para cada control concreto, en vez de especificar los atributos de toda su clase. Se recomienda documentar todos los controles especiales para que los usuarios puedan personalizarlos.

Si se usa la palabra parent (padre) como atributo el control usará los atributos de su padre en la aplicación.

Al definir un estilo, se pueden asignar los atributos de un estilo definido previamente al estilo actual.

  style "main_button" = "button"
  {
    font = "-adobe-helvetica-medium-r-normal--*-100-*-*-*-*-*-*"
    bg[PRELIGHT] = { 0.75, 0, 0 }
  }

Este ejemplo usa el estilo "button", y crea un nuevo estilo "main_button" cambiando simplemente la fuente y el color de fondo del estado preiluminado del estilo "button" (botón).

Por supuesto, muchos de estos atributos no funcionan con todos los controles. Es sólo cuestión de sentido común. Todo lo que podría ser de aplicación, debería funcionar.