23.3. Ejemplo de fichero rc


# pixmap_path "<dir 1>:<dir 2>:<dir 3>:..."
#
pixmap_path "/usr/include/X11R6/pixmaps:/home/imain/pixmaps"
#
# style <name> [= <name>]
# {
#   <option>
# }
#
# widget <widget_set> style <style_name>
# widget_class <widget_class_set> style <style_name>

# Aquí sigue una lista de todos los estados posibles. Obsérvese que algunos
# de ellos no pueden aplicarse aciertos controles.
#
# NORMAL - El estado normal de un control, sin que el ratón esté encima
# de él, sin que haya sido pulsado, etc.
#
# PRELIGHT (Preiluminado) - Los colores definidos en este estado tendrán efecto
# cuando el ratón esté encima del control.
#
# 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 (Insensitivo) - Un control tendrá estos atributos cuando está
# insensible y no puede ser activado.
#
# SELECTED (Seleccionado) - Cuando un objeto está seleccionado se
# usan estos atributos.
#
# Dados estos estados podemos establecer los atributos de los controles en cada uno
# de ellos utilizando las directivas siguientes:
#

# fg - Cambia el color de frente o primer plano de un control.
# bg - Cambia el color de fondo de un control.
# bg_pixmap - Cambia el fondo de un control a un mosaico con
#             el pixmap dado.
# font - Cambia la fuente que usará el control.
#

# El siguiente fragmento crea un estilo llamado "button" (botón). El nombre no es
# realmente importante, pues se asigna a los controles presentes al final
# del archivo.

style "window"
{
  # Fija el margen (padding) en torno a la ventana al pixmap especificado.
  # bg_pixmap[<STATE>] = "<pixmap filename>"
  bg_pixmap[NORMAL] = "warning.xpm"
}

style "scale"
{
  # Pone el color de frente (color de la fuente) a rojo cuando el estado
  # es "NORMAL"

  fg[NORMAL] = { 1.0, 0, 0 }

  # Pone el dibujo de fondo de este control igual al que tenga su padre.
  bg_pixmap[NORMAL] = "<parent>"
}

style "button"
{
  # Esto muestra todos los posibles estados para un botón. El único que no
  # se aplica es el estado SELECTED (seleccionado).

  fg[PRELIGHT] = { 0, 1.0, 1.0 }
  bg[PRELIGHT] = { 0, 0, 1.0 }
  bg[ACTIVE] = { 1.0, 0, 0 }
  fg[ACTIVE] = { 0, 1.0, 0 }
  bg[NORMAL] = { 1.0, 1.0, 0 }
  fg[NORMAL] = { .99, 0, .99 }
  bg[INSENSITIVE] = { 1.0, 1.0, 1.0 }
  fg[INSENSITIVE] = { 1.0, 0, 1.0 }
}

# En este ejemplo, para crear el nuevo estilo "main_button" (botón principal),
# heredamos los atributos del estilo "button" y luego reemplazamos la
# fuente y el color de fondo del estado "preiluminado".

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

style "toggle_button" = "button"
{
  fg[NORMAL] = { 1.0, 0, 0 }
  fg[ACTIVE] = { 1.0, 0, 0 }

  # Esto pone la imagen de fondo del toggle_button a la misma que tenga
  # su padre (según se defina en la aplicación).
  bg_pixmap[NORMAL] = "<parent>"
}

style "text"
{
  bg_pixmap[NORMAL] = "marble.xpm"
  fg[NORMAL] = { 1.0, 1.0, 1.0 }
}

style "ruler"
{
  font = "-adobe-helvetica-medium-r-normal--*-80-*-*-*-*-*-*"
}

# pixmap_path "~/.pixmaps"

# Lo siguiente hace que los diferentes tipos de controles citados usen
# los estilos definidos arriba.
# Estas clases se enumeran en el resumen general de controles en la
# jerarquía de clases, y probablemente también en este documento, como
# referencia del usuario.

widget_class "GtkWindow" style "window"
widget_class "GtkDialog" style "window"
widget_class "GtkFileSelection" style "window"
widget_class "*Gtk*Scale" style "scale"
widget_class "*GtkCheckButton*" style "toggle_button"
widget_class "*GtkRadioButton*" style "toggle_button"
widget_class "*GtkButton*" style "button"
widget_class "*Ruler" style "ruler"
widget_class "*GtkText" style "text"

# Esto hace que todos los hijos de "main window" tengan el estilo main_button.
# Debiera ser documentado para poder sacarle partido.
widget "main window.*GtkButton*" style "main_button"