Allow changing of "pages-per-row" variable at runtime

This commit is contained in:
Pavel Borzenkov 2011-07-21 14:47:24 +02:00 committed by Moritz Lipp
parent 230ac06957
commit 32d90379bc
4 changed files with 40 additions and 6 deletions

View file

@ -78,3 +78,15 @@ cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data)
free(offset);
}
}
void
cb_pages_per_row_value_changed(girara_session_t* session, girara_setting_t* setting)
{
int pages_per_row = setting->value.i;
zathura_t* zathura = setting->data;
if (pages_per_row < 1)
pages_per_row = 1;
page_view_set_mode(zathura, pages_per_row);
}

View file

@ -23,12 +23,20 @@ gboolean cb_destroy(GtkWidget* widget, gpointer data);
void buffer_changed(girara_session_t* session);
/**
* This function gets called when the the value of the vertical scrollbars
* This function gets called when the value of the vertical scrollbars
* changes (e.g.: by scrolling, moving to another page)
*
* @param adjustment The vadjustment of the page view
* @param data NULL
*/
void cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data);
/**
* This function gets called when the value of the "pages-per-row"
* variable changes
*
* @param session The current girara session
* @param setting The "pages-per-row" setting
*/
void cb_pages_per_row_value_changed(girara_session_t* session, girara_setting_t* setting);
#endif // CALLBACKS_H

View file

@ -3,6 +3,7 @@
#include "config.h"
#include "commands.h"
#include "completion.h"
#include "callbacks.h"
#include "shortcuts.h"
#include "zathura.h"
@ -32,16 +33,16 @@ config_load_default(zathura_t* zathura)
/* zathura settings */
int_value = 10;
girara_setting_add(gsession, "zoom-step", &int_value, INT, false, "Zoom step", NULL);
girara_setting_add(gsession, "zoom-step", &int_value, INT, false, "Zoom step", NULL, NULL);
int_value = 1;
girara_setting_add(gsession, "page-padding", &int_value, INT, true, "Padding between pages", NULL);
girara_setting_add(gsession, "page-padding", &int_value, INT, true, "Padding between pages", NULL, NULL);
int_value = 2;
girara_setting_add(gsession, "pages-per-row", &int_value, INT, false, "Number of pages per row", NULL);
girara_setting_add(gsession, "pages-per-row", &int_value, INT, false, "Number of pages per row", cb_pages_per_row_value_changed, zathura);
string_value = "#FFFFFF";
girara_setting_add(gsession, "recolor-dark-color", string_value, STRING, false, "Recoloring (dark color)", NULL);
girara_setting_add(gsession, "recolor-dark-color", string_value, STRING, false, "Recoloring (dark color)", NULL, NULL);
string_value = "#000000";
girara_setting_add(gsession, "recolor-light-color", string_value, STRING, false, "Recoloring (light color)", NULL);
girara_setting_add(gsession, "recolor-light-color", string_value, STRING, false, "Recoloring (light color)", NULL, NULL);
/* define default shortcuts */
girara_shortcut_add(gsession, GDK_CONTROL_MASK, GDK_c, NULL, sc_abort, 0, 0, NULL);

View file

@ -378,11 +378,24 @@ statusbar_page_number_update(zathura_t* zathura)
void
page_view_set_mode(zathura_t* zathura, unsigned int pages_per_row)
{
GList* child;
/* show at least one page */
if (pages_per_row == 0) {
pages_per_row = 1;
}
if (zathura->document == NULL) {
return;
}
child = gtk_container_get_children(GTK_CONTAINER(zathura->ui.page_view));
while (child) {
g_object_ref(G_OBJECT(child->data));
gtk_container_remove(GTK_CONTAINER(zathura->ui.page_view), GTK_WIDGET(child->data));
child = g_list_next(child);
}
gtk_table_resize(GTK_TABLE(zathura->ui.page_view), zathura->document->number_of_pages / pages_per_row + 1, pages_per_row);
for (unsigned int i = 0; i < zathura->document->number_of_pages; i++)
{