mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2024-12-29 12:55:59 +01:00
Save last viewed page in bookmark file
This commit is contained in:
parent
f3858ac26e
commit
539331a084
2 changed files with 36 additions and 6 deletions
|
@ -15,6 +15,9 @@ static const char FORMAT_DESCRIPTION[] = "<i>%s</i>";
|
||||||
static const char ZATHURA_DIR[] = ".zathura";
|
static const char ZATHURA_DIR[] = ".zathura";
|
||||||
static const char BOOKMARK_FILE[] = "bookmarks";
|
static const char BOOKMARK_FILE[] = "bookmarks";
|
||||||
|
|
||||||
|
/* bookmarks */
|
||||||
|
static const char BM_PAGE_ENTRY[] = "page";
|
||||||
|
|
||||||
/* look */
|
/* look */
|
||||||
static const char font[] = "monospace normal 9";
|
static const char font[] = "monospace normal 9";
|
||||||
static const char default_bgcolor[] = "#000000";
|
static const char default_bgcolor[] = "#000000";
|
||||||
|
|
39
zathura.c
39
zathura.c
|
@ -211,7 +211,8 @@ struct
|
||||||
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
GKeyFile *file;
|
GKeyFile *data;
|
||||||
|
char *file;
|
||||||
} Bookmarks;
|
} Bookmarks;
|
||||||
|
|
||||||
struct
|
struct
|
||||||
|
@ -318,21 +319,23 @@ init_directories()
|
||||||
g_free(base_directory);
|
g_free(base_directory);
|
||||||
|
|
||||||
/* create or open existing bookmark file */
|
/* create or open existing bookmark file */
|
||||||
Zathura.Bookmarks.file = g_key_file_new();
|
Zathura.Bookmarks.data = g_key_file_new();
|
||||||
char* bookmarks = g_strdup_printf("%s/%s/%s", g_get_home_dir(), ZATHURA_DIR, BOOKMARK_FILE);
|
char* bookmarks = g_strdup_printf("%s/%s/%s", g_get_home_dir(), ZATHURA_DIR, BOOKMARK_FILE);
|
||||||
|
|
||||||
if(!g_file_test(bookmarks, G_FILE_TEST_IS_REGULAR))
|
if(!g_file_test(bookmarks, G_FILE_TEST_IS_REGULAR))
|
||||||
{
|
{
|
||||||
/* file does not exist */
|
/* file does not exist */
|
||||||
g_file_set_contents(bookmarks, "# Zathura bookmarks", -1, NULL);
|
g_file_set_contents(bookmarks, "# Zathura bookmarks\n", -1, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
GError* error = NULL;
|
GError* error = NULL;
|
||||||
if(!g_key_file_load_from_file(Zathura.Bookmarks.file, bookmarks, G_KEY_FILE_KEEP_TRANSLATIONS, &error))
|
if(!g_key_file_load_from_file(Zathura.Bookmarks.data, bookmarks,
|
||||||
|
G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, &error))
|
||||||
{
|
{
|
||||||
notify(ERROR, g_strdup_printf("Could not load bookmark file: %s", error->message));
|
notify(ERROR, g_strdup_printf("Could not load bookmark file: %s", error->message));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Zathura.Bookmarks.file = g_strdup(bookmarks);
|
||||||
g_free(bookmarks);
|
g_free(bookmarks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1552,6 +1555,20 @@ cmd_close(int argc, char** argv)
|
||||||
pthread_mutex_destroy(¤t_page->lock);
|
pthread_mutex_destroy(¤t_page->lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* save bookmarks */
|
||||||
|
if(Zathura.Bookmarks.data)
|
||||||
|
{
|
||||||
|
/* set current page */
|
||||||
|
g_key_file_set_integer(Zathura.Bookmarks.data, Zathura.PDF.file,
|
||||||
|
BM_PAGE_ENTRY, Zathura.PDF.page_number);
|
||||||
|
|
||||||
|
/* convert file and save it */
|
||||||
|
gchar* bookmarks = g_key_file_to_data(Zathura.Bookmarks.data, NULL, NULL);
|
||||||
|
printf("Saving to %s\n", Zathura.Bookmarks.file);
|
||||||
|
g_file_set_contents(Zathura.Bookmarks.file, bookmarks, -1, NULL);
|
||||||
|
g_free(bookmarks);
|
||||||
|
}
|
||||||
|
|
||||||
/* reset values */
|
/* reset values */
|
||||||
free(Zathura.PDF.pages);
|
free(Zathura.PDF.pages);
|
||||||
g_object_unref(Zathura.PDF.document);
|
g_object_unref(Zathura.PDF.document);
|
||||||
|
@ -1819,9 +1836,16 @@ cmd_open(int argc, char** argv)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* render pages */
|
/* render pages */
|
||||||
draw(0);
|
int start_page = 0;
|
||||||
|
|
||||||
set_page(0);
|
if(Zathura.Bookmarks.data)
|
||||||
|
{
|
||||||
|
if(g_key_file_has_group(Zathura.Bookmarks.data, file))
|
||||||
|
if(g_key_file_has_key(Zathura.Bookmarks.data, file, BM_PAGE_ENTRY, NULL))
|
||||||
|
start_page = g_key_file_get_integer(Zathura.Bookmarks.data, file, BM_PAGE_ENTRY, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
set_page(start_page);
|
||||||
update_status();
|
update_status();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
@ -2267,6 +2291,9 @@ cb_destroy(GtkWidget* widget, gpointer data)
|
||||||
pthread_mutex_destroy(&(Zathura.Lock.search_lock));
|
pthread_mutex_destroy(&(Zathura.Lock.search_lock));
|
||||||
pthread_mutex_destroy(&(Zathura.Lock.viewport_lock));
|
pthread_mutex_destroy(&(Zathura.Lock.viewport_lock));
|
||||||
|
|
||||||
|
/* clean up other variables */
|
||||||
|
g_free(Zathura.Bookmarks.file);
|
||||||
|
|
||||||
gtk_main_quit();
|
gtk_main_quit();
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in a new issue