dmose%mozilla.org 0efb7c174c updated xPL license boilerplate to v1.1, a=chofmann@netscape.com,r=endico@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@52910 18797224-902f-48f8-a5cc-f745e15eee43
1999-11-06 03:43:54 +00:00

232 lines
6.4 KiB
C

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is this file, released
* May 28, 1999.
*
* The Initial Developer of the Original Code is Alexander
* Larsson. Portions created by Alexander Larsson are
* Copyright (C) 1999 Alexander Larsson. All
* Rights Reserved.
*
* Contributor(s):
*/
#include <gtk/gtk.h>
#include <gtkmozilla.h>
struct browser {
GtkMozilla *mozilla;
GtkWidget *window;
GtkWidget *back_button;
GtkWidget *forward_button;
GtkWidget *url_entry;
};
static void
set_buttons(struct browser *browser)
{
gtk_widget_set_sensitive(browser->back_button,
gtk_mozilla_can_back(browser->mozilla));
gtk_widget_set_sensitive(browser->forward_button,
gtk_mozilla_can_forward(browser->mozilla));
}
static gint configure_event_after(GtkWidget *window,
GdkEvent *event,
GtkMozilla *moz)
{
GtkAllocation *alloc;
alloc = &GTK_WIDGET(moz)->allocation;
gtk_mozilla_resize(moz, alloc->width, alloc->height);
return 1;
}
static gint will_load_url(GtkWidget *mozilla,
const char *url,
GtkMozillaLoadType load_type,
struct browser *browser)
{
printf("will_load_url(%s, %d)\n", url, load_type);
return 1; /* Return 0 if you don't want to load this url */
}
static void begin_load_url(GtkWidget *mozilla,
const char *url,
struct browser *browser)
{
printf("begin_load_url(%s)\n", url);
gtk_entry_set_text(GTK_ENTRY(browser->url_entry), url);
set_buttons(browser);
}
static void end_load_url(GtkMozilla *mozilla,
const gchar *url,
gint status)
{
printf("end_load_url(%s, %d)\n", url, status);
}
static void back_clicked(GtkWidget *button,
gpointer arg)
{
GtkMozilla *moz = GTK_MOZILLA(arg);
gtk_mozilla_back(moz);
}
static void forward_clicked(GtkWidget *button,
gpointer arg)
{
GtkMozilla *moz = GTK_MOZILLA(arg);
gtk_mozilla_forward(moz);
}
static void stream_clicked(GtkWidget *button,
gpointer arg)
{
char buf[] = "<html><body>testing <a href=\"test.html\">HTML</a> streaming...</body></html>";
GtkMozilla *moz = GTK_MOZILLA(arg);
int c,i,size;
gtk_mozilla_stream_start_html(moz, "file://dummy/url/");
size = sizeof(buf);
i = 0;
while (size>0) {
c = gtk_mozilla_stream_write(moz, &buf[i], 0, size-1);
size -= c;
i += c;
}
gtk_mozilla_stream_end(moz);
}
static void url_activate(GtkWidget *entry,
gpointer arg)
{
const char *str;
GtkMozilla *moz = GTK_MOZILLA(arg);
str = gtk_entry_get_text(GTK_ENTRY(entry));
printf("url_activate: %s\n", str);
gtk_mozilla_load_url(moz, str);
}
int main( int argc,
char *argv[] )
{
static GtkWidget *window = NULL;
GtkWidget *hbox;
GtkWidget *vbox;
GtkWidget *back_button;
GtkWidget *forward_button;
GtkWidget *url_entry;
GtkWidget *stream_button;
GtkWidget *mozilla;
struct browser browser;
/* Initialise GTK */
gtk_set_locale ();
gtk_init (&argc, &argv);
gdk_rgb_init();
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size( GTK_WINDOW(window), 300, 300);
gtk_window_set_title(GTK_WINDOW(window), "Simple GtkMozilla browser");
gtk_signal_connect (GTK_OBJECT (window), "destroy",
GTK_SIGNAL_FUNC(gtk_main_quit),
NULL);
vbox = gtk_vbox_new (FALSE, 5);
gtk_container_add (GTK_CONTAINER (window), vbox);
gtk_widget_show(vbox);
hbox = gtk_hbox_new (FALSE, 5);
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
back_button = gtk_button_new_with_label("Back");
gtk_box_pack_start (GTK_BOX (hbox), back_button, FALSE, FALSE, 0);
gtk_widget_show(back_button);
forward_button = gtk_button_new_with_label("Forward");
gtk_box_pack_start (GTK_BOX (hbox), forward_button, FALSE, FALSE, 0);
gtk_widget_show(forward_button);
url_entry = gtk_entry_new();
gtk_box_pack_start (GTK_BOX (hbox), url_entry, TRUE, TRUE, 0);
gtk_widget_show(url_entry);
stream_button = gtk_button_new_with_label("Test Stream");
gtk_box_pack_start (GTK_BOX (hbox), stream_button, FALSE, FALSE, 0);
gtk_widget_show(stream_button);
gtk_widget_show(hbox);
mozilla = gtk_mozilla_new();
gtk_box_pack_start (GTK_BOX (vbox), mozilla, TRUE, TRUE, 0);
gtk_widget_show_all(mozilla);
gtk_widget_show(window);
browser.mozilla = GTK_MOZILLA(mozilla);
browser.window = window;
browser.back_button = back_button;
browser.forward_button = forward_button;
browser.url_entry = url_entry;
gtk_signal_connect_after(GTK_OBJECT (window), "configure_event",
(GtkSignalFunc) configure_event_after,
mozilla);
gtk_signal_connect(GTK_OBJECT (mozilla), "will_load_url",
(GtkSignalFunc) will_load_url,
&browser);
gtk_signal_connect(GTK_OBJECT (mozilla), "begin_load_url",
(GtkSignalFunc) begin_load_url,
&browser);
gtk_signal_connect(GTK_OBJECT (mozilla), "end_load_url",
(GtkSignalFunc) end_load_url,
&browser);
gtk_signal_connect(GTK_OBJECT (back_button), "clicked",
(GtkSignalFunc) back_clicked,
mozilla);
gtk_signal_connect(GTK_OBJECT (url_entry), "activate",
(GtkSignalFunc) url_activate,
mozilla);
gtk_signal_connect(GTK_OBJECT (forward_button), "clicked",
(GtkSignalFunc) forward_clicked,
mozilla);
gtk_signal_connect(GTK_OBJECT (stream_button), "clicked",
(GtkSignalFunc) stream_clicked,
mozilla);
set_buttons(&browser);
gtk_main ();
return(0);
}