Index: WebCore/Projects/gdk/webcore-gdk.bkl =================================================================== --- WebCore/Projects/gdk/webcore-gdk.bkl (revision 21182) +++ WebCore/Projects/gdk/webcore-gdk.bkl (working copy) @@ -60,6 +60,7 @@ platform/gdk/FontGdk.cpp platform/gdk/FontPlatformDataGdk.cpp platform/gdk/FrameGdk.cpp + platform/gdk/FrameGdkSignals.cpp platform/gdk/GlyphPageTreeNodeGdk.cpp platform/gdk/KeyEventGdk.cpp platform/gdk/MimeTypeRegistryGdk.cpp Index: WebCore/loader/gdk/FrameLoaderClientGdk.cpp =================================================================== --- WebCore/loader/gdk/FrameLoaderClientGdk.cpp (revision 21182) +++ WebCore/loader/gdk/FrameLoaderClientGdk.cpp (working copy) @@ -36,6 +36,7 @@ #include "NotImplementedGdk.h" #include "PlatformString.h" #include "ResourceRequest.h" +#include "FrameGdkSignals.h" #include namespace WebCore { @@ -44,6 +45,7 @@ FrameLoaderClientGdk::FrameLoaderClientG : m_frame(0) , m_firstData(false) { + m_framesignals = FrameGdkSignals_new(); } Frame* FrameLoaderClientGdk::frame() @@ -51,6 +53,11 @@ Frame* FrameLoaderClientGdk::frame() return static_cast(m_frame); } +FrameGdkSignals* FrameLoaderClientGdk::framesignals() +{ + return static_cast(m_framesignals); +} + String FrameLoaderClientGdk::userAgent(const KURL&) { return "Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/420+ (KHTML, like Gecko)"; @@ -103,17 +110,26 @@ void FrameLoaderClientGdk::assignIdentif void FrameLoaderClientGdk::postProgressStartedNotification() { - // no progress notification for now + if(!m_frame || !m_frame->page() || !m_framesignals) + return; + + g_signal_emit_by_name (framesignals(), "load-started"); } void FrameLoaderClientGdk::postProgressEstimateChangedNotification() { - // no progress notification for now + if(!m_frame || !m_frame->page()) + return; + + g_signal_emit_by_name (framesignals(), "load-changed"); } void FrameLoaderClientGdk::postProgressFinishedNotification() { - // no progress notification for now + if(!m_frame || !m_frame->page()) + return; + + g_signal_emit_by_name (framesignals(), "load-finished"); } void FrameLoaderClientGdk::frameLoaderDestroyed() Index: WebCore/loader/gdk/FrameLoaderClientGdk.h =================================================================== --- WebCore/loader/gdk/FrameLoaderClientGdk.h (revision 21182) +++ WebCore/loader/gdk/FrameLoaderClientGdk.h (working copy) @@ -32,6 +32,7 @@ #include "FrameLoaderClient.h" #include "ResourceResponse.h" +#include "FrameGdkSignals.h" namespace WebCore { @@ -40,11 +41,13 @@ namespace WebCore { class FrameLoaderClientGdk : public FrameLoaderClient { public: FrameLoaderClientGdk(); - virtual ~FrameLoaderClientGdk() { } + virtual ~FrameLoaderClientGdk() { g_object_unref(m_framesignals);} virtual void frameLoaderDestroyed(); void setFrame(FrameGdk *frame) { m_frame = frame; } Frame* frame(); + FrameGdkSignals* framesignals(); + virtual bool hasWebView() const; virtual bool hasFrameView() const; @@ -179,6 +182,7 @@ namespace WebCore { private: FrameGdk *m_frame; ResourceResponse m_response; + FrameGdkSignals *m_framesignals; bool m_firstData; }; Index: WebCore/platform/gdk/FrameGdkSignals.cpp =================================================================== --- WebCore/platform/gdk/FrameGdkSignals.cpp (revision 0) +++ WebCore/platform/gdk/FrameGdkSignals.cpp (revision 0) @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2007 Nazar Kulyk schamane@myeburg.net + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "FrameGdkSignals.h" + +namespace WebCore { + +void FrameGdkSignalsClassInit(FrameGdkSignalsClass *klass) +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS(klass); + /* creates signals */ + frameGdkSignals[FRAMEGDK_SIGNAL_START] = + g_signal_new( + "load-started", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + frameGdkSignals[FRAMEGDK_SIGNAL_PROGRESS] = + g_signal_new( + "load-changed", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); + frameGdkSignals[FRAMEGDK_SIGNAL_FINISH] = + g_signal_new( + "load-finished", + G_TYPE_FROM_CLASS(klass), + G_SIGNAL_RUN_FIRST, + 0, + NULL, + NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, + 0); +} + +GType FrameGdkSignalsGetType() +{ +static GType frameGdkSignalsType=0; + + if (!frameGdkSignalsType) { + static const GTypeInfo frameGdkSignalsInfo = + { + sizeof(FrameGdkSignalsClass), + NULL, + NULL, + (GClassInitFunc)FrameGdkSignalsClassInit, + NULL, + NULL, + sizeof(FrameGdkSignals), + 0, + NULL, + }; + + frameGdkSignalsType = g_type_register_static( + G_TYPE_OBJECT, + "FrameGdkSignals", + &frameGdkSignalsInfo, + //FIXME: should probably be G_TYPE_FLAG_ABSTRACT + (GTypeFlags)0 + ); + } + + return frameGdkSignalsType; +} + +FrameGdkSignals *FrameGdkSignals_new() +{ + FrameGdkSignals *frameGdkSignals; + + frameGdkSignals = G_FRAMEGDK_SIGNALS(g_object_new(G_TYPE_FRAMEGDK_SIGNALS, NULL)); + + return frameGdkSignals; +} + +} + Index: WebCore/platform/gdk/FrameGdkSignals.h =================================================================== --- WebCore/platform/gdk/FrameGdkSignals.h (revision 0) +++ WebCore/platform/gdk/FrameGdkSignals.h (revision 0) @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2007 Nazar Kulyk schamane@myeburg.net + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#ifndef FramegdkSignals_h +#define FramegdkSignals_h + +#include +#include + + +#define G_TYPE_FRAMEGDK_SIGNALS FrameGdkSignalsGetType() +#define G_FRAMEGDK_SIGNALS(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), G_TYPE_FRAMEGDK_SIGNALS, FrameGdkSignals) + + +typedef struct _FrameGdkSignals +{ + GObject parent_instance; +} FrameGdkSignals; + +typedef struct _FrameGdkSignalsClass +{ + GObjectClass parent_class; + //void (* gtk_sig_object_clicked) (FrameGdkSignals * frameGdkSignals); +} FrameGdkSignalsClass; + +namespace WebCore { + + enum { + FRAMEGDK_SIGNAL_START, + FRAMEGDK_SIGNAL_PROGRESS, + FRAMEGDK_SIGNAL_FINISH, + FRAMEGDK_LAST_SIGNAL + }; + + static gint frameGdkSignals[FRAMEGDK_LAST_SIGNAL] = { 0 }; + + FrameGdkSignals *FrameGdkSignals_new(); +} + +#endif // FramegdkSignals_h Index: WebKitTools/GdkLauncher/main.cpp =================================================================== --- WebKitTools/GdkLauncher/main.cpp (revision 21182) +++ WebKitTools/GdkLauncher/main.cpp (working copy) @@ -12,6 +12,8 @@ #include "Page.h" #include "PlatformString.h" #include "ResourceHandleManager.h" +#include "CString.h" +#include "FrameGdkSignals.h" #if SVG_SUPPORT #include "SVGNames.h" @@ -115,6 +117,21 @@ static void menuMainQuitCallback(gpointe gtk_main_quit(); } +static void loadFinishedCallback(gpointer data) +{ + printf("****************** DONE !!!! ************\n"); +} + +static void loadStartedCallback(gpointer data) +{ + printf("****************** START !!!! ************\n"); +} + +static void loadChangedCallback(gpointer data) +{ + gtk_entry_set_text(GTK_ENTRY(gURLBarEntry), gFrame->loader()->url().url().latin1()); +} + int main(int argc, char* argv[]) { gtk_init(&argc, &argv); @@ -207,7 +224,12 @@ int main(int argc, char* argv[]) gFrame->setView(frameView); frameView->ScrollView::setDrawable(frameWindow->window); + g_signal_connect(G_OBJECT(frameLoaderClient->framesignals()), "load-started", G_CALLBACK(loadStartedCallback), NULL); + g_signal_connect(G_OBJECT(frameLoaderClient->framesignals()), "load-finished", G_CALLBACK(loadFinishedCallback), NULL); + g_signal_connect(G_OBJECT(frameLoaderClient->framesignals()), "load-changed", G_CALLBACK(loadChangedCallback), NULL); + gFrame->loader()->load(ResourceRequest(url)); + gtk_main(); #if 0 // FIXME: this crashes at the moment. needs to provide DragClient delete page;