arrow
Arrow widget is basically a miscellanious widget, that can be used
to create alignment, and provide visual cue to the user. Arrow 
widgets, have properties like  alignment, and padding inherited
from Misc widget.

Also you may set the arrow shadow types to any one of the values
from the enum, GtkShadowType, and enum GtkArrowType

/* Arrow types */
typedef enum
{
  GTK_ARROW_UP,
  GTK_ARROW_DOWN,
  GTK_ARROW_LEFT,
  GTK_ARROW_RIGHT
} GtkArrowType;

/* Shadow types */
typedef enum
{
  GTK_SHADOW_NONE,
  GTK_SHADOW_IN,
  GTK_SHADOW_OUT,
  GTK_SHADOW_ETCHED_IN,
  GTK_SHADOW_ETCHED_OUT
} GtkShadowType;

Create a small widgets , and you can also embed
arrow widgets into your buttons, labels etc to indicate
next, previous, up, down preferences in your GUI.

By providing stock buttons, and similar feel
to a user, GTK+ applications & GNOME have 
a uniform look-and-feel.


API
Create a new arrow button using , choosing arrow type,
and shadown types like this:
	GtkWidget* gtk_arrow_new        (GtkArrowType   arrow_type,
					 GtkShadowType  shadow_type);
Thats all you need to do.

Next embed this arrow widget into a button using
	gtk_container_add(GTK_CONTAINER(button),arrow);


Later you may modify the settings using
	void       gtk_arrow_set        (GtkArrow      *arrow,
				 GtkArrowType   arrow_type,
				 GtkShadowType  shadow_type);

Also API of Misc widget can be used on this arrow button.

Example
{
#include

GtkWidget * 
arrow_box(void)
{
  GtkWidget *box,*arrow,*vbox;
  vbox=gtk_vbox_new(FALSE,FALSE);

  /* GTK_ARROW_UP 	 GTK_SHADOW_NONE */
  arrow=gtk_arrow_new(GTK_ARROW_UP ,GTK_SHADOW_NONE );
  box=gtk_hbox_new(FALSE,FALSE);
  gtk_box_pack_start(GTK_BOX(box),
		     gtk_label_new("GTK_ARROW_UP-GTK_SHADOW_NONE"),FALSE,FALSE,0);
  gtk_box_pack_start(GTK_BOX(box),arrow,FALSE,FALSE,0);
  gtk_box_pack_start(GTK_BOX(vbox),box,FALSE,FALSE,0);

  return vbox;
}


/* A simple python script to generate all combinations of this arrow/shadow */
#! /usr/bin/python
x=['GTK_ARROW_UP','GTK_ARROW_DOWN','GTK_ARROW_LEFT','GTK_ARROW_RIGHT'];
y=['GTK_SHADOW_NONE', 'GTK_SHADOW_IN',
   'GTK_SHADOW_OUT','GTK_SHADOW_ETCHED_IN', 'GTK_SHADOW_ETCHED_OUT'];

for i in x:
    for j in y:
        print "/* "+i+" \t "+j+" */"
        print "arrow=gtk_arrow_new("+i+" ,"+j+" );"
        print "box=gtk_hbox_new(FALSE,FALSE);"
        print "gtk_box_pack_start(GTK_BOX(box),\n\t\tgtk_label_new(\""+i+"-"+j+"\"),FALSE,FALSE,0);"
        print "gtk_box_pack_start(GTK_BOX(box),arrow,FALSE,FALSE,0);"
        print "gtk_box_pack_start(GTK_BOX(vbox),box,FALSE,FALSE,0);"
        print ""
   

}

see also: misc, 



Last Modified on Fri Jul 1 19:51:40 IST 2005
This is part of the GtkBook project Hosted Here
This code, documents and images are © Muthiah Annamalai
This document is under Creative Commons License given by LICENSE