SOLVED
The "muppet magic" recursion and the found code snippet suggested one way to switch on images for all buttons. A block was that 'isa' did not behave as I expected on buttons. It doesn't distinguish between check buttons and normal buttons for example and misidentifies some other things. I may not be calling it correctly (should be blessed? http://stackoverflow.com/questions/2977775/best-way-to-use-isa-method).
Currently I test for a string match in the widget name and filter out check buttons. I call the following on the main top-level window just before showing all:
sub turn_button_images_on {
my $widget = $_[0];
my %buttonimages;
if ("$widget->get_name" =~/Button/){
unless ("$widget->get_name" =~/CheckButton/{
print "Widget $widget is a Gtk2 button\n";
$buttonimages{$widget}=$widget->get_settings:
$buttonimages{$widget}=$widget->set('gtk-button-images', TRUE
+)
}
} elsif ($widget->isa(Gtk2::Container::)){
$widget->foreach(sub {turn_button_images_on ($_[0]); }); }
}
(This will be an option in case the user doesn't want button images). My system doesn't have a .gtkrc-2.0 on the filesystem. (EDIT: There are gtkrc files in /usr/share/themes but for the Default theme that contains a comment only. Switching themes in my program does not enable button images). Creating ~/.gtkrc-2.0 to try to turn button images on does nothing there at least for gtk2-perl. I suspect this is system-specific.
This issue is very similar to that experienced back in 2005 by the OP on this thread where the 2-line code snippet came from:
http://www.mail-archive.com/gtk-perl-list@gnome.org/msg01733.html
|