summaryrefslogtreecommitdiffstats
path: root/print.c
diff options
context:
space:
mode:
authorGravatar Pierre-Yves Chibon <pingou@pingoured.fr>2012-09-03 10:20:56 +0200
committerGravatar Pierre-Yves Chibon <pingou@pingoured.fr>2012-09-03 10:20:56 +0200
commitfd29a68a13497a8f42c8057469151380ab74ee71 (patch)
tree2552bba9c89295dc1cb51575c6924a70c671a869 /print.c
parent9b1f9cfd3a80d39c62b9bcf412b0c5ca79bbb71c (diff)
downloadsubsurface-fd29a68a13497a8f42c8057469151380ab74ee71.tar.gz
Add the 'Print only selection' checkbox in the print options
With this commit, if few dives are selected by default it will only print the selected dives but in the option panel there is a checkbox that allows to print all dives and not only the selection. Signed-off-by: Pierre-Yves Chibon <pingou@pingoured.fr>
Diffstat (limited to 'print.c')
-rw-r--r--print.c35
1 files changed, 30 insertions, 5 deletions
diff --git a/print.c b/print.c
index 0e49bc9c3..b30a8d029 100644
--- a/print.c
+++ b/print.c
@@ -434,12 +434,11 @@ static void begin_print(GtkPrintOperation *operation, gpointer user_data)
int dives_per_page;
dives = nr_selected_dives();
- print_options.print_selected = dives > 1;
- if (dives <= 1)
+ if (!print_options.print_selected)
dives = dive_table.nr;
if (print_options.type == PRETTY) {
- dives_per_page = 6;
+ dives_per_page = 6;
} else {
dives_per_page = 25;
}
@@ -458,9 +457,19 @@ static void name(GtkWidget *w, gpointer data) \
OPTIONCALLBACK(set_pretty, type, PRETTY)
OPTIONCALLBACK(set_table, type, TABLE)
+#define OPTIONSELECTEDCALLBACK(name, option) \
+static void name(GtkWidget *w, gpointer data) \
+{ \
+ option = GTK_TOGGLE_BUTTON(w)->active; \
+}
+
+OPTIONSELECTEDCALLBACK(print_selection_toggle, print_options.print_selected)
+
+
static GtkWidget *print_dialog(GtkPrintOperation *operation, gpointer user_data)
{
GtkWidget *vbox, *radio1, *radio2, *frame, *box;
+ int dives;
gtk_print_operation_set_custom_tab_label(operation, "Dive details");
vbox = gtk_vbox_new(TRUE, 5);
@@ -484,6 +493,22 @@ static GtkWidget *print_dialog(GtkPrintOperation *operation, gpointer user_data)
g_signal_connect(radio1, "toggled", G_CALLBACK(set_pretty), NULL);
g_signal_connect(radio2, "toggled", G_CALLBACK(set_table), NULL);
+ dives = nr_selected_dives();
+ print_options.print_selected = dives >= 1;
+ if (print_options.print_selected) {
+ frame = gtk_frame_new("Print selection");
+ gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 1);
+ box = gtk_hbox_new(FALSE, 1);
+ gtk_container_add(GTK_CONTAINER(frame), box);
+ GtkWidget *button;
+ button = gtk_check_button_new_with_label("Print only selected dives");
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),
+ print_options.print_selected);
+ gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 2);
+ g_signal_connect(G_OBJECT(button), "toggled",
+ G_CALLBACK(print_selection_toggle), NULL);
+ }
+
gtk_widget_show_all(vbox);
return vbox;
}
@@ -491,8 +516,8 @@ static GtkWidget *print_dialog(GtkPrintOperation *operation, gpointer user_data)
static void print_dialog_apply(GtkPrintOperation *operation, GtkWidget *widget, gpointer user_data)
{
if (print_options.type == PRETTY) {
- g_signal_connect(operation, "draw_page",
- G_CALLBACK(draw_page), NULL);
+ g_signal_connect(operation, "draw_page",
+ G_CALLBACK(draw_page), NULL);
} else {
g_signal_connect(operation, "draw_page",
G_CALLBACK(draw_table), NULL);