El widget Arrow
(flecha) dibuja una cabeza de flecha, apuntando en una dirección y con un estilo
seleccionable. Igual que el widget etiqueta, no emite señales.
Sólo hay dos funciones para manipular un widget Arrow
:
arrowNew :: ArrowType -> ShadowType -> IO Arrow arrowSet :: ArrowClass self => self -> ArrowType -> ShadowType -> IO ()
El ArrowType
tiene cinco constructores:
ArrowUp
ArribaArrowDown
AbajoArrowLeft
IzquierdaArrowRight
DerechaArrowNone
Ninguno
El ShadowType
(tipo de sombra) también tiene cinco constructores:
ShadowIn
DentroShadowOut
FueraShadowEtchedIn
Grabado dentroShadowEtchedOut
Grabado fueraShadowNone
Sin sombraLos Tooltips son esas pequeñas frases que surgen cuando dejas el puntero sobre un botón u otro widget durante unos segundos.
Los widgets que no reciben eventos (los que no tienen su propia ventana) no funcionan con los tooltips.
Esta primera llamada creará un tooltip nuevo. Sólo necesitas llamarla una vez para crear un conjunto de tooltips.
tooltipsNew :: IO Tooltips
Después, para cada widget, usa:
tooltipsSetTip :: (TooltipsClass self, WidgetClass widget) => self -> widget -> String -> String -> IO ()
El primer argumento es el tooltip que ya has creado, seguido por el widget para el que quieres el tooltip y el texto que quieres que aparezca. El último argumento es una cadena de texto que puede usarse como su identificador.
Puedes activar o desactivar los mensajes asociados a un Tooltips
mediante:
tooltipsEnable :: TooltipsClass self => self -> IO () tooltipsDisable :: TooltipsClass self => self -> IO ()
Aquí tienes un ejemplo que ilustra el uso de flechas y tooltips.
La ventana superior ha sido cambiada de tamaño, para mostrar como el empaquetado de una tabla preserva el espacio de los botones con sus flechas.
Nota: Los tooltips no funcionan con GHCi (en mi máquina) pero sí lo hacen cuando se compila. Por supuesto, no los puedes ver en la imagen.
import Graphics.UI.Gtk main :: IO () main = do initGUI window <- windowNew set window [windowTitle := "Arrow Tips", windowDefaultWidth := 200, windowDefaultHeight := 200, containerBorderWidth := 20] table <- tableNew 5 5 True containerAdd window table button1 <- buttonNew button2 <- buttonNew button3 <- buttonNew button4 <- buttonNew tableAttachDefaults table button1 0 1 2 3 tableAttachDefaults table button2 2 3 0 1 tableAttachDefaults table button3 4 5 2 3 tableAttachDefaults table button4 2 3 4 5 tlt <- tooltipsNew arrow1 <- arrowNew ArrowLeft ShadowEtchedIn containerAdd button1 arrow1 tooltipsSetTip tlt button1 "West" "T1" arrow2 <- arrowNew ArrowUp ShadowEtchedOut containerAdd button2 arrow2 tooltipsSetTip tlt button2 "North" "T2" arrow3 <- arrowNew ArrowRight ShadowEtchedIn containerAdd button3 arrow3 tooltipsSetTip tlt button3 "East" "T3" arrow4 <- arrowNew ArrowDown ShadowEtchedOut containerAdd button4 arrow4 tooltipsSetTip tlt button4 "South" "T4" tooltipsEnable tlt widgetShowAll window onDestroy window mainQuit mainGUI