create a php-gtk browser using GtkHTML

[email protected] (kksou)
Newsgroups php.gtk.general
Message-ID <[email protected]>
Hi,

I'm trying to come out with a sample code to illustrate the use of GtkHTML
by creating a simple php-gtk browser. The code is attached below.

The bullk of the code runs ok, except for the image loading part. Through
the signal 'url-requested', I managed to get the url of each image in the
signal handler.

In C, we would then do something like this:
        gtk_html_stream_write($stream, $img, strlen($img));

However, using the inspector, there's no GtkHTMLStream or similar method in
GtkHTML.
So, how do we load the image in GtkHTML? 

I've seen quite a number of postings in PHP-GTK-DEV between Alan and Andrei
titled "gtkhtml: yes - working!" But that was back in 2001, and I believe it
was for php-gtk1.

Was wondering if anyone has managed to get the image loading part to work
for GtkHTML, using the beta release of PHP-GTK2?

Regards,
/kksou

Note: the sample code below requires the beta release of PHP-GTK2

More details in:
http://www.kksou.com/php-gtk2/articles/create-a-php-gtk-browser-using-gtkhtml---Part-1.php

<?php
$window = new GtkWindow();
$window->set_title($argv[0]);
$window->set_size_request(800, 640);
$window->connect_simple('destroy', array('Gtk','main_quit'));
$window->add($vbox = new GtkVBox());

$hbox = new GtkHBox();
$vbox->pack_start($hbox, 0);

$hbox->pack_start(new GtkLabel('URL: '), 0);
$hbox->pack_start($url_entry = new GtkEntry('http://www.google.com'));
$hbox->pack_start($go_button = new GtkButton('Go'), 0);
$go_button->set_size_request(32, -1);

$scrolled_win = new GtkScrolledWindow();
$scrolled_win->set_policy( Gtk::POLICY_AUTOMATIC,Gtk::POLICY_AUTOMATIC);
$vbox->pack_start($scrolled_win);
$gtkhtml = new GtkHTML(); // note 1
$scrolled_win->add($gtkhtml);

$gtkhtml->connect('url-requested', 'on_url_requested'); // note 2

$url_entry->connect('activate', 'on_url_entry_activate', $go_button); //
note 3
$go_button->connect('clicked', 'on_go_button', $url_entry, $gtkhtml); //
note 4
$go_button->clicked();

$window->show_all();
Gtk::main();

function on_url_entry_activate($entry, $go_button) {
    $go_button->clicked(); // note 5
}

function on_go_button($button, $url_entry, $gtkhtml) {
    $url = $url_entry->get_text(); // note 6
    $html_text = file_get_contents($url); // note 7
    $gtkhtml->set_base($url);
    $gtkhtml->load_from_string($html_text); // note 8
}

function on_url_requested($gtkhtml, $url, $stream) {
    echo "image url = $url\n"; // note 9

    // load the image
    $handle = fopen($url, "rb");
    $img = '';
    while (!feof($handle)) {
        $img .= fread($handle, 8192);
    }
    fclose($handle);

    // in C, we would then do this
    // gtk_html_stream_write($stream, $img, strlen($img));
    // gtk_html_stream_close($stream, (strlen($img)<0) ?
    // Gtk::HTML_STREAM_ERROR:Gtk::HTML_STREAM_OK);
    // However, there's no GtkHTMLStream or similar method in GtkHTML.
    // So, how do we load the image in GtkHTML?
}

?>



-- 
View this message in context: http://www.nabble.com/create-a-php-gtk-browser-using-GtkHTML-tf4365215.html#a12442327
Sent from the Php - GTK - General mailing list archive at Nabble.com.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.