Follow Techotopia on Twitter

On-line Guides
All Guides
eBook Store
iOS / Android
Linux for Beginners
Office Productivity
Linux Installation
Linux Security
Linux Utilities
Linux Virtualization
Linux Kernel
System/Network Admin
Scripting Languages
Development Tools
Web Development
GUI Toolkits/Desktop
Mail Systems
Eclipse Documentation

How To Guides
General System Admin
Linux Security
Linux Filesystems
Web Servers
Graphics & Desktop
PC Hardware
Problem Solutions
Privacy Policy




Gtk+/Gnome Application Development
Prev Home Next

Discovering the Available ObjectArguments

You can easily find out at runtime what arguments a given GtkObject understands, using the gtk_object_query_args(). Here is a nifty piece of code which prints out the arguments for the entire class hierarchy of a given GtkObject:

print_arguments(GtkObject* object)
  GtkType type;

  type = GTK_OBJECT_TYPE(object);

  do {
    GtkArg* args;
    guint32* flags;
    guint n_args;
    guint i;

    args = gtk_object_query_args(type,
    printf("Displaying arguments for object type `%s'\n",

    i = 0;
    while (i < n_args)
        printf(" - Argument %u is called `%s' and has type `%s'\n",


    type = gtk_type_parent(type);
  while (type != GTK_TYPE_INVALID);

Notice that a type's parent type can be obtained using the gtk_type_parent() function, and that you can extract the GtkType tag from a GtkObject using the GTK_OBJECT_TYPE() macro. GTK_OBJECT_TYPE() is defined as follows:

#define GTK_OBJECT_TYPE(obj) (GTK_OBJECT (obj)->klass->type)

An object's type is stored in its class structure, and a pointer to an object's class structure is stored in each instance of the object. (The class structure pointer is called klass rather than class to avoid confusing C++ compilers.)

Figure 3 summarizes the functions for reading, writing, and querying object arguments.

#include <gtk/gtkobject.h>

void gtk_object_getv(GtkObject* object, guint n_args, GtkArg* args);

void gtk_object_set(GtkObject* object, const gchar* first_arg_name, ...);

void gtk_object_setv(GtkObjec* object, guint n_args, GtkArg* args);

void gtk_object_add_arg_type(const gchar* arg_name, GtkType arg_type, guint arg_flags, guint arg_id);

GtkArg* gtk_object_query_args(GtkType class_type, guint32** arg_flags, guint* n_args);

Figure 3. Manipulating Object Arguments

Gtk+/Gnome Application Development
Prev Home Next

  Published under free license. Design by Interspire