annotate src/print.c @ 276:4f526d436873

Implement secure rc file saving. First data is written to a temporary file, then if nothing was wrong, this file is renamed to the final name. This way the risk of corrupted rc file is greatly reduced. The code is borrowed from ELinks (http://elinks.cz).
author zas_
date Tue, 08 Apr 2008 21:55:58 +0000
parents 65187a2309d3
children 9995c5fb202a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1 /*
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 138
diff changeset
2 * Geeqie
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3 * (C) 2004 John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
4 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
5 * Author: John Ellis
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
6 *
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
7 * This software is released under the GNU General Public License (GNU GPL).
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
8 * Please read the included file COPYING for more information.
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
9 * This software comes with no warranty of any kind, use at your own risk!
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
10 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
11
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
12
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
13 #include "gqview.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
14 #include "print.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
15
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
16 #include "filelist.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
17 #include "image.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
18 #include "image-load.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
19 #include "pixbuf_util.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
20 #include "thumb.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
21 #include "utilops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
22 #include "ui_bookmark.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
23 #include "ui_menu.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
24 #include "ui_misc.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
25 #include "ui_utildlg.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
26 #include "ui_fileops.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
27 #include "ui_spinner.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
28 #include "ui_tabcomp.h"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
29
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
30
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
31 #include <locale.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
32 #include <signal.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
33
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
34
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
35 #define PRINT_LPR_COMMAND "lpr"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
36 #define PRINT_LPR_CUSTOM "lpr -P %s"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
37 #define PRINT_LPR_QUERY "lpstat -p"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
38
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
39 #define PRINT_DLG_WIDTH 600
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
40 #define PRINT_DLG_HEIGHT 400
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
41
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
42 #define PRINT_DLG_PREVIEW_WIDTH 270
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
43 #define PRINT_DLG_PREVIEW_HEIGHT -1
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
44
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
45 /* these are in point units */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
46 #define PRINT_MIN_WIDTH 100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
47 #define PRINT_MIN_HEIGHT 100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
48 #define PRINT_MAX_WIDTH 4000
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
49 #define PRINT_MAX_HEIGHT 4000
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
50
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
51 #define PRINT_MARGIN_DEFAULT 36
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
52
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
53 #define PRINT_PROOF_MIN_SIZE 8
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
54 #define PRINT_PROOF_MAX_SIZE 720
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
55 #define PRINT_PROOF_DEFAULT_SIZE 144
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
56 #define PRINT_PROOF_MARGIN 5
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
57
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
58 /* default page size */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
59 #define PAGE_LAYOUT_WIDTH 850
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
60 #define PAGE_LAYOUT_HEIGHT 1100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
61
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
62 /* preview uses 1 pixel = PRINT_PREVIEW_SCALE points */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
63 #define PRINT_PREVIEW_SCALE 4
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
64
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
65 /* default dpi to use for printing ps image data */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
66 #define PRINT_PS_DPI_DEFAULT 300.0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
67 #define PRINT_PS_DPI_MIN 150.0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
68 /* method to use when scaling down image data */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
69 #define PRINT_PS_MAX_INTERP GDK_INTERP_BILINEAR
121
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
70 /* color to use as mask when printing transparent images */
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
71 #define PRINT_PS_MASK_R 255
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
72 #define PRINT_PS_MASK_G 255
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
73 #define PRINT_PS_MASK_B 255
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
74
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
75 /* padding between objects */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
76 #define PRINT_TEXT_PADDING 3.0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
77
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
78 /* locale for postscript portability */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
79 #define POSTSCRIPT_LOCALE "C"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
80
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
81
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
82 /* group and keys for saving prefs */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
83 #define PRINT_PREF_GROUP "print_settings"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
84
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
85 #define PRINT_PREF_SAVE "save_settings"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
86
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
87 #define PRINT_PREF_OUTPUT "output"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
88 #define PRINT_PREF_FORMAT "format"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
89 #define PRINT_PREF_DPI "dpi"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
90 #define PRINT_PREF_UNITS "units"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
91 #define PRINT_PREF_SIZE "size"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
92 #define PRINT_PREF_ORIENTATION "orientation"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
93
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
94 #define PRINT_PREF_CUSTOM_WIDTH "custom_width"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
95 #define PRINT_PREF_CUSTOM_HEIGHT "custom_height"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
96 #define PRINT_PREF_MARGIN_LEFT "margin_left"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
97 #define PRINT_PREF_MARGIN_RIGHT "margin_right"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
98 #define PRINT_PREF_MARGIN_TOP "margin_top"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
99 #define PRINT_PREF_MARGIN_BOTTOM "margin_bottom"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
100 #define PRINT_PREF_PROOF_WIDTH "proof_width"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
101 #define PRINT_PREF_PROOF_HEIGHT "proof_height"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
102
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
103 #define PRINT_PREF_PRINTERC "custom_printer"
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
104
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
105
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
106 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
107 PRINT_SOURCE_IMAGE = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
108 PRINT_SOURCE_SELECTION,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
109 PRINT_SOURCE_ALL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
110 PRINT_SOURCE_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
111 } PrintSource;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
112
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
113 const gchar *print_source_text[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
114 N_("Image"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
115 N_("Selection"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
116 N_("All"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
117 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
118 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
120 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
121 PRINT_LAYOUT_IMAGE = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
122 PRINT_LAYOUT_PROOF,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
123 PRINT_LAYOUT_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
124 } PrintLayout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
125
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
126 const gchar *print_layout_text[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
127 N_("One image per page"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
128 N_("Proof sheet"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
129 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
130 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
132 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
133 PRINT_OUTPUT_PS_LPR = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
134 PRINT_OUTPUT_PS_CUSTOM,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
135 PRINT_OUTPUT_PS_FILE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
136 PRINT_OUTPUT_RGB_FILE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
137 PRINT_OUTPUT_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
138 } PrintOutput;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
139
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
140 const gchar *print_output_text[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
141 N_("Default printer"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
142 N_("Custom printer"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
143 N_("PostScript file"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
144 N_("Image file"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
145 NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
146 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
147 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
148
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
149 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
150 PRINT_FILE_JPG_LOW = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
151 PRINT_FILE_JPG_NORMAL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
152 PRINT_FILE_JPG_HIGH,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
153 PRINT_FILE_PNG,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
154 PRINT_FILE_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
155 } PrintFileFormat;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
157 const gchar *print_file_format_text[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
158 N_("jpeg, low quality"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
159 N_("jpeg, normal quality"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
160 N_("jpeg, high quality"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
161 "png",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
162 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
163 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
164
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
165 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
166 RENDER_FORMAT_PREVIEW,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
167 RENDER_FORMAT_RGB,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
168 RENDER_FORMAT_PS
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
169 } RenderFormat;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
170
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
171 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
172 TEXT_INFO_FILENAME = 1 << 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
173 TEXT_INFO_FILEDATE = 1 << 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
174 TEXT_INFO_FILESIZE = 1 << 2,
266
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
175 TEXT_INFO_DIMENSIONS = 1 << 3,
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
176 TEXT_INFO_FILEPATH = 1 << 4
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
177 } TextInfo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
178
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
179 typedef struct _PrintWindow PrintWindow;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
180 struct _PrintWindow
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
181 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
182 GenericDialog *dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
183
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
184 FileData *source_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
185 GList *source_selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
186 GList *source_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
187
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
188 PrintSource source;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
189 PrintLayout layout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
190 PrintOutput output;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
191
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
192 gchar *output_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
193 gchar *output_custom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
194
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
195 PrintFileFormat output_format;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
196
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
197 gdouble max_dpi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
198
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
199 GtkWidget *notebook;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
200
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
201 GtkWidget *path_entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
202 GtkWidget *custom_entry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
203 GtkWidget *path_format_menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
204 GtkWidget *max_dpi_menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
206 ImageWindow *layout_image;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
207 gdouble layout_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
208 gdouble layout_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
209
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
210 gint layout_idle_id;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
211
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
212 gint image_scale;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
213
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
214 GtkWidget *image_scale_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
216 gdouble proof_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
217 gdouble proof_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
218 gint proof_columns;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
219 gint proof_rows;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
220 GList *proof_point;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
221 gint proof_position;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
222 gint proof_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
223
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
224 GtkWidget *proof_group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
225 GtkWidget *proof_width_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
226 GtkWidget *proof_height_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
227
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
228 GtkWidget *paper_menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
229 GtkWidget *paper_width_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
230 GtkWidget *paper_height_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
231 GtkWidget *paper_units_menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
232 GtkWidget *paper_orientation_menu;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
233
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
234 GtkWidget *margin_left_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
235 GtkWidget *margin_right_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
236 GtkWidget *margin_top_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
237 GtkWidget *margin_bottom_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
238
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
239 gint paper_units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
240 gint paper_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
241 gdouble paper_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
242 gdouble paper_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
243 gint paper_orientation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
245 gdouble margin_left;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
246 gdouble margin_right;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
247 gdouble margin_top;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
248 gdouble margin_bottom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
249
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
250 GtkWidget *button_back;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
251 GtkWidget *button_next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
252 GtkWidget *page_label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
253 GtkWidget *print_button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
254
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
255 gdouble single_scale;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
256 gdouble single_x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
257 gdouble single_y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
258
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
259 GtkWidget *single_scale_spin;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
260
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
261 TextInfo text_fields;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
262 gint text_points;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
263 guint8 text_r;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
264 guint8 text_g;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
265 guint8 text_b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
266
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
267 gint save_settings;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
268
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
269 /* job printing */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
270
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
271 GenericDialog *job_dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
272 GtkWidget *job_progress;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
273 GtkWidget *job_progress_label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
275 RenderFormat job_format;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
276 PrintOutput job_output;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
277
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
278 FILE *job_file;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
279 FILE *job_pipe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
280 gchar *job_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
281
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
282 GdkPixbuf *job_pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
283
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
284 gint job_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
285 ImageLoader *job_loader;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
286 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
287
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
288
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
289 static void print_job_throw_error(PrintWindow *pw, const gchar *message);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
290 static gint print_job_start(PrintWindow *pw, RenderFormat format, PrintOutput output);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
291 static void print_job_close(PrintWindow *pw, gint error);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
292 static void print_window_close(PrintWindow *pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
293
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
294
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
295 /* misc utils */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
296
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
297 static gint clip_region(gdouble x1, gdouble y1, gdouble w1, gdouble h1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
298 gdouble x2, gdouble y2, gdouble w2, gdouble h2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
299 gdouble *rx, gdouble *ry, gdouble *rw, gdouble *rh)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
300 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
301 if (x2 + w2 <= x1 || x2 >= x1 + w1 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
302 y2 + h2 <= y1 || y2 >= y1 + h1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
303 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
304 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
305 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
306
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
307 *rx = MAX(x1, x2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
308 *rw = MIN((x1 + w1), (x2 + w2)) - *rx;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
309
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
310 *ry = MAX(y1, y2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
311 *rh = MIN((y1 + h1), (y2 + h2)) - *ry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
312
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
313 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
314 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
315
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
316 static const gchar *print_output_name(PrintOutput output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
317 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
318 if (output < 0 || output >= PRINT_OUTPUT_COUNT) return "";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
319
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
320 return _(print_output_text[output]);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
321 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
322
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
323
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
324 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
325 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
326 * data
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
327 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
328 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
329
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
330
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
331 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
332 PAPER_UNIT_POINTS = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
333 PAPER_UNIT_MM,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
334 PAPER_UNIT_CM,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
335 PAPER_UNIT_INCH,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
336 PAPER_UNIT_PICAS,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
337 PAPER_UNIT_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
338 } PaperUnits;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
339
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
340 typedef enum {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
341 PAPER_ORIENTATION_PORTRAIT = 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
342 PAPER_ORIENTATION_LANDSCAPE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
343 PAPER_ORIENTATION_COUNT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
344 } PaperOrientation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
346 typedef struct _PaperSize PaperSize;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
347 struct _PaperSize {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
348 gchar *description;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
349 gint width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
350 gint height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
351 PaperOrientation orientation;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
352 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
353
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
354 const gchar *print_paper_units[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
355 N_("points"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
356 N_("millimeters"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
357 N_("centimeters"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
358 N_("inches"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
359 N_("picas"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
360 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
361 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
362
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
363 const gchar *print_paper_orientation[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
364 N_("Portrait"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
365 N_("Landscape"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
366 NULL
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
367 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
368
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
369 PaperSize print_paper_sizes[] = {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
370 { N_("Custom"), 360, 720, PAPER_ORIENTATION_PORTRAIT },
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
371 { N_("Letter"), 612, 792, PAPER_ORIENTATION_PORTRAIT }, /* in 8.5 x 11 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
372 { N_("Legal"), 612, 1008, PAPER_ORIENTATION_PORTRAIT }, /* in 8.5 x 14 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
373 { N_("Executive"), 522, 756, PAPER_ORIENTATION_PORTRAIT }, /* in 7.25x 10.5 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
374 { "A0", 2384, 3370, PAPER_ORIENTATION_PORTRAIT }, /* mm 841 x 1189 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
375 { "A1", 1684, 2384, PAPER_ORIENTATION_PORTRAIT }, /* mm 594 x 841 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
376 { "A2", 1191, 1684, PAPER_ORIENTATION_PORTRAIT }, /* mm 420 x 594 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
377 { "A3", 842, 1191, PAPER_ORIENTATION_PORTRAIT }, /* mm 297 x 420 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
378 { "A4", 595, 842, PAPER_ORIENTATION_PORTRAIT }, /* mm 210 x 297 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
379 { "A5", 420, 595, PAPER_ORIENTATION_PORTRAIT }, /* mm 148 x 210 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
380 { "A6", 298, 420, PAPER_ORIENTATION_PORTRAIT }, /* mm 105 x 148 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
381 { "B3", 1001, 1417, PAPER_ORIENTATION_PORTRAIT }, /* mm 353 x 500 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
382 { "B4", 709, 1001, PAPER_ORIENTATION_PORTRAIT }, /* mm 250 x 353 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
383 { "B5", 499, 709, PAPER_ORIENTATION_PORTRAIT }, /* mm 176 x 250 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
384 { "B6", 354, 499, PAPER_ORIENTATION_PORTRAIT }, /* mm 125 x 176 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
385 { N_("Envelope #10"), 297, 684, PAPER_ORIENTATION_LANDSCAPE }, /* in 4.125 x 9.5 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
386 { N_("Envelope #9"), 279, 639, PAPER_ORIENTATION_LANDSCAPE }, /* in 3.875 x 8.875 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
387 { N_("Envelope C4"), 649, 918, PAPER_ORIENTATION_LANDSCAPE }, /* mm 229 x 324 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
388 { N_("Envelope C5"), 459, 649, PAPER_ORIENTATION_LANDSCAPE }, /* mm 162 x 229 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
389 { N_("Envelope C6"), 323, 459, PAPER_ORIENTATION_LANDSCAPE }, /* mm 114 x 162 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
390 { N_("Photo 6x4"), 432, 288, PAPER_ORIENTATION_PORTRAIT }, /* in 6 x 4 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
391 { N_("Photo 8x10"), 576, 720, PAPER_ORIENTATION_PORTRAIT }, /* in 8 x 10 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
392 { N_("Postcard"), 284, 419, PAPER_ORIENTATION_LANDSCAPE }, /* mm 100 x 148 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
393 { N_("Tabloid"), 792, 1224, PAPER_ORIENTATION_PORTRAIT }, /* in 11 x 17 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
394 { NULL, 0, 0, 0 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
395 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
396
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
397
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
398 static PaperSize *print_paper_size_nth(gint n)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
399 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
400 PaperSize *ps = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
401 gint i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
402
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
403 while (i <= n && print_paper_sizes[i].description)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
404 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
405 ps = &print_paper_sizes[i];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
406 i++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
407 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
408
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
409 return ps;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
410 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
411
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
412 static gint print_paper_size_lookup(gint n, gdouble *width, gdouble *height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
413 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
414 PaperSize *ps;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
415 gdouble w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
416
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
417 ps = print_paper_size_nth(n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
418 if (!ps) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
419
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
420 if (ps->orientation == PAPER_ORIENTATION_PORTRAIT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
421 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
422 w = ps->width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
423 h = ps->height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
424 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
425 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
426 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
427 h = ps->width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
428 w = ps->height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
429 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
430
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
431 if (width) *width = w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
432 if (height) *height = h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
434 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
435 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
436
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
437 static gdouble print_paper_size_convert_units(gdouble value, PaperUnits src, PaperUnits dst)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
438 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
439 gdouble ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
440
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
441 if (src == dst) return value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
442
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
443 switch (src)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
444 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
445 case PAPER_UNIT_MM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
446 ret = value / 25.4 * 72.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
447 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
448 case PAPER_UNIT_CM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
449 ret = value / 2.54 * 72.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
450 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
451 case PAPER_UNIT_INCH:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
452 ret = value * 72.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
453 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
454 case PAPER_UNIT_PICAS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
455 ret = value * 12.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
456 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
457 case PAPER_UNIT_POINTS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
458 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
459 ret = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
460 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
461 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
462
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
463 switch (dst)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
464 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
465 case PAPER_UNIT_MM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
466 ret = ret / 72.0 * 25.4;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
467 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
468 case PAPER_UNIT_CM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
469 ret = ret / 72.0 * 2.54;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
470 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
471 case PAPER_UNIT_INCH:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
472 ret = ret / 72.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
473 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
474 case PAPER_UNIT_PICAS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
475 ret = ret / 12.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
476 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
477 case PAPER_UNIT_POINTS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
478 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
479 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
480 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
481
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
482 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
483 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
484
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
485 static PaperUnits paper_unit_default(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
486 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
487 const char *result;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
488 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
489 /* this is not used because it is not even slightly portable */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
490 #include <langinfo.h>
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
491
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
492 result = nl_langinfo(_NL_MEASUREMENT_MEASUREMENT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
493 if (result[0] == '2') return PAPER_UNIT_INCH;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
494 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
495
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
496 #ifdef LC_MEASUREMENT
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
497 result = setlocale(LC_MEASUREMENT, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
498 #else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
499 result = setlocale(LC_ALL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
500 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
501 if (result &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
502 (strstr(result, "_US") || strstr(result, "_PR")) )
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
503 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
504 return PAPER_UNIT_INCH;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
505 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
506
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
507 return PAPER_UNIT_CM;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
508 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
509
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
510 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
511 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
512 * the layout window
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
513 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
514 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
515
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
516 static gint print_layout_page_count(PrintWindow *pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
517
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
518
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
519 static gint print_preview_unit(gdouble points)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
520 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
521 return (int)(points / PRINT_PREVIEW_SCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
522 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
523
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
524 static void print_proof_size(PrintWindow *pw, gdouble *width, gdouble *height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
525 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
526 if (width) *width = pw->proof_width + PRINT_PROOF_MARGIN * 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
527 if (height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
528 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
529 gdouble h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
530
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
531 h = pw->proof_height + PRINT_PROOF_MARGIN * 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
532 if (pw->text_fields != 0) h += PRINT_TEXT_PADDING;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
533 if (pw->text_fields & TEXT_INFO_FILENAME) h+= (gdouble)pw->text_points * 1.25;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
534 if (pw->text_fields & TEXT_INFO_DIMENSIONS) h+= (gdouble)pw->text_points * 1.25;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
535 if (pw->text_fields & TEXT_INFO_FILEDATE) h+= (gdouble)pw->text_points * 1.25;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
536 if (pw->text_fields & TEXT_INFO_FILESIZE) h+= (gdouble)pw->text_points * 1.25;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
537 *height = h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
538 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
539 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
540
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
541 static void print_window_layout_status(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
542 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
543 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
544 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
545
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
546 total = print_layout_page_count(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
547 pw->proof_page = CLAMP(pw->proof_page, 0, total - 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
548
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
549 buf = g_strdup_printf(_("page %d of %d"), pw->proof_page + 1, (total > 0) ? total : 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
550 gtk_label_set_text(GTK_LABEL(pw->page_label), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
551 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
552
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
553 gtk_widget_set_sensitive(pw->page_label, (total > 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
554
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
555 gtk_widget_set_sensitive(pw->button_back, (pw->proof_page > 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
556 gtk_widget_set_sensitive(pw->button_next, (pw->proof_page < total - 1));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
557
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
558 gtk_widget_set_sensitive(pw->print_button, total > 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
559 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
560
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
561 static void print_window_layout_render_stop(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
562 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
563 if (pw->layout_idle_id != -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
564 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
565 g_source_remove(pw->layout_idle_id);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
566 pw->layout_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
567 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
568 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
569
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
570 static gboolean print_window_layout_render_idle(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
571 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
572 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
573
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
574 print_job_close(pw, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
575 print_job_start(pw, RENDER_FORMAT_PREVIEW, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
576
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
577 pw->layout_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
578 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
579 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
580
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
581 static void print_window_layout_render(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
582 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
583 gdouble proof_w, proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
584
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
585 print_proof_size(pw, &proof_w, &proof_h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
586 pw->proof_columns = (pw->layout_width - pw->margin_left - pw->margin_right) / proof_w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
587 pw->proof_rows = (pw->layout_height - pw->margin_top - pw->margin_bottom) / proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
588
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
589 print_window_layout_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
590
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
591 if (pw->layout_idle_id == -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
592 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
593 pw->layout_idle_id = g_idle_add(print_window_layout_render_idle, pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
594 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
595 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
597 static void print_window_layout_size(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
598 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
599 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
600 gdouble width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
601 gdouble height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
602 gint sw, sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
603
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
604 if (!pw->layout_image) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
605
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
606 if (pw->paper_orientation == PAPER_ORIENTATION_LANDSCAPE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
607 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
608 width = pw->paper_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
609 height = pw->paper_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
610 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
611 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
612 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
613 width = pw->paper_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
614 height = pw->paper_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
615 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
616
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
617 pw->layout_width = width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
618 pw->layout_height = height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
619
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
620 sw = print_preview_unit(width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
621 sh = print_preview_unit(height);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
622 pixbuf = image_get_pixbuf(pw->layout_image);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
623 if (!pixbuf ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
624 gdk_pixbuf_get_width(pixbuf) != sw ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
625 gdk_pixbuf_get_height(pixbuf) != sh)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
626 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
627 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, sw, sh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
628 image_change_pixbuf(pw->layout_image, pixbuf, 0.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
629 g_object_unref(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
630 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
631
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
632 print_window_layout_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
633 print_window_layout_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
634 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
635
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
636 static gint print_layout_page_count(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
637 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
638 gint images;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
639 gint images_per_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
640 gint pages;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
641
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
642 if (pw->layout_width - pw->margin_left - pw->margin_right <= 0.0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
643 pw->layout_height - pw->margin_top - pw->margin_bottom <= 0.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
644 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
645 return 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
646 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
647
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
648 switch (pw->source)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
649 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
650 case PRINT_SOURCE_ALL:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
651 images = g_list_length(pw->source_list);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
652 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
653 case PRINT_SOURCE_SELECTION:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
654 images = g_list_length(pw->source_selection);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
655 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
656 case PRINT_SOURCE_IMAGE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
657 default:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
658 images = (pw->source_fd) ? 1 : 0;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
659 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
660 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
661
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
662 switch (pw->layout)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
663 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
664 case PRINT_LAYOUT_PROOF:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
665 images_per_page = pw->proof_columns * pw->proof_rows;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
666 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
667 case PRINT_LAYOUT_IMAGE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
668 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
669 images_per_page = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
670 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
671 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
672
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
673 if (images < 1 || images_per_page < 1) return 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
674
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
675 pages = images / images_per_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
676 if (pages * images_per_page < images) pages++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
677
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
678 return pages;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
679 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
680
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
681 static void print_layout_page_step(PrintWindow *pw, gint step)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
682 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
683 gint max;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
684 gint page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
685
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
686 max = print_layout_page_count(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
687 page = pw->proof_page + step;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
688
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
689 if (page >= max) page = max - 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
690 if (page < 0) page = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
691
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
692 if (page == pw->proof_page) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
693
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
694 pw->proof_page = page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
695 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
696 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
697
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
698 static void print_layout_page_back_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
699 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
700 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
701
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
702 print_layout_page_step(pw, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
703 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
704
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
705 static void print_layout_page_next_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
706 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
707 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
708
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
709 print_layout_page_step(pw, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
710 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
712 static void print_layout_zoom_in_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
713 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
714 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
715 image_zoom_adjust(pw->layout_image, 0.25);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
716 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
717
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
718 static void print_layout_zoom_out_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
719 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
720 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
721 image_zoom_adjust(pw->layout_image, -0.25);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
722 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
723
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
724 static void print_layout_zoom_original_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
725 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
726 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
727 gdouble zoom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
728
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
729 zoom = image_zoom_get(pw->layout_image);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
730 image_zoom_set(pw->layout_image, (zoom == 1.0) ? 0.0 : 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
731 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
732
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
733 static GtkWidget *print_window_layout_setup(PrintWindow *pw, GtkWidget *box)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
734 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
735 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
736 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
737 GtkWidget *group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
738 GtkWidget *button;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
739
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
740 vbox = pref_box_new(box, TRUE, GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
741 group = pref_frame_new(vbox, TRUE, _("Preview"), GTK_ORIENTATION_VERTICAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
742
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
743 pw->layout_idle_id = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
744
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
745 pw->layout_image = image_new(FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
746 gtk_widget_set_size_request(pw->layout_image->widget, PRINT_DLG_PREVIEW_WIDTH, PRINT_DLG_PREVIEW_HEIGHT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
747
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
748 gtk_box_pack_start(GTK_BOX(group), pw->layout_image->widget, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
749 gtk_widget_show(pw->layout_image->widget);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
750
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
751 hbox = pref_box_new(group, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
752 pw->button_back = pref_button_new(hbox, GTK_STOCK_GO_BACK, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
753 G_CALLBACK(print_layout_page_back_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
754 pw->button_next = pref_button_new(hbox, GTK_STOCK_GO_FORWARD, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
755 G_CALLBACK(print_layout_page_next_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
756 pw->page_label = pref_label_new(hbox, "");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
757
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
758 button = pref_button_new(NULL, GTK_STOCK_ZOOM_OUT, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
759 G_CALLBACK(print_layout_zoom_out_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
760 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
761 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
762 button = pref_button_new(NULL, GTK_STOCK_ZOOM_IN, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
763 G_CALLBACK(print_layout_zoom_in_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
764 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
765 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
766 button = pref_button_new(NULL, GTK_STOCK_ZOOM_100, NULL, TRUE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
767 G_CALLBACK(print_layout_zoom_original_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
768 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
769 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
770
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
771 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
773 return vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
774 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
775
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
776 static void print_window_spin_set(GtkSpinButton *spin, gpointer block_data,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
777 gdouble value, gdouble min, gdouble max,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
778 gdouble step, gdouble page, gint digits)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
779 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
780 if (block_data) g_signal_handlers_block_matched(G_OBJECT(spin), G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
781 0, 0, NULL, NULL, block_data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
782 gtk_spin_button_set_digits(spin, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
783 gtk_spin_button_set_increments(spin, step, page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
784 gtk_spin_button_set_range(spin, min, max);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
785 gtk_spin_button_set_value(spin, value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
786
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
787 if (block_data) g_signal_handlers_unblock_matched(G_OBJECT(spin), G_SIGNAL_MATCH_DATA,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
788 0, 0, NULL, NULL, block_data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
789 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
790
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
791 static void print_window_layout_sync_layout(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
792 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
793 gtk_widget_set_sensitive(pw->image_scale_spin, (pw->layout == PRINT_LAYOUT_IMAGE));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
794 gtk_widget_set_sensitive(pw->proof_group, (pw->layout == PRINT_LAYOUT_PROOF));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
795 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
797 static void print_window_layout_sync_paper(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
798 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
799 gdouble width, height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
800 gint digits;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
801 gdouble step;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
802 gdouble page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
803
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
804 gtk_widget_set_sensitive(pw->paper_width_spin, (pw->paper_size == 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
805 gtk_widget_set_sensitive(pw->paper_height_spin, (pw->paper_size == 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
806
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
807 width = print_paper_size_convert_units((gdouble)pw->paper_width, PAPER_UNIT_POINTS, pw->paper_units);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
808 height = print_paper_size_convert_units((gdouble)pw->paper_height, PAPER_UNIT_POINTS, pw->paper_units);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
809
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
810 switch (pw->paper_units)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
811 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
812 case PAPER_UNIT_MM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
813 digits = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
814 step = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
815 page = 10.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
816 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
817 case PAPER_UNIT_CM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
818 digits = 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
819 step = 0.5;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
820 page = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
821 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
822 case PAPER_UNIT_INCH:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
823 digits = 3;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
824 step = 0.25;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
825 page = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
826 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
827 case PAPER_UNIT_PICAS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
828 digits = 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
829 step = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
830 page = 6.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
831 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
832 case PAPER_UNIT_POINTS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
833 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
834 digits = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
835 step = 1.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
836 page = 10.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
837 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
838 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
839
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
840 print_window_spin_set(GTK_SPIN_BUTTON(pw->paper_width_spin), pw, width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
841 print_paper_size_convert_units(PRINT_MIN_WIDTH, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
842 print_paper_size_convert_units(PRINT_MAX_WIDTH, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
843 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
844
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
845 print_window_spin_set(GTK_SPIN_BUTTON(pw->paper_height_spin), pw, height,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
846 print_paper_size_convert_units(PRINT_MIN_HEIGHT, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
847 print_paper_size_convert_units(PRINT_MAX_HEIGHT, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
848 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
849
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
850 print_window_spin_set(GTK_SPIN_BUTTON(pw->margin_left_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
851 print_paper_size_convert_units(pw->margin_left, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
852 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
853 print_paper_size_convert_units(PRINT_MAX_WIDTH, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
854 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
855
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
856 print_window_spin_set(GTK_SPIN_BUTTON(pw->margin_right_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
857 print_paper_size_convert_units(pw->margin_right, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
858 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
859 print_paper_size_convert_units(PRINT_MAX_WIDTH, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
860 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
861
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
862 print_window_spin_set(GTK_SPIN_BUTTON(pw->margin_top_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
863 print_paper_size_convert_units(pw->margin_top, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
864 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
865 print_paper_size_convert_units(PRINT_MAX_HEIGHT, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
866 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
867
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
868 print_window_spin_set(GTK_SPIN_BUTTON(pw->margin_bottom_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
869 print_paper_size_convert_units(pw->margin_bottom, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
870 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
871 print_paper_size_convert_units(PRINT_MAX_HEIGHT, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
872 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
873
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
874 print_window_spin_set(GTK_SPIN_BUTTON(pw->proof_width_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
875 print_paper_size_convert_units(pw->proof_width, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
876 print_paper_size_convert_units(PRINT_PROOF_MIN_SIZE, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
877 print_paper_size_convert_units(PRINT_PROOF_MAX_SIZE, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
878 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
879
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
880 print_window_spin_set(GTK_SPIN_BUTTON(pw->proof_height_spin), pw,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
881 print_paper_size_convert_units(pw->proof_height, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
882 print_paper_size_convert_units(PRINT_PROOF_MIN_SIZE, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
883 print_paper_size_convert_units(PRINT_PROOF_MAX_SIZE, PAPER_UNIT_POINTS, pw->paper_units),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
884 step, page, digits);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
885 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
886
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
887 static void print_window_layout_set_size(PrintWindow *pw, gdouble width, gdouble height)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
888 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
889 pw->paper_width = width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
890 pw->paper_height = height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
891
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
892 print_window_layout_sync_paper(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
893
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
894 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
895 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
896
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
897 static void print_window_layout_set_orientation(PrintWindow *pw, PaperOrientation o)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
898 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
899 if (pw->paper_orientation == o) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
900
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
901 pw->paper_orientation = o;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
902
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
903 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
904 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
905
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
906 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
907 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
908 * list printers
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
909 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
910 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
911
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
912 static GList *print_window_list_printers(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
913 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
914 FILE *p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
915 GList *list = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
916 gchar buffer[2048];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
917
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
918 p = popen(PRINT_LPR_QUERY, "r");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
919 if (!p) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
920
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
921 while (fgets(buffer, sizeof(buffer), p) != NULL)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
922 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
923 gchar *ptr;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
924 gchar *end;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
925
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
926 ptr = buffer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
927 if (strncmp(ptr, "printer ", 8) != 0) continue;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
928 if (strstr(ptr, "enabled") == NULL) continue;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
929 ptr += 8;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
930 end = ptr;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
931 while (*end != '\0' && *end != '\n' && *end != ' ' && *end != '\t') end++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
932 *end = '\0';
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
933 list = g_list_append(list, g_strdup(ptr));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
934 if (debug) printf("adding printer: %s\n", ptr);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
935 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
936
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
937 pclose(p);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
938
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
939 return list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
940 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
941
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
942 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
943 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
944 * print ps
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
945 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
946 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
947
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
948 typedef struct _PipeError PipeError;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
949 struct _PipeError {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
950 struct sigaction old_action;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
951 sig_atomic_t *error;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
952 };
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
953
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
954 static sig_atomic_t pipe_handler_error = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
955 static PipeError *pipe_handler_data = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
956
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
957 static void pipe_handler_sigpipe_cb(int fd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
958 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
959 pipe_handler_error = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
960 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
961
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
962 static PipeError *pipe_handler_new(void)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
963 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
964 struct sigaction new_action;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
965 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
966
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
967 if (pipe_handler_data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
968 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
969 printf("warning SIGPIPE handler already in use\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
970 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
971 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
972
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
973 pe = g_new0(PipeError, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
974
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
975 pipe_handler_error = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
976 pe->error = &pipe_handler_error;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
977
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
978 new_action.sa_handler = pipe_handler_sigpipe_cb;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
979 sigemptyset (&new_action.sa_mask);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
980 new_action.sa_flags = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
981
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
982 /* setup our signal handler */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
983 sigaction (SIGPIPE, &new_action, &pe->old_action);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
984
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
985 pipe_handler_data = pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
986 return pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
987 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
988
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
989 static void pipe_handler_free(PipeError *pe)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
990 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
991 if (!pe) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
992 if (pe != pipe_handler_data) printf("warning SIGPIPE handler not closing same data\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
993
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
994 /* restore the original signal handler */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
995 sigaction (SIGPIPE, &pe->old_action, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
996
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
997 pipe_handler_data = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
998 g_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
999 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1000
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1001 static gint pipe_handler_check(PipeError *pe)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1002 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1003 if (!pe) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1004 return *pe->error;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1005 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1006
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1007 static FILE *print_job_ps_fd(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1008 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1009 if (pw->job_file) return pw->job_file;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1010 if (pw->job_pipe) return pw->job_pipe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1011 return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1012 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1013
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1014 static gint print_job_ps_init(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1015 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1016 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1017 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1018 const gchar *cmd = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1019 const gchar *path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1020 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1021 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1022
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1023 if (pw->job_file != NULL || pw->job_pipe != NULL) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1024
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1025 switch (pw->job_output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1026 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1027 case PRINT_OUTPUT_PS_LPR:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1028 cmd = PRINT_LPR_COMMAND;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1029 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1030 case PRINT_OUTPUT_PS_CUSTOM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1031 cmd = pw->output_custom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1032 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1033 case PRINT_OUTPUT_PS_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1034 path = pw->output_path;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1035 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1036 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1037 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1038 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1039 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1040
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1041 if (cmd)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1042 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1043 pw->job_pipe = popen(cmd, "w");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1044
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1045 if (!pw->job_pipe)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1046 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1047 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1048
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1049 buf = g_strdup_printf(_("Unable to open pipe for writing.\n\"%s\""), cmd);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1050 print_job_throw_error(pw, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1051 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1052
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1053 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1054 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1055 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1056 else if (path)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1057 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1058 gchar *pathl;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1059
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1060 if (isfile(path))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1061 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1062 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1063
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1064 buf = g_strdup_printf(_("A file with name %s already exists."), path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1065 print_job_throw_error(pw, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1066 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1067
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1068 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1069 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1070
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1071 pathl = path_from_utf8(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1072 pw->job_file = fopen(pathl, "w");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1073 g_free(pathl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1074
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1075 if (!pw->job_file)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1076 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1077 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1078
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1079 buf = g_strdup_printf(_("Failure writing to file %s"), path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1080 print_job_throw_error(pw, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1081 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1082
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1083 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1084 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1085
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1086 g_free(pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1087 pw->job_path = g_strdup(path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1088 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1089
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1090 f = print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1091 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1092
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1093 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1094 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1095
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1096 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1097
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1098 /* comments, etc. */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1099 fprintf(f, "%%!PS-Adobe-3.0\n");
196
f6e307c7bad6 rename GQview -> Geeqie over the code
nadvornik
parents: 138
diff changeset
1100 fprintf(f, "%%%%Creator: Geeqie Version %s\n", VERSION);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1101 fprintf(f, "%%%%CreationDate: \n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1102 fprintf(f, "%%%%LanguageLevel 2\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1103 fprintf(f, "%%%%DocumentMedia: \n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1104 fprintf(f, "%%%%Orientation: %s\n",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1105 (pw->paper_orientation == PAPER_ORIENTATION_PORTRAIT) ? "Portrait" : "Landscape");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1106 fprintf(f, "%%%%BoundingBox: %f %f %f %f\n",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1107 0.0, 0.0, pw->paper_width, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1108 fprintf(f, "%%%%Pages: %d\n", print_layout_page_count(pw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1109 fprintf(f, "%%%%PageOrder: Ascend\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1110 fprintf(f, "%%%%Title:\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1111
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1112 /* setup page size, coordinates (do we really need this?) */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1113 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1114 fprintf(f, "<<\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1115 fprintf(f, "/PageSize [%f %f]\n", pw->layout_width, pw->layout_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1116 fprintf(f, "/ImagingBBox [%f %f %f %f]\n", /* l b r t */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1117 pw->margin_left, pw->margin_bottom,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1118 pw->layout_width - pw->margin_right, pw->layout_height - pw->margin_top);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1119 fprintf(f, "/Orientation %d\n",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1120 (pw->paper_orientation == PAPER_ORIENTATION_PORTRAIT) ? 0 : 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1121 fprintf(f, ">> setpagedevice\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1122 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1123
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1124 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1125 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1126
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1127 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1128 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1129 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1130 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1131 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1132
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1133 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1134
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1135 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1136 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1137
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1138 static gint print_job_ps_page_new(PrintWindow *pw, gint page)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1139 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1140 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1141 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1142 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1143 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1144
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1145 f= print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1146 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1147
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1148 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1149 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1150
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1151 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1152
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1153 fprintf(f, "%%%% page %d\n", page + 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1154
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1155 if (pw->paper_orientation == PAPER_ORIENTATION_LANDSCAPE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1156 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1157 fprintf(f, "/pagelevel save def\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1158 fprintf(f, "%d 0 translate 90 rotate\n", (gint)pw->layout_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1159 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1160
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1161 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1162 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1164 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1165 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1166 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1167 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1168 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1169
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1170 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1171
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1172 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1173 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1174
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1175 static gint print_job_ps_page_done(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1176 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1177 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1178 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1179 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1180 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1181
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1182 f = print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1183 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1184
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1185 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1186 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1187
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1188 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1190 if (pw->paper_orientation == PAPER_ORIENTATION_LANDSCAPE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1192 fprintf(f, "pagelevel restore\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1193 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1194
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1195 fprintf(f, "showpage\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1196
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1197 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1198 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1199
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1200 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1201 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1202 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1203 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1204 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1205
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1206 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1207
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1208 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1209 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1210
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1211 static void print_job_ps_page_image_pixel(FILE *f, guchar *pix)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1212 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1213 static gchar hex_digits[] = "0123456789abcdef";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1214 gchar text[8];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1215 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1216
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1217 for (i = 0; i < 3; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1218 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1219 text[i*2] = hex_digits[pix[i] >> 4];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1220 text[i*2+1] = hex_digits[pix[i] & 0xf];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1221 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1222 text[6] = '\0';
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1223
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1224 fprintf(f, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1225 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1226 static gint print_job_ps_page_image(PrintWindow *pw, GdkPixbuf *pixbuf,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1227 gdouble x, gdouble y, gdouble w, gdouble h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1228 gdouble offx, gdouble offy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1229 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1230 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1231 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1232 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1233 gint sw, sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1234 gint bps;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1235 gint rowstride;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1236 guchar *pix;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1237 gint i, j;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1238 gint c;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1239 guchar *p;
121
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1240 guchar bps_buf[3];
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1241 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1242
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1243 if (!pixbuf) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1245 f = print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1246 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1247
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1248 sw = gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1249 sh = gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1250
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1251 if (pw->max_dpi >= PRINT_PS_DPI_MIN &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1252 sw / pw->max_dpi > w / 72.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1253 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1254 pixbuf = gdk_pixbuf_scale_simple(pixbuf,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1255 (gint)(w / 72.0 * pw->max_dpi),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1256 (gint)(h / 72.0 * pw->max_dpi),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1257 PRINT_PS_MAX_INTERP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1258 sw = gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1259 sh = gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1260 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1261 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1262 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1263 g_object_ref(G_OBJECT(pixbuf));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1264 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1265
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1266 bps = (gdk_pixbuf_get_has_alpha(pixbuf)) ? 4 : 3;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1267 rowstride = gdk_pixbuf_get_rowstride(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1268 pix = gdk_pixbuf_get_pixels(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1269
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1270 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1271 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1272
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1273 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1275 fprintf(f, "gsave\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1276 fprintf(f, "[%f 0 0 %f %f %f] concat\n", w, h, x, pw->layout_height - h - y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1277 fprintf(f, "/buf %d string def\n", sw * 3);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1278 fprintf(f, "%d %d %d\n", sw, sh, 8);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1279 fprintf(f, "[%d 0 0 -%d 0 %d]\n", sw, sh, sh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1280 fprintf(f, "{ currentfile buf readhexstring pop }\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1281 fprintf(f, "false %d colorimage\n", 3);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1282
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1283 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1284 for (j = 0; j < sh; j++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1285 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1286 p = pix + j * rowstride;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1287 for (i = 0; i < sw; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1288 {
121
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1289 if (bps == 3)
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1290 {
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1291 print_job_ps_page_image_pixel(f, p);
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1292 }
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1293 else
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1294 {
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1295 bps_buf[0] = (p[0] * p[3] + PRINT_PS_MASK_R * (256 - p[3])) >> 8;
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1296 bps_buf[1] = (p[1] * p[3] + PRINT_PS_MASK_G * (256 - p[3])) >> 8;
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1297 bps_buf[2] = (p[2] * p[3] + PRINT_PS_MASK_B * (256 - p[3])) >> 8;
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1298 print_job_ps_page_image_pixel(f, bps_buf);
045ac4c27e62 Fri Dec 1 14:27:55 2006 John Ellis <johne@verizon.net>
gqview
parents: 23
diff changeset
1299 }
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1300 p+=bps;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1301 c++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1302 if (c > 11)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1303 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1304 fprintf(f, "\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1305 c = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1306 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1307 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1308 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1309 if (c > 0) fprintf(f, "\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1310 fprintf(f, "grestore\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1311
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1312 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1313 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1314
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1315 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1316 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1317 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1318 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1319 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1320
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1321 g_object_unref(G_OBJECT(pixbuf));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1322
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1323 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1324
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1325 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1326 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1327
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1328 static const gchar *ps_text_to_hex_array(FILE *f, const gchar *text, gdouble x, gdouble y)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1329 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1330 static gchar hex_digits[] = "0123456789abcdef";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1331 const gchar *p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1332
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1333 if (!text) return NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1334
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1335 fprintf(f, "%f %f moveto\n", x, y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1336 fprintf(f, "<");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1338 /* fixme: convert utf8 to ascii or proper locale string.. */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1339
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1340 p = text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1341 while (*p != '\0' && *p != '\n')
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1342 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1343 gchar text[3];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1344
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1345 text[0] = hex_digits[*p >> 4];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1346 text[1] = hex_digits[*p & 0xf];
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1347 text[2] = '\0';
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1348
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1349 fprintf(f, text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1350
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1351 p++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1352 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1353
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1354 fprintf(f, ">\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1355 fprintf(f, "dup stringwidth pop 2 div neg 0 rmoveto show\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1356
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1357 return p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1358 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1359
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1360 static void ps_text_parse(FILE *f, const gchar *text, gdouble x, gdouble y, gdouble point_size)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1361 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1362 const gchar *p;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1364 if (!text) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1365
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1366 fprintf(f, "newpath\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1367
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1368 p = text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1369 while (p && *p != '\0')
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1370 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1371 p = ps_text_to_hex_array(f, p, x, y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1372 if (p && *p == '\n') p++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1373 y -= point_size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1374 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1375
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1376 fprintf(f, "closepath\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1377 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1378
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1379 static gint print_job_ps_page_text(PrintWindow *pw, const gchar *text, gdouble point_size,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1380 gdouble x, gdouble y, gdouble width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1381 guint8 r, guint8 g, guint8 b)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1382 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1383 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1384 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1385 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1386 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1387
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1388 if (!text) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1389
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1390 f = print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1391 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1392
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1393 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1394 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1395
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1396 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1397
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1398 fprintf(f, "/Sans findfont\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1399 fprintf(f, "%f scalefont\n", point_size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1400 fprintf(f, "setfont\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1401
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1402 fprintf(f, "%f %f %f setrgbcolor\n", (gdouble)r / 255.0, (gdouble)g / 255.0, (gdouble)b / 255.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1403 ps_text_parse(f, text, x, pw->layout_height - y - point_size, point_size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1404
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1405 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1406 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1407
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1408 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1409 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1410 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1411 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1412 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1413
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1414 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1415
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1416 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1417 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1418
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1419 static gint print_job_ps_end(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1420 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1421 FILE *f;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1422 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1423 gchar *lc_pointer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1424 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1425
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1426 f = print_job_ps_fd(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1427 if (!f) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1428
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1429 lc_pointer = g_strdup(setlocale(LC_NUMERIC, NULL));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1430 setlocale(LC_NUMERIC, POSTSCRIPT_LOCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1431
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1432 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1434 fprintf(f, "%%%%EOF\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1435
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1436 ret = !pipe_handler_check(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1437 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1438
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1439 if (lc_pointer)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1440 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1441 setlocale(LC_NUMERIC, lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1442 g_free(lc_pointer);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1443 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1444
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1445 if (!ret) print_job_throw_error(pw, _("SIGPIPE error writing to printer."));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1446
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1447 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1448 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1449
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1450 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1451 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1452 * print rgb
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1453 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1454 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1455
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1456 static gint print_job_rgb_page_new(PrintWindow *pw, gint page)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1457 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1458 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1459
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1460 if (pw->job_pixbuf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1461 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1462 pixbuf_set_rect_fill(pw->job_pixbuf, 0, 0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1463 gdk_pixbuf_get_width(pw->job_pixbuf),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1464 gdk_pixbuf_get_height(pw->job_pixbuf),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1465 255, 255, 255, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1466 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1468 g_free(pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1469 pw->job_path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1470
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1471 total = print_layout_page_count(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1472
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1473 if (!pw->output_path ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1474 page < 0 || page >= total) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1475
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1476 if (total > 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1477 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1478 const gchar *ext;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1479 gchar *base;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1480
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1481 ext = extension_from_path(pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1482
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1483 if (ext)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1484 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1485 base = g_strndup(pw->output_path, ext - pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1486 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1487 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1488 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1489 base = g_strdup(pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1490 ext = "";
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1491 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1492 pw->job_path = g_strdup_printf("%s_%03d%s", base, page + 1, ext);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1493 g_free(base);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1494 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1495 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1496 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1497 pw->job_path = g_strdup(pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1498 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1499
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1500 if (isfile(pw->job_path))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1501 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1502 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1504 buf = g_strdup_printf(_("A file with name %s already exists."), pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1505 print_job_throw_error(pw, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1506 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1507
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1508 g_free(pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1509 pw->job_path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1510 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1511
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1512 return (pw->job_path != NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1513 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1514
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1515 static gint print_job_rgb_page_done(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1516 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1517 gchar *pathl;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1518 gint ret = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1519
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1520 if (!pw->job_pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1521
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1522 pathl = path_from_utf8(pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1523
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1524 if (pw->output_format == PRINT_FILE_PNG)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1525 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1526 ret = pixbuf_to_file_as_png(pw->job_pixbuf, pathl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1527 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1528 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1529 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1530 gint quality = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1531
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1532 switch (pw->output_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1533 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1534 case PRINT_FILE_JPG_LOW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1535 quality = 65;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1536 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1537 case PRINT_FILE_JPG_NORMAL:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1538 quality = 80;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1539 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1540 case PRINT_FILE_JPG_HIGH:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1541 quality = 95;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1542 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1543 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1544 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1545 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1546
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1547 if (quality > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1548 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1549 ret = pixbuf_to_file_as_jpg(pw->job_pixbuf, pathl, quality);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1550 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1551 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1552
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1553 g_free(pathl);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1554
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1555 if (!ret)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1556 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1557 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1558
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1559 buf = g_strdup_printf(_("Failure writing to file %s"), pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1560 print_job_throw_error(pw, buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1561 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1562 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1563
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1564 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1565 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1566
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1567 static gint print_job_rgb_page_image(PrintWindow *pw, GdkPixbuf *pixbuf,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1568 gdouble x, gdouble y, gdouble w, gdouble h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1569 gdouble offx, gdouble offy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1570 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1571 gdouble sw, sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1572 gdouble dw, dh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1573 gdouble rx, ry, rw, rh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1574
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1575 if (!pw->job_pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1576 if (!pixbuf) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1577
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1578 sw = (gdouble)gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1579 sh = (gdouble)gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1580
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1581 dw = (gdouble)gdk_pixbuf_get_width(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1582 dh = (gdouble)gdk_pixbuf_get_height(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1583
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1584 if (clip_region(x, y, w, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1585 0.0, 0.0, dw, dh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1586 &rx, &ry, &rw, &rh))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1587 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1588 gdk_pixbuf_composite(pixbuf, pw->job_pixbuf, rx, ry, rw, rh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1589 x + offx, y + offy,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1590 w / sw, h / sh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1591 (w / sw < 0.01 || h / sh < 0.01) ? GDK_INTERP_NEAREST : GDK_INTERP_BILINEAR, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1592 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1593
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1594 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1595 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1596
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1597 static gdouble convert_pango_dpi(gdouble points)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1598 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1599 static gdouble dpi = 0.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1600
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1601 if (dpi == 0.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1602 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1603 GtkSettings *settings;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1604 GObjectClass *klass;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1605
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1606 settings = gtk_settings_get_default();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1607 klass = G_OBJECT_CLASS(GTK_SETTINGS_GET_CLASS(settings));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1608 if (g_object_class_find_property(klass, "gtk-xft-dpi"))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1609 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1610 int int_dpi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1611 g_object_get(settings, "gtk-xft-dpi", &int_dpi, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1612 dpi = (gdouble)int_dpi / PANGO_SCALE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1613 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1614
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1615 if (dpi < 25.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1616 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1617 static gint warned = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1618 gdouble fallback_dpi = 96.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1619
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1620 if (!warned)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1621 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1622 if (dpi == 0.0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1623 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1624 printf("pango dpi unknown, assuming %.0f\n", fallback_dpi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1625 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1626 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1627 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1628 printf("pango dpi reported as %.0f ignored, assuming %.0f\n", dpi, fallback_dpi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1629 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1630 warned = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1631 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1632
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1633 dpi = fallback_dpi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1634 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1635 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1637 if (dpi == 0) return points;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1638 return points * 72.0 / dpi;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1639 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1640
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1641 static gint print_job_rgb_page_text(PrintWindow *pw, const gchar *text, gdouble point_size,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1642 gdouble x, gdouble y, gdouble width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1643 guint8 r, guint8 g, guint8 b)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1644 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1645 PangoLayout *layout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1646 PangoFontDescription *desc;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1647 gint lw, lh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1648
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1649 if (!pw->job_pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1650
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1651 layout = gtk_widget_create_pango_layout(pw->dialog->dialog, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1652
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1653 desc = pango_font_description_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1654 pango_font_description_set_size(desc, convert_pango_dpi(point_size) * PANGO_SCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1655 pango_layout_set_font_description(layout, desc);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1656 pango_font_description_free(desc);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1657
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1658 pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1659 pango_layout_set_text(layout, text, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1660
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1661 pango_layout_get_pixel_size(layout, &lw, &lh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1662 x = x - (gdouble)lw / 2.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1663
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1664 pixbuf_draw_layout(pw->job_pixbuf, layout, pw->dialog->dialog, x, y, r, g, b, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1665 g_object_unref(G_OBJECT(layout));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1666
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1667 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1668 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1669
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1670 static gint print_job_rgb_init(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1671 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1672 if (pw->job_pixbuf) g_object_unref(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1673 pw->job_pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1674 (gint)pw->layout_width, (gint)pw->layout_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1675
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1676 return print_job_rgb_page_new(pw, pw->job_page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1677 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1678
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1679 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1680 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1681 * print preview
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1682 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1683 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1684
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1685 static gint print_job_preview_page_new(PrintWindow *pw, gint page)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1686 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1687 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1688 gint w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1689 gint l, r, t, b;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1690
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1691 pixbuf = pw->job_pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1692 if (!pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1693
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1694 w = print_preview_unit(pw->layout_width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1695 h = print_preview_unit(pw->layout_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1696 l = print_preview_unit(pw->margin_left);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1697 r = print_preview_unit(pw->margin_right);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1698 t = print_preview_unit(pw->margin_top);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1699 b = print_preview_unit(pw->margin_bottom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1700
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1701 /* fill background */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1702 pixbuf_set_rect_fill(pixbuf, 0, 0, w, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1703 255, 255, 255, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1704
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1705 /* draw cm or inch grid */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1706 if (TRUE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1707 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1708 gdouble i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1709 gdouble grid;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1710 PaperUnits units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1712 units = (pw->paper_units == PAPER_UNIT_MM ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1713 pw->paper_units == PAPER_UNIT_CM) ? PAPER_UNIT_CM : PAPER_UNIT_INCH;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1714
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1715 grid = print_paper_size_convert_units(1.0, units, PAPER_UNIT_POINTS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1716 for (i = grid ; i < pw->layout_width; i += grid)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1717 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1718 pixbuf_draw_rect_fill(pixbuf, print_preview_unit(i), 0, 1, h, 0, 0, 0, 16);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1719 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1720 for (i = grid; i < pw->layout_height; i += grid)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1721 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1722 pixbuf_draw_rect_fill(pixbuf, 0, print_preview_unit(i), w, 1, 0, 0, 0, 16);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1723 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1724 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1725
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1726 /* proof sheet grid */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1727 if (pw->layout == PRINT_LAYOUT_PROOF)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1728 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1729 gdouble i, j;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1730 gdouble proof_w, proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1731 gint uw, uh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1732
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1733 print_proof_size(pw, &proof_w, &proof_h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1734 uw = print_preview_unit(proof_w + PRINT_PREVIEW_SCALE - 0.1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1735 uh = print_preview_unit(proof_h + PRINT_PREVIEW_SCALE - 0.1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1736
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1737 for (i = 0; i < pw->proof_columns; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1738 for (j = 0; j < pw->proof_rows; j++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1739 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1740 gint x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1741
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1742 x = pw->margin_left + (pw->layout_width - pw->margin_left - pw->margin_right - (pw->proof_columns * proof_w)) / 2 + i * proof_w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1743 y = pw->margin_top + j * proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1744
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1745 pixbuf_draw_rect(pixbuf, print_preview_unit(x), print_preview_unit(y), uw, uh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1746 255, 0, 0, 64, 1, 1, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1747 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1748 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1749
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1750 /* non-printable region (margins) */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1751 pixbuf_draw_rect(pixbuf, 0, 0, w, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1752 0, 0, 0, 16,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1753 l, r, t, b);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1754
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1755 /* margin lines */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1756 pixbuf_draw_rect(pixbuf, l, 0, w - l - r, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1757 0, 0, 255, 128,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1758 1, 1, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1759 pixbuf_draw_rect(pixbuf, 0, t, w, h - t - b,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1760 0, 0, 255, 128,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1761 0, 0, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1762
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1763 /* border */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1764 pixbuf_draw_rect(pixbuf, 0, 0, w, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1765 0, 0, 0, 255,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1766 1, 1, 1, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1767
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1768 image_area_changed(pw->layout_image, 0, 0, w, h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1769
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1770 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1771 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1773 static gint print_job_preview_page_done(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1774 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1775 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1776 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1777
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1778 static gint print_job_preview_page_image(PrintWindow *pw, GdkPixbuf *pixbuf,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1779 gdouble x, gdouble y, gdouble w, gdouble h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1780 gdouble offx, gdouble offy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1781 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1782 gdouble sw, sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1783 gdouble dw, dh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1784 gdouble rx, ry, rw, rh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1785
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1786 if (!pw->job_pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1787 if (!pixbuf) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1788
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1789 sw = (gdouble)gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1790 sh = (gdouble)gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1791
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1792 dw = (gdouble)gdk_pixbuf_get_width(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1793 dh = (gdouble)gdk_pixbuf_get_height(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1795 x = print_preview_unit(x);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1796 y = print_preview_unit(y);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1797 w = print_preview_unit(w);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1798 h = print_preview_unit(h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1799 offx = print_preview_unit(offx);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1800 offy = print_preview_unit(offy);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1801
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1802 if (clip_region(x, y, w, h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1803 0.0, 0.0, dw, dh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1804 &rx, &ry, &rw, &rh))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1805 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1806 gdk_pixbuf_composite(pixbuf, pw->job_pixbuf, rx, ry, rw, rh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1807 x + offx, y + offy,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1808 w / sw, h / sh,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1809 (w / sw < 0.01 || h / sh < 0.01) ? GDK_INTERP_NEAREST : GDK_INTERP_BILINEAR, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1810
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1811 image_area_changed(pw->layout_image, rx, ry, rw, rh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1812 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1813
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1814 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1815 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1816
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1817 static gint print_job_preview_page_text(PrintWindow *pw, const gchar *text, gdouble point_size,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1818 gdouble x, gdouble y, gdouble width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1819 guint8 r, guint8 g, guint8 b)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1820 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1821 PangoLayout *layout;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1822 PangoFontDescription *desc;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1823 gint lw, lh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1824 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1825
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1826 if (!pw->job_pixbuf) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1827
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1828 layout = gtk_widget_create_pango_layout(pw->dialog->dialog, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1829
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1830 desc = pango_font_description_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1831 pango_font_description_set_size(desc, convert_pango_dpi(point_size) * PANGO_SCALE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1832 pango_layout_set_font_description(layout, desc);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1833 pango_font_description_free(desc);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1834
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1835 pango_layout_set_alignment(layout, PANGO_ALIGN_CENTER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1836 pango_layout_set_text(layout, text, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1837
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1838 pango_layout_get_pixel_size(layout, &lw, &lh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1839 x = x - (gdouble)lw / 2.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1840
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1841 pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, lw, lh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1842 pixbuf_set_rect_fill(pixbuf, 0, 0, lw, lh, 0, 0, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1843 pixbuf_draw_layout(pixbuf, layout, pw->dialog->dialog, 0, 0, r, g, b, 255);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1844 g_object_unref(G_OBJECT(layout));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1845
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1846 print_job_preview_page_image(pw, pixbuf, x, y, (gdouble)lw, (gdouble)lh, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1847 g_object_unref(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1848
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1849 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1850 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1851
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1852 static gint print_job_preview_init(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1853 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1854 if (pw->job_pixbuf) g_object_unref(pw->job_pixbuf);
23
17acca639a86 ##### Note: GQview CVS on sourceforge is not always up to date, please use #####
gqview
parents: 9
diff changeset
1855 pw->job_pixbuf = image_get_pixbuf(pw->layout_image);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1856 g_object_ref(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1857
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1858 return print_job_preview_page_new(pw, pw->job_page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1859 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1860
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1861
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1862 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1863 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1864 * wrappers
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1865 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1866 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1867
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1868 static gint print_job_page_new(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1869 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1870 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1871 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1872 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1873 return print_job_rgb_page_new(pw, pw->job_page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1874 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1875 return print_job_ps_page_new(pw, pw->job_page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1876 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1877 return print_job_preview_page_new(pw, pw->job_page);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1878 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1879
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1880 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1881 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1882
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1883 static gint print_job_page_done(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1884 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1885 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1886 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1887 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1888 return print_job_rgb_page_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1889 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1890 return print_job_ps_page_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1891 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1892 return print_job_preview_page_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1893 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1894
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1895 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1896 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1897
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1898 static gint print_job_page_image(PrintWindow *pw, GdkPixbuf *pixbuf,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1899 gdouble x, gdouble y, gdouble w, gdouble h,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1900 gdouble offx, gdouble offy)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1901 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1902 gint success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1903
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1904 if (w <= 0.0 || h <= 0.0) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1905
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1906 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1907 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1908 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1909 success = print_job_rgb_page_image(pw, pixbuf, x, y, w, h, offx, offy);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1910 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1911 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1912 success = print_job_ps_page_image(pw, pixbuf, x, y, w, h, offx, offy);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1913 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1914 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1915 success = print_job_preview_page_image(pw, pixbuf, x, y, w, h, offx, offy);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1916 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1917 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1918
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1919 return success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1920 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1921
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1922 static gint print_job_page_text(PrintWindow *pw, const gchar *text, gdouble point_size,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1923 gdouble x, gdouble y, gdouble width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1924 guint8 r, guint8 g, guint8 b)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1925 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1926 gint success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1927
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1928 if (!text) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1929
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1930 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1931 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1932 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1933 success = print_job_rgb_page_text(pw, text, point_size, x, y, width, r, g, b);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1934 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1935 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1936 success = print_job_ps_page_text(pw, text, point_size, x, y, width, r, g, b);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1937 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1938 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1939 success = print_job_preview_page_text(pw, text, point_size, x, y, width, r, g, b);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1940 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1941 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1942
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1943 return success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1944 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1945
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1946 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1947 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1948 * print ?
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1949 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1950 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1951
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1952 static gint print_job_render_image(PrintWindow *pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1953 static gint print_job_render_proof(PrintWindow *pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1954
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1955
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1956 static void print_job_status(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1957 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1958 gdouble value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1959 gint page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1960 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1961 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1962
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1963 if (!pw->job_progress) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1964
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1965 page = pw->job_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1966 total = print_layout_page_count(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1967
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1968 if (pw->layout == PRINT_LAYOUT_PROOF && pw->proof_point)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1969 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1970 GList *start;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1971
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1972 start = g_list_first(pw->proof_point);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1973 value = (gdouble)g_list_position(start, pw->proof_point) / g_list_length(start);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1974 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1975 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1976 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1977 value = (total > 0) ? (gdouble)page / total : 0.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1978 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1979
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1980 buf = g_strdup_printf(_("Page %d"), page + 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1981 gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pw->job_progress), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1982 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1983
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1984 if (pw->job_path && pw->job_progress_label)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1985 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1986 gtk_label_set_text(GTK_LABEL(pw->job_progress_label), pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1987 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1988
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1989 gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pw->job_progress), value);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1990 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1991
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1992 static void print_job_throw_error(PrintWindow *pw, const gchar *message)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1993 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1994 GenericDialog *gd;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1995 GtkWidget *parent = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1996 GtkWidget *group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1997 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1998 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
1999
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2000 if (GTK_WIDGET_VISIBLE(pw->dialog->dialog)) parent = pw->dialog->dialog;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2001
254
9faf34f047b1 Make the wmclass value unique among the code by defining
zas_
parents: 228
diff changeset
2002 gd = generic_dialog_new(_("Printing error"), GQ_WMCLASS, "print_warning",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2003 parent, TRUE, NULL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2004 generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, NULL, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2005
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2006 buf = g_strdup_printf(_("An error occured printing to %s."), print_output_name(pw->output));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2007 generic_dialog_add_message(gd, GTK_STOCK_DIALOG_ERROR, _("Printing error"), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2008 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2009
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2010 group = pref_group_new(gd->vbox, FALSE, _("Details"), GTK_ORIENTATION_VERTICAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2011 label = pref_label_new(group, message);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2012 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2013
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2014 gtk_widget_show(gd->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2015 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2016
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2017 static void print_job_done(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2018 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2019 print_job_close(pw, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2020 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2021
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2022 static gint print_job_text_image(PrintWindow *pw, const gchar *path,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2023 gdouble x, gdouble y, gdouble width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2024 gint sw, gint sh, gint proof)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2025 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2026 GString *string;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2027 gint space = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2028 gint newline = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2029 gint ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2030
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2031 if (pw->text_fields == 0) return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2032
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2033 string = g_string_new("");
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2034 path = pw->job_loader->fd->path;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2035
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2036 if (pw->text_fields & TEXT_INFO_FILENAME)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2037 {
266
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2038 if (pw->text_fields & TEXT_INFO_FILEPATH)
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2039 g_string_append(string, path);
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2040 else
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2041 g_string_append(string, filename_from_path(path));
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2042 newline = TRUE;
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2043 }
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2044 else if (pw->text_fields & TEXT_INFO_FILEPATH)
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2045 {
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2046 gchar *dirname = g_path_get_dirname(path);
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2047
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2048 g_string_append_printf(string, "%s%s", dirname, G_DIR_SEPARATOR_S);
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
2049 g_free(dirname);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2050 newline = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2051 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2052 if (pw->text_fields & TEXT_INFO_DIMENSIONS)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2053 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2054 if (newline) g_string_append(string, "\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2055 g_string_append_printf(string, "%d x %d", (gint)sw, (gint)sh);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2056 newline = proof;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2057 space = !proof;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2058 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2059 if (pw->text_fields & TEXT_INFO_FILEDATE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2060 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2061 if (newline) g_string_append(string, "\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2062 if (space) g_string_append(string, " - ");
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2063 g_string_append(string, text_from_time(filetime(pw->job_loader->fd->path)));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2064 newline = proof;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2065 space = !proof;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2066 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2067 if (pw->text_fields & TEXT_INFO_FILESIZE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2068 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2069 gchar *size;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2070
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2071 if (newline) g_string_append(string, "\n");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2072 if (space) g_string_append(string, " - ");
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2073 size = text_from_size_abrev(filesize(pw->job_loader->fd->path));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2074 g_string_append(string, size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2075 g_free(size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2076 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2077
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2078 ret = print_job_page_text(pw, string->str, pw->text_points, x, y, width,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2079 pw->text_r, pw->text_g, pw->text_b);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2080
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2081 g_string_free(string, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2082
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2083 return ret;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2084 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2085
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2086 static void print_job_render_image_loader_done(ImageLoader *il, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2087 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2088 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2089 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2090 gint success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2091
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2092 pixbuf = image_loader_get_pixbuf(il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2093 if (pixbuf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2094 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2095 gdouble sw, sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2096 gdouble dw, dh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2097 gdouble x, y, w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2098 gdouble scale;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2099 gdouble offx, offy;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2100
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2101 sw = (gdouble)gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2102 sh = (gdouble)gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2103
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2104 dw = pw->layout_width - pw->margin_left - pw->margin_right;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2105 dh = pw->layout_height - pw->margin_top - pw->margin_bottom;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2106
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2107 if (dw / sw < dh / sh)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2108 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2109 w = dw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2110 h = dw / sw * sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2111 scale = w / sw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2112 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2113 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2114 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2115 h = dh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2116 w = dh / sh *sw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2117 scale = h / sh;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2118 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2119
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2120 if (pw->image_scale >= 5)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2121 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2122 w = w * (gdouble)pw->image_scale / 100.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2123 h = h * (gdouble)pw->image_scale / 100.0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2124 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2125
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2126 x = pw->margin_left + (dw / 2) - (w / 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2127 y = pw->margin_top + (dh / 2) - (h / 2);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2128
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2129 offx = offy = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2130
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2131 if (x < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2132 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2133 w += x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2134 offx = x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2135 x = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2136 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2137 if (x + w >= pw->layout_width) w = pw->layout_width - x;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2138
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2139 if (y < 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2140 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2141 h += y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2142 offy = y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2143 y = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2144 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2145 if (y + h >= pw->layout_height) h = pw->layout_height - y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2146
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2147 success = (success &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2148 print_job_page_image(pw, pixbuf, x, y, w, h, offx, offy));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2150 x = x + w / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2151 y = y + h + PRINT_TEXT_PADDING;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2152
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2153 success = (success &&
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2154 print_job_text_image(pw, pw->job_loader->fd->path, x, y, dw, sw, sh, FALSE));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2155 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2156
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2157 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2158 pw->job_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2159
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2160 if (pw->job_format == RENDER_FORMAT_PREVIEW)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2161 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2162 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2163 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2164 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2165
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2166 success = (success && print_job_page_done(pw));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2167 if (!success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2168 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2169 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2170 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2171 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2172
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2173 pw->job_page++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2174 print_job_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2175
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2176 if (print_job_render_image(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2177 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2178 if (!print_job_page_new(pw)) print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2179 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2180 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2181 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2182 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2183 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2184 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2185
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2186 static gint print_job_render_image(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2187 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2188 FileData *fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2190 switch (pw->source)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2191 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2192 case PRINT_SOURCE_SELECTION:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2193 fd = g_list_nth_data(pw->source_selection, pw->job_page);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2194 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2195 case PRINT_SOURCE_ALL:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2196 fd = g_list_nth_data(pw->source_list, pw->job_page);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2197 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2198 case PRINT_SOURCE_IMAGE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2199 default:
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2200 if (pw->job_page == 0) fd = pw->source_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2201 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2202 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2203
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2204 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2205 pw->job_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2206
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2207 if (!fd) return FALSE;
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2208
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2209 pw->job_loader = image_loader_new(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2210 if (!image_loader_start(pw->job_loader, print_job_render_image_loader_done, pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2211 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2212 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2213 pw->job_loader= NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2214 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2216 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2217 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2218
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2219 static void print_job_render_proof_loader_done(ImageLoader *il, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2220 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2221 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2222 GdkPixbuf *pixbuf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2223 gdouble x, y;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2224 gdouble w, h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2225 gdouble proof_w, proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2226 gdouble icon_w, icon_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2227 gdouble scale;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2228 gint success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2229
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2230 if (pw->proof_columns < 1 || pw->proof_rows < 1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2231 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2232 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2233 pw->job_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2234
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2235 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2236
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2237 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2238 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2239
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2240 pixbuf = image_loader_get_pixbuf(il);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2241
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2242 w = gdk_pixbuf_get_width(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2243 h = gdk_pixbuf_get_height(pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2244
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2245 if (pw->proof_width / w < pw->proof_height / h)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2246 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2247 icon_w = pw->proof_width;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2248 icon_h = pw->proof_width / w * h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2249 scale = icon_w / w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2250 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2251 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2252 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2253 icon_h = pw->proof_height;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2254 icon_w = pw->proof_height / h * w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2255 scale = icon_h / h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2256 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2257
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2258 y = pw->proof_position / pw->proof_columns;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2259 x = pw->proof_position - (y * pw->proof_columns);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2260
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2261 print_proof_size(pw, &proof_w, &proof_h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2262
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2263 x *= proof_w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2264 y *= proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2265 x += pw->margin_left + (pw->layout_width - pw->margin_left - pw->margin_right - (pw->proof_columns * proof_w)) / 2 + (proof_w - icon_w) / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2266 y += pw->margin_top + PRINT_PROOF_MARGIN + (pw->proof_height - icon_h) / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2267
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2268 success = (success &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2269 print_job_page_image(pw, pixbuf, x, y, icon_w, icon_h, 0, 0));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2270
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2271 x = x + icon_w / 2;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2272 y = y + icon_h + (pw->proof_height - icon_h) / 2 + PRINT_TEXT_PADDING;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2273
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2274 success = (success &&
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2275 print_job_text_image(pw, pw->job_loader->fd->path, x, y, icon_w + PRINT_PROOF_MARGIN * 2, w, h, TRUE));
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2276
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2277 if (!success)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2278 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2279 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2280 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2281 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2282
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2283 if (pw->proof_point) pw->proof_point = pw->proof_point->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2284
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2285 pw->proof_position++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2286 if (pw->proof_position >= pw->proof_columns * pw->proof_rows)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2287 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2288 if (pw->job_format == RENDER_FORMAT_PREVIEW)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2289 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2290 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2291 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2292 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2293
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2294 if (!print_job_page_done(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2295 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2296 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2297 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2298 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2299
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2300 pw->proof_position = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2301 pw->job_page++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2302 if (print_job_render_proof(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2303 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2304 if (!print_job_page_new(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2305 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2306 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2307 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2308 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2309 print_job_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2310 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2311 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2312 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2313 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2314 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2315 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2316 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2317 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2318 if (print_job_render_proof(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2319 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2320 print_job_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2321 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2322 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2323 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2324 if (print_job_page_done(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2325 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2326 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2327 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2328 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2329 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2330 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2331 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2332 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2333 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2334 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2335
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2336 static gint print_job_render_proof(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2337 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2338 FileData *fd = NULL;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2339
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2340 if (pw->proof_columns < 1 || pw->proof_rows < 1) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2341
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2342 if (!pw->proof_point && pw->proof_position == 0 && pw->source == PRINT_SOURCE_IMAGE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2343 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2344 fd = pw->source_fd;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2345 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2346 else if (pw->proof_point &&
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2347 pw->proof_position < pw->proof_columns * pw->proof_rows)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2348 {
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2349 fd = pw->proof_point->data;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2350 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2351
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2352 if (!fd) return FALSE;
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2353
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2354 image_loader_free(pw->job_loader);
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
2355 pw->job_loader = image_loader_new(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2356 if (!image_loader_start(pw->job_loader, print_job_render_proof_loader_done, pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2357 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2358 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2359 pw->job_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2360 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2361
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2362 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2363 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2364
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2365 static void print_job_render(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2366 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2367 gdouble proof_w, proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2368 gint finished;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2369
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2370 pw->proof_position = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2371
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2372 switch (pw->source)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2373 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2374 case PRINT_SOURCE_SELECTION:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2375 pw->proof_point = pw->source_selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2376 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2377 case PRINT_SOURCE_ALL:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2378 pw->proof_point = pw->source_list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2379 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2380 case PRINT_SOURCE_IMAGE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2381 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2382 pw->proof_point = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2383 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2384 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2385
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2386 print_proof_size(pw, &proof_w, &proof_h);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2387 pw->proof_columns = (pw->layout_width - pw->margin_left - pw->margin_right) / proof_w;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2388 pw->proof_rows = (pw->layout_height - pw->margin_top - pw->margin_bottom) / proof_h;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2389
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2390 if (pw->job_format == RENDER_FORMAT_PREVIEW)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2391 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2392 gint total;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2393
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2394 total = print_layout_page_count(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2395 if (pw->job_page < 0 || pw->job_page >= total)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2396 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2397 print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2398 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2399 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2400
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2401 if (pw->proof_point && pw->job_page > 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2402 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2403 pw->proof_point = g_list_nth(pw->proof_point, pw->job_page * pw->proof_columns * pw->proof_rows);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2404 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2405 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2406
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2407 if (!print_job_page_new(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2408 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2409 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2410 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2411 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2412
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2413 if (pw->layout == PRINT_LAYOUT_IMAGE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2414 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2415 finished = !print_job_render_image(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2416 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2417 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2418 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2419 finished = !print_job_render_proof(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2420 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2421
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2422 if (finished) print_job_done(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2423 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2424
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2425 static gint print_job_init(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2426 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2427 gint success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2428
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2429 pw->job_page = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2430
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2431 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2432 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2433 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2434 success = print_job_rgb_init(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2435 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2436 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2437 success = print_job_ps_init(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2438 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2439 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2440 pw->job_page = pw->proof_page;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2441 success = print_job_preview_init(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2442 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2443 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2444
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2445 return success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2446 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2447
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2448 static gint print_job_finish(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2449 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2450 gint success = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2451
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2452 switch (pw->job_format)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2453 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2454 case RENDER_FORMAT_RGB:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2455 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2456 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2457 case RENDER_FORMAT_PS:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2458 print_job_ps_end(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2459 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2460 case RENDER_FORMAT_PREVIEW:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2461 success = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2462 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2463 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2464
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2465 return success;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2466 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2467
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2468 static void print_job_close_file(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2469 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2470 if (pw->job_file)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2471 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2472 fclose(pw->job_file);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2473 pw->job_file = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2474 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2475
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2476 if (pw->job_pipe)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2477 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2478 PipeError *pe;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2479
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2480 pe = pipe_handler_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2481 pclose(pw->job_pipe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2482 pipe_handler_free(pe);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2483
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2484 pw->job_pipe = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2485 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2486 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2487
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2488 static gboolean print_job_close_finish_cb(gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2489 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2490 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2491
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2492 print_window_close(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2493 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2494 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2495
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2496 static void print_job_close(PrintWindow *pw, gint error)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2497 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2498 if (!error) print_job_finish(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2499
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2500 print_job_close_file(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2501 g_free(pw->job_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2502 pw->job_path = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2504 if (pw->job_dialog)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2505 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2506 generic_dialog_close(pw->job_dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2507 pw->job_dialog = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2508 pw->job_progress = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2509 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2510
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2511 image_loader_free(pw->job_loader);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2512 pw->job_loader = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2513
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2514 if (pw->job_pixbuf)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2515 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2516 g_object_unref(pw->job_pixbuf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2517 pw->job_pixbuf = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2518 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2519
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2520 if (pw->dialog && !GTK_WIDGET_VISIBLE(pw->dialog->dialog))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2521 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2522 g_idle_add_full(G_PRIORITY_HIGH_IDLE, print_job_close_finish_cb, pw, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2523 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2524 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2525
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2526 static void print_job_cancel_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2527 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2528 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2529
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2530 print_job_close(pw, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2531 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2532
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2533 static void print_pref_store(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2534 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2535
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2536 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_SAVE, pw->save_settings);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2537
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2538 if (!pw->save_settings) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2539
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2540 /* only store values that are actually used in this print job, hence the if()s */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2541
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2542 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_OUTPUT, pw->output);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2543
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2544 if (pw->output == PRINT_OUTPUT_RGB_FILE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2545 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2546 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_FORMAT, pw->output_format);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2547 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2548
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2549 if (pw->job_format == RENDER_FORMAT_PS)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2550 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2551 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_DPI, pw->max_dpi);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2552 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2553
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2554 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_UNITS, pw->paper_units);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2555 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_SIZE, pw->paper_size);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2556 pref_list_int_set(PRINT_PREF_GROUP, PRINT_PREF_ORIENTATION, pw->paper_orientation);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2557
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2558 if (pw->paper_size == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2559 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2560 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_CUSTOM_WIDTH, pw->paper_width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2561 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_CUSTOM_HEIGHT, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2562 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2563
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2564 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_MARGIN_LEFT, pw->margin_left);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2565 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_MARGIN_RIGHT, pw->margin_right);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2566 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_MARGIN_TOP, pw->margin_top);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2567 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_MARGIN_BOTTOM, pw->margin_bottom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2568
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2569 if (pw->layout == PRINT_LAYOUT_PROOF)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2570 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2571 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_PROOF_WIDTH, pw->proof_width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2572 pref_list_double_set(PRINT_PREF_GROUP, PRINT_PREF_PROOF_HEIGHT, pw->proof_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2573 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2574
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2575 if (pw->output == PRINT_OUTPUT_PS_CUSTOM)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2576 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2577 pref_list_string_set(PRINT_PREF_GROUP, PRINT_PREF_PRINTERC, pw->output_custom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2578 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2579
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2580 if (pw->output == PRINT_OUTPUT_RGB_FILE ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2581 pw->output == PRINT_OUTPUT_PS_FILE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2582 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2583 tab_completion_append_to_history(pw->path_entry, pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2584 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2585 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2586
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2587 static gint print_job_start(PrintWindow *pw, RenderFormat format, PrintOutput output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2588 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2589 GtkWidget *hbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2590 GtkWidget *spinner;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2591 gchar *msg;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2592
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2593 if (pw->job_dialog) return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2594
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2595 pw->job_format = format;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2596 pw->job_output = output;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2597
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2598 if (!print_job_init(pw))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2599 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2600 print_job_close(pw, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2601 return FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2602 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2603
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2604 if (format == RENDER_FORMAT_PREVIEW)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2605 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2606 print_job_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2607 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2608 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2609
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2610 print_pref_store(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2611
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2612 gtk_widget_hide(pw->dialog->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2613
254
9faf34f047b1 Make the wmclass value unique among the code by defining
zas_
parents: 228
diff changeset
2614 pw->job_dialog = file_util_gen_dlg(_("Print - Geeqie"), GQ_WMCLASS, "print_job_dialog",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2615 (GtkWidget *)gtk_window_get_transient_for(GTK_WINDOW(pw->dialog->dialog)), FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2616 print_job_cancel_cb, pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2617
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2618 msg = g_strdup_printf(_("Printing %d pages to %s."), print_layout_page_count(pw), print_output_name(pw->output));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2619 generic_dialog_add_message(pw->job_dialog, NULL, msg, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2620 g_free(msg);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2621
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2622 if (pw->job_output == PRINT_OUTPUT_PS_FILE ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2623 pw->job_output == PRINT_OUTPUT_RGB_FILE)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2624 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2625 hbox = pref_box_new(pw->job_dialog->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2626 pref_label_new(hbox, _("Filename:"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2627
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2628 pw->job_progress_label = pref_label_new(hbox, "");
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2629 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2630 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2631 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2632 pw->job_progress_label = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2633 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2634
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2635 pref_spacer(pw->job_dialog->vbox, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2636
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2637 hbox = pref_box_new(pw->job_dialog->vbox, FALSE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_SPACE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2638
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2639 pw->job_progress = gtk_progress_bar_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2640 gtk_box_pack_start(GTK_BOX(hbox), pw->job_progress, TRUE, TRUE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2641 gtk_widget_show(pw->job_progress);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2642
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2643 spinner = spinner_new(NULL, SPINNER_SPEED);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2644 gtk_box_pack_start(GTK_BOX(hbox), spinner, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2645 gtk_widget_show(spinner);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2646
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2647 gtk_widget_show(pw->job_dialog->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2648
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2649 print_job_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2650 print_job_status(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2651
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2652 return TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2653 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2654
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2655 static void print_window_print_start(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2656 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2657 RenderFormat format;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2658
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2659 switch(pw->output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2660 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2661 case PRINT_OUTPUT_RGB_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2662 format = RENDER_FORMAT_RGB;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2663 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2664 case PRINT_OUTPUT_PS_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2665 case PRINT_OUTPUT_PS_CUSTOM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2666 case PRINT_OUTPUT_PS_LPR:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2667 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2668 format = RENDER_FORMAT_PS;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2669 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2670 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2671
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2672 print_job_start(pw, format, pw->output);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2673 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2674
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2675
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2676 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2677 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2678 * combo box util
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2679 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2680 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2681
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2682 static GtkWidget *print_combo_menu(const gchar *text[], gint count, gint preferred,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2683 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2684 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2685 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2686 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2687
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2688 combo = gtk_combo_box_new_text();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2689
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2690 for (i = 0 ; i < count; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2691 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2692 gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _(text[i]));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2693 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2694
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2695 if (preferred >= 0 && preferred < count)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2696 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2697 gtk_combo_box_set_active(GTK_COMBO_BOX(combo), preferred);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2698 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2699
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2700 if (func) g_signal_connect(G_OBJECT(combo), "changed", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2701
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2702 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2703 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2704
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2705
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2706 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2707 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2708 * paper selection
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2709 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2710 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2711
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2712 static GtkWidget *print_paper_menu(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2713 gint preferred, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2714 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2715 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2716 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2717
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2718 pref_table_label(table, column, row, (_("Format:")), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2719
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2720 combo = gtk_combo_box_new_text();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2721
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2722 i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2723 while (print_paper_sizes[i].description)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2724 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2725 gtk_combo_box_append_text(GTK_COMBO_BOX(combo), _(print_paper_sizes[i].description));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2726 i++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2727 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2728
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2729 gtk_combo_box_set_active(GTK_COMBO_BOX(combo), preferred);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2730 if (func) g_signal_connect(G_OBJECT(combo), "changed", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2731
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2732 gtk_table_attach(GTK_TABLE(table), combo, column + 1, column + 2, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2733 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2734 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2735
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2736 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2737 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2738
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2739 static void print_paper_select_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2740 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2741 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2742 PaperSize *ps;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2743 gint n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2744
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2745 n = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2746 ps = print_paper_size_nth(n);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2747
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2748 if (!ps) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2749
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2750 pw->paper_size = n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2751
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2752 if (pw->paper_size == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2753 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2754 print_window_layout_sync_paper(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2755 return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2756 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2757
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2758 if (ps->orientation == PAPER_ORIENTATION_PORTRAIT)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2759 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2760 print_window_layout_set_size(pw, ps->width, ps->height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2761 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2762 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2763 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2764 print_window_layout_set_size(pw, ps->height, ps->width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2765 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2766 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2767
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2768 static void print_paper_size_cb(GtkWidget *spin, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2769 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2770 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2771 gdouble value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2772
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2773 value = print_paper_size_convert_units(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2774 pw->paper_units, PAPER_UNIT_POINTS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2775
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2776 if (spin == pw->paper_width_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2777 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2778 pw->paper_width = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2779 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2780 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2781 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2782 pw->paper_height = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2783 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2784
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2785 print_window_layout_set_size(pw, pw->paper_width, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2786 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2787
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2788 static GtkWidget *print_paper_units_menu(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2789 PaperUnits units, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2790 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2791 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2792
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2793 pref_table_label(table, column, row, (_("Units:")), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2794
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2795 combo = print_combo_menu(print_paper_units, PAPER_UNIT_COUNT, units, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2796
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2797 gtk_table_attach(GTK_TABLE(table), combo, column + 1, column + 2, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2798 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2799 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2800
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2801 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2802 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2803
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2804 static void print_paper_units_set(PrintWindow *pw, PaperUnits units)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2805 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2806 PaperUnits old_units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2807
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2808 if (units < 0 || units >= PAPER_UNIT_COUNT) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2809
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2810 old_units = pw->paper_units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2811 pw->paper_units = units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2812 print_window_layout_sync_paper(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2813
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2814 if ((units == PAPER_UNIT_MM || units == PAPER_UNIT_CM) !=
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2815 (old_units == PAPER_UNIT_MM || old_units == PAPER_UNIT_CM))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2816 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2817 print_window_layout_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2818 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2819 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2820
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2821 static void print_paper_units_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2822 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2823 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2824 PaperUnits units;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2825
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2826 units = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2827
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2828 print_paper_units_set(pw, units);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2829 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2830
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2831 static GtkWidget *print_paper_orientation_menu(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2832 PaperOrientation preferred,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2833 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2834 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2835 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2836
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2837 pref_table_label(table, column, row, (_("Orientation:")), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2838
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2839 combo = print_combo_menu(print_paper_orientation, PAPER_ORIENTATION_COUNT, preferred, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2840
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2841 gtk_table_attach(GTK_TABLE(table), combo, column + 1, column + 2, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2842 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2843 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2844
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2845 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2846 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2847
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2848 static void print_paper_orientation_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2849 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2850 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2851 PaperOrientation o;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2852
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2853 o = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2854
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2855 print_window_layout_set_orientation(pw, o);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2856 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2857
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2858 static void print_paper_margin_cb(GtkWidget *spin, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2859 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2860 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2861 gdouble value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2862
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2863 value = print_paper_size_convert_units(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2864 pw->paper_units, PAPER_UNIT_POINTS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2865
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2866 if (spin == pw->margin_left_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2867 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2868 pw->margin_left = CLAMP(value, 0.0, pw->paper_width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2869 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2870 else if (spin == pw->margin_right_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2871 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2872 pw->margin_right = CLAMP(value, 0.0, pw->paper_width);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2873 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2874 else if (spin == pw->margin_top_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2875 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2876 pw->margin_top = CLAMP(value, 0.0, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2877 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2878 else if (spin == pw->margin_bottom_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2879 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2880 pw->margin_bottom = CLAMP(value, 0.0, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2881 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2882
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2883 print_window_layout_set_size(pw, pw->paper_width, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2884 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2885
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2886 static GtkWidget *print_misc_menu(GtkWidget *parent_box, gint preferred,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2887 const gchar *title, const gchar *key,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2888 gint count, const gchar **text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2889 GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2890 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2891 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2892 GtkWidget *button = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2893 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2894
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2895 box = pref_group_new(parent_box, FALSE, title, GTK_ORIENTATION_VERTICAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2896
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2897 for (i = 0; i < count; i++)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2898 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2899 button = gtk_radio_button_new_with_label_from_widget(GTK_RADIO_BUTTON(button), _(text[i]));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2900 if (i == preferred)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2901 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2902 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2903 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2904 g_object_set_data(G_OBJECT(button), key, GINT_TO_POINTER(i));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2905 if (func) g_signal_connect(G_OBJECT(button), "clicked", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2906 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2907 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2908 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2909
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2910 return box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2911 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2912
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2913 static void print_source_select_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2914 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2915 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2916
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2917 if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2918
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2919 pw->source = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "print_source"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2920 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2921 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2922
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2923 static void print_layout_select_cb(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2924 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2925 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2926
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2927 if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2928
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2929 pw->layout = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(widget), "print_layout"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2930
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2931 print_window_layout_sync_layout(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2932 print_window_layout_size(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2933 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2934
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2935 static void print_image_scale_cb(GtkWidget *spin, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2936 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2937 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2938
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2939 pw->image_scale = (gint)gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2940
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2941 print_window_layout_set_size(pw, pw->paper_width, pw->paper_height);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2942 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2943
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2944 static void print_proof_size_cb(GtkWidget *spin, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2945 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2946 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2947 gdouble value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2948
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2949 value = print_paper_size_convert_units(gtk_spin_button_get_value(GTK_SPIN_BUTTON(spin)),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2950 pw->paper_units, PAPER_UNIT_POINTS);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2951
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2952 if (spin == pw->proof_width_spin)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2953 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2954 pw->proof_width = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2955 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2956 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2957 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2958 pw->proof_height = value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2959 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2960
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2961 print_window_layout_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2962 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2963
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2964 static GtkWidget *print_output_menu(GtkWidget *table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2965 PrintOutput preferred, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2966 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2967 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2968
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2969 pref_table_label(table, column, row, (_("Destination:")), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2970
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2971 combo = print_combo_menu(print_output_text, PRINT_OUTPUT_COUNT, preferred, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2972
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2973 gtk_table_attach(GTK_TABLE(table), combo, column + 1, column + 2, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2974 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2975 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2976
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2977 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2978 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2979
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2980 static void print_custom_entry_set(PrintWindow *pw, GtkWidget *combo)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2981 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2982 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2983 const gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2984 GList *list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2985 GList *work;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2986
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2987 store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2988 gtk_list_store_clear(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2989
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2990 list = print_window_list_printers();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2991 work = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2992 while (work)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2993 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2994 gchar *name;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2995 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2996
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2997 name = work->data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2998 work = work->next;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
2999
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3000 buf = g_strdup_printf(PRINT_LPR_CUSTOM, name);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3001 gtk_combo_box_append_text(GTK_COMBO_BOX(combo), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3002 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3003 }
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3004 string_list_free(list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3005
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3006 if (pref_list_string_get(PRINT_PREF_GROUP, PRINT_PREF_PRINTERC, &text))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3007 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3008 gtk_entry_set_text(GTK_ENTRY(pw->custom_entry), text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3009 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3010 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3011 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3012 text = gtk_entry_get_text(GTK_ENTRY(pw->custom_entry));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3013 if (!text || strlen(text) == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3014 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3015 gchar *buf;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3016
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3017 buf = g_strdup_printf(PRINT_LPR_CUSTOM, _("<printer name>"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3018 gtk_entry_set_text(GTK_ENTRY(pw->custom_entry), buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3019 g_free(buf);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3020 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3021 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3022 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3023
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3024 static void print_output_set(PrintWindow *pw, PrintOutput output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3025 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3026 gint use_file = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3027 gint use_custom = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3028 gint use_format = FALSE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3029
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3030 pw->output = output;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3031
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3032 switch (pw->output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3033 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3034 case PRINT_OUTPUT_RGB_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3035 use_file = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3036 use_format = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3037 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3038 case PRINT_OUTPUT_PS_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3039 use_file = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3040 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3041 case PRINT_OUTPUT_PS_CUSTOM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3042 use_custom = TRUE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3043 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3044 case PRINT_OUTPUT_PS_LPR:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3045 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3046 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3047 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3048
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3049 gtk_widget_set_sensitive(gtk_widget_get_parent(pw->path_entry), use_file);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3050 gtk_widget_set_sensitive(gtk_widget_get_parent(pw->custom_entry), use_custom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3051 gtk_widget_set_sensitive(pw->path_format_menu, use_format);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3052 gtk_widget_set_sensitive(pw->max_dpi_menu, !use_format);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3053 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3054
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3055 static void print_output_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3056 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3057 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3058 PrintOutput output;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3059
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3060 output = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3061
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3062 print_output_set(pw, output);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3063 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3064
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3065 static GtkWidget *print_output_format_menu(GtkWidget * table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3066 PrintFileFormat preferred, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3067 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3068 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3069
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3070 combo = print_combo_menu(print_file_format_text, PRINT_FILE_COUNT, preferred, func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3071
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3072 gtk_table_attach(GTK_TABLE(table), combo, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3073 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3074 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3075
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3076 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3077 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3078
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3079 static void print_output_format_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3080 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3081 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3082
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3083 pw->output_format = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3084 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3085
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3086 static GtkWidget *print_output_dpi_menu(GtkWidget * table, gint column, gint row,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3087 gdouble dpi, GCallback func, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3088 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3089 static gint dpilist[] = { 150, 300, 600, 1200, 0, -1};
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3090 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3091 GtkListStore *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3092 GtkCellRenderer *renderer;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3093 gint current = 1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3094 gint i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3095
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3096 store = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_INT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3097
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3098 i = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3099 while (dpilist[i] != -1)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3100 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3101 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3102 gchar *text;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3103
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3104 if (dpilist[i] == 0)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3105 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3106 text = g_strdup(_("Unlimited"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3107 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3108 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3109 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3110 text = g_strdup_printf("%d", dpilist[i]);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3111 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3112
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3113 gtk_list_store_append(store, &iter);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3114 gtk_list_store_set(store, &iter, 0, text, 1, dpilist[i], -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3115 g_free(text);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3116
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3117 if (dpi == (gdouble)dpilist[i]) current = i;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3118
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3119 i++;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3120 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3121
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3122 combo = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3123 g_object_unref(store);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3124
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3125 gtk_combo_box_set_active(GTK_COMBO_BOX(combo), current);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3126 if (func) g_signal_connect(G_OBJECT(combo), "changed", func, data);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3127
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3128 renderer = gtk_cell_renderer_text_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3129 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(combo), renderer, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3130 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(combo), renderer, "text", 0, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3131
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3132 gtk_table_attach(GTK_TABLE(table), combo, column, column + 1, row, row + 1,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3133 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3134 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3135
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3136 return combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3137 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3138
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3139 static void print_output_dpi_cb(GtkWidget *combo, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3140 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3141 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3142 GtkTreeModel *store;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3143 GtkTreeIter iter;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3144 gint n = -1;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3145
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3146 store = gtk_combo_box_get_model(GTK_COMBO_BOX(combo));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3147 if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo), &iter)) return;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3148 gtk_tree_model_get(store, &iter, 1, &n, -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3149
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3150 pw->max_dpi = (gdouble)n;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3151 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3152
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3153 static void print_text_field_set(PrintWindow *pw, TextInfo field, gint active)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3154 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3155 if (active)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3156 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3157 pw->text_fields |= field;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3158 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3159 else
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3160 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3161 pw->text_fields &= ~field;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3162 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3163
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3164 print_window_layout_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3165 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3166
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3167 static void print_text_cb_name(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3168 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3169 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3170 gint active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3171
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3172 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3173 print_text_field_set(pw, TEXT_INFO_FILENAME, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3174 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3175
266
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3176 static void print_text_cb_path(GtkWidget *widget, gpointer data)
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3177 {
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3178 PrintWindow *pw = data;
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3179 gint active;
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3180
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3181 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3182 print_text_field_set(pw, TEXT_INFO_FILEPATH, active);
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3183 }
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3184
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3185 static void print_text_cb_date(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3186 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3187 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3188 gint active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3189
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3190 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3191 print_text_field_set(pw, TEXT_INFO_FILEDATE, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3192 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3193
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3194 static void print_text_cb_size(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3195 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3196 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3197 gint active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3198
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3199 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3200 print_text_field_set(pw, TEXT_INFO_FILESIZE, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3201 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3202
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3203 static void print_text_cb_dims(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3204 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3205 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3206 gint active;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3207
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3208 active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3209 print_text_field_set(pw, TEXT_INFO_DIMENSIONS, active);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3210 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3211
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3212 static void print_text_cb_points(GtkWidget *widget, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3213 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3214 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3215
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3216 pw->text_points = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(widget));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3217 print_window_layout_render(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3218 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3219
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3220 static void print_text_menu(GtkWidget *box, PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3221 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3222 GtkWidget *group;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3223
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3224 group = pref_group_new(box, FALSE, _("Show"), GTK_ORIENTATION_VERTICAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3225
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3226 pref_checkbox_new(group, _("Name"), (pw->text_fields & TEXT_INFO_FILENAME),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3227 G_CALLBACK(print_text_cb_name), pw);
266
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3228 pref_checkbox_new(group, _("Path"), (pw->text_fields & TEXT_INFO_FILEPATH),
65187a2309d3 Add the possibility to print file names with path.
zas_
parents: 254
diff changeset
3229 G_CALLBACK(print_text_cb_path), pw);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3230 pref_checkbox_new(group, _("Date"), (pw->text_fields & TEXT_INFO_FILEDATE),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3231 G_CALLBACK(print_text_cb_date), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3232 pref_checkbox_new(group, _("Size"), (pw->text_fields & TEXT_INFO_FILESIZE),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3233 G_CALLBACK(print_text_cb_size), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3234 pref_checkbox_new(group, _("Dimensions"), (pw->text_fields & TEXT_INFO_DIMENSIONS),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3235 G_CALLBACK(print_text_cb_dims), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3236
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3237 group = pref_group_new(box, FALSE, _("Font"), GTK_ORIENTATION_VERTICAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3238
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3239 pref_spin_new(group, _("Size:"), _("points"),
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3240 8.0, 100.0, 1.0, 0, pw->text_points,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3241 G_CALLBACK(print_text_cb_points), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3242
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3243 #if 0
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3244 button = color_selection_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3245 gtk_box_pack_start(GTK_BOX(group), button, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3246 gtk_widget_show(button);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3247 #endif
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3248 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3249
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3250 /*
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3251 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3252 * print window
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3253 *-----------------------------------------------------------------------------
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3254 */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3255
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3256 static void print_window_close(PrintWindow *pw)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3257 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3258 print_window_layout_render_stop(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3259
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3260 generic_dialog_close(pw->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3261 pw->dialog = NULL;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3262
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3263 print_job_close(pw, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3264
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3265 file_data_unref(pw->source_fd);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3266 filelist_free(pw->source_selection);
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3267 filelist_free(pw->source_list);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3268
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3269 g_free(pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3270 g_free(pw->output_custom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3271
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3272 g_free(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3273 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3274
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3275 static void print_window_print_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3276 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3277 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3278
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3279 switch (pw->output)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3280 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3281 case PRINT_OUTPUT_RGB_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3282 case PRINT_OUTPUT_PS_FILE:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3283 g_free(pw->output_path);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3284 pw->output_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(pw->path_entry)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3285 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3286 case PRINT_OUTPUT_PS_CUSTOM:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3287 g_free(pw->output_custom);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3288 pw->output_custom = g_strdup(gtk_entry_get_text(GTK_ENTRY(pw->custom_entry)));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3289 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3290 case PRINT_OUTPUT_PS_LPR:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3291 default:
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3292 break;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3293 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3294
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3295 print_window_print_start(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3296 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3297
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3298 static void print_window_cancel_cb(GenericDialog *gd, gpointer data)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3299 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3300 PrintWindow *pw = data;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3301
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3302 print_window_close(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3303 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3304
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3305 static gint print_pref_int(const gchar *key, gint fallback)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3306 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3307 gint value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3308
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3309 if (pref_list_int_get(PRINT_PREF_GROUP, key, &value)) return value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3310 return fallback;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3311 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3312
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3313 static gdouble print_pref_double(const gchar *key, gdouble fallback)
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3314 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3315 gdouble value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3316
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3317 if (pref_list_double_get(PRINT_PREF_GROUP, key, &value)) return value;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3318 return fallback;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3319 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3320
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3321 void print_window_new(FileData *fd, GList *selection, GList *list, GtkWidget *parent)
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3322 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3323 PrintWindow *pw;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3324 GdkGeometry geometry;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3325 GtkWidget *main_box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3326 GtkWidget *vbox;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3327 GtkWidget *label;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3328 GtkWidget *combo;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3329 GtkWidget *box;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3330 GtkWidget *table;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3331
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3332 pw = g_new0(PrintWindow, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3333
138
71e1ebee420e replaced gchar* path with FileData *fd
nadvornik
parents: 121
diff changeset
3334 pw->source_fd = file_data_ref(fd);
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3335 pw->source_selection = selection;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3336 pw->source_list = list;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3337
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3338 pw->source = PRINT_SOURCE_SELECTION;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3339 pw->layout = PRINT_LAYOUT_IMAGE;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3340
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3341 pw->output = print_pref_int(PRINT_PREF_OUTPUT, PRINT_OUTPUT_PS_LPR);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3342 pw->output_format = print_pref_int(PRINT_PREF_FORMAT, PRINT_FILE_JPG_NORMAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3343
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3344 pw->max_dpi = print_pref_double(PRINT_PREF_DPI, PRINT_PS_DPI_DEFAULT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3345
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3346 pw->paper_units = print_pref_int(PRINT_PREF_UNITS, paper_unit_default());
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3347 pw->paper_size = print_pref_int(PRINT_PREF_SIZE, 1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3348 if (pw->paper_size == 0 ||
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3349 !print_paper_size_lookup(pw->paper_size, &pw->paper_width, &pw->paper_height))
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3350 {
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3351 pw->paper_width = print_pref_double(PRINT_PREF_CUSTOM_WIDTH, 360.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3352 pw->paper_height = print_pref_double(PRINT_PREF_CUSTOM_HEIGHT, 720.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3353 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3354 pw->paper_orientation = print_pref_int(PRINT_PREF_ORIENTATION, PAPER_ORIENTATION_PORTRAIT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3355
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3356 pw->margin_left = print_pref_double(PRINT_PREF_MARGIN_LEFT, PRINT_MARGIN_DEFAULT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3357 pw->margin_right = print_pref_double(PRINT_PREF_MARGIN_RIGHT, PRINT_MARGIN_DEFAULT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3358 pw->margin_top = print_pref_double(PRINT_PREF_MARGIN_TOP, PRINT_MARGIN_DEFAULT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3359 pw->margin_bottom = print_pref_double(PRINT_PREF_MARGIN_BOTTOM, PRINT_MARGIN_DEFAULT);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3360
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3361 pw->proof_width = print_pref_double(PRINT_PREF_PROOF_WIDTH, PRINT_PROOF_DEFAULT_SIZE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3362 pw->proof_height = print_pref_double(PRINT_PREF_PROOF_HEIGHT, PRINT_PROOF_DEFAULT_SIZE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3363
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3364 pw->text_fields = TEXT_INFO_FILENAME;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3365 pw->text_points = 10;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3366 pw->text_r = pw->text_g = pw->text_b = 0;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3367
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3368 pw->save_settings = print_pref_int(PRINT_PREF_SAVE, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3369
254
9faf34f047b1 Make the wmclass value unique among the code by defining
zas_
parents: 228
diff changeset
3370 pw->dialog = file_util_gen_dlg(_("Print - Geeqie"), GQ_WMCLASS, "print_dialog",
9
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3371 parent, FALSE,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3372 print_window_cancel_cb, pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3373
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3374 geometry.min_width = 32;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3375 geometry.min_height = 32;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3376 geometry.base_width = PRINT_DLG_WIDTH;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3377 geometry.base_height = PRINT_DLG_HEIGHT;
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3378 gtk_window_set_geometry_hints(GTK_WINDOW(pw->dialog->dialog), NULL, &geometry,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3379 GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3380
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3381 pw->print_button = generic_dialog_add_button(pw->dialog, GTK_STOCK_PRINT, NULL, print_window_print_cb, TRUE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3382
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3383 main_box = pref_box_new(pw->dialog->vbox, TRUE, GTK_ORIENTATION_HORIZONTAL, PREF_PAD_GAP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3384
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3385 pw->notebook = gtk_notebook_new();
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3386 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(pw->notebook), GTK_POS_TOP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3387 gtk_box_pack_start(GTK_BOX(main_box), pw->notebook, FALSE, FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3388
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3389 /* layout tab */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3390
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3391 vbox = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3392 gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3393 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3394 label = gtk_label_new(_("Layout"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3395 gtk_notebook_append_page(GTK_NOTEBOOK(pw->notebook), vbox, label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3396
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3397 print_misc_menu(vbox, pw->source, _("Source"), "print_source",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3398 PRINT_SOURCE_COUNT, print_source_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3399 G_CALLBACK(print_source_select_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3400
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3401 box = print_misc_menu(vbox, pw->layout, _("Layout"), "print_layout",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3402 PRINT_LAYOUT_COUNT, print_layout_text,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3403 G_CALLBACK(print_layout_select_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3404
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3405 pref_spacer(box, PREF_PAD_GROUP);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3406
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3407 table = pref_table_new(box, 2, 2, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3408
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3409 pw->image_scale_spin = pref_table_spin(table, 0, 0, _("Image size:"), "%",
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3410 5.0, 100.0, 1.0, 0, 100.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3411 G_CALLBACK(print_image_scale_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3412
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3413 label = pref_table_label(table, 0, 1, _("Proof size:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3414 pw->proof_group = pref_table_box(table, 1, 1, GTK_ORIENTATION_HORIZONTAL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3415 pref_link_sensitivity(label, pw->proof_group);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3416
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3417 pw->proof_width_spin = pref_spin_new(pw->proof_group, NULL, NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3418 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3419 G_CALLBACK(print_proof_size_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3420 pw->proof_height_spin = pref_spin_new(pw->proof_group, "x", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3421 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3422 G_CALLBACK(print_proof_size_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3423
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3424 /* text tab */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3425
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3426 vbox = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3427 gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3428 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3429 label = gtk_label_new(_("Text"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3430 gtk_notebook_append_page(GTK_NOTEBOOK(pw->notebook), vbox, label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3431
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3432 print_text_menu(vbox, pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3433
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3434 /* paper tab */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3435
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3436 vbox = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3437 gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3438 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3439 label = gtk_label_new(_("Paper"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3440 gtk_notebook_append_page(GTK_NOTEBOOK(pw->notebook), vbox, label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3441
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3442 table = pref_table_new(vbox, 2, 4, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3443
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3444 print_paper_menu(table, 0, 0, pw->paper_size, G_CALLBACK(print_paper_select_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3445
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3446 label = pref_table_label(table, 0, 1, (_("Size:")), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3447 box = pref_table_box(table, 1, 1, GTK_ORIENTATION_HORIZONTAL, NULL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3448 pw->paper_width_spin = pref_spin_new(box, NULL, NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3449 1.0, 10000.0, 1.0, 2, 66,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3450 G_CALLBACK(print_paper_size_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3451 pw->paper_height_spin = pref_spin_new(box, "x", NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3452 1.0, 10000.0, 1.0, 2, 66,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3453 G_CALLBACK(print_paper_size_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3454 pref_link_sensitivity(label, pw->paper_width_spin);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3455
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3456 pw->paper_units_menu = print_paper_units_menu(table, 0, 2, pw->paper_units,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3457 G_CALLBACK(print_paper_units_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3458
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3459 print_paper_orientation_menu(table, 0, 3, pw->paper_orientation,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3460 G_CALLBACK(print_paper_orientation_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3461
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3462 box = pref_group_new(vbox, FALSE, _("Margins"), GTK_ORIENTATION_VERTICAL);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3463 table = pref_table_new(box, 4, 2, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3464 pw->margin_left_spin = pref_table_spin(table, 0, 0, _("Left:"), NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3465 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3466 G_CALLBACK(print_paper_margin_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3467 pw->margin_right_spin = pref_table_spin(table, 2, 0, _("Right:"), NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3468 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3469 G_CALLBACK(print_paper_margin_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3470 pw->margin_top_spin = pref_table_spin(table, 0, 1, _("Top:"), NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3471 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3472 G_CALLBACK(print_paper_margin_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3473 pw->margin_bottom_spin = pref_table_spin(table, 2, 1, _("Bottom:"), NULL,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3474 0.0, 50.0, 0.1, 3, 0.0,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3475 G_CALLBACK(print_paper_margin_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3476
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3477 /* printer tab */
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3478
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3479 vbox = gtk_vbox_new(FALSE, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3480 gtk_container_set_border_width(GTK_CONTAINER(vbox), PREF_PAD_BORDER);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3481 gtk_widget_show(vbox);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3482 label = gtk_label_new(_("Printer"));
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3483 gtk_notebook_append_page(GTK_NOTEBOOK(pw->notebook), vbox, label);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3484
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3485 table = pref_table_new(vbox, 2, 5, FALSE, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3486 print_output_menu(table, 0, 0, pw->output, G_CALLBACK(print_output_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3487
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3488 label = pref_table_label(table, 0, 1, _("Custom printer:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3489 combo = history_combo_new(&pw->custom_entry, NULL, "print_custom", -1);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3490 print_custom_entry_set(pw, combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3491 gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 1, 2,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3492 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3493 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3494
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3495 pref_link_sensitivity(label, combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3496
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3497 label = pref_table_label(table, 0, 2, _("File:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3498 combo = tab_completion_new_with_history(&pw->path_entry, NULL, "print_path", -1, NULL, pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3499 tab_completion_add_select_button(pw->path_entry, NULL, FALSE);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3500 gtk_table_attach(GTK_TABLE(table), combo, 1, 2, 2, 3,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3501 GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3502 gtk_widget_show(combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3503
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3504 pref_link_sensitivity(label, combo);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3505
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3506 label = pref_table_label(table, 0, 3, _("File format:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3507 pw->path_format_menu = print_output_format_menu(table, 1, 3, pw->output_format,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3508 G_CALLBACK(print_output_format_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3509 pref_link_sensitivity(label, pw->path_format_menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3510
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3511 label = pref_table_label(table, 0, 4, _("DPI:"), 1.0);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3512 pw->max_dpi_menu = print_output_dpi_menu(table, 1, 4, pw->max_dpi,
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3513 G_CALLBACK(print_output_dpi_cb), pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3514 pref_link_sensitivity(label, pw->max_dpi_menu);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3515
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3516 print_output_set(pw, pw->output);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3517
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3518 vbox = print_window_layout_setup(pw, main_box);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3519 pref_checkbox_new_int(vbox, _("Remember print settings"), pw->save_settings, &pw->save_settings);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3520
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3521 print_window_layout_sync_layout(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3522 print_window_layout_sync_paper(pw);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3523
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3524 gtk_widget_show(pw->notebook);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3525 gtk_widget_show(pw->dialog->dialog);
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3526 }
d907d608745f Sync to GQview 1.5.9 release.
gqview
parents:
diff changeset
3527