GtkSharp: Arrows

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.

[Image:arrows.png]

There are only two functions for manipulating an Arrow widget:

Arrow arrow1 = new Arrow( arrow_type, shadow_type );
arrow1.SetArrow(arrow_type, shadow_type );

The first creates a new arrow widget with the indicated type and appearance. The second allows these values to be altered. The arrow_type argument may take one of the following values:

  Gtk.Arrow.Up
  Gtk.Arrow.Down
  Gtk.Arrow.Left
  Gtk.Arrow.Right

These values obviously indicate the direction in which the arrow will point. The shadow_type argument may take one of these values:

  Gtk.Shadow.In
  Gtk.Shadow.Out (the default)
  Gtk.Shadow.Etched.In
  Gtk.Shadow.Etched.Out

Here’s a brief example to illustrate their use.

// arrow.cs - Gtk# Tutorial example
//
// Author: Johannes Roith <[email protected]>
//
// (c) 2002 Johannes Roith
 
namespace GtkSharpTutorial {
 
 
        using Gtk;
        using System;
        using System.Drawing;
 
 
        public class arrow
        {
 
                static void delete_event (object obj, DeleteEventArgs args)
                {
                        Application.Quit();
                }
 
                /* Create an Arrow widget with the specified parameters
                 * and pack it into a button */
 
                static Widget create_arrow_button(ArrowType arrow_type, ShadowType  shadow_type )
                {
 
                        Button button = new Button ();
                        Arrow  arrow = new Arrow (arrow_type, shadow_type);
 
                        button.Add(arrow);
 
                        button.Show();
                        arrow.Show();
 
                        return button;
                }
 
                public static void Main(string[] args)
                {
 
                        /* Initialize the toolkit */
                         Application.Init ();
 
                        /* Create a new window */
                        Window window = new Window ("Arrow Buttons");
 
                        /* It's a good idea to do this for all windows. */
 
                        window.DeleteEvent += delete_event;
 
                        /* Sets the border width of the window. */
                        window.BorderWidth = 10;
 
                        /* Create a box to hold the arrows/buttons */
                        HBox box = new HBox (false, 0);
                        box.BorderWidth = 2;
                        window.Add(box);
 
                        /* Pack and show all our widgets */
                        box.Show();
 
                        Widget button1 = create_arrow_button(ArrowType.Up, ShadowType.In);
                        box.PackStart (button1, false, false, 3);
 
                        Widget button2 = create_arrow_button(ArrowType.Down, ShadowType.Out);
                        box.PackStart (button2, false, false, 3);
 
                        Widget button3 = create_arrow_button(ArrowType.Left, ShadowType.EtchedIn);
                        box.PackStart (button3, false, false, 3);
 
                        Widget button4 = create_arrow_button(ArrowType.Right, ShadowType.EtchedOut);
                        box.PackStart (button4, false, false, 3);
 
                        window.ShowAll ();
 
                        /* Rest in Application.Run() and wait for the fun to begin! */
                        Application.Run();
                }
 
        }
}