<?xml version="1.0" encoding="windows-1252"?>
<node id="997212" title="Re^3: gtk2-perl: how to enable stock images in all widgets" created="2012-10-04 06:18:19" updated="2012-10-04 06:18:19">
<type id="11">
note</type>
<author id="662968">
wdef2</author>
<data>
<field name="doctext">
SOLVED

&lt;p&gt;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:&lt;/p&gt;

&lt;code&gt;sub turn_button_images_on {
   my $widget = $_[0];
   my %buttonimages;
   if ("$widget-&gt;get_name" =~/Button/){
      unless ("$widget-&gt;get_name" =~/CheckButton/{
         print "Widget $widget is a Gtk2 button\n";
         $buttonimages{$widget}=$widget-&gt;get_settings:
         $buttonimages{$widget}=$widget-&gt;set('gtk-button-images', TRUE) 
      }
   } elsif ($widget-&gt;isa(Gtk2::Container::)){
      $widget-&gt;foreach(sub {turn_button_images_on ($_[0]); }); }
}&lt;/code&gt;

(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]














 </field>
<field name="root_node">
996823</field>
<field name="parent_node">
996886</field>
</data>
</node>
