Hi,

I don't really know much about wxWidgets, but I'm guessing the problem
is from this call:

rv = baseWindow->InitWindow(frame, 0, 0, 0, 300, 400);

InitWindow should get a native pointer/handler to the parent window.
For ubuntu I believe this should be a Gtk window handle. Maybe there
is a way to get that from the wxWidgets frame?

Hope this helps,

 -Pelle

On Jul 4, 4:55 am, "amith raravi" <[EMAIL PROTECTED]> wrote:
> Hi everyone.
>
> I have been trying to write a sample code for embedding mozilla in
> wxWidgets.
> I dont seem to be able to embed Mozilla even though i follow all the steps
> given 
> inhttp://developer.mozilla.org/en/docs/XPCOM_Glueandhttp://developer.mozilla.org/en/docs/GRE
> I am running Ubuntu 8.04.
>
> Code:
>
> #include "wx/wxprec.h"
>
> #ifdef __BORLANDC__
>     #pragma hdrstop
> #endif
>
> #ifndef WX_PRECOMP
>     #include "wx/wx.h"
> #endif
>
> #define XPCOM_GLUE
>
> #include "xpcom-config.h"
> #include "nsXPCOMGlue.h"
> #include "nsDebug.h"
> #include "nsCOMPtr.h"
> #include "widget/nsIBaseWindow.h"
> #include "nsILocalFile.h"
> #include "nsIWebBrowser.h"
> #include "docshell/nsIWebNavigation.h"
> #include "nsEmbedCID.h"
> #include "nsEmbedString.h"
> #include "xulapp/nsXULAppAPI.h"
> #include "nsComponentManagerUtils.h"
>
> #define wxCSTR wxString::FromAscii
>
> XRE_InitEmbeddingType XRE_InitEmbedding;
> XRE_TermEmbeddingType XRE_TermEmbedding;
>
> class MyApp : public wxApp
> {
> public:
>     virtual bool OnInit();
>
> };
>
> class MyFrame : public wxFrame
> {
> public:
>     MyFrame(const wxString& title);
>
>     void OnQuit(wxCommandEvent& event);
>     void OnAbout(wxCommandEvent& event);
>
> private:
>     DECLARE_EVENT_TABLE()
>
> };
>
> enum
> {
>     Minimal_Quit = wxID_EXIT,
>
>     Minimal_About = wxID_ABOUT
>
> };
>
> BEGIN_EVENT_TABLE(MyFrame, wxFrame)
>     EVT_MENU(Minimal_Quit,  MyFrame::OnQuit)
>     EVT_MENU(Minimal_About, MyFrame::OnAbout)
> END_EVENT_TABLE()
>
> IMPLEMENT_APP(MyApp)
>
> bool MyApp::OnInit()
> {
>     if ( !wxApp::OnInit() )
>         return false;
>     MyFrame *frame = new MyFrame(wxCSTR("Minimal wxWidgets App"));
>     SetTopWindow(frame);
>     frame->Show(true);
>
>     nsCOMPtr<nsIBaseWindow> baseWindow;
>     nsCOMPtr<nsIWebBrowser> webBrowser;
>     nsCOMPtr<nsILocalFile> libxul;
>     nsCOMPtr<nsILocalFile> appDir;
>     nsCOMPtr<nsIWebNavigation> webNavigation;
>     nsDynamicFunctionLoad nsFuncs[] = { {"XRE_InitEmbedding",
> (NSFuncPtr*)&XRE_InitEmbedding},
>                                         {"XRE_TermEmbedding",
> (NSFuncPtr*)&XRE_TermEmbedding},
>                                         {0, 0} };
>     nsresult rv;
>     rv = XPCOMGlueStartup("/home/raravi/xulrunner-sdk/bin/libxpcom.so");
>     if (NS_FAILED(rv))
>     {
>         printf("XPCOMGlueStartup\n");
>     }
>     rv = XPCOMGlueLoadXULFunctions(nsFuncs);
>     if (NS_FAILED(rv))
>     {
>         printf("XPCOMGlueLoadXULFunctions\n");
>     }
>     rv = NS_NewNativeLocalFile(
> nsEmbedCString("/home/raravi/xulrunner-sdk/bin"), PR_FALSE,
>                                 getter_AddRefs(libxul));
>     if (NS_FAILED(rv))
>     {
>         printf("NS_NewNativeLocalFile\n");
>     }
>     rv = NS_NewNativeLocalFile(
> nsEmbedCString("/home/raravi/NetBeansProjects/wxXULTest/dist/Debug/GNU-Linux-x86"),
>                                 PR_FALSE, getter_AddRefs(appDir));
>     if(NS_FAILED(rv))
>     {
>         printf("NS_NewNativeLocalFile\n");
>     }
>     rv = XRE_InitEmbedding(libxul, appDir, 0, 0, 0);
>     if (NS_FAILED(rv))
>     {
>         printf("XRE_InitEmbedding\n");
>     }
>     webBrowser = do_CreateInstance(NS_WEBBROWSER_CONTRACTID, &rv);
>     if (NS_FAILED(rv))
>     {
>         printf("do_CreateInstance webBrowser\n");
>     }
>     baseWindow = do_QueryInterface(webBrowser);
>     rv = baseWindow->InitWindow(frame, 0, 0, 0, 300, 400);
>     if (NS_FAILED(rv))
>     {
>         printf("InitWindow\n");
>     }
>     rv = baseWindow->Create();
>     if (NS_FAILED(rv))
>     {
>         printf("Create\n");
>     }
>     rv =baseWindow->SetVisibility(PR_TRUE);
>     if (NS_FAILED(rv))
>     {
>         printf("SetVisibility\n");
>     }
>     webNavigation = do_QueryInterface(webBrowser);
>     rv = webNavigation->LoadURI(NS_LITERAL_STRING("http://mail.yahoo.com/
> ").get(),
>                                 nsIWebNavigation::LOAD_FLAGS_NONE, 0, 0, 0);
>     if (NS_FAILED(rv))
>     {
>         printf("LoadURI\n");
>     }
>
>     return true;
>
> }
>
> MyFrame::MyFrame(const wxString& title)
>        : wxFrame(NULL, wxID_ANY, title)
> {
>     wxMenu *fileMenu = new wxMenu;
>     wxMenu *helpMenu = new wxMenu;
>     wxMenuBar *menuBar = new wxMenuBar();
>     helpMenu->Append(Minimal_About, wxCSTR("&About...\tF1"), wxCSTR("Show
> about dialog"));
>     fileMenu->Append(Minimal_Quit, wxCSTR("E&xit\tAlt-X"), wxCSTR("Quit this
> program"));
>     menuBar->Append(fileMenu, wxCSTR("&File"));
>     menuBar->Append(helpMenu, wxCSTR("&Help"));
>     SetMenuBar(menuBar);
>     CreateStatusBar(2);
>     SetStatusText(wxCSTR("Welcome to wxWidgets!"));
>
> }
>
> void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
> {
>     XRE_TermEmbedding();
>     XPCOMGlueShutdown();
>     Close(true);
>
> }
>
> void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
> {
>     wxMessageBox(wxCSTR("This is the minimal wxWidgets sample\n"),
>                  wxCSTR("About wxWidgets minimal sample"),
>                  wxOK | wxICON_INFORMATION,
>                  this);
>
> }
>
> This code compiles and runs successfully. But when run, i dont see the
> embedded mozilla window...:-(
>
> Its as if i am running a normal wxWidgets app. What am i doing wrong?
>
> These are the cmds i use.
>
> g++ `wx-config --cppflags` -fshort-wchar    -c -g
> -I/home/raravi/xulrunner-sdk/sdk/include
> -I/home/raravi/xulrunner-sdk/include -o
> build/Debug/GNU-Linux-x86/_ext/home/raravi/NetBeansProjects/wxXULTest/wxXULTest.o
> /home/raravi/NetBeansProjects/wxXULTest/wxXULTest.cpp
>
> g++ `wx-config --cppflags` -fshort-wchar     `wx-config --libs` -o
> dist/Debug/GNU-Linux-x86/wxxultest
> build/Debug/GNU-Linux-x86/_ext/home/raravi/NetBeansProjects/wxXULTest/wxXULTest.o
> /home/raravi/xulrunner-sdk/lib/libxpcomglue.a
>
> Any help would be greatly appreciately.
>
> --
>
> The most successful people are those who are good at plan B
>
> rArAvi

_______________________________________________
dev-embedding mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-embedding

Reply via email to