Glade-Perl-Two

 view release on metacpan or  search on metacpan

Glade/Two/Generate.pm  view on Meta::CPAN

#===============================================================================
%stubs = ();

    $ALL        = '__ALL';
    $CHILD      = '__CHILD';
    $WIDGET     = '__WIDGET';
    $NOTE       = '__NOTE';         # Report note
    $DEPRECATED = '__DEPRECATED';   # Report and convert if poss
    $CONVERT_TO = '__CONVERT_TO',   # Convert widget
    $OBSOLETE   = '__OBSOLETE';     # Report and convert if poss
    $BROKEN     = '__BROKEN';       # Report and remove
    $REMOVED    = '__REMOVED';      # Report and remove

    $USES               = '__USES';
    $DATA               = '__DATA';
    $IGNORED_WIDGET    = '__IGNORED_WIDGET';
    $NO_SUCH_WIDGET     = '__NO_SUCH_WIDGET';
    $INTERNAL_CHILD     = '__INTERNAL_CHILD';
    $UNUSED_PROPERTIES  = '__UNUSED_PROPERTIES';
    $FIRST_PANE_FULL    = '__FIRST_PANE_FULL';
    $CONNECT_ID         = '__CONNECT_ID';
    $MISSING_METHODS    = '__MISSING_METHODS';
    $WIDGET_INSTANCE    = '__WIDGET_INSTANCE';
    $HANDLERS           = '__HANDLERS';
    
$gnome_libs_depends     = { 
    'MINIMUM REQUIREMENTS'  => '1.2.0',
    };

$gtk_perl_depends       = { 
    'MINIMUM REQUIREMENTS'  => '0.01',
    'LATEST_CPAN'           => '0.01',
    'LATEST_CVS'            => '20021116',
    
    '0.01'                  => '20021116',

    # Those below don't work yet even in the latest CVS version
    'GnomeDbGrid'           => '99999999',
    'GnomeDbList'           => '99999999',
    'GnomeDbCombo'          => '99999999',
    'GnomeDbReport'         => '99999999',
    'GnomeDbError'          => '99999999',
    'GnomeDbLogin'          => '99999999',
    'GnomeDbBrowser'        => '99999999',
    'GnomeDbErrorDlg'       => '99999999',
    'GnomeDbLoginDlg'       => '99999999',

    };

$gtk_perl_cant_do       = { 
    # Those below will NOT work in specific version mentioned
};

