[Shellweb-main] =?Big5?B?w/ap87nPpPm40cTAsN3DRA==?=
Status: Alpha
Brought to you by:
alexe_cn
|
From: Anthony WU <ant...@gm...> - 2005-12-25 16:27:11
|
現在所使用的 my $buffer=Gtk2::TextBuffer->new(); 不支援圖片顯示,估計要重寫
我暫時的圖片解釋概念代碼是這樣
##################################
use Gtk2 -init;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new ();
$ua->timeout (30);
my @question_xpm = (
'24 24 12 1',
' c Black',
'. c #b2b2b2',
'X c Gray100',
'o c #808080',
'O c #c0c0c0',
'+ c #008000',
'@ c Green',
'# c Blue',
'$ c Red',
'% c Cyan',
'& c Magenta',
'* c #000080',
' .',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXX oXXXXXXXX.',
' XXX XXXXXXXXXooXXXXXXX.',
' XXX XOOOOOOOOoXoXXXXXX.',
' XXX XOOO++OOOoXXoXXXXX.',
' XXX XOO+@+ OO XXXXX.',
' XXX XOO+++ OOOOX XXXXX.',
' XXX XOOO OOOOOX XXXXX.',
' XXX XOOOOOO### XXXXXXX.',
' XXX XO$OOOO#%# XXXXXXX.',
' XXX XO&$OOO##*XXXXXXXX.',
' XXX XO&&$OO XXX XXXXX.',
' XXX XO&&&$OXXXOX XXXXX.',
' XXX XO XXXXXOX XXXXX.',
' XXX XOOXXXXXOOOX XXXXX.',
' XXX XXXXXXXXXXXX XXXXX.',
' XXX XXXXXX XXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' XXXXXXXXXXXXXXXXXXXXXX.',
' .......................');
my $pixbuf_from_xpm_data = Gtk2::Gdk::Pixbuf->new_from_xpm_data
(@question_xpm);
$dlg = Gtk2::Dialog->new ();
my $hbox = Gtk2::HBox->new ();
my $entry = Gtk2::Entry->new ();
$entry->set_text ('http://www.perl.com/images/75-logo.jpg');
$hbox->pack_start ($entry, 1, 1, 0);
my $button = Gtk2::Button->new_from_stock ('gtk-apply');
$button->can_focus (0);
$button -> signal_connect ('released', \&get_url_content);
$hbox->pack_start ($button, 0, 0, 0);
$dlg->vbox->add ($hbox);
$dlg->add_button ('gtk-close' => 'close');
$dlg->show_all ();
$dlg->run ();
sub getimg
{
my $file = shift;
my $a;
eval ('$a = Gtk2::Gdk::Pixbuf->new_from_file ($file);');
if ($@)
{
return $pixbuf_from_xpm_data;
} else {
return $a;
}
}
sub get_url_content
{
my $url = $entry->get_text ();
my $resp = $ua->get ($url);
unless ($resp->is_success ())
{
my $error_dialog = Gtk2::MessageDialog->new (undef, 'modal', 'error',
'close', 'File not found!');
if ($error_dialog->run ())
{
$error_dialog->destroy ();
}
return ;
}
my $file = $resp->content;
$url = unpack ('H*', $url);
$url =~ s/(..)/\%$1/g;
open (my $FILE, '>', $url);
binmode ($FILE);
print $FILE $file;
close ($FILE);
$dlg->vbox->add (Gtk2::Image->new_from_pixbuf (&getimg ($url)));
$dlg->show_all;
return ;
}
##################################
#提外話,為什麼不直接使用 Tk 模組呢?
|