2 * gsdefaults.c: default settings for the GtkGS widget
4 * Copyright 2002 - 2005 the Free Software Foundation
6 * Author: Jaka Mocnik <jaka@gnu.org>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
29 #include "gsdefaults.h"
31 #include <gconf/gconf-client.h>
34 * defaults for GtkGS widgets
37 static GConfClient *gconf_client;
39 /* Default values to pass to gtk_gs_init */
40 typedef struct _GtkGSDefaults {
42 gboolean override_size;
44 gboolean override_orientation;
46 gboolean show_scroll_rect;
47 gint fallback_orientation;
50 gchar *interpreter_cmd;
53 gchar *convert_pdf_cmd;
56 GtkGSZoomMode zoom_mode;
59 static GtkGSDefaults gtk_gs_defaults = {
60 TRUE, FALSE, 8, FALSE, TRUE, TRUE,
61 0, 1.0, 0.25, NULL, NULL, NULL, NULL, NULL, NULL,
65 GtkGSPaperSize gtk_gs_paper_sizes[] = {
67 {N_("Letter"), 612, 792,},
68 {N_("Tabloid"), 792, 1224,},
69 {N_("Ledger"), 1224, 792,},
70 {N_("Legal"), 612, 1008,},
71 {N_("Statement"), 396, 612,},
72 {N_("Executive"), 540, 720,},
73 {N_("A0"), 2380, 3368,},
74 {N_("A1"), 1684, 2380,},
75 {N_("A2"), 1190, 1684,},
76 {N_("A3"), 842, 1190,},
77 {N_("A4"), 595, 842,},
78 {N_("A5"), 420, 595,},
79 {N_("B4"), 729, 1032,},
80 {N_("B5"), 516, 729,},
81 {N_("Folio"), 612, 936,},
82 {N_("Quarto"), 610, 780,},
83 {N_("10x14"), 720, 1008,},
88 gtk_gs_defaults_set_scroll_step(gfloat step)
90 if(fabs(gtk_gs_defaults.scroll_step - step) > 0.001) {
91 gtk_gs_defaults.scroll_step = step;
92 gconf_client_set_float(gconf_client,
93 "/apps/ggv/gtkgs/scrollstep",
94 gtk_gs_defaults_get_scroll_step(), NULL);
99 gtk_gs_defaults_get_scroll_step()
101 return gtk_gs_defaults.scroll_step;
105 gtk_gs_defaults_set_size(gint iNewPageSize)
107 if(gtk_gs_defaults.default_size != iNewPageSize) {
108 gtk_gs_defaults.default_size = iNewPageSize;
109 gconf_client_set_int(gconf_client, "/apps/ggv/gtkgs/size",
110 gtk_gs_defaults_get_size(), NULL);
115 gtk_gs_defaults_get_size()
117 return gtk_gs_defaults.default_size;
121 gtk_gs_defaults_set_override_size(gboolean bOverrSize)
123 if(gtk_gs_defaults.override_size != bOverrSize) {
124 gtk_gs_defaults.override_size = bOverrSize;
125 gconf_client_set_bool(gconf_client,
126 "/apps/ggv/gtkgs/override_size",
127 gtk_gs_defaults_get_override_size(), NULL);
132 gtk_gs_defaults_get_override_size()
134 return gtk_gs_defaults.override_size;
138 gtk_gs_defaults_set_override_orientation(gboolean bOverOrien)
140 if(gtk_gs_defaults.override_orientation != bOverOrien) {
141 gtk_gs_defaults.override_orientation = bOverOrien;
142 gconf_client_set_bool(gconf_client,
143 "/apps/ggv/gtkgs/override_orientation",
144 gtk_gs_defaults_get_override_orientation(), NULL);
149 gtk_gs_defaults_get_override_orientation()
151 return gtk_gs_defaults.override_orientation;
155 gtk_gs_defaults_set_antialiased(gint iNewAntialiased)
157 if(gtk_gs_defaults.antialiased != iNewAntialiased) {
158 gtk_gs_defaults.antialiased = iNewAntialiased;
159 gconf_client_set_bool(gconf_client,
160 "/apps/ggv/gtkgs/antialiasing",
161 gtk_gs_defaults_get_antialiased(), NULL);
166 gtk_gs_defaults_get_antialiased()
168 return gtk_gs_defaults.antialiased;
172 gtk_gs_defaults_set_zoom_factor(gfloat fZoom)
174 fZoom = MIN(fZoom, 30.0);
175 fZoom = MAX(0.05, fZoom);
176 if(fabs(gtk_gs_defaults.zoom_factor - fZoom) > 0.001) {
177 gtk_gs_defaults.zoom_factor = fZoom;
178 gconf_client_set_float(gconf_client, "/apps/ggv/gtkgs/zoom",
179 gtk_gs_defaults_get_zoom_factor(), NULL);
184 gtk_gs_defaults_get_zoom_factor()
186 return gtk_gs_defaults.zoom_factor;
190 gtk_gs_defaults_set_orientation(gint iNewOrientation)
192 g_assert((iNewOrientation == GTK_GS_ORIENTATION_PORTRAIT) ||
193 (iNewOrientation == GTK_GS_ORIENTATION_LANDSCAPE) ||
194 (iNewOrientation == GTK_GS_ORIENTATION_UPSIDEDOWN) ||
195 (iNewOrientation == GTK_GS_ORIENTATION_SEASCAPE));
196 if(gtk_gs_defaults.fallback_orientation != iNewOrientation) {
197 gtk_gs_defaults.fallback_orientation = iNewOrientation;
198 gconf_client_set_int(gconf_client,
199 "/apps/ggv/gtkgs/orientation",
200 gtk_gs_defaults_get_orientation(), NULL);
205 gtk_gs_defaults_get_orientation()
207 return gtk_gs_defaults.fallback_orientation;
211 gtk_gs_defaults_set_respect_eof(gboolean resp)
213 if(gtk_gs_defaults.respect_eof != resp) {
214 gtk_gs_defaults.respect_eof = resp;
215 gconf_client_set_bool(gconf_client,
216 "/apps/ggv/gtkgs/respect_eof",
217 gtk_gs_defaults_get_respect_eof(), NULL);
222 gtk_gs_defaults_get_respect_eof()
224 return gtk_gs_defaults.respect_eof;
228 gtk_gs_defaults_get_paper_sizes()
230 return gtk_gs_paper_sizes;
234 gtk_gs_defaults_get_show_scroll_rect()
236 return gtk_gs_defaults.show_scroll_rect;
240 gtk_gs_defaults_set_show_scroll_rect(gboolean f)
242 if(gtk_gs_defaults.show_scroll_rect != f) {
243 gtk_gs_defaults.show_scroll_rect = f;
244 gconf_client_set_bool(gconf_client,
245 "/apps/ggv/gtkgs/show_scroll_rect",
246 gtk_gs_defaults_get_show_scroll_rect(), NULL);
251 gtk_gs_defaults_get_interpreter_cmd()
253 if(!gtk_gs_defaults.interpreter_cmd)
255 return gtk_gs_defaults.interpreter_cmd;
259 gtk_gs_defaults_get_alpha_parameters()
261 if(!gtk_gs_defaults.alpha_params)
263 return gtk_gs_defaults.alpha_params;
267 gtk_gs_defaults_get_convert_pdf_cmd()
269 if(!gtk_gs_defaults.convert_pdf_cmd)
271 " -q -dNOPAUSE -dBATCH -dSAFER"
272 " -dQUIET -sDEVICE=pswrite" " -sOutputFile=%s -c save pop -f %s";
273 return gtk_gs_defaults.convert_pdf_cmd;
277 gtk_gs_defaults_get_dsc_cmd()
279 if(!gtk_gs_defaults.dsc_cmd)
281 " -q -dNODISPLAY -dSAFER -dDELAYSAFER"
282 " -sDSCname=%s -sPDFname=%s pdf2dsc.ps" " -c quit";
283 return gtk_gs_defaults.dsc_cmd;
287 gtk_gs_defaults_get_ungzip_cmd()
289 if(!gtk_gs_defaults.ungzip_cmd)
291 return gtk_gs_defaults.ungzip_cmd;
295 gtk_gs_defaults_get_unbzip2_cmd()
297 if(!gtk_gs_defaults.unbzip2_cmd)
299 return gtk_gs_defaults.unbzip2_cmd;
303 gtk_gs_defaults_set_interpreter_cmd(gchar * cmd)
305 if((NULL == gtk_gs_defaults.interpreter_cmd) ||
306 strcmp(gtk_gs_defaults.interpreter_cmd, cmd)) {
307 if(gtk_gs_defaults.interpreter_cmd)
308 g_free(gtk_gs_defaults.interpreter_cmd);
309 gtk_gs_defaults.interpreter_cmd = cmd;
310 gconf_client_set_string(gconf_client,
311 "/apps/ggv/gtkgs/interpreter",
312 gtk_gs_defaults_get_interpreter_cmd(), NULL);
317 gtk_gs_defaults_set_alpha_parameters(gchar * par)
319 if((NULL == gtk_gs_defaults.alpha_params) ||
320 strcmp(gtk_gs_defaults.alpha_params, par)) {
321 if(gtk_gs_defaults.alpha_params)
322 g_free(gtk_gs_defaults.alpha_params);
323 gtk_gs_defaults.alpha_params = par;
324 gconf_client_set_string(gconf_client,
325 "/apps/ggv/gtkgs/alphaparams",
326 gtk_gs_defaults_get_alpha_parameters(), NULL);
331 gtk_gs_defaults_set_convert_pdf_cmd(gchar * cmd)
333 if((NULL == gtk_gs_defaults.convert_pdf_cmd) ||
334 strcmp(gtk_gs_defaults.convert_pdf_cmd, cmd)) {
335 if(gtk_gs_defaults.convert_pdf_cmd)
336 g_free(gtk_gs_defaults.convert_pdf_cmd);
337 gtk_gs_defaults.convert_pdf_cmd = cmd;
338 gconf_client_set_string(gconf_client,
339 "/apps/ggv/gtkgs/convertpdf",
340 gtk_gs_defaults_get_convert_pdf_cmd(), NULL);
345 gtk_gs_defaults_set_dsc_cmd(gchar * cmd)
347 if((NULL == gtk_gs_defaults.dsc_cmd) || strcmp(gtk_gs_defaults.dsc_cmd, cmd)) {
348 if(gtk_gs_defaults.dsc_cmd)
349 g_free(gtk_gs_defaults.dsc_cmd);
350 gtk_gs_defaults.dsc_cmd = cmd;
351 gconf_client_set_string(gconf_client,
352 "/apps/ggv/gtkgs/pdf2dsc",
353 gtk_gs_defaults_get_dsc_cmd(), NULL);
358 gtk_gs_defaults_set_ungzip_cmd(gchar * cmd)
360 if((NULL == gtk_gs_defaults.ungzip_cmd) ||
361 strcmp(gtk_gs_defaults.ungzip_cmd, cmd)) {
362 if(gtk_gs_defaults.ungzip_cmd)
363 g_free(gtk_gs_defaults.ungzip_cmd);
364 gtk_gs_defaults.ungzip_cmd = cmd;
365 gconf_client_set_string(gconf_client,
366 "/apps/ggv/gtkgs/ungzip",
367 gtk_gs_defaults_get_ungzip_cmd(), NULL);
372 gtk_gs_defaults_set_unbzip2_cmd(gchar * cmd)
374 if((NULL == gtk_gs_defaults.unbzip2_cmd) ||
375 strcmp(gtk_gs_defaults.unbzip2_cmd, cmd)) {
376 if(gtk_gs_defaults.unbzip2_cmd)
377 g_free(gtk_gs_defaults.unbzip2_cmd);
378 gtk_gs_defaults.unbzip2_cmd = cmd;
379 gconf_client_set_string(gconf_client,
380 "/apps/ggv/gtkgs/unbzip2",
381 gtk_gs_defaults_get_unbzip2_cmd(), NULL);
386 gtk_gs_defaults_get_zoom_mode()
388 return gtk_gs_defaults.zoom_mode;
392 gtk_gs_defaults_set_zoom_mode(GtkGSZoomMode zoom_mode)
394 if(gtk_gs_defaults.zoom_mode != zoom_mode) {
395 gtk_gs_defaults.zoom_mode = zoom_mode;
396 gconf_client_set_int(gconf_client, "/apps/ggv/gtkgs/zoommode",
397 gtk_gs_defaults_get_zoom_mode(), NULL);
402 gtk_gs_defaults_load()
404 gtk_gs_defaults_gconf_client();
406 gtk_gs_defaults.respect_eof =
407 (gconf_client_get_bool(gconf_client, "/apps/ggv/gtkgs/respect_eof", NULL));
408 gtk_gs_defaults.override_size =
409 (gconf_client_get_bool(gconf_client, "/apps/ggv/gtkgs/override_size",
411 gtk_gs_defaults.override_orientation =
412 (gconf_client_get_bool
413 (gconf_client, "/apps/ggv/gtkgs/override_orientation", NULL));
414 gtk_gs_defaults.antialiased =
415 (gconf_client_get_bool(gconf_client, "/apps/ggv/gtkgs/antialiasing", NULL));
416 gtk_gs_defaults.default_size =
417 (gconf_client_get_int(gconf_client, "/apps/ggv/gtkgs/size", NULL));
418 gtk_gs_defaults.zoom_factor =
419 (gconf_client_get_float(gconf_client, "/apps/ggv/gtkgs/zoom", NULL));
420 gtk_gs_defaults.fallback_orientation =
421 (gconf_client_get_int(gconf_client, "/apps/ggv/gtkgs/orientation", NULL));
422 gtk_gs_defaults.interpreter_cmd =
423 (gconf_client_get_string
424 (gconf_client, "/apps/ggv/gtkgs/interpreter", NULL));
425 gtk_gs_defaults.alpha_params =
426 (gconf_client_get_string
427 (gconf_client, "/apps/ggv/gtkgs/alphaparams", NULL));
428 gtk_gs_defaults.convert_pdf_cmd =
429 (gconf_client_get_string(gconf_client, "/apps/ggv/gtkgs/convertpdf", NULL));
430 gtk_gs_defaults.dsc_cmd =
431 (gconf_client_get_string(gconf_client, "/apps/ggv/gtkgs/pdf2dsc", NULL));
432 gtk_gs_defaults.ungzip_cmd =
433 (gconf_client_get_string(gconf_client, "/apps/ggv/gtkgs/ungzip", NULL));
434 gtk_gs_defaults.unbzip2_cmd =
435 (gconf_client_get_string(gconf_client, "/apps/ggv/gtkgs/unbzip2", NULL));
436 gtk_gs_defaults.show_scroll_rect =
437 (gconf_client_get_bool
438 (gconf_client, "/apps/ggv/gtkgs/show_scroll_rect", NULL));
439 gtk_gs_defaults.scroll_step =
440 (gconf_client_get_float(gconf_client, "/apps/ggv/gtkgs/scrollstep", NULL));
441 gtk_gs_defaults.zoom_mode =
442 (gconf_client_get_int(gconf_client, "/apps/ggv/gtkgs/zoommode", NULL));
446 gtk_gs_defaults_changed(GConfClient * client, guint cnxn_id,
447 GConfEntry * entry, gpointer user_data)
449 if(!strcmp(entry->key, "/apps/ggv/gtkgs/respect_eof"))
450 gtk_gs_defaults_set_respect_eof
451 (gconf_client_get_bool(client, "/apps/ggv/gtkgs/respect_eof", NULL));
452 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/override_orientation"))
453 gtk_gs_defaults_set_override_orientation
454 (gconf_client_get_bool(client, "/apps/ggv/gtkgs/override_orientation",
456 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/orientation"))
457 gtk_gs_defaults_set_orientation
458 (gconf_client_get_int(client, "/apps/ggv/gtkgs/orientation", NULL));
459 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/zoom"))
460 gtk_gs_defaults_set_zoom_factor
461 (gconf_client_get_float(client, "/apps/ggv/gtkgs/zoom", NULL));
462 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/size"))
463 gtk_gs_defaults_set_size
464 (gconf_client_get_int(client, "/apps/ggv/gtkgs/size", NULL));
465 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/antialiasing"))
466 gtk_gs_defaults_set_antialiased
467 (gconf_client_get_bool(client, "/apps/ggv/gtkgs/antialiasing", NULL));
468 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/override_size"))
469 gtk_gs_defaults_set_override_size
470 (gconf_client_get_bool(client, "/apps/ggv/gtkgs/override_size", NULL));
471 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/show_scroll_rect"))
472 gtk_gs_defaults_set_show_scroll_rect
473 (gconf_client_get_bool(client, "/apps/ggv/gtkgs/show_scroll_rect", NULL));
474 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/interpreter"))
475 gtk_gs_defaults_set_interpreter_cmd
476 (gconf_client_get_string(client, "/apps/ggv/gtkgs/interpreter", NULL));
477 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/alphaparams"))
478 gtk_gs_defaults_set_alpha_parameters
479 (gconf_client_get_string(client, "/apps/ggv/gtkgs/alphaparams", NULL));
480 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/convertpdf"))
481 gtk_gs_defaults_set_convert_pdf_cmd
482 (gconf_client_get_string(client, "/apps/ggv/gtkgs/convertpdf", NULL));
483 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/pdf2dsc"))
484 gtk_gs_defaults_set_dsc_cmd
485 (gconf_client_get_string(client, "/apps/ggv/gtkgs/pdf2dsc", NULL));
486 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/ungzip"))
487 gtk_gs_defaults_set_ungzip_cmd
488 (gconf_client_get_string(client, "/apps/ggv/gtkgs/ungzip", NULL));
489 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/unbzip2"))
490 gtk_gs_defaults_set_unbzip2_cmd
491 (gconf_client_get_string(client, "/apps/ggv/gtkgs/unbzip2", NULL));
492 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/zoommode"))
493 gtk_gs_defaults_set_zoom_mode
494 (gconf_client_get_int(client, "/apps/ggv/gtkgs/zoommode", NULL));
495 else if(!strcmp(entry->key, "/apps/ggv/gtkgs/scrollstep"))
496 gtk_gs_defaults_set_scroll_step
497 (gconf_client_get_float(client, "/apps/ggv/gtkgs/scrollstep", NULL));
501 gtk_gs_defaults_gconf_client()
504 g_assert(gconf_is_initialized());
505 gconf_client = gconf_client_get_default();
506 g_assert(gconf_client != NULL);
507 gconf_client_add_dir(gconf_client, "/apps/ggv/gtkgs",
508 GCONF_CLIENT_PRELOAD_RECURSIVE, NULL);
509 gconf_client_notify_add(gconf_client,
510 "/apps/ggv/gtkgs", (GConfClientNotifyFunc)
511 gtk_gs_defaults_changed, NULL, NULL, NULL);