diff options
Diffstat (limited to 'src/xsane-preferences.c')
-rw-r--r-- | src/xsane-preferences.c | 187 |
1 files changed, 148 insertions, 39 deletions
diff --git a/src/xsane-preferences.c b/src/xsane-preferences.c index 4ceec06..83da4e5 100644 --- a/src/xsane-preferences.c +++ b/src/xsane-preferences.c @@ -3,7 +3,7 @@ xsane-preferences.c Oliver Rauch <Oliver.Rauch@rauch-domain.de> - Copyright (C) 1998-2002 Oliver Rauch + Copyright (C) 1998-2005 Oliver Rauch This file is part of the XSANE package. This program is free software; you can redistribute it and/or modify @@ -51,7 +51,9 @@ Preferences preferences = { 0, /* xsane-version string */ 0, /* default path to temporary directory (not defined here) */ + 0, /* default working_directory */ 0, /* no default filename */ + 0, /* no default filetype */ 0137, /* image umask (permission mask for -rw-r------) */ 0027, /* directory umask (permission mask for -rwxr-x----) */ 0, /* no fax project */ @@ -65,6 +67,8 @@ Preferences preferences = 296.98, /* fax_height: height of fax paper in mm */ 0.0, /* fax_leftoffset */ 0.0, /* fax_bottomoffset */ + 1, /* fax_fine_mode */ +#ifdef XSANE_ACTIVATE_MAIL 0, /* no default from email address */ 0, /* no default reply to email address */ 0, /* no default smtp server */ @@ -76,9 +80,14 @@ Preferences preferences = 0, /* no default pop3 passsword */ 0, /* no mail project */ 0, /* no mail viewer */ + 0, /* no mail filetype */ +#endif 0, /* no default ocrcommand */ 0, /* no default ocr input file option */ 0, /* no default ocr output file option */ + 0, /* do not use progress pipe */ + 0, /* no option for progress pipe filedeskriptor */ + 0, /* no progress keyword */ 0, /* no doc viewer */ 80.0, /* jpeg_quality */ 7.0, /* png_compression */ @@ -88,15 +97,18 @@ Preferences preferences = 1, /* save_devprefs_at_exit */ 1, /* overwrite_warning */ 1, /* skip_existing_numbers */ + 0, /* save_pnm16_as_ascii */ 0, /* reduce_16bit_to_8bit */ 1, /* filename_counter_step */ 4, /* filename_counter_len */ + 6, /* show_range_mode */ 1, /* tooltips enabled */ - 1, /* (dont) show histogram */ - 1, /* (dont) show gamma */ - 1, /* (dont) show standard options */ - 0, /* (dont) show advanced options */ - 0, /* (dont) show resolution list */ + 1, /* show histogram */ + 1, /* show gamma */ + 0, /* don't show batch scan */ + 1, /* show standard options */ + 0, /* don`t show advanced options */ + 0, /* don`t show resolution list */ 10.0, /* length unit */ 1, /* main window fixed (1) or scrolled (0) */ 0, /* preview_own_cmap */ @@ -126,7 +138,7 @@ Preferences preferences = 1, /* preselect_scanarea after preview scan */ 1, /* auto_correct_colors after preview scan */ GTK_UPDATE_DISCONTINUOUS, /* update policy for gtk frontend sliders */ - 0, /* psrotate: rotate in postscript mode (landscape) */ + 0, /* paper_orientation */ 0, /* preset_area_definitions */ 0, /* printernr */ 0 /* printerdefinitions */ @@ -144,7 +156,9 @@ desc[] = { {"xsane-version", xsane_rc_pref_string, POFFSET(xsane_version_str)}, {"tmp-path", xsane_rc_pref_string, POFFSET(tmp_path)}, + {"working-directory", xsane_rc_pref_string, POFFSET(working_directory)}, {"filename", xsane_rc_pref_string, POFFSET(filename)}, + {"filetype", xsane_rc_pref_string, POFFSET(filetype)}, {"image-umask", xsane_rc_pref_int, POFFSET(image_umask)}, {"directory-umask", xsane_rc_pref_int, POFFSET(directory_umask)}, {"fax-project", xsane_rc_pref_string, POFFSET(fax_project)}, @@ -158,6 +172,8 @@ desc[] = {"fax-height", xsane_rc_pref_double, POFFSET(fax_height)}, {"fax-left-offset", xsane_rc_pref_double, POFFSET(fax_leftoffset)}, {"fax-bottom-offset", xsane_rc_pref_double, POFFSET(fax_bottomoffset)}, + {"fax-fine-mode", xsane_rc_pref_int, POFFSET(fax_fine_mode)}, +#ifdef XSANE_ACTIVATE_MAIL {"mail-from", xsane_rc_pref_string, POFFSET(mail_from)}, {"mail-reply-to", xsane_rc_pref_string, POFFSET(mail_reply_to)}, {"mail-smtp-server", xsane_rc_pref_string, POFFSET(mail_smtp_server)}, @@ -168,11 +184,16 @@ desc[] = {"mail-pop3-user", xsane_rc_pref_string, POFFSET(mail_pop3_user)}, {"mail-pop3-pass", xsane_rc_pref_string, POFFSET(mail_pop3_pass)}, {"mail-project", xsane_rc_pref_string, POFFSET(mail_project)}, - {"mail-viewert", xsane_rc_pref_string, POFFSET(mail_viewer)}, + {"mail-viewer", xsane_rc_pref_string, POFFSET(mail_viewer)}, + {"mail-filetype", xsane_rc_pref_string, POFFSET(mail_filetype)}, +#endif {"ocr-command", xsane_rc_pref_string, POFFSET(ocr_command)}, {"ocr-inputfile-option", xsane_rc_pref_string, POFFSET(ocr_inputfile_option)}, {"ocr-outputfile-options", xsane_rc_pref_string, POFFSET(ocr_outputfile_option)}, - {"doc-viewer", xsane_rc_pref_string, POFFSET(doc_viewer)}, + {"ocr-use-gui-pipe", xsane_rc_pref_int, POFFSET(ocr_use_gui_pipe)}, + {"ocr-gui-outfd-option", xsane_rc_pref_string, POFFSET(ocr_gui_outfd_option)}, + {"ocr-progress-keyword", xsane_rc_pref_string, POFFSET(ocr_progress_keyword)}, + {"browser", xsane_rc_pref_string, POFFSET(browser)}, {"jpeg-quality", xsane_rc_pref_double, POFFSET(jpeg_quality)}, {"png-compression", xsane_rc_pref_double, POFFSET(png_compression)}, {"tiff-compression16_nr", xsane_rc_pref_int, POFFSET(tiff_compression16_nr)}, @@ -181,12 +202,15 @@ desc[] = {"save-devprefs-at-exit", xsane_rc_pref_int, POFFSET(save_devprefs_at_exit)}, {"overwrite-warning", xsane_rc_pref_int, POFFSET(overwrite_warning)}, {"skip-existing-numbers", xsane_rc_pref_int, POFFSET(skip_existing_numbers)}, + {"save-pnm16-as-ascii", xsane_rc_pref_int, POFFSET( save_pnm16_as_ascii)}, {"reduce-16bit-to8bit", xsane_rc_pref_int, POFFSET(reduce_16bit_to_8bit)}, {"filename-counter-step", xsane_rc_pref_int, POFFSET(filename_counter_step)}, {"filename-counter-len", xsane_rc_pref_int, POFFSET(filename_counter_len)}, + {"show-range-mode", xsane_rc_pref_int, POFFSET(show_range_mode)}, {"tool-tips", xsane_rc_pref_int, POFFSET(tooltips_enabled)}, {"show-histogram", xsane_rc_pref_int, POFFSET(show_histogram)}, {"show-gamma", xsane_rc_pref_int, POFFSET(show_gamma)}, + {"show-batch-scan", xsane_rc_pref_int, POFFSET(show_batch_scan)}, {"show-standard-options", xsane_rc_pref_int, POFFSET(show_standard_options)}, {"show-advanced-options", xsane_rc_pref_int, POFFSET(show_advanced_options)}, {"show-resolution-list", xsane_rc_pref_int, POFFSET(show_resolution_list)}, @@ -219,9 +243,8 @@ desc[] = {"preselect-scanarea", xsane_rc_pref_int, POFFSET(preselect_scanarea)}, {"auto-correct-colors", xsane_rc_pref_int, POFFSET(auto_correct_colors)}, {"gtk-update-policy", xsane_rc_pref_int, POFFSET(gtk_update_policy)}, - {"postscript-rotate", xsane_rc_pref_int, POFFSET(psrotate)}, + {"paper-orientation", xsane_rc_pref_int, POFFSET(paper_orientation)}, {"preset-area-definitions", xsane_rc_pref_int, POFFSET(preset_area_definitions)}, - {"medium-definitions", xsane_rc_pref_int, POFFSET(medium_definitions)}, {"printernr", xsane_rc_pref_int, POFFSET(printernr)}, {"printerdefinitions", xsane_rc_pref_int, POFFSET(printerdefinitions)} }; @@ -347,23 +370,6 @@ void preferences_save(int fd) n++; } - /* save mediums */ - - n=0; - - while (n < preferences.medium_definitions) - { - DBG(DBG_info2, "saving preferences medium definition %s\n", preferences.medium[n]->name); - for (i = 0; i < NELEMS(desc_medium); ++i) - { - xsane_rc_io_w_string(&w, &desc_medium[i].name); - (*desc_medium[i].codec) (&w, preferences.medium[n], desc_medium[i].offset); - } - n++; - } - - - xsane_rc_io_w_set_dir(&w, WIRE_DECODE); /* flush it out */ xsane_rc_io_w_exit(&w); } @@ -390,28 +396,43 @@ void preferences_restore(int fd) if (w.status) { xsane_rc_io_w_exit(&w); + preferences.printerdefinitions = 0; + preferences.preset_area_definitions = 0; return; } xsane_rc_io_w_string(&w, &name); - if (w.status || !name) + if (w.status == EINVAL) /* not a string */ + { + w.status = 0; + xsane_rc_io_w_skip_newline(&w); /* skip this line */ + } + else if (w.status || !name) /* other error */ { xsane_rc_io_w_exit(&w); return; } - - for (i = 0; i < NELEMS (desc); ++i) + else /* identifier read */ { - if (strcmp(name, desc[i].name) == 0) + for (i = 0; i < NELEMS(desc); ++i) + { + if (strcmp(name, desc[i].name) == 0) + { + DBG(DBG_info2, "reading preferences value for %s\n", desc[i].name); + (*desc[i].codec) (&w, &preferences, desc[i].offset); + break; + } + } + + if (!strcmp(name, "printerdefinitions")) { - DBG(DBG_info2, "reading preferences value for %s\n", desc[i].name); - (*desc[i].codec) (&w, &preferences, desc[i].offset); break; } - } - if (!strcmp(name, "printerdefinitions")) - { - break; + else if (i == NELEMS(desc)) + { + DBG(DBG_info2, "preferences identifier %s unknown\n", name); + xsane_rc_io_w_skip_newline(&w); /* skip this line */ + } } } @@ -494,8 +515,94 @@ void preferences_restore(int fd) } } + xsane_rc_io_w_exit(&w); +} + +/* --------------------------------------------------------------------- */ +/* --------------------------------------------------------------------- */ + +void preferences_save_media(int fd) +{ + Wire w; + int i, n; + char *medium_defs="MEDIUM_DEFINITIONS"; + + DBG(DBG_proc, "preferences_save_media\n"); + + w.io.fd = fd; + w.io.read = read; + w.io.write = write; + xsane_rc_io_w_init(&w); + xsane_rc_io_w_set_dir(&w, WIRE_ENCODE); + + xsane_rc_io_w_string(&w, &medium_defs); + xsane_rc_io_w_word(&w, &preferences.medium_definitions); + + /* save media */ + + n=0; + + DBG(DBG_info, "saving %d medium definitions\n", preferences.medium_definitions); + + while (n < preferences.medium_definitions) + { + DBG(DBG_info2, "=> saving medium definition %s\n", preferences.medium[n]->name); + for (i = 0; i < NELEMS(desc_medium); ++i) + { + xsane_rc_io_w_string(&w, &desc_medium[i].name); + (*desc_medium[i].codec) (&w, preferences.medium[n], desc_medium[i].offset); + } + n++; + } + + xsane_rc_io_w_set_dir(&w, WIRE_DECODE); /* flush it out */ + xsane_rc_io_w_exit(&w); +} + +/* --------------------------------------------------------------------- */ + +void preferences_restore_media(int fd) +{ + SANE_String name; + Wire w; + int i, n; + + DBG(DBG_proc, "preferences_restore_media\n"); + + w.io.fd = fd; + w.io.read = read; + w.io.write = write; + xsane_rc_io_w_init(&w); + xsane_rc_io_w_set_dir(&w, WIRE_DECODE); + + preferences.medium_definitions = 0; + + xsane_rc_io_w_space(&w, 3); + if (w.status) + { + xsane_rc_io_w_exit(&w); + return; + } + + xsane_rc_io_w_string(&w, &name); + if (w.status || !name) + { + xsane_rc_io_w_exit(&w); + return; + } + + if (strcmp(name, "MEDIUM_DEFINITIONS")) /* falsche Datei */ + { + DBG(DBG_info, "no medium definitions in file\n"); + xsane_rc_io_w_exit(&w); + return; + } + + xsane_rc_io_w_word(&w, &preferences.medium_definitions); + if (preferences.medium_definitions) { + DBG(DBG_info, "reading %d medium definition\n", preferences.medium_definitions); preferences.medium = calloc(preferences.medium_definitions, sizeof(void *)); n=0; @@ -527,10 +634,12 @@ void preferences_restore(int fd) break; } } - DBG(DBG_info2, "preferences medium definition %s read\n", preferences.medium[n]->name); + DBG(DBG_info2, "=> medium definition %s read\n", preferences.medium[n]->name); n++; } } xsane_rc_io_w_exit(&w); } + +/* --------------------------------------------------------------------- */ |