%app_fields = (
    'type'  => 'glade2perl-2',
    'widgets'   => {
        'underlineable' => " ".
            join(" ", (
                'GtkLabel', 
                'GtkButton', 
                'GtkMenuItem')
               )." ",
        'to_ignore'     => join (' ', 
            'Placeholder',
            'Custom',
           ),
        'ignored'       => 0,
        'missing'       => 0,
        'gnome'         => join( " ",
            'GnomeAbout',
            'GnomeApp',
            'GnomeAppBar',
            'GnomeCalculator',
            'GnomeColorPicker',
            'GnomeDateEdit',
            'GnomeDialog',
            'GnomeDock',
            'GnomeDockItem',
            'GnomeDruid',
            'GnomeDruidPageFinish',
            'GnomeDruidPageStandard',
            'GnomeDruidPageStart',
            'GnomeEntry',
            'GnomeFileEntry',
            'GnomeFontPicker',
            'GnomeHRef',
            'GnomeIconEntry',
            'GnomeIconList',
            'GnomeIconSelection',
            'GnomeLess',
            'GnomeMessageBox',
            'GnomeNumberEntry',
            'GnomePaperSelector',
            'GnomePixmap',
            'GnomePixmapEntry',
            'GnomePropertyBox',
            'GnomeSpell',
#            'GtkCalendar',          # In Gtk after CVS-19990914
            'GtkClock',
            'GtkDial',
            'GtkPixmapMenuItem',
           ),
        'gnome_db'      => join( " ",
            'GnomeDbGrid',
            'GnomeDbList',
            'GnomeDbCombo',
            'GnomeDbReport',
            'GnomeDbError',
            'GnomeDbLogin',
            'GnomeDbBrowser',
            'GnomeDbErrorDlg',
            'GnomeDbLoginDlg',
       ),
        'concept'       => '',
        'composite'     => join(' ',
            'Gnome::Entry',
            'Gnome::FileEntry',
            'Gnome::NumberEntry',
            'Gnome::PixmapEntry',
            'Gtk2::Combo',
           ),
        'dialogs'       => join(' ',
            'Gnome2::About',
            'Gnome2::App',
            'Gnome2::Dialog',
            'Gnome2::MessageBox',
            'Gnome2::PropertyBox',
            'Gtk2::ColorSelectionDialog',
            'Gtk2::Dialog',
            'Gtk2::FileSelection',
            'Gtk2::FontSelectionDialog',
            'Gtk2::InputDialog',
           ),
        'toplevel'      => join(' ',
            'Gnome2::About',
            'Gnome2::App',
            'Gnome2::Dialog',
            'Gnome2::MessageBox',
            'Gnome2::PropertyBox',
            'Gtk2::Dialog',
            'Gtk2::InputDialog',
            'Gtk2::Window',
           ),
        },
    'properties'    => {
        'unhandled'     => 0,
        'translatable_properties'   => " ".
            join(" ", ( 
                'label', 
                'title', 
                'text', 
                'format', 
                'copyright', 
                'comments',
                'preview_text', 
                'tooltip')
               )." ",
        'cxx'           => join(' ',
            'cxx_separate_class',
            'cxx_separate_file',
            'cxx_use_heap',

Glade/Two/Generate.pm  view on Meta::CPAN

    my ($work, @elements);
    foreach $work (split(/\|/, $string)) {
        $work =~ s/\s*//g; # Trim off any whitespace
        $work = Glade::Two::Gtk->lookup($work);
        push @elements, $work;
    }
    my $arrayref_string = "[]";
    $arrayref_string = "['".join("', '", @elements)."']" if scalar @elements;

    return $arrayref_string;
}

sub internal_pack_widget {
    my ($class, $parentname, $childname, $proto, $depth) = @_;
    my $me = (ref $class || $class)."->internal_pack_widget";
#    return if $proto->{'internal-child'};
    my $refpar;
    # When we add/pack/append we do it to ${current_form}->{$parentname} 
    # rather than $widgets->{$parentname} so that we are sure that everything 
    # is packed in the right order and we can check for duplicate names
    my $refwid = (ref $widgets->{$childname});
    my $child_type;
    my $postpone_show;
    if ($current_form && eval "exists ${current_form}\{'$childname'}") {
        die sprintf(("\nerror %s - There is already a widget called ".
            "'%s' constructed and packed - I will not overwrite it !"),
            $me, $childname);
    }
    if ($proto->{'internal-child'}) {
        if ($widgets->{$childname}) {
            # Nothing to pack just tidy up
            delete $failures->{$INTERNAL_CHILD}{$parentname}{$proto->{'internal-child'}};
        }
    } elsif (" $Glade_Perl->{'widgets'}{'dialogs'} $Glade_Perl->{'widgets'}{'toplevel'} " =~ m/ $refwid /) {
        # We are a window so don't have a parent to pack into
        $Glade_Perl->diag_print (4, "%s- Constructing a toplevel component ".
            "(window/dialog) '%s'", $indent, $childname);
#        $child_type = $widgets->{$childname}->type;
#        if (' toplevel dialog '=~ m/ $child_type /) {
            # Add a default delete_event signal connection
            $class->load_class("Gtk2::Tooltips;");
            $class->add_to_UI($depth, 
                "${current_form}\{'tooltips'} = new Gtk2::Tooltips;");
            $class->load_class("Gtk2::AccelGroup;");
            $class->add_to_UI($depth, 
                "${current_form}\{'accelgroup'} = new Gtk2::AccelGroup;");
            $class->add_to_UI($depth, 
                "\$widgets->{'$childname'}->add_accel_group(${current_form}\{'accelgroup'});");
#                "${current_form}\{'accelgroup'}->attach(\$widgets->{'$childname'});");
#        } else {
#            die "\nerror F$me   $indent- This is a $child_type type Window".
#                " - what should I do?";
#        }
        $postpone_show = 1;

    } else {
        # We probably have a parent to pack into somehow
        eval "\$refpar = (ref ${current_form}\{'$parentname'})||'UNDEFINED !!';";
        $Glade_Perl->diag_print(5, "Adding %s to %s", $refwid, $refpar);
        unless (eval "exists ${current_form}\{'$parentname'}") {
            if ($Glade_Perl->source->quick_gen or 'Gtk2::Menu' eq $refwid) {
                # We are a popup menu so we don't have a root window
#            $class->add_to_UI($depth, "${first_form}->popup_enable;");
                $class->add_to_UI($depth,   
                    "${current_form}\{'tooltips'} = new Gtk2::Tooltips;");
                $class->add_to_UI($depth,   
                    "${current_form}\{'accelgroup'} = new Gtk2::AccelGroup;");
                $class->add_to_UI($depth, 
                    "${current_form}\{'accelgroup'}->attach(\$widgets->{'$childname'});");
                $postpone_show = 1;
            } else {
                die sprintf(("\nerror %s - Unable to find a widget called '%s' - ".
                    "I can not pack widget '%s' into a non-existant widget!"),
                    $me, $parentname, $childname);
            }
        }
        if ($postpone_show) {
            # Do nothing
            
#---------------------------------------
        } elsif (' Gtk2::ImageMenuItem ' =~ m/ $refpar / && 
            ' Gtk2::Image ' =~ m/ $refwid / ) {
#            $class->use_par($proto->{'packing'}, 'type', $NOT_WIDGET|$MAYBE)) {
#print "We have a $refpar to pack into\n";
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_image(".
                    "\$widgets->{'$childname'});");
#            $class->add_to_UI($depth, 
#                "\$widgets->{'$childname'} = ".
#                    "${current_form}\{'$parentname'}->get_image();");
                    
#---------------------------------------
        } elsif (" $Glade_Perl->{'widgets'}{'composite'} " =~ m/ $refpar /) {
            # We do not need to do anything for this widget
#            $class->use_par($proto->{'packing'}, 'type', $NOT_WIDGET|$MAYBE)) {
            
#---------------------------------------
        } elsif (' Gtk2::HPaned Gtk2::VPaned ' =~ m/ $refpar /) {
            my $resize = $class->use_par($proto->{'packing'}, 'resize', $BOOL|$NOT_WIDGET, 'False');
            my $shrink = $class->use_par($proto->{'packing'}, 'shrink', $BOOL|$NOT_WIDGET, 'True');
            if (eval "${current_form}\{$FIRST_PANE_FULL}{'$parentname'}") {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->pack2(".
                        "\$widgets->{'$childname'}, $resize, $shrink);");
            } else {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->pack1(".
                        "\$widgets->{'$childname'}, $resize, $shrink);");
#                print "${current_form}\{$FIRST_PANE_FULL}{'$parentname'} = 1;\n";
                eval "${current_form}\{$FIRST_PANE_FULL}{'$parentname'} = 1;";
            }
            
#---------------------------------------
        } elsif (eval "${current_form}\{'$parentname'}->can(".
            "'pack_start')") {# and !defined $proto->{'child_name'}) {
            # We have a '$refpar' widget '$parentname' that can pack_start
            my $ignore = $class->use_par($proto, 'child_name', $DEFAULT, '');
            my $pack_type = $class->use_par($proto->{'packing'}, 'pack_type', $LOOKUP|$NOT_WIDGET, 'start');
            my $expand  = $class->use_par($proto->{'packing'}, 'expand',    $BOOL|$NOT_WIDGET, 'False');
            my $fill    = $class->use_par($proto->{'packing'}, 'fill',      $BOOL|$NOT_WIDGET, 'False');
            my $padding = $class->use_par($proto->{'packing'}, 'padding',   $DEFAULT|$NOT_WIDGET, 0);
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->pack_$pack_type(".
                    "\$widgets->{'$childname'}, $expand, $fill, $padding);");

#---------------------------------------
        } elsif (eval "${current_form}\{'$parentname'}->can(".
            "'set_child_packing')") {# and !defined $proto->{'child_name'}) {
            # We have a '$refpar' widget '$parentname' that can query_child_packing
            my $ignore = $class->use_par($proto, 'child_name', $DEFAULT, '');
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->add(".
                    "\$widgets->{'$childname'});");

#---------------------------------------
        } elsif ((' Gtk2::Frame ' =~ m/ $refpar /) &&
            $class->use_par($proto->{'packing'}, 'type', $NOT_WIDGET|$MAYBE)) {
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_label_widget(".
                    "\$widgets->{'$childname'});");

#---------------------------------------
        } elsif (' Gtk2::CList ' =~ m/ $refpar /) {
            $child_type = $class->use_par($proto, 'child_name', $DEFAULT, '');
            # We are a CList column widget (title widget)
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_column_widget(".
                    ($Glade::Two::Gtk2::CList_column || '0').
                    ", \$widgets->{'$childname'});");
            $Glade::Two::Gtk2::CList_column++;

#---------------------------------------
        } elsif (' Gtk2::CTree ' =~ m/ $refpar /) {
            $child_type = $class->use_par($proto, 'child_name', $DEFAULT, '');
            # We are a CTree column widget (title widget)
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_column_widget(".
                    ($Glade::Two::Gtk::CTree_column || '0').
                    ", \$widgets->{'$childname'});");
            $Glade::Two::Gtk::CTree_column++;

#---------------------------------------
        } elsif (' Gtk2::Layout Gtk2::Fixed ' =~ m/ $refpar /) {
#            $Glade_Perl->diag_print(2, $proto);
            my $x      = $class->use_par($proto->{'packing'}, 'x', $NOT_WIDGET);
            my $y      = $class->use_par($proto->{'packing'}, 'y', $NOT_WIDGET);
#            my $width  = $class->use_par($proto, 'width');
#            my $height = $class->use_par($proto, 'height');
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->put(".
                    "\$widgets->{'$childname'}, $x, $y);");

#---------------------------------------
        } elsif (' Gtk2::MenuBar Gtk2::Menu ' =~ m/ $refpar /) {
            # We are a menuitem
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->append(".
                    "\$widgets->{'$childname'});");

#---------------------------------------
        } elsif (' Gtk2::MenuItem Gtk2::PixmapMenuItem ' =~ m/ $refpar /) {
            # We are a menu for a meuitem
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_submenu(".
                    "\$widgets->{'$childname'});");
            $postpone_show = 1;

#---------------------------------------
        } elsif (' Gtk2::OptionMenu ' =~ m/ $refpar /) {
            # We are a menu for an optionmenu
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->set_menu(".
                    "\$widgets->{'$childname'});");
            $postpone_show = 1;

#---------------------------------------
        } elsif (' Gtk2::Notebook ' =~ m/ $refpar /) {
#print $childname," ",Dumper($proto->{'packing'});
            $child_type = $class->use_par($proto->{'packing'}, 'type', $MAYBE|$NOT_WIDGET);
            if ($child_type eq 'tab') {
                # We are a notebook tab widget (eg label) so we can add the 
                # previous notebook page with ourself as the  label
                unless ($Glade::Two::Gtk2::nb->{$parentname}{'panes'}[$Glade::Two::Gtk2::nb->{$parentname}{'tab'}]) {
                    $Glade_Perl->diag_print (1, "warn  There is no widget on the ".
                        "notebook page linked to notebook tab '%s' - ".
                        "a Placeholder label was used instead",
                        $childname);
                    my $message = sprintf(S_("This is a message generated by %s\n\n".
                                "No widget was specified for the page linked to\n".
                                "notebook tab \"%s\"\n\n".
                                "You should probably use Glade to create one"),
                                $PACKAGE, $childname);
                    $class->add_to_UI($depth, 
                        "${current_form}\{'Placeholder_label'} = ".
                            "new Gtk2::Label('$message');");
                    $class->add_to_UI($depth, 
                        "${current_form}\{'Placeholder_label'}->show;");
                    $Glade::Two::Gtk2::nb->{$parentname}{'panes'}[$Glade::Two::Gtk2::nb->{$parentname}{'tab'}] = 
                        'Placeholder_label';
                }
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->append_page(".
                        "${current_form}\{'$Glade::Two::Gtk2::nb->{$parentname}{'panes'}[$Glade::Two::Gtk2::nb->{$parentname}{'tab'}]'}, ".
                        "\$widgets->{'$childname'});");
                $Glade::Two::Gtk2::nb->{$parentname}{'tab'}++;

            } else {
                # We are a notebook page so just store for adding later 
                # when we get the tab widget
                push @{$Glade::Two::Gtk2::nb->{$parentname}{'panes'}}, $childname;
                $Glade::Two::Gtk2::nb->{$parentname}{'pane'}++;
                # Set some tab and menu properties
                my $menu_label = $class->use_par($proto->{'packing'}, 'menu_label', 
                    $STRING|$NOT_WIDGET, $depth);
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->set_menu_label_text(".
                        "\$widgets->{'$childname'}, _('$menu_label'));");
                my $tab_pack = $class->use_par($proto->{'packing'},'tab_pack', $LOOKUP|$NOT_WIDGET, 'start');
                my $tab_expand = $class->use_par($proto->{'packing'},'tab_expand', $BOOL|$NOT_WIDGET, 0);
                my $tab_fill = $class->use_par($proto->{'packing'},'tab_fill', $BOOL|$NOT_WIDGET, 0);
                
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->set_tab_label_packing(".
                        "\$widgets->{'$childname'}, $tab_expand, $tab_fill, '$tab_pack');");
#print Dumper($proto->{'packing'});
            }

#---------------------------------------
        } elsif (' Gtk2::ScrolledWindow ' =~ m/ $refpar /) {

Glade/Two/Generate.pm  view on Meta::CPAN


            my $xpad =    $class->use_par($proto->{'packing'}, 'xpad', $NOT_WIDGET|$DEFAULT, 0);
            my $ypad =    $class->use_par($proto->{'packing'}, 'ypad', $NOT_WIDGET|$DEFAULT, 0);

            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->attach(".
                    "\$widgets->{'$childname'}, ".
                    "$left_attach, $right_attach, $top_attach, $bottom_attach, ".
                    $class->string_to_arrayref($x_options).", ".
                    $class->string_to_arrayref($y_options).", ".
                    "$xpad, $ypad);");
            
#---------------------------------------
        } elsif (' Gtk2::Toolbar ' =~ m/ $refpar /) {
# FIXME - toolbar buttons with a removed label don't have a child_name
#   but can have a sub-widget. allow for this
#   test all possibilities
            # Untested possibilities
            # 4 Other type of widget
            my $tooltip =  $class->use_par($proto, 'tooltip',  $DEFAULT, '');
            if (eval "$current_form\{'$parentname'}{'tooltips'}" && 
                !$tooltip &&
                (' Gtk2::VSeparator Gtk2::HSeparator Gtk2::Combo Gtk2::Label ' !~ / $refwid /)) {
                $Glade_Perl->diag_print (1, 
                    "warn  Toolbar '%s' is expecting ".
                    "a tooltip but you have not set one for %s '%s'",
                    $parentname, $refwid, $childname);
            }            
#print Dumper($proto);
            my $new_group = $class->use_par($proto->{'packing'}, 'new_group', $BOOL|$MAYBE|$NOT_WIDGET);
            if ($new_group) {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->append_space();");
            }
            # We must have a widget already constructed
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->append_widget(".
                    "\$widgets->{'$childname'}, _('$tooltip'), '');");
            
#---------------------------------------
        } elsif (" Gnome::App "=~ m/ $refpar /) {
            my $type = $class->use_par($proto, 'child_name', $DEFAULT, '');
            if (' Gnome::AppBar ' =~ m/ $refwid /) {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->set_statusbar(".
                        "\$widgets->{'$childname'});");
            
            } elsif (' GnomeApp:appbar ' =~ m/ $type /) {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->set_statusbar(".
                        "\$widgets->{'$childname'});");
            
            } elsif (' Gnome::Dock ' =~ m/ $refwid /) {
# FIXME why have I commented this out? Is it because Gnome::Dock should not
# be constructed within a Gnome::App - add Gnome::DockItems by using method
# Gnome::App::add_docked() or Gnome::App::add_dock_item() instead?
#                $class->add_to_UI($depth, 
#                    "${current_form}\{'$parentname'}->set_contents(".
#                        "\$widgets->{'$childname'});");

            } elsif (' Gtk2::MenuBar ' =~ m/ $refwid /) {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->set_menus(".
                        "\$widgets->{'$childname'});");

            } else {
                $Glade_Perl->diag_print (1, 
                    "error Don't know how to pack %s %s (type '%s') - what should I do?",
                    $refwid, "${current_form}\{'${childname}'}{'child_name'}", $type);
            }
                        
#---------------------------------------
        } elsif (" Gnome::Dock "=~ m/ $refpar /) {
            # We are a Gnome::DockItem
            my $placement= $class->use_par($proto, 'placement', $LOOKUP, 'top');
            my $band     = $class->use_par($proto, 'band',      $DEFAULT, 0);
            my $position = $class->use_par($proto, 'position',  $DEFAULT, 0);
            my $offset   = $class->use_par($proto, 'offset',    $DEFAULT, 0);
            my $in_new_band = $class->use_par($proto, 'in_new_band', $DEFAULT, 0);

            # 'Usage: Gnome::Dock::add_item(dock, item, placement, band_num, position, offset, in_new_band)
            # Actually should be Gnome::App->add_docked() or
            # Gnome::App->add_dock_item() if this widget is in a Gnome::App
# I quote Damon 20000301 on glade-devel list
# I think it was OK to treat dock items as children of the dock.
# A GnomeDock could be used in other places besides a GnomeApp (though
# I don't think Glade supports that completely at the moment).
# I also had to think about GnomeDockBands, but I decided to skip those
# in the output since they are created and destroyed automatically
# and can't be manipulated independantly.
# 
# I think you're right in that libglade shouldn't create a GnomeDock inside
# a GnomeApp, and should be adding the dock items via the GnomeApp's
# GnomeDockLayout, e.g. using gnome_app_add_docked() or gnome_app_add_dock_item().

            if (" Gnome::DockItem " =~/ $refwid /) {
                $class->add_to_UI($depth, 
                    "${current_form}\{'$parentname'}->add_item(".
                        "\$widgets->{'$childname'}, '$placement', $band, ".
                        "$position, $offset, $in_new_band);");
            } else {
                # We are not a dock_item - just using set_contents
                undef $proto->{'child_name'};
                $class->add_to_UI($depth, 
                    "${current_window}->set_contents(".
                        "\$widgets->{'$childname'});");
            }
            
#---------------------------------------
        } elsif (" Gnome::Druid "=~ m/ $refpar /) {
            # We are a Gnome::DruidPage of some sort
            $class->add_to_UI($depth, 
                "${current_form}\{'$parentname'}->append_page(".
                    "\$widgets->{'$childname'});");
            if (' Gnome::DruidPageStart ' =~ / $refwid /) {
                $class->add_to_UI($depth, "${current_form}\{'$parentname'}->".
                    "set_page(\$widgets->{'$childname'});");
            }
            
#---------------------------------------
        } elsif (" Gtk2::List "=~ m/ $refpar /) {

Glade/Two/Generate.pm  view on Meta::CPAN

            },
            'GtkFileSelection' => {
                'show_file_op_buttons' => 'show-fileops',
            },
            'GtkFrame'          => {
                'shadow_type'       => 'shadow',
            },
            'GtkGammaCurve'     => {
                'curve_type'        => $OBSOLETE,
                'max_x'             => $OBSOLETE,
                'max_y'             => $OBSOLETE,
                'min_'             => $OBSOLETE,
                'min_y'             => $OBSOLETE,
            },
            'GtkHPaned'         => {
                'handle_size'       => $OBSOLETE,
                'gutter_size'       => $OBSOLETE,
            },
            'GtkVPaned'         => {
                'handle_size'       => $OBSOLETE,
                'gutter_size'       => $OBSOLETE,
            },
            'GtkHScale'         => {
                'policy'            => $OBSOLETE,
            },
            'GtkVScale'         => {
                'policy'            => $OBSOLETE,
            },
            'GtkHScrollbar'     => {
                'policy'            => $OBSOLETE,
            },
            'GtkVScrollbar'     => {
                'policy'            => $OBSOLETE,
            },
            'GtkHRuler'         => {
                'metric'            => $OBSOLETE,
            },
            'GtkVRuler'         => {
                'metric'            => $OBSOLETE,
            },
            'GtkHandleBox'      => {
                'shadow_type'       => 'shadow',
            },
            'GtkImage'          => {
                'image_width'       => $OBSOLETE,
                'image_height'      => $OBSOLETE,
                'image_visual'      => $OBSOLETE,
                'image_type'        => $OBSOLETE,
            },
            'GtkLabel'          => {
                'default_focus_target' => 'mnemonic_widget',
                'focus_target'      => 'mnemonic_widget',
            },
            'GtkLayout'         => {
                'area_width'        => 'width',
                'area_height'       => 'height',
            },
            'GtkList'           => {
                $WIDGET             => $BROKEN,
            },
            'GtkMenuBar'        => {
                'shadow_type'       => $OBSOLETE,
            },
            'GtkMenuItem'       => {
                'right_justify'     => $OBSOLETE,
            },
            'GtkNotebook'       => {
                'popup_enable'      => 'enable-popup',
            },
            'GtkOptionMenu'     => {
                'initial_choice'    => 'history',
            },
            'GtkPacker'         => {
                $WIDGET             => $REMOVED,
            },
            'GtkPixmap'         => {
                $WIDGET             => $DEPRECATED,
                $CONVERT_TO         => 'GtkImage',
            },
            'GtkPixmapMenuItem' => {
                $WIDGET             => $REMOVED,
            },
            'GtkRange'          => {
                'policy'            => 'update-policy',
            },
            'GtkSpinButton'     => {
                'snap'              => 'snap_to_ticks',
            },
            'GtkTable'          => {
                $CHILD              => {
                    'xpad'              => 'x_padding',
                    'ypad'              => 'y_padding',
                },
                'rows'              => 'n-rows',
                'columns'           => 'n-columns',
            },
            'GtkText'           => {
                $WIDGET             => $BROKEN,
            },
            'GtkToolbar'        => {
                'space_size'        => $OBSOLETE,
                'space_style'       => $OBSOLETE,
                'relief'            => $OBSOLETE,
                'tooltips'          => $OBSOLETE,
                'type'              => 'toolbar-style',
            },
            'GtkTree'           => {
                $WIDGET             => $BROKEN,
            },
            'GtkTreeItem'       => {
                $WIDGET             => $BROKEN,
            },
            'GtkWindow'         => {
                'auto_shrink'       => $OBSOLETE,
                'position'          => 'window-position',
            },
            'GnomeCalculator'   => {
                $WIDGET             => $REMOVED,
            },
            'GnomeDialog'       => {
                $WIDGET             => $DEPRECATED,
            },
            'GnomeDruidPageStandard' => {
                'title_color'       => 'title_foreground',
                'background_color'  => 'background',
                'logo_background_color' => 'logo_background',
                'logo_image'        => 'logo',
            },
            'GnomeEntry'        => {
                'max_saved'         => $OBSOLETE,
            },
            'GnomeFileEntry'    => {
                'max_saved'         => $OBSOLETE,
                'directory'         => 'directory_entry',
                'title'             => 'browse_dialog_title',
            },
            'GnomeFontPicker'   => {
                'use_font_size'     => 'label-font-size',
                'use_font'           => 'use-font-in-label',
            },



( run in 0.611 second using v1.01-cache-2.11-cpan-39bf76dae61 )