void WebBrowserObject::BrowserButtons(void) { gboolean can_go_back = gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(mozilla)); gboolean can_go_forward = gtk_moz_embed_can_go_forward(GTK_MOZ_EMBED(mozilla)); gtk_widget_set_sensitive(backButton, can_go_back); gtk_widget_set_sensitive(forwardButton, can_go_forward); }
void WebBrowserObject::BrowserData(const char *data) { if (data) { gtk_moz_embed_open_stream(GTK_MOZ_EMBED(mozilla), "file://", "text/html"); gtk_moz_embed_append_data(GTK_MOZ_EMBED(mozilla), data, strlen(data)); gtk_moz_embed_close_stream(GTK_MOZ_EMBED(mozilla)); } }
static void mozilla_embed_new_window (GtkMozEmbed *embed, GtkMozEmbed **newEmbed, guint chromemask) { MozillaEmbed *membed = MOZILLA_EMBED (embed); int i; EmbedChromeMask mask = EMBED_CHROME_OPENASPOPUP; GaleonEmbed *new_embed = NULL; struct { guint chromemask; EmbedChromeMask embed_mask; } conversion_map [] = { { GTK_MOZ_EMBED_FLAG_DEFAULTCHROME, EMBED_CHROME_DEFAULT }, { GTK_MOZ_EMBED_FLAG_MENUBARON, EMBED_CHROME_MENUBARON }, { GTK_MOZ_EMBED_FLAG_TOOLBARON, EMBED_CHROME_TOOLBARON }, /* Map the bookmarks bar to the default, as otherwise _blank * pages don't honour the gconf settings, and always have the * bookmarks bar, which just confuses people (bug 122410) */ { GTK_MOZ_EMBED_FLAG_PERSONALTOOLBARON, EMBED_CHROME_DEFAULT }, { GTK_MOZ_EMBED_FLAG_STATUSBARON, EMBED_CHROME_STATUSBARON }, { GTK_MOZ_EMBED_FLAG_WINDOWRAISED, EMBED_CHROME_WINDOWRAISED }, { GTK_MOZ_EMBED_FLAG_WINDOWLOWERED, EMBED_CHROME_WINDOWLOWERED }, { GTK_MOZ_EMBED_FLAG_CENTERSCREEN, EMBED_CHROME_CENTERSCREEN }, { GTK_MOZ_EMBED_FLAG_OPENASDIALOG, EMBED_CHROME_OPENASDIALOG }, { GTK_MOZ_EMBED_FLAG_OPENASCHROME, EMBED_CHROME_OPENASCHROME }, { 0, EMBED_CHROME_NONE } }; for (i = 0; conversion_map[i].chromemask != 0; i++) { if (chromemask & conversion_map[i].chromemask) { mask = (EmbedChromeMask) (mask | conversion_map[i].embed_mask); } } g_signal_emit_by_name (membed, "ge_new_window", mask, &new_embed); g_assert (new_embed != NULL); gtk_moz_embed_set_chrome_mask (GTK_MOZ_EMBED(new_embed), chromemask); *newEmbed = GTK_MOZ_EMBED(new_embed); }
void update_nav_buttons (TestGtkBrowser *browser) { gboolean can_go_back; gboolean can_go_forward; can_go_back = gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(browser->mozEmbed)); can_go_forward = gtk_moz_embed_can_go_forward(GTK_MOZ_EMBED(browser->mozEmbed)); if (can_go_back) gtk_widget_set_sensitive(browser->backButton, TRUE); else gtk_widget_set_sensitive(browser->backButton, FALSE); if (can_go_forward) gtk_widget_set_sensitive(browser->forwardButton, TRUE); else gtk_widget_set_sensitive(browser->forwardButton, FALSE); }
void on_save_ok_cb(GtkWidget *button, OpenDialogParams *dialogParams) { MinimoBrowser *browser = NULL; G_CONST_RETURN gchar *filename; filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialogParams->main_combo)); if (!filename || !strcmp(filename,"")) { return ; } else { browser = (MinimoBrowser *) g_object_get_data(G_OBJECT(dialogParams->main_combo), "minimo"); if (!mozilla_save( GTK_MOZ_EMBED (browser->mozEmbed), (gchar *) filename, TRUE )) { //create_dialog("Error","Save failed, did you enter a name?",0,0); } gtk_widget_destroy(dialogParams->main_combo); gtk_widget_destroy(dialogParams->dialog_combo); g_free(dialogParams); } return ; }
void save_image_from_popup(GtkWidget *menuitem, MinimoBrowser *browser) { gchar *href, *name, *FullPath; FullPath= PR_GetEnv("HOME"); href = (gchar *) g_object_get_data(G_OBJECT(menuitem), "link"); if (!href) { g_print("Could not find href to save image\n"); return; } name = (gchar *) g_object_get_data(G_OBJECT(menuitem), "name"); FullPath= g_strconcat(FullPath,"/downloaded_files/",NULL); mkdir(FullPath,0755); FullPath= g_strconcat(FullPath,name,NULL); mozilla_save_image(GTK_MOZ_EMBED(browser->mozEmbed),href,FullPath); g_free(FullPath); g_free(name); g_free(href); return; }
static void impl_load_url (GaleonEmbed *embed, const char *url) { char *clean_url; clean_url = gul_string_remove_outside_whitespace (url); gtk_moz_embed_load_url (GTK_MOZ_EMBED(embed), clean_url); /* LOAD HACK: If we haven't loaded a url yet, remember this one, * and flag that we are trying to load this url */ MozillaEmbed *membed = MOZILLA_EMBED (embed); if (!membed->priv->loaded_url) { g_free (membed->priv->loading_url); membed->priv->loading_url = clean_url; /* Fake a "location" signal, so that the layer above picks up * this url, and doesn't think there is no current url */ g_signal_emit_by_name (membed, "ge_location"); return; } g_free (clean_url); return; }
extern "C" char * mozilla_get_content_type (EphyEmbed *embed) { nsCOMPtr<nsIWebBrowser> browser; gtk_moz_embed_get_nsIWebBrowser (GTK_MOZ_EMBED (embed), getter_AddRefs (browser)); NS_ENSURE_TRUE (browser, NULL); nsCOMPtr<nsIDOMWindow> dom_window; browser->GetContentDOMWindow (getter_AddRefs (dom_window)); NS_ENSURE_TRUE (dom_window, NULL); nsCOMPtr<nsIDOMDocument> doc; dom_window->GetDocument (getter_AddRefs (doc)); NS_ENSURE_TRUE (doc, NULL); nsCOMPtr<nsIDOMNSDocument> ns_doc = do_QueryInterface (doc); NS_ENSURE_TRUE (ns_doc, NULL); nsresult rv; nsString contentType; rv = ns_doc->GetContentType (contentType); nsCString cType; NS_UTF16ToCString (contentType, NS_CSTRING_ENCODING_UTF8, cType); return g_strdup (cType.get()); }
extern "C" char * mozilla_get_doctype (EphyEmbed *embed) { nsCOMPtr<nsIWebBrowser> browser; gtk_moz_embed_get_nsIWebBrowser (GTK_MOZ_EMBED (embed), getter_AddRefs (browser)); NS_ENSURE_TRUE (browser, NULL); nsCOMPtr<nsIDOMWindow> dom_window; browser->GetContentDOMWindow (getter_AddRefs (dom_window)); NS_ENSURE_TRUE (dom_window, NULL); nsCOMPtr<nsIDOMDocument> doc; dom_window->GetDocument (getter_AddRefs (doc)); NS_ENSURE_TRUE (doc, NULL); nsCOMPtr<nsIDOMDocumentType> doctype; doc->GetDoctype (getter_AddRefs (doctype)); NS_ENSURE_TRUE (doctype, NULL); nsresult rv; nsString name; rv = doctype->GetPublicId (name); NS_ENSURE_SUCCESS (rv, NULL); nsCString cName; NS_UTF16ToCString (name, NS_CSTRING_ENCODING_UTF8, cName); return g_strdup (cName.get()); }
static void reload_clicked_cb (GtkButton *button, WebBrowserObject *browser) { gint x, y; GdkModifierType state = (GdkModifierType)0; gdk_window_get_pointer(NULL, &x, &y, &state); gtk_moz_embed_reload(GTK_MOZ_EMBED(browser->mozilla), (state & GDK_SHIFT_MASK) ? GTK_MOZ_EMBED_FLAG_RELOADBYPASSCACHE : GTK_MOZ_EMBED_FLAG_RELOADNORMAL); }
void stream_clicked_cb (GtkButton *button, TestGtkBrowser *browser) { const char *data; const char *data2; data = "<html>Hi"; data2 = " there</html>\n"; g_print("stream_clicked_cb\n"); gtk_moz_embed_open_stream(GTK_MOZ_EMBED(browser->mozEmbed), "file://", "text/html"); gtk_moz_embed_append_data(GTK_MOZ_EMBED(browser->mozEmbed), data, strlen(data)); gtk_moz_embed_append_data(GTK_MOZ_EMBED(browser->mozEmbed), data2, strlen(data2)); gtk_moz_embed_close_stream(GTK_MOZ_EMBED(browser->mozEmbed)); }
static void impl_append_data (GaleonEmbed *embed, const char *data, guint32 len) { gtk_moz_embed_append_data (GTK_MOZ_EMBED(embed), data, len); }
void url_activate_cb (GtkEditable *widget, TestGtkBrowser *browser) { gchar *text = gtk_editable_get_chars(widget, 0, -1); g_print("loading url %s\n", text); gtk_moz_embed_load_url(GTK_MOZ_EMBED(browser->mozEmbed), text); g_free(text); }
void WebBrowserObject::Refresh(void) { Lock(); if (toplevel) { gtk_moz_embed_reload(GTK_MOZ_EMBED(mozilla), GTK_MOZ_EMBED_FLAG_RELOADBYPASSCACHE); } Unlock(); }
void WebBrowserObject::Forward(void) { Lock(); if (toplevel) { gtk_moz_embed_go_forward(GTK_MOZ_EMBED(mozilla)); } Unlock(); }
void WebBrowserObject::Reload(void) { Lock(); if (toplevel) { gtk_moz_embed_reload(GTK_MOZ_EMBED(mozilla), GTK_MOZ_EMBED_FLAG_RELOADNORMAL); } Unlock(); }
void menu_stream_cb (GtkMenuItem *menuitem, TestGtkBrowser *browser) { g_print("menu_stream_cb\n"); const char *data; const char *data2; data = "<html>Hi"; data2 = " <a href='foo.html'>there</a></html>\n"; g_print("stream_clicked_cb\n"); gtk_moz_embed_open_stream(GTK_MOZ_EMBED(browser->mozEmbed), "file://", "text/html"); gtk_moz_embed_append_data(GTK_MOZ_EMBED(browser->mozEmbed), data, strlen(data)); gtk_moz_embed_append_data(GTK_MOZ_EMBED(browser->mozEmbed), data2, strlen(data2)); gtk_moz_embed_close_stream(GTK_MOZ_EMBED(browser->mozEmbed)); }
void WebBrowserObject::Stop(void) { Lock(); if (toplevel) { gtk_moz_embed_stop_load(GTK_MOZ_EMBED(mozilla)); } Unlock(); }
void minimo_load_url(gchar *url, MinimoBrowser *browser) { g_return_if_fail(browser->mozEmbed != NULL); g_return_if_fail(url != NULL); gtk_moz_embed_load_url(GTK_MOZ_EMBED(browser->mozEmbed), url); return; }
bool MozillaRenderer::canGoBack(void) { if ((m_htmlWidget == NULL) || (m_rendering == false)) { return false; } return gtk_moz_embed_can_go_back(GTK_MOZ_EMBED(m_htmlWidget)); }
// check if there is a selection file associated with this HTML page bool selection_file_available(GtkMozEmbed * b) { char filename[MAX_FILE_NAME]; if (selection_file_get_name(GTK_MOZ_EMBED(b), filename, MAX_FILE_NAME) == 0) { return g_file_test(filename, G_FILE_TEST_EXISTS); } return FALSE; }
static gboolean impl_open_stream (GaleonEmbed *embed, const char *base_uri, const char *mime_type) { gtk_moz_embed_open_stream (GTK_MOZ_EMBED(embed), base_uri, mime_type); return TRUE; }
void new_window_orphan_cb (GtkMozEmbedSingle *embed, GtkMozEmbed **retval, guint chromemask, gpointer data) { g_print("new_window_orphan_cb\n"); g_print("chromemask is %d\n", chromemask); TestGtkBrowser *newBrowser = new_gtk_browser(chromemask); *retval = GTK_MOZ_EMBED(newBrowser->mozEmbed); g_print("new browser is %p\n", (void *)*retval); }
void new_window_cb (GtkMozEmbed *embed, GtkMozEmbed **newEmbed, guint chromemask, TestGtkBrowser *browser) { g_print("new_window_cb\n"); g_print("embed is %p chromemask is %d\n", (void *)embed, chromemask); TestGtkBrowser *newBrowser = new_gtk_browser(chromemask); gtk_widget_set_usize(newBrowser->mozEmbed, 400, 400); *newEmbed = GTK_MOZ_EMBED(newBrowser->mozEmbed); g_print("new browser is %p\n", (void *)*newEmbed); }
/// Goes back. bool MozillaRenderer::goBack(void) { if (canGoForward() == true) { gtk_moz_embed_go_back(GTK_MOZ_EMBED(m_htmlWidget)); return true; } return false; }
static AtkObject* gtk_moz_embed_get_accessible (GtkWidget *widget) { g_return_val_if_fail(widget != NULL, NULL); g_return_val_if_fail(GTK_IS_MOZ_EMBED(widget), NULL); GtkMozEmbed *embed = GTK_MOZ_EMBED(widget);; EmbedPrivate *embedPrivate = (EmbedPrivate *)embed->data; return static_cast<AtkObject *>( embedPrivate->GetAtkObjectForCurrentDocument()); }
/// Stops loading. bool MozillaRenderer::stop(void) { if ((m_htmlWidget == NULL) || (m_rendering == false)) { return false; } gtk_moz_embed_stop_load(GTK_MOZ_EMBED(m_htmlWidget)); return true; }
/// Reloads the current page. bool MozillaRenderer::reload(void) { if ((m_htmlWidget == NULL) || (m_rendering == false)) { return false; } gtk_moz_embed_reload(GTK_MOZ_EMBED(m_htmlWidget), GTK_MOZ_EMBED_FLAG_RELOADNORMAL); return true; }
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(); }
static void new_window_cb (GtkMozEmbed *embed, GtkMozEmbed **newEmbed, guint chromemask, WebBrowserObject *browser) { char bname[256]; static int browserID = 0; snprintf(bname, sizeof(bname), "%s%d", browser->GetName(), ++browserID); SDL_Rect r = browser->GetArea(); WebBrowserObject *browser2 = new WebBrowserObject(bname); browser2->BrowserSetChrome(chromemask); browser2->BrowserOpen(); browser2->SetParent(browser); browser->AddObject(browser2); *newEmbed = GTK_MOZ_EMBED(browser2->BrowserGetEmbed()); }