/* exported interface documented in gtk/cookies.h */ nserror nsgtk_cookies_init(void) { GtkScrolledWindow *scrolled; GtkDrawingArea *drawing_area; nserror res; res = nsgtk_builder_new_from_resname("cookies", &cookie_builder); if (res != NSERROR_OK) { LOG("Cookie UI builder init failed"); return res; } gtk_builder_connect_signals(cookie_builder, NULL); wndCookies = GTK_WINDOW(gtk_builder_get_object(cookie_builder, "wndCookies")); scrolled = GTK_SCROLLED_WINDOW(gtk_builder_get_object(cookie_builder, "cookiesScrolled")); drawing_area = GTK_DRAWING_AREA(gtk_builder_get_object(cookie_builder, "cookiesDrawingArea")); cookies_treeview = nsgtk_treeview_create(TREE_COOKIES, wndCookies, scrolled, drawing_area, NULL); if (cookies_treeview == NULL) { return NSERROR_INIT_FAILED; } #define CONNECT(obj, sig, callback, ptr) \ g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr)) CONNECT(wndCookies, "delete_event", gtk_widget_hide_on_delete, NULL); CONNECT(wndCookies, "hide", nsgtk_tree_window_hide, cookies_treeview); nsgtk_cookies_init_menu(); return NSERROR_OK; }
static void nsgtk_pdf_password(char **owner_pass, char **user_pass, char *path) { GtkButton *ok, *no; GtkWindow *wnd; void **data; GtkBuilder *password_builder; nserror res; res = nsgtk_builder_new_from_resname("password", &password_builder); if (res != NSERROR_OK) { LOG("Password UI builder init failed"); return; } gtk_builder_connect_signals(password_builder, NULL); wnd = GTK_WINDOW(gtk_builder_get_object(password_builder, "wndPDFPassword")); data = malloc(5 * sizeof(void *)); *owner_pass = NULL; *user_pass = NULL; data[0] = owner_pass; data[1] = user_pass; data[2] = wnd; data[3] = password_builder; data[4] = path; ok = GTK_BUTTON(gtk_builder_get_object(password_builder, "buttonPDFSetPassword")); no = GTK_BUTTON(gtk_builder_get_object(password_builder, "buttonPDFNoPassword")); g_signal_connect(G_OBJECT(ok), "clicked", G_CALLBACK(nsgtk_PDF_set_pass), (gpointer)data); g_signal_connect(G_OBJECT(no), "clicked", G_CALLBACK(nsgtk_PDF_no_pass), (gpointer)data); gtk_widget_show(GTK_WIDGET(wnd)); }
/* exported interface documented in gtk/download.h */ nserror nsgtk_download_init(void) { GtkBuilder* builder; nserror res; res = nsgtk_builder_new_from_resname("downloads", &builder); if (res != NSERROR_OK) { LOG("Download UI builder init failed"); return res; } gtk_builder_connect_signals(builder, NULL); nsgtk_download_button_pause = GTK_BUTTON(gtk_builder_get_object(builder, "buttonPause")); nsgtk_download_button_clear = GTK_BUTTON(gtk_builder_get_object(builder, "buttonClear")); nsgtk_download_button_cancel = GTK_BUTTON(gtk_builder_get_object(builder, "buttonCancel")); nsgtk_download_button_resume = GTK_BUTTON(gtk_builder_get_object(builder, "buttonPlay")); nsgtk_download_progress_bar = GTK_PROGRESS_BAR(gtk_builder_get_object(builder, "progressBar")); nsgtk_download_window = GTK_WINDOW(gtk_builder_get_object(builder, "wndDownloads")); nsgtk_download_parent = NULL; gtk_window_set_transient_for(GTK_WINDOW(nsgtk_download_window), nsgtk_download_parent); gtk_window_set_destroy_with_parent(GTK_WINDOW(nsgtk_download_window), FALSE); nsgtk_downloads_timer = g_timer_new(); nsgtk_download_tree = nsgtk_download_tree_view_new(builder); nsgtk_download_store = gtk_list_store_new(NSGTK_DOWNLOAD_N_COLUMNS, G_TYPE_INT, /* % complete */ G_TYPE_STRING, /* Description */ G_TYPE_STRING, /* Time remaining */ G_TYPE_STRING, /* Speed */ G_TYPE_INT, /* Pulse */ G_TYPE_STRING, /* Status */ G_TYPE_POINTER /* Download structure */ ); gtk_tree_view_set_model(nsgtk_download_tree, GTK_TREE_MODEL(nsgtk_download_store)); gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(nsgtk_download_store), NSGTK_DOWNLOAD_STATUS, (GtkTreeIterCompareFunc) nsgtk_download_sort, NULL, NULL); gtk_tree_sortable_set_sort_column_id( GTK_TREE_SORTABLE(nsgtk_download_store), NSGTK_DOWNLOAD_STATUS, GTK_SORT_ASCENDING); g_object_unref(nsgtk_download_store); nsgtk_download_selection = gtk_tree_view_get_selection(nsgtk_download_tree); gtk_tree_selection_set_mode(nsgtk_download_selection, GTK_SELECTION_MULTIPLE); g_signal_connect(G_OBJECT(nsgtk_download_selection), "changed", G_CALLBACK(nsgtk_download_sensitivity_evaluate), NULL); g_signal_connect(nsgtk_download_tree, "row-activated", G_CALLBACK(nsgtk_download_tree_view_row_activated), NULL); g_signal_connect_swapped(gtk_builder_get_object(builder, "buttonClear"), "clicked", G_CALLBACK(nsgtk_download_do), nsgtk_download_store_clear_item); g_signal_connect_swapped(gtk_builder_get_object(builder, "buttonCancel"), "clicked", G_CALLBACK(nsgtk_download_do), nsgtk_download_store_cancel_item); g_signal_connect(G_OBJECT(nsgtk_download_window), "delete-event", G_CALLBACK(nsgtk_download_hide), NULL); return NSERROR_OK; }
/** * Initialize GTK interface. */ static nserror nsgtk_init(int argc, char** argv, char **respath) { char buf[PATH_MAX]; char *resource_filename; char *addr = NULL; nsurl *url; nserror error; error = nsgtk_builder_new_from_resname("warning", &warning_builder); if (error != NSERROR_OK) { LOG("Unable to initialise warning dialog"); return error; } gtk_builder_connect_signals(warning_builder, NULL); /* set default icon if its available */ error = nsgdk_pixbuf_new_from_resname("netsurf.xpm", &win_default_icon_pixbuf); if (error == NSERROR_OK) { LOG("Seting default window icon"); gtk_window_set_default_icon(win_default_icon_pixbuf); } /* Search engine sources */ resource_filename = filepath_find(respath, "SearchEngines"); search_web_init(resource_filename); if (resource_filename != NULL) { LOG("Using '%s' as Search Engines file", resource_filename); free(resource_filename); } /* Default favicon */ error = nsgdk_pixbuf_new_from_resname("favicon.png", &favicon_pixbuf); if (error != NSERROR_OK) { favicon_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 16, 16); } /* arrow down icon */ error = nsgdk_pixbuf_new_from_resname("arrow_down_8x32.png", &arrow_down_pixbuf); if (error != NSERROR_OK) { arrow_down_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, false, 8, 8, 32); } /* initialise throbber */ error = nsgtk_throbber_init(); if (error != NSERROR_OK) { LOG("Unable to initialise throbber."); return error; } /* Initialise completions - cannot fail */ nsgtk_completion_init(); filepath_sfinddef(respath, buf, "mime.types", "/etc/"); gtk_fetch_filetype_init(buf); save_complete_init(); urldb_load(nsoption_charp(url_file)); urldb_load_cookies(nsoption_charp(cookie_file)); /* The tree view system needs to know the screen's DPI, so we * find that out here, rather than when we create a first browser * window. */ browser_set_dpi(gdk_screen_get_resolution(gdk_screen_get_default())); LOG("Set CSS DPI to %d", browser_get_dpi()); /* Initialise top level UI elements */ error = nsgtk_download_init(); if (error != NSERROR_OK) { LOG("Unable to initialise download window."); return error; } /* If there is a url specified on the command line use it */ if (argc > 1) { struct stat fs; if (stat(argv[1], &fs) == 0) { size_t addrlen; char *rp = realpath(argv[1], NULL); assert(rp != NULL); /* calculate file url length including terminator */ addrlen = SLEN("file://") + strlen(rp) + 1; addr = malloc(addrlen); assert(addr != NULL); snprintf(addr, addrlen, "file://%s", rp); free(rp); } else { addr = strdup(argv[1]); } } if (addr != NULL) { /* managed to set up based on local launch */ } else if (nsoption_charp(homepage_url) != NULL) { addr = strdup(nsoption_charp(homepage_url)); } else { addr = strdup(NETSURF_HOMEPAGE); } /* create an initial browser window */ error = nsurl_create(addr, &url); if (error == NSERROR_OK) { error = browser_window_create(BW_CREATE_HISTORY, url, NULL, NULL, NULL); nsurl_unref(url); } free(addr); return error; }