Listing 3: Custom widgets can be added to the GTK+ toolkit, such as this numeric keypad widget

#ifndef __NUMBERPAD_H__
#define __NUMBERPAD_H__

#include <gdk/gdk.h>
#include <gtk/gtkvbox.h>

#define NUMBERPAD(obj)     GTK_CHECK_CAST(obj, \
                             numberpad_get_type(), Numberpad)
#define IS_NUMBERPAD(obj) GTK_CHECK_TYPE(obj, \
                             numberpad_get_type())

typedef struct _Numberpad Numberpad;

struct _Numberpad
{
  GtkVBox vbox;
  
  GtkWidget* numberButtons[10];
  GtkWidget* enterButton;
  
  GtkAdjustment* adjustment;
  
  unsigned char numbers[4];
};

guint       numberpad_get_type();
GtkWidget* numberpad_new(GtkAdjustment*);

#endif // __NUMBERPAD_H__