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