int main(int argc, char **argv) { #ifdef NS_TRACE_MALLOC argc = NS_TraceMallocStartupArgs(argc, argv); #endif gtk_set_locale(); gtk_init(&argc, &argv); #ifdef MOZ_JPROF setupProfilingStuff(); #endif char *home_path; char *full_path; home_path = PR_GetEnv("HOME"); if (!home_path) { fprintf(stderr, "Failed to get HOME\n"); exit(1); } full_path = g_strdup_printf("%s/%s", home_path, ".TestGtkEmbed"); gtk_moz_embed_set_profile_path(full_path, "TestGtkEmbed"); TestGtkBrowser *browser = new_gtk_browser(GTK_MOZ_EMBED_FLAG_DEFAULTCHROME); // set our minimum size gtk_widget_set_usize(browser->mozEmbed, 400, 400); set_browser_visibility(browser, TRUE); if (argc > 1) gtk_moz_embed_load_url(GTK_MOZ_EMBED(browser->mozEmbed), argv[1]); // get the singleton object and hook up to its new window callback // so we can create orphaned windows. GtkMozEmbedSingle *single; single = gtk_moz_embed_single_get(); if (!single) { fprintf(stderr, "Failed to get singleton embed object!\n"); exit(1); } gtk_signal_connect(GTK_OBJECT(single), "new_window_orphan", GTK_SIGNAL_FUNC(new_window_orphan_cb), NULL); gtk_main(); }
WebBrowserObject::WebBrowserObject(const char *name): GUI_Widget(name, 0, 0, 0, 0) { type = TYPE_WEBBROWSER; status = 0; mozilla = 0; toplevel = 0; location = 0; loadPercent = 0; bytesLoaded = 0; maxBytesLoaded = 0; toolbar_flag = 1; char *mhome = getenv("HOME"); char *muser = (char*)systemObject->configGetValue("user_name","lmbox"); char *mpath = g_strdup_printf("%s/%s", mhome ? mhome : "/tmp", ".mozilla"); gtk_moz_embed_set_profile_path(mpath, muser); MemberFunctionProperty < WebBrowserObject > *mp; mp = new MemberFunctionProperty < WebBrowserObject > ("location", this, &WebBrowserObject::pget_Location, &WebBrowserObject::pset_Location, false); AddProperty(mp); mp = new MemberFunctionProperty < WebBrowserObject > ("status", this, &WebBrowserObject::pget_Status, NULL, false); AddProperty(mp); mp = new MemberFunctionProperty < WebBrowserObject > ("version", this, &WebBrowserObject::pget_Version, NULL, false); AddProperty(mp); MemberMethodHandler < WebBrowserObject > *mh; mh = new MemberMethodHandler < WebBrowserObject > ("data", this, 1, &WebBrowserObject::m_Data); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("back", this, 0, &WebBrowserObject::m_Back); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("open", this, 0, &WebBrowserObject::m_Open); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("stop", this, 0, &WebBrowserObject::m_Stop); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("forward", this, 0, &WebBrowserObject::m_Forward); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("reload", this, 0, &WebBrowserObject::m_Reload); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("refresh", this, 0, &WebBrowserObject::m_Refresh); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("close", this, 0, &WebBrowserObject::m_Close); AddMethod(mh); mh = new MemberMethodHandler < WebBrowserObject > ("event", this, 2, &WebBrowserObject::m_Event); AddMethod(mh); }
/** * Initialise the engine (must be called AFTER gtk_init()) * * @param config - the config container in use */ void GeckoEmbed::init(ConfigContainer config) { // Set the environment Environment env; string configProfilePath = env.getUserGeckoProfilePath(); string configProfileName = "medes-gecko"; gtk_moz_embed_set_profile_path(configProfilePath.c_str(),configProfileName.c_str()); GtkMozEmbed *mozEmbed = GTK_MOZ_EMBED(gtk_moz_embed_new()); gtk_moz_embed_set_chrome_mask(mozEmbed, GTK_MOZ_EMBED_FLAG_ALLCHROME); // Attach to functors gtk_signal_connect(GTK_OBJECT(mozEmbed), "open_uri", GTK_SIGNAL_FUNC(&GeckoEmbed::open_uri_cb), this); gtk_signal_connect(GTK_OBJECT(mozEmbed), "progress", GTK_SIGNAL_FUNC(&GeckoEmbed::progress_change_cb), this); gtk_signal_connect(GTK_OBJECT(mozEmbed), "net_start", GTK_SIGNAL_FUNC(&GeckoEmbed::load_started_cb), this); gtk_signal_connect(GTK_OBJECT(mozEmbed), "net_stop", GTK_SIGNAL_FUNC(&GeckoEmbed::load_finished_cb), this); // Initial object configuration setMozEmbed(mozEmbed); setConfig(config); setUrl(config.getAppUrl()); dataSize = 0; status = NULL; }
extern "C" void gecko_utils_init(void) { if (!g_thread_supported()) g_thread_init(NULL); nsresult rv; #ifdef XPCOM_GLUE NS_LogInit(); static const GREVersionRange greVersion = { "1.9a", PR_TRUE, "1.9.*", PR_TRUE }; char xpcomLocation[4096]; rv = GRE_GetGREPathWithProperties(&greVersion, 1, nsnull, 0, xpcomLocation, 4096); if (NS_FAILED (rv)) { g_warning ("Could not determine locale!\n"); return; } // Startup the XPCOM Glue that links us up with XPCOM. rv = XPCOMGlueStartup(xpcomLocation); if (NS_FAILED (rv)) { g_warning ("Could not determine locale!\n"); return; } rv = GTKEmbedGlueStartup(); if (NS_FAILED (rv)) { g_warning ("Could not startup embed glue!\n"); return; } rv = GTKEmbedGlueStartupInternal(); if (NS_FAILED (rv)) { g_warning ("Could not startup embed glue (internal)!\n"); return; } char *lastSlash = strrchr(xpcomLocation, '/'); if (lastSlash) *lastSlash = '\0'; gtk_moz_embed_set_path(xpcomLocation); #else gtk_moz_embed_set_comp_path(GECKO_LIB_ROOT); #endif gchar *profile_dir = g_build_filename(g_get_home_dir(), ".chmsee", NULL); gtk_moz_embed_set_profile_path(profile_dir, "mozilla"); g_free(profile_dir); gtk_moz_embed_push_startup(); gecko_utils_init_prefs(); }
extern "C" gboolean gecko_init (void) { d("gecko_init()\n"); nsresult rv; #ifdef HAVE_GECKO_1_9 NS_LogInit (); #endif #ifdef XPCOM_GLUE static const GREVersionRange greVersion = { "1.9a", PR_TRUE, "2.0", PR_TRUE, }; char xpcomLocation[4096]; d("init XPCOM_GLUE\n"); rv = GRE_GetGREPathWithProperties( &greVersion, 1, nsnull, 0, xpcomLocation, 4096); if (NS_FAILED (rv)) { g_warning ("Could not determine locale!\n"); return FALSE; } // Startup the XPCOM Glue that links us up with XPCOM. rv = XPCOMGlueStartup(xpcomLocation); if (NS_FAILED (rv)) { g_warning ("Could not determine locale!\n"); return FALSE; } rv = GTKEmbedGlueStartup(); if (NS_FAILED (rv)) { g_warning ("Could not startup glue!\n"); return FALSE; } rv = GTKEmbedGlueStartupInternal(); if (NS_FAILED (rv)) { g_warning ("Could not startup internal glue!\n"); return FALSE; } char *lastSlash = strrchr(xpcomLocation, '/'); if (lastSlash) *lastSlash = '\0'; gtk_moz_embed_set_path(xpcomLocation); #else d(g_print("doing old gecko init\n")); #ifdef HAVE_GECKO_1_9 gtk_moz_embed_set_path (GECKO_HOME); #else gtk_moz_embed_set_comp_path (GECKO_HOME); #endif d("end gecko init()\n"); #endif /* XPCOM_GLUE */ d("load gecko prefs\n"); gchar *profile_dir = g_build_filename ( g_get_home_dir (), ".evolution", "mail", "rss", NULL); gtk_moz_embed_set_profile_path (profile_dir, "mozembed-rss"); g_free (profile_dir); d("embed push startup()\n"); gtk_moz_embed_push_startup (); nsCOMPtr<nsIPrefService> prefService ( do_GetService (NS_PREFSERVICE_CONTRACTID, &rv)); NS_ENSURE_SUCCESS (rv, FALSE); rv = CallQueryInterface (prefService, &gPrefBranch); NS_ENSURE_SUCCESS (rv, FALSE); d("finished all gecko init\n"); return TRUE; }