#!/usr/bin/perl
#
# $Id$
#
use Gtk2::TestHelper
at_least_version => [2, 4, 0, 'GtkIconTheme is new in 2.4'],
tests => 17;
my $icon_theme = Gtk2::IconTheme->new;
isa_ok ($icon_theme, 'Gtk2::IconTheme');
$icon_theme = Gtk2::IconTheme->get_default;
isa_ok ($icon_theme, 'Gtk2::IconTheme');
$icon_theme = Gtk2::IconTheme->get_for_screen (Gtk2::Gdk::Screen->get_default);
isa_ok ($icon_theme, 'Gtk2::IconTheme');
$icon_theme->set_screen (Gtk2::Gdk::Screen->get_default);
my @icons = $icon_theme->list_icons (undef);
# @icons can be anything, even empty
ok (!$icon_theme->has_icon ('something crazy'));
my $icon_info = $icon_theme->lookup_icon ('stock_edit', 24, 'use-builtin');
SKIP: {
skip 'lookup_icon returned undef, skipping the rest', 5
unless defined $icon_info;
isa_ok ($icon_info, 'Gtk2::IconInfo');
my $pixbuf = $icon_theme->load_icon ('stock_edit', 24, 'use-builtin');
isa_ok ($pixbuf, 'Gtk2::Gdk::Pixbuf');
isa_ok ($icon_info->load_icon, 'Gtk2::Gdk::Pixbuf');
ok (defined $icon_info->get_base_size);
like ($icon_info->get_filename, qr/stock_edit/);
# FIXME:
# isa_ok ($icon_info->get_builtin_pixbuf, 'Gtk2::Gdk::Pixbuf');
# isa_ok($icon_info->get_embedded_rect, 'Gtk2::Gdk::Rectangle');
# warn $icon_info->get_attach_points;
# warn $icon_info->get_display_name;
$icon_info->set_raw_coordinates (1);
$icon_theme->add_builtin_icon ('stock_edit', 24, $pixbuf);
}
SKIP: {
skip 'new 2.6 stuff', 1
unless Gtk2->CHECK_VERSION (2, 6, 0);
my @sizes = $icon_theme->get_icon_sizes ('stock_edit');
skip 'get_icon_sizes returned empty, can not test them', 1
unless (@sizes);
# -1 means scalable
like ($sizes[0], qr/^(?:-1|\d+)$/);
}
SKIP: {
skip 'new 2.12 stuff', 1
unless Gtk2->CHECK_VERSION (2, 12, 0);
my @contexts = $icon_theme->list_contexts;
# @contexts might be undef and can contain anything
my $info = $icon_theme->choose_icon (['gtk-bla', 'gtk-cancel'], 24, 'use-builtin');
isa_ok ($info, 'Gtk2::IconInfo');
}
my @paths = qw(/tmp /etc /home);
$icon_theme->set_search_path (@paths);
is_deeply ([$icon_theme->get_search_path], \@paths);
$icon_theme->append_search_path ('/usr/local/tmp');
push @paths, '/usr/local/tmp';
is_deeply ([$icon_theme->get_search_path], \@paths);
$icon_theme->prepend_search_path ('/usr/tmp');
unshift @paths, '/usr/tmp';
is_deeply ([$icon_theme->get_search_path], \@paths);
# cannot call set_custom_theme on a default theme
$icon_theme = Gtk2::IconTheme->new;
$icon_theme->set_custom_theme ('crazy custom theme');
$icon_theme->set_custom_theme (undef);
# Ignore result. Might be anything, including undef.
$icon_theme->get_example_icon_name;
ok (!$icon_theme->rescan_if_needed);
SKIP: {
skip 'new 2.14 stuff', 2
unless Gtk2->CHECK_VERSION(2, 14, 0);
skip 'unable to find the stock_edit icon', 2
unless defined $icon_theme->lookup_icon ('stock_edit', 24, 'use-builtin');
my $pixbuf = $icon_theme->load_icon ('stock_edit', 24, 'use-builtin');
isa_ok (Gtk2::IconInfo->new_for_pixbuf ($icon_theme, $pixbuf),
'Gtk2::IconInfo');
like ($icon_info->get_filename (), qr/stock_edit/);;
}
__END__
Copyright (C) 2003-2005 by the gtk2-perl team (see the file AUTHORS for the
full list). See LICENSE for more information.