示例#1
0
/* 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;
}
示例#2
0
文件: gui.c 项目: mmuman/NetSurf
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));
}
示例#3
0
/* 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;
}
示例#4
0
文件: gui.c 项目: mmuman/NetSurf
/**
 * 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;
}