mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
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>
This commit is contained in:
parent
9b1f9cfd3a
commit
fd29a68a13
1 changed files with 30 additions and 5 deletions
35
print.c
35
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);
|
||||
|
|
Loading…
Reference in a new issue