The Arrow widget draws an arrowhead, facing in a number of possible directions and having a number of possible styles. It can be very useful when placed on a button in many applications. Like the Label widget, it emits no signals.
GMisc.arrrow is the function for creating an Arrow widget:
val GMisc.arrow : ?kind:Gtk.Tags.arrow_type -> ?shadow:Gtk.Tags.shadow_type -> ?xalign:float -> ?yalign:float -> ?xpad:int -> ?ypad:int -> ?width:int -> ?height:int -> ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> arrow kind : default value is `RIGHT shadow : default value is `OUT
This creates a new arrow widget with the indicated type and appearance. The second allows these values to be altered retrospectively. The ?kind argument may take one of the following values:
`UP `DOWN `LEFT `RIGHT
These values obviously indicate the direction in which the arrow will point. The ?shadow argument may take one of these values:
`IN `OUT (the default) `ETCHED_IN `ETCHED_OUT `NONE
Here's a brief example to illustrate their use.
(* file: arrow.ml *) (* Create an Arrow widget with the specified parameters * and pack in into a button *) let create_arrow_button ~kind ~shadow ~packing () = let button = GButton.button ~packing () in let arrow = GMisc.arrow ~kind ~shadow ~packing:button#add () in button let main () = (* Create a new window; set title and border width *) let window = GWindow.window ~title:"Arrow Buttons" ~border_width:10 () in (* Set a handler for destroy event that immediately exits GTK. *) window#connect#destroy ~callback:GMain.Main.quit; (* Create a box to hold the arrow/buttons *) let box = GPack.hbox ~border_width:2 ~packing:window#add () in let f (kind, shadow) = create_arrow_button ~kind ~shadow ~packing:box#add (); () in List.iter f [(`UP, `IN); (`DOWN, `OUT); (`LEFT, `ETCHED_IN); (`RIGHT, `ETCHED_OUT) ]; window#show (); (* Rest in main and wait for the fun to begin! *) GMain.Main.main () let _ = Printexc.print main ()