This stuff is supposed to be controlled from theme. Many desktop environments now offer XSettings server which provides necessary parameters. If there are no such server, then RC files can be used to set them. The application should not do it (though it can). This http://stackoverflow.com/questions/3887228/gtkbutton-just-shows-text-but-no-image suggests simpler solution (in C which maps to perl). Though this page http://developer.gnome.org/gtk/2.24/GtkSettings.html suggests that it may not always work.
Well, I'm not the one to decide if this kind of separation of code and configuration is good. On one hand, it allows flexibility. On the other hand it introduces complexity because the end user has to perform some steps in configuring the application. Lucky are those whose desktop environments already provide all necessary configuration. But I'm also sorry for them, they know so little about the system they use :)