コード例 #1
0
ファイル: djvu-links.c プロジェクト: 4eremuxa/evince
static EvLinkDest *
get_djvu_link_dest (const DjvuDocument *djvu_document, const gchar *link_name, int base_page)
{
	/* #+pagenum #-pagenum #file_id.djvu */
	if (g_str_has_prefix (link_name, "#")) {
		if (g_str_has_suffix (link_name, ".djvu") ||
		    (base_page > 0 && g_str_has_prefix (link_name + 1, "+")) ||
		    (base_page > 0 && g_str_has_prefix (link_name + 1, "-"))) {
			return ev_link_dest_new_page (get_djvu_link_page (djvu_document, link_name, base_page));
		} else {
			/* #pagenum #page_label: the djvu spec is not clear on whether #pagenum represents
			 * a link to a page number or to a page label. Here we mimick djview,
			 * and always treat #pagenum as a link to a page label */
			return ev_link_dest_new_page_label (link_name + 1);
		}
	}

	return NULL;
}
コード例 #2
0
ファイル: main.c プロジェクト: haobug/evince
static void
load_files (const char **files)
{
	GdkScreen       *screen = gdk_screen_get_default ();
	EvWindowRunMode  mode = EV_WINDOW_MODE_NORMAL;
	gint             i;
	EvLinkDest      *global_dest = NULL;

	if (!files) {
		if (!ev_application_has_window (EV_APP))
			ev_application_open_window (EV_APP, screen, GDK_CURRENT_TIME);
		return;
	}

	if (ev_page_label)
		global_dest = ev_link_dest_new_page_label (ev_page_label);
	else if (ev_page_index)
		global_dest = ev_link_dest_new_page (MAX (0, ev_page_index - 1));
	else if (ev_named_dest)
		global_dest = ev_link_dest_new_named (ev_named_dest);

	if (fullscreen_mode)
		mode = EV_WINDOW_MODE_FULLSCREEN;
	else if (presentation_mode)
		mode = EV_WINDOW_MODE_PRESENTATION;

	for (i = 0; files[i]; i++) {
		const gchar *filename;
		gchar       *uri;
		gchar       *label;
		GFile       *file;
		EvLinkDest  *dest = NULL;
		const gchar *app_uri;

		filename = files[i];
		label = get_label_from_filename (filename);
		if (label) {
			*label = 0;
			label++;
			dest = ev_link_dest_new_page_label (label);
		} else if (global_dest) {
			dest = g_object_ref (global_dest);
		}

		file = g_file_new_for_commandline_arg (filename);
		uri = g_file_get_uri (file);
		g_object_unref (file);

		app_uri = ev_application_get_uri (EV_APP);
		if (app_uri && strcmp (app_uri, uri) == 0) {
			g_free (uri);
			continue;
		}



		ev_application_open_uri_at_dest (EV_APP, uri, screen, dest,
						 mode, ev_find_string,
						 GDK_CURRENT_TIME);

		if (dest)
			g_object_unref (dest);
		g_free (uri);
        }
}
コード例 #3
0
ファイル: djvu-links.c プロジェクト: mate-desktop/atril
static EvLinkDest *
get_djvu_link_dest (const DjvuDocument *djvu_document, const gchar *link_name, int base_page)
{
	return ev_link_dest_new_page (get_djvu_link_page (djvu_document, link_name, base_page));
}