From 72147c12357446b304264b6944b8a1d92c45f53c Mon Sep 17 00:00:00 2001 From: John Darrington Date: Sat, 16 Dec 2006 03:40:41 +0000 Subject: [PATCH] Committed patch #5636 --- po/de.po | 1690 +++++++++++++-------------- src/data/ChangeLog | 10 + src/data/dictionary.c | 114 +- src/data/dictionary.h | 19 +- src/data/missing-values.c | 14 +- src/data/missing-values.h | 6 +- src/data/procedure.h | 3 +- src/data/value-labels.c | 3 +- src/data/vardict.h | 3 + src/data/variable.c | 38 +- src/language/expressions/evaluate.c | 6 +- src/language/stats/aggregate.c | 2 +- src/ui/gui/ChangeLog | 16 + src/ui/gui/automake.mk | 2 - src/ui/gui/data-sheet.c | 5 +- src/ui/gui/menu-actions.c | 27 +- src/ui/gui/missing-val-dialog.c | 21 +- src/ui/gui/missing-val-dialog.h | 4 +- src/ui/gui/psppire-data-store.c | 55 +- src/ui/gui/psppire-dict.c | 306 +++-- src/ui/gui/psppire-dict.h | 16 +- src/ui/gui/psppire-var-store.c | 144 ++- src/ui/gui/psppire-var-store.h | 6 +- src/ui/gui/psppire-variable.c | 393 ------- src/ui/gui/psppire-variable.h | 96 -- src/ui/gui/sort-cases-dialog.c | 16 +- src/ui/gui/val-labs-dialog.c | 30 +- src/ui/gui/val-labs-dialog.h | 2 +- src/ui/gui/var-sheet.c | 31 +- src/ui/gui/var-type-dialog.c | 13 +- src/ui/gui/var-type-dialog.h | 9 +- src/ui/terminal/main.c | 2 +- 32 files changed, 1350 insertions(+), 1752 deletions(-) delete mode 100644 src/ui/gui/psppire-variable.c delete mode 100644 src/ui/gui/psppire-variable.h diff --git a/po/de.po b/po/de.po index 0d96640b9a..972fcfb9c4 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: PSPP 0.4.2\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2006-12-14 19:01+0900\n" +"POT-Creation-Date: 2006-12-16 11:13+0900\n" "PO-Revision-Date: 2006-05-26 17:49+0800\n" "Last-Translator: John Darrington \n" "Language-Team: German \n" @@ -18,17 +18,17 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/data/any-reader.c:75 +#: src/data/any-reader.c:74 #, c-format msgid "An error occurred while opening \"%s\": %s." msgstr "Ein Fehler ist passiert als \\\"%s\\\" geoffnet war: %s" -#: src/data/any-reader.c:130 +#: src/data/any-reader.c:129 #, c-format msgid "\"%s\" is not a system or portable file." msgstr "\"%s\" ist kein Systemdatei und kein Tragbardatei." -#: src/data/any-reader.c:136 src/data/any-writer.c:81 +#: src/data/any-reader.c:135 src/data/any-writer.c:80 msgid "The inline file is not allowed here." msgstr "Diese Inlindatei ist hier verboten." @@ -47,233 +47,233 @@ msgstr "Tag %d muß zwischen 0 bit 31 sein." msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15." msgstr "" -#: src/data/data-in.c:272 src/data/data-in.c:462 +#: src/data/data-in.c:271 src/data/data-in.c:461 msgid "Field contents are not numeric." msgstr "" -#: src/data/data-in.c:274 src/data/data-in.c:464 +#: src/data/data-in.c:273 src/data/data-in.c:463 msgid "Number followed by garbage." msgstr "" -#: src/data/data-in.c:285 +#: src/data/data-in.c:284 msgid "Invalid numeric syntax." msgstr "" -#: src/data/data-in.c:294 src/data/data-in.c:477 +#: src/data/data-in.c:293 src/data/data-in.c:476 msgid "Too-large number set to system-missing." msgstr "" -#: src/data/data-in.c:299 src/data/data-in.c:482 +#: src/data/data-in.c:298 src/data/data-in.c:481 msgid "Too-small number set to zero." msgstr "" -#: src/data/data-in.c:325 +#: src/data/data-in.c:324 msgid "All characters in field must be digits." msgstr "" -#: src/data/data-in.c:348 +#: src/data/data-in.c:347 msgid "Unrecognized character in field." msgstr "" -#: src/data/data-in.c:372 src/data/data-in.c:636 +#: src/data/data-in.c:371 src/data/data-in.c:635 msgid "Field must have even length." msgstr "" -#: src/data/data-in.c:377 src/data/data-in.c:642 +#: src/data/data-in.c:376 src/data/data-in.c:641 msgid "Field must contain only hex digits." msgstr "" -#: src/data/data-in.c:681 src/data/data-in.c:728 +#: src/data/data-in.c:680 src/data/data-in.c:727 msgid "Syntax error in date field." msgstr "" -#: src/data/data-in.c:697 +#: src/data/data-in.c:696 #, c-format msgid "Day (%ld) must be between 1 and 31." msgstr "" -#: src/data/data-in.c:744 +#: src/data/data-in.c:743 msgid "Delimiter expected between fields in date." msgstr "" -#: src/data/data-in.c:818 +#: src/data/data-in.c:817 msgid "" "Unrecognized month format. Months may be specified as Arabic or Roman " "numerals or as at least 3 letters of their English names." msgstr "" -#: src/data/data-in.c:845 +#: src/data/data-in.c:844 #, c-format msgid "Year (%ld) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:857 +#: src/data/data-in.c:856 #, c-format msgid "Trailing garbage \"%.*s\" following date." msgstr "" -#: src/data/data-in.c:873 +#: src/data/data-in.c:872 msgid "Julian day must have exactly three digits." msgstr "" -#: src/data/data-in.c:878 +#: src/data/data-in.c:877 #, c-format msgid "Julian day (%ld) must be between 1 and 366." msgstr "" -#: src/data/data-in.c:902 +#: src/data/data-in.c:901 #, c-format msgid "Quarter (%ld) must be between 1 and 4." msgstr "" -#: src/data/data-in.c:922 +#: src/data/data-in.c:921 #, c-format msgid "Week (%ld) must be between 1 and 53." msgstr "" -#: src/data/data-in.c:935 +#: src/data/data-in.c:934 msgid "Delimiter expected between fields in time." msgstr "" -#: src/data/data-in.c:955 +#: src/data/data-in.c:954 #, c-format msgid "Minute (%ld) must be between 0 and 59." msgstr "" -#: src/data/data-in.c:995 +#: src/data/data-in.c:994 msgid "" "Unrecognized weekday name. At least the first two letters of an English " "weekday name must be specified." msgstr "" -#: src/data/data-in.c:1133 +#: src/data/data-in.c:1132 #, fuzzy, c-format msgid "`%c' expected in date field." msgstr "plotzlich ist der Datei beendet" -#: src/data/data-in.c:1174 +#: src/data/data-in.c:1173 #, fuzzy, c-format msgid "column %d" msgstr "Spalten" -#: src/data/data-in.c:1176 +#: src/data/data-in.c:1175 #, fuzzy, c-format msgid "columns %d-%d" msgstr "Spalten" -#: src/data/data-in.c:1180 +#: src/data/data-in.c:1179 #, c-format msgid "%s field) " msgstr "" -#: src/data/data-out.c:470 +#: src/data/data-out.c:469 #, c-format msgid "Weekday number %f is not between 1 and 7." msgstr "" -#: src/data/data-out.c:491 +#: src/data/data-out.c:490 #, c-format msgid "Month number %f is not between 1 and 12." msgstr "" -#: src/data/dictionary.c:676 +#: src/data/dictionary.c:700 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/dictionary.c:1156 +#: src/data/dictionary.c:1180 msgid "Variable suffix too large." msgstr "" -#: src/data/fastfile.c:536 +#: src/data/fastfile.c:535 #, c-format msgid "%s: Removing temporary file: %s." msgstr "" -#: src/data/fastfile.c:660 +#: src/data/fastfile.c:659 #, c-format msgid "Error writing temporary file: %s." msgstr "" -#: src/data/fastfile.c:688 +#: src/data/fastfile.c:687 #, c-format msgid "%s: Opening temporary file: %s." msgstr "" -#: src/data/fastfile.c:732 +#: src/data/fastfile.c:731 #, c-format msgid "%s: Seeking temporary file: %s." msgstr "" -#: src/data/fastfile.c:754 +#: src/data/fastfile.c:753 #, c-format msgid "%s: Reading temporary file: %s." msgstr "" -#: src/data/fastfile.c:757 +#: src/data/fastfile.c:756 #, c-format msgid "%s: Temporary file ended unexpectedly." msgstr "" -#: src/data/file-handle-def.c:304 +#: src/data/file-handle-def.c:303 #, c-format msgid "Can't open %s as a %s because it is already open as a %s." msgstr "" -#: src/data/file-handle-def.c:311 +#: src/data/file-handle-def.c:310 #, c-format msgid "Can't open %s as a %s for %s because it is already open for %s." msgstr "" -#: src/data/file-handle-def.c:319 +#: src/data/file-handle-def.c:318 #, c-format msgid "Can't re-open %s as a %s for %s." msgstr "" -#: src/data/file-name.c:194 +#: src/data/file-name.c:193 #, c-format msgid "searching for \"%s\" in path \"%s\"" msgstr "" -#: src/data/file-name.c:220 +#: src/data/file-name.c:219 #, c-format msgid "...found \"%s\"" msgstr "" -#: src/data/file-name.c:227 +#: src/data/file-name.c:226 msgid "...not found" msgstr "" -#: src/data/file-name.c:579 +#: src/data/file-name.c:578 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." msgstr "" -#: src/data/format.c:219 +#: src/data/format.c:218 msgid "Input format" msgstr "" -#: src/data/format.c:219 +#: src/data/format.c:218 msgid "Output format" msgstr "" -#: src/data/format.c:228 +#: src/data/format.c:227 #, c-format msgid "Format %s may not be used for input." msgstr "" -#: src/data/format.c:235 +#: src/data/format.c:234 #, c-format msgid "%s specifies width %d, but %s requires an even width." msgstr "" -#: src/data/format.c:244 +#: src/data/format.c:243 #, c-format msgid "%s %s specifies width %d, but %s requires a width between %d and %d." msgstr "" -#: src/data/format.c:253 +#: src/data/format.c:252 #, c-format msgid "%s %s specifies %d decimal place, but %s does not allow any decimals." msgid_plural "" @@ -281,7 +281,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:264 +#: src/data/format.c:263 #, c-format msgid "" "%s %s specifies %d decimal place, but the given width allows at most %d " @@ -292,7 +292,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:271 +#: src/data/format.c:270 #, c-format msgid "" "%s %s specifies %d decimal place, but the given width does not allow for any " @@ -303,485 +303,485 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:310 +#: src/data/format.c:309 #, c-format msgid "%s variables are not compatible with %s format %s." msgstr "" -#: src/data/format.c:311 src/data/por-file-reader.c:490 -#: src/data/sys-file-reader.c:603 src/ui/gui/psppire.glade:1227 -#: src/ui/gui/psppire-var-store.c:451 +#: src/data/format.c:310 src/data/por-file-reader.c:489 +#: src/data/sys-file-reader.c:602 src/ui/gui/psppire.glade:1227 +#: src/ui/gui/psppire-var-store.c:484 msgid "String" msgstr "Zeichenkette" -#: src/data/format.c:311 src/data/por-file-reader.c:490 -#: src/data/sys-file-reader.c:603 src/ui/gui/psppire.glade:1088 -#: src/ui/gui/psppire-var-store.c:444 +#: src/data/format.c:310 src/data/por-file-reader.c:489 +#: src/data/sys-file-reader.c:602 src/ui/gui/psppire.glade:1088 +#: src/ui/gui/psppire-var-store.c:477 msgid "Numeric" msgstr "Nummer" -#: src/data/format.c:312 src/data/sys-file-reader.c:1023 -#: src/data/sys-file-reader.c:1025 +#: src/data/format.c:311 src/data/sys-file-reader.c:1022 +#: src/data/sys-file-reader.c:1024 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 -#: src/language/xforms/recode.c:468 src/language/xforms/recode.c:469 -#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482 +#: src/language/xforms/recode.c:467 src/language/xforms/recode.c:468 +#: src/language/xforms/recode.c:480 src/language/xforms/recode.c:481 msgid "numeric" msgstr "numerisch" -#: src/data/format.c:312 src/data/sys-file-reader.c:1023 -#: src/data/sys-file-reader.c:1025 +#: src/data/format.c:311 src/data/sys-file-reader.c:1022 +#: src/data/sys-file-reader.c:1024 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 -#: src/language/xforms/recode.c:468 src/language/xforms/recode.c:469 -#: src/language/xforms/recode.c:481 src/language/xforms/recode.c:482 +#: src/language/xforms/recode.c:467 src/language/xforms/recode.c:468 +#: src/language/xforms/recode.c:480 src/language/xforms/recode.c:481 msgid "string" msgstr "kette" -#: src/data/format.c:330 +#: src/data/format.c:329 #, c-format msgid "String variable with width %d is not compatible with format %s." msgstr "" -#: src/data/make-file.c:60 +#: src/data/make-file.c:59 #, c-format msgid "%s: Creating temporary file: %s." msgstr "" -#: src/data/make-file.c:102 +#: src/data/make-file.c:101 #, c-format msgid "%s: Creating file: %s." msgstr "" -#: src/data/por-file-reader.c:94 +#: src/data/por-file-reader.c:93 #, c-format msgid "portable file %s corrupt at offset %ld: " msgstr "" -#: src/data/por-file-reader.c:130 +#: src/data/por-file-reader.c:129 msgid "unexpected end of file" msgstr "plotzlich ist der Datei beendet" -#: src/data/por-file-reader.c:189 +#: src/data/por-file-reader.c:188 #, c-format msgid "" "An error occurred while opening \"%s\" for reading as a portable file: %s." msgstr "" -#: src/data/por-file-reader.c:206 +#: src/data/por-file-reader.c:205 msgid "Data record expected." msgstr "" -#: src/data/por-file-reader.c:314 +#: src/data/por-file-reader.c:313 msgid "Missing numeric terminator." msgstr "" -#: src/data/por-file-reader.c:337 +#: src/data/por-file-reader.c:336 msgid "Invalid integer." msgstr "" -#: src/data/por-file-reader.c:348 +#: src/data/por-file-reader.c:347 #, c-format msgid "Bad string length %d." msgstr "" -#: src/data/por-file-reader.c:409 +#: src/data/por-file-reader.c:408 #, c-format msgid "%s: Not a portable file." msgstr "" -#: src/data/por-file-reader.c:434 +#: src/data/por-file-reader.c:433 #, c-format msgid "Bad date string length %d." msgstr "" -#: src/data/por-file-reader.c:436 +#: src/data/por-file-reader.c:435 #, c-format msgid "Bad time string length %d." msgstr "" -#: src/data/por-file-reader.c:476 +#: src/data/por-file-reader.c:475 #, c-format msgid "%s: Bad format specifier byte (%d)." msgstr "" -#: src/data/por-file-reader.c:489 +#: src/data/por-file-reader.c:488 #, c-format msgid "%s variable %s has invalid format specifier %s." msgstr "" -#: src/data/por-file-reader.c:508 +#: src/data/por-file-reader.c:507 msgid "Expected variable count record." msgstr "" -#: src/data/por-file-reader.c:512 +#: src/data/por-file-reader.c:511 #, c-format msgid "Invalid number of variables %d." msgstr "" -#: src/data/por-file-reader.c:522 +#: src/data/por-file-reader.c:521 #, c-format msgid "Weight variable name (%s) truncated." msgstr "" -#: src/data/por-file-reader.c:536 +#: src/data/por-file-reader.c:535 msgid "Expected variable record." msgstr "" -#: src/data/por-file-reader.c:540 +#: src/data/por-file-reader.c:539 #, c-format msgid "Invalid variable width %d." msgstr "" -#: src/data/por-file-reader.c:548 +#: src/data/por-file-reader.c:547 #, c-format msgid "position %d: Invalid variable name `%s'." msgstr "" -#: src/data/por-file-reader.c:556 src/language/expressions/evaluate.c:170 +#: src/data/por-file-reader.c:555 src/language/expressions/evaluate.c:169 #, c-format msgid "Duplicate variable name %s." msgstr "" -#: src/data/por-file-reader.c:597 +#: src/data/por-file-reader.c:596 #, c-format msgid "Weighting variable %s not present in dictionary." msgstr "" -#: src/data/por-file-reader.c:644 +#: src/data/por-file-reader.c:643 #, c-format msgid "Unknown variable %s while parsing value labels." msgstr "" -#: src/data/por-file-reader.c:647 +#: src/data/por-file-reader.c:646 #, c-format msgid "" "Cannot assign value labels to %s and %s, which have different variable types " "or widths." msgstr "" -#: src/data/por-file-reader.c:671 +#: src/data/por-file-reader.c:670 #, c-format msgid "Duplicate label for value %g for variable %s." msgstr "" -#: src/data/por-file-reader.c:674 +#: src/data/por-file-reader.c:673 #, c-format msgid "Duplicate label for value `%.*s' for variable %s." msgstr "" -#: src/data/por-file-writer.c:147 +#: src/data/por-file-writer.c:146 #, c-format msgid "Invalid decimal digits count %d. Treating as %d." msgstr "" -#: src/data/por-file-writer.c:167 +#: src/data/por-file-writer.c:166 #, c-format msgid "" "An error occurred while opening \"%s\" for writing as a portable file: %s." msgstr "" -#: src/data/por-file-writer.c:452 +#: src/data/por-file-writer.c:451 #, c-format msgid "An I/O error occurred writing portable file \"%s\"." msgstr "" -#: src/data/scratch-reader.c:64 +#: src/data/scratch-reader.c:63 #, c-format msgid "" "Scratch file handle %s has not yet been written, using SAVE or another " "procedure, so it cannot yet be used for reading." msgstr "" -#: src/data/settings.c:136 +#: src/data/settings.c:135 #, c-format msgid "Could not access definition for terminal `%s'." msgstr "" -#: src/data/sys-file-reader.c:208 +#: src/data/sys-file-reader.c:207 #, c-format msgid "Error opening \"%s\" for reading as a system file: %s." msgstr "" -#: src/data/sys-file-reader.c:238 +#: src/data/sys-file-reader.c:237 msgid "Misplaced type 4 record." msgstr "" -#: src/data/sys-file-reader.c:249 +#: src/data/sys-file-reader.c:248 #, c-format msgid "Unrecognized record type %d." msgstr "" -#: src/data/sys-file-reader.c:258 +#: src/data/sys-file-reader.c:257 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" -#: src/data/sys-file-reader.c:290 +#: src/data/sys-file-reader.c:289 #, c-format msgid "Error closing system file \"%s\": %s." msgstr "" -#: src/data/sys-file-reader.c:350 src/data/sys-file-reader.c:360 +#: src/data/sys-file-reader.c:349 src/data/sys-file-reader.c:359 #, fuzzy msgid "This is not an SPSS system file." msgstr "\"%s\" ist kein Systemdatei und kein Tragbardatei." -#: src/data/sys-file-reader.c:378 +#: src/data/sys-file-reader.c:377 #, c-format msgid "" "Compression bias (%g) is not the usual value of 100, or system file uses " "unrecognized floating-point format." msgstr "" -#: src/data/sys-file-reader.c:452 +#: src/data/sys-file-reader.c:451 #, c-format msgid "Invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:456 +#: src/data/sys-file-reader.c:455 #, c-format msgid "Bad variable width %d." msgstr "" -#: src/data/sys-file-reader.c:460 +#: src/data/sys-file-reader.c:459 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:468 +#: src/data/sys-file-reader.c:467 msgid "Variable label indicator field is not 0 or 1." msgstr "" -#: src/data/sys-file-reader.c:476 +#: src/data/sys-file-reader.c:475 #, c-format msgid "Variable %s has label of invalid length %d." msgstr "" -#: src/data/sys-file-reader.c:487 +#: src/data/sys-file-reader.c:486 msgid "Missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:523 +#: src/data/sys-file-reader.c:522 #, c-format msgid "String variable %s may not have missing values specified as a range." msgstr "" -#: src/data/sys-file-reader.c:528 +#: src/data/sys-file-reader.c:527 #, c-format msgid "Long string variable %s may not have missing values." msgstr "" -#: src/data/sys-file-reader.c:550 +#: src/data/sys-file-reader.c:549 msgid "Missing string continuation record." msgstr "" -#: src/data/sys-file-reader.c:584 +#: src/data/sys-file-reader.c:583 #, c-format msgid "Unknown variable format %d." msgstr "" -#: src/data/sys-file-reader.c:602 +#: src/data/sys-file-reader.c:601 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "" -#: src/data/sys-file-reader.c:605 +#: src/data/sys-file-reader.c:604 #, fuzzy msgid "print" msgstr "Drucken" -#: src/data/sys-file-reader.c:605 +#: src/data/sys-file-reader.c:604 #, fuzzy msgid "write" msgstr "Drucken" -#: src/data/sys-file-reader.c:609 +#: src/data/sys-file-reader.c:608 msgid "Suppressing further invalid format warnings." msgstr "" -#: src/data/sys-file-reader.c:627 +#: src/data/sys-file-reader.c:626 msgid "Weighting variable must be numeric." msgstr "" -#: src/data/sys-file-reader.c:641 +#: src/data/sys-file-reader.c:640 msgid "Multiple type 6 (document) records." msgstr "" -#: src/data/sys-file-reader.c:645 +#: src/data/sys-file-reader.c:644 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "" -#: src/data/sys-file-reader.c:716 +#: src/data/sys-file-reader.c:715 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "" -#: src/data/sys-file-reader.c:740 +#: src/data/sys-file-reader.c:739 #, c-format msgid "Bad size (%d) or count (%d) field on record type 7, subtype 3." msgstr "" -#: src/data/sys-file-reader.c:755 +#: src/data/sys-file-reader.c:754 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " "expected (%d)." msgstr "" -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:767 msgid "little-endian" msgstr "" -#: src/data/sys-file-reader.c:768 +#: src/data/sys-file-reader.c:767 msgid "big-endian" msgstr "" -#: src/data/sys-file-reader.c:769 +#: src/data/sys-file-reader.c:768 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." msgstr "" -#: src/data/sys-file-reader.c:785 +#: src/data/sys-file-reader.c:784 #, c-format msgid "Bad size (%d) or count (%d) on extension 4." msgstr "" -#: src/data/sys-file-reader.c:789 +#: src/data/sys-file-reader.c:788 #, c-format msgid "File specifies unexpected value %g as SYSMIS." msgstr "" -#: src/data/sys-file-reader.c:791 +#: src/data/sys-file-reader.c:790 #, c-format msgid "File specifies unexpected value %g as HIGHEST." msgstr "" -#: src/data/sys-file-reader.c:793 +#: src/data/sys-file-reader.c:792 #, c-format msgid "File specifies unexpected value %g as LOWEST." msgstr "" -#: src/data/sys-file-reader.c:807 +#: src/data/sys-file-reader.c:806 #, c-format msgid "Bad size (%d) or count (%d) on extension 11." msgstr "" -#: src/data/sys-file-reader.c:820 +#: src/data/sys-file-reader.c:819 msgid "Invalid variable display parameters. Default parameters substituted." msgstr "" -#: src/data/sys-file-reader.c:855 +#: src/data/sys-file-reader.c:854 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." msgstr "" -#: src/data/sys-file-reader.c:865 +#: src/data/sys-file-reader.c:864 #, c-format msgid "Duplicate long variable name `%s' within system file." msgstr "" -#: src/data/sys-file-reader.c:903 +#: src/data/sys-file-reader.c:902 #, c-format msgid "%s listed as string of length %s in length table." msgstr "" -#: src/data/sys-file-reader.c:917 +#: src/data/sys-file-reader.c:916 #, c-format msgid "Very long string %s overflows dictionary." msgstr "" -#: src/data/sys-file-reader.c:964 +#: src/data/sys-file-reader.c:963 #, c-format msgid "Invalid number of labels: %d. Ignoring labels." msgstr "" -#: src/data/sys-file-reader.c:995 +#: src/data/sys-file-reader.c:994 msgid "" "Variable index record (type 4) does not immediately follow value label " "record (type 3) as it should." msgstr "" -#: src/data/sys-file-reader.c:1002 +#: src/data/sys-file-reader.c:1001 #, c-format msgid "" "Number of variables associated with a value label (%d) is not between 1 and " "the number of variables (%d)." msgstr "" -#: src/data/sys-file-reader.c:1012 +#: src/data/sys-file-reader.c:1011 #, c-format msgid "Value labels are not allowed on long string variables (%s)." msgstr "" -#: src/data/sys-file-reader.c:1019 +#: src/data/sys-file-reader.c:1018 #, c-format msgid "" "Variables associated with value label are not all of identical type. " "Variable %s is %s, but variable %s is %s." msgstr "" -#: src/data/sys-file-reader.c:1052 +#: src/data/sys-file-reader.c:1051 #, c-format msgid "Duplicate value label for %g on %s." msgstr "" -#: src/data/sys-file-reader.c:1055 +#: src/data/sys-file-reader.c:1054 #, c-format msgid "Duplicate value label for \"%.*s\" on %s." msgstr "" -#: src/data/sys-file-reader.c:1173 +#: src/data/sys-file-reader.c:1172 msgid "File ends in partial case." msgstr "" -#: src/data/sys-file-reader.c:1269 src/data/sys-file-reader.c:1305 +#: src/data/sys-file-reader.c:1268 src/data/sys-file-reader.c:1304 msgid "Compressed data is corrupt." msgstr "" -#: src/data/sys-file-reader.c:1378 +#: src/data/sys-file-reader.c:1377 #, c-format msgid "Variable index %d not in valid range 1...%d." msgstr "" -#: src/data/sys-file-reader.c:1383 +#: src/data/sys-file-reader.c:1382 #, c-format msgid "Variable index %d refers to long string continuation." msgstr "" -#: src/data/sys-file-reader.c:1469 +#: src/data/sys-file-reader.c:1468 #, c-format msgid "Suppressed %d additional variable map warnings." msgstr "" -#: src/data/sys-file-reader.c:1482 +#: src/data/sys-file-reader.c:1481 #, c-format msgid "Variable map refers to unknown variable %s." msgstr "" -#: src/data/sys-file-reader.c:1558 +#: src/data/sys-file-reader.c:1557 #, c-format msgid "System error: %s." msgstr "" -#: src/data/sys-file-reader.c:1560 +#: src/data/sys-file-reader.c:1559 #, fuzzy msgid "Unexpected end of file." msgstr "plotzlich ist der Datei beendet" -#: src/data/sys-file-writer.c:237 +#: src/data/sys-file-writer.c:236 #, c-format msgid "Unknown system file version %d. Treating as version %d." msgstr "" -#: src/data/sys-file-writer.c:389 +#: src/data/sys-file-writer.c:388 #, c-format msgid "Error opening \"%s\" for writing as a system file: %s." msgstr "" -#: src/data/sys-file-writer.c:1102 +#: src/data/sys-file-writer.c:1101 #, c-format msgid "An I/O error occurred writing system file \"%s\"." msgstr "" @@ -812,111 +812,111 @@ msgstr "Der Variabelname %s ist große als %d Buchstaben." msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "" -#: src/data/variable.c:986 +#: src/data/variable.c:1002 msgid "ordinary" msgstr "" -#: src/data/variable.c:988 +#: src/data/variable.c:1004 msgid "system" msgstr "" -#: src/data/variable.c:990 +#: src/data/variable.c:1006 msgid "scratch" msgstr "" -#: src/language/command.c:183 +#: src/language/command.c:182 #, c-format msgid "%s is unimplemented." msgstr "" -#: src/language/command.c:188 +#: src/language/command.c:187 #, c-format msgid "%s may be used only in testing mode." msgstr "" -#: src/language/command.c:193 +#: src/language/command.c:192 #, c-format msgid "%s may be used only in enhanced syntax mode." msgstr "" -#: src/language/command.c:447 +#: src/language/command.c:446 msgid "expecting command name" msgstr "" -#: src/language/command.c:461 +#: src/language/command.c:460 #, c-format msgid "Unknown command %s." msgstr "" -#: src/language/command.c:588 +#: src/language/command.c:587 msgid "before the active file has been defined" msgstr "" -#: src/language/command.c:590 +#: src/language/command.c:589 msgid "after the active file has been defined" msgstr "" -#: src/language/command.c:592 +#: src/language/command.c:591 msgid "inside INPUT PROGRAM" msgstr "" -#: src/language/command.c:594 +#: src/language/command.c:593 msgid "inside FILE TYPE" msgstr "" -#: src/language/command.c:599 +#: src/language/command.c:598 #, c-format msgid "%s or %s" msgstr "" -#: src/language/command.c:601 +#: src/language/command.c:600 #, c-format msgid "%s, %s, or %s" msgstr "" -#: src/language/command.c:605 +#: src/language/command.c:604 #, c-format msgid "%s is allowed only %s." msgstr "" -#: src/language/command.c:610 +#: src/language/command.c:609 #, c-format msgid "%s is not allowed inside INPUT PROGRAM." msgstr "" -#: src/language/command.c:612 +#: src/language/command.c:611 #, c-format msgid "%s is not allowed inside FILE TYPE." msgstr "" -#: src/language/command.c:690 src/language/command.c:819 +#: src/language/command.c:689 src/language/command.c:818 #: src/language/utilities/permissions.c:102 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/language/command.c:702 +#: src/language/command.c:701 #, c-format msgid "Error removing `%s': %s." msgstr "" -#: src/language/command.c:752 +#: src/language/command.c:751 #, c-format msgid "Couldn't fork: %s." msgstr "" -#: src/language/command.c:794 +#: src/language/command.c:793 #, c-format msgid "Error executing command: %s." msgstr "" -#: src/language/command.c:803 src/language/data-io/matrix-data.c:539 -#: src/language/data-io/print-space.c:76 src/language/dictionary/vector.c:203 -#: src/language/lexer/lexer.c:466 src/language/stats/autorecode.c:154 -#: src/language/xforms/select-if.c:62 +#: src/language/command.c:802 src/language/data-io/matrix-data.c:538 +#: src/language/data-io/print-space.c:75 src/language/dictionary/vector.c:202 +#: src/language/lexer/lexer.c:465 src/language/stats/autorecode.c:153 +#: src/language/xforms/select-if.c:61 msgid "expecting end of command" msgstr "" -#: src/language/command.c:840 +#: src/language/command.c:839 msgid "No operating system support for this command." msgstr "" @@ -935,243 +935,243 @@ msgstr "" msgid "This command cannot appear outside %s...%s." msgstr "" -#: src/language/control/do-if.c:180 +#: src/language/control/do-if.c:179 msgid "This command may not follow ELSE in DO IF...END IF." msgstr "" -#: src/language/control/repeat.c:171 +#: src/language/control/repeat.c:170 #, c-format msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." msgstr "" -#: src/language/control/repeat.c:176 +#: src/language/control/repeat.c:175 #, c-format msgid "Dummy variable name \"%s\" is given twice." msgstr "" -#: src/language/control/repeat.c:222 +#: src/language/control/repeat.c:221 #, c-format msgid "" "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d " "were specified." msgstr "" -#: src/language/control/repeat.c:334 +#: src/language/control/repeat.c:333 msgid "DO REPEAT may not nest in compatibility mode." msgstr "" -#: src/language/control/repeat.c:434 +#: src/language/control/repeat.c:433 #, c-format msgid "%ld TO %ld is an invalid range." msgstr "" -#: src/language/control/repeat.c:469 +#: src/language/control/repeat.c:468 msgid "String expected." msgstr "" -#: src/language/control/repeat.c:488 +#: src/language/control/repeat.c:487 msgid "No matching DO REPEAT." msgstr "" -#: src/language/control/temporary.c:49 +#: src/language/control/temporary.c:48 msgid "" "This command may only appear once between procedures and procedure-like " "commands." msgstr "" -#: src/language/data-io/data-list.c:175 +#: src/language/data-io/data-list.c:174 msgid "The END subcommand may only be specified once." msgstr "" -#: src/language/data-io/data-list.c:210 +#: src/language/data-io/data-list.c:209 msgid "Only one of FIXED, FREE, or LIST may be specified." msgstr "" -#: src/language/data-io/data-list.c:350 src/language/data-io/data-list.c:494 +#: src/language/data-io/data-list.c:349 src/language/data-io/data-list.c:493 #, c-format msgid "%s is a duplicate variable name." msgstr "" -#: src/language/data-io/data-list.c:357 +#: src/language/data-io/data-list.c:356 #, c-format msgid "There is already a variable %s of a different type." msgstr "" -#: src/language/data-io/data-list.c:364 +#: src/language/data-io/data-list.c:363 #, c-format msgid "There is already a string variable %s of a different width." msgstr "" -#: src/language/data-io/data-list.c:385 +#: src/language/data-io/data-list.c:384 msgid "At least one variable must be specified." msgstr "" -#: src/language/data-io/data-list.c:392 +#: src/language/data-io/data-list.c:391 msgid "" "Variables are specified on records that should not exist according to " "RECORDS subcommand." msgstr "" -#: src/language/data-io/data-list.c:417 src/language/data-io/data-list.c:526 -#: src/language/data-io/print.c:397 src/language/dictionary/split-file.c:86 -#: src/language/dictionary/sys-file-info.c:161 -#: src/language/dictionary/sys-file-info.c:396 -#: src/language/stats/descriptives.c:891 +#: src/language/data-io/data-list.c:416 src/language/data-io/data-list.c:525 +#: src/language/data-io/print.c:396 src/language/dictionary/split-file.c:85 +#: src/language/dictionary/sys-file-info.c:160 +#: src/language/dictionary/sys-file-info.c:395 +#: src/language/stats/descriptives.c:890 msgid "Variable" msgstr "" -#: src/language/data-io/data-list.c:418 src/language/data-io/print.c:398 +#: src/language/data-io/data-list.c:417 src/language/data-io/print.c:397 msgid "Record" msgstr "" -#: src/language/data-io/data-list.c:419 src/language/data-io/print.c:399 -#: src/ui/gui/var-sheet.c:78 +#: src/language/data-io/data-list.c:418 src/language/data-io/print.c:398 +#: src/ui/gui/var-sheet.c:77 msgid "Columns" msgstr "Spalten" -#: src/language/data-io/data-list.c:420 src/language/data-io/data-list.c:527 -#: src/language/data-io/print.c:400 +#: src/language/data-io/data-list.c:419 src/language/data-io/data-list.c:526 +#: src/language/data-io/print.c:399 msgid "Format" msgstr "" -#: src/language/data-io/data-list.c:438 +#: src/language/data-io/data-list.c:437 #, c-format msgid "Reading %d record from %s." msgid_plural "Reading %d records from %s." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/data-list.c:541 +#: src/language/data-io/data-list.c:540 #, c-format msgid "Reading free-form data from %s." msgstr "" -#: src/language/data-io/data-list.c:587 +#: src/language/data-io/data-list.c:586 msgid "Quoted string extends beyond end of line." msgstr "" -#: src/language/data-io/data-list.c:672 +#: src/language/data-io/data-list.c:671 #, c-format msgid "Partial case of %d of %d records discarded." msgstr "" -#: src/language/data-io/data-list.c:710 +#: src/language/data-io/data-list.c:709 #, c-format msgid "Partial case discarded. The first variable missing was %s." msgstr "" -#: src/language/data-io/data-list.c:741 +#: src/language/data-io/data-list.c:740 #, c-format msgid "" "Missing value(s) for all variables from %s onward. These will be filled " "with the system-missing value or blanks, as appropriate." msgstr "" -#: src/language/data-io/data-reader.c:140 +#: src/language/data-io/data-reader.c:139 #, c-format msgid "Could not open \"%s\" for reading as a data file: %s." msgstr "" -#: src/language/data-io/data-reader.c:177 +#: src/language/data-io/data-reader.c:176 msgid "" "Unexpected end-of-file while reading data in BEGIN DATA. This probably " "indicates a missing or misformatted END DATA command. END DATA must appear " "by itself on a single line with exactly one space between words." msgstr "" -#: src/language/data-io/data-reader.c:209 -#: src/language/data-io/data-reader.c:222 +#: src/language/data-io/data-reader.c:208 +#: src/language/data-io/data-reader.c:221 #, c-format msgid "Error reading file %s: %s." msgstr "" -#: src/language/data-io/data-reader.c:225 +#: src/language/data-io/data-reader.c:224 #, c-format msgid "%s: Partial record at end of file." msgstr "" -#: src/language/data-io/data-reader.c:276 +#: src/language/data-io/data-reader.c:275 #, c-format msgid "Attempt to read beyond end-of-file on file %s." msgstr "" -#: src/language/data-io/data-reader.c:279 +#: src/language/data-io/data-reader.c:278 msgid "Attempt to read beyond END DATA." msgstr "" -#: src/language/data-io/data-reader.c:437 +#: src/language/data-io/data-reader.c:436 msgid "" "This command is not valid here since the current input program does not " "access the inline file." msgstr "" -#: src/language/data-io/data-writer.c:66 +#: src/language/data-io/data-writer.c:65 #, c-format msgid "An error occurred while opening \"%s\" for writing as a data file: %s." msgstr "" -#: src/language/data-io/data-writer.c:150 +#: src/language/data-io/data-writer.c:149 #, c-format msgid "I/O error occurred writing data file \"%s\"." msgstr "" -#: src/language/data-io/file-handle.q:68 +#: src/language/data-io/file-handle.q:67 #, c-format msgid "" "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining " "a file handle." msgstr "" -#: src/language/data-io/file-handle.q:100 +#: src/language/data-io/file-handle.q:99 #, c-format msgid "" "Fixed-length records were specified on /RECFORM, but record length was not " "specified on /LRECL. Assuming %d-character records." msgstr "" -#: src/language/data-io/file-handle.q:105 +#: src/language/data-io/file-handle.q:104 #, c-format msgid "" "Record length (%ld) must be at least one byte. Assuming %d-character " "records." msgstr "" -#: src/language/data-io/file-handle.q:151 +#: src/language/data-io/file-handle.q:150 msgid "file" msgstr "" -#: src/language/data-io/file-handle.q:153 +#: src/language/data-io/file-handle.q:152 msgid "inline file" msgstr "" -#: src/language/data-io/file-handle.q:155 +#: src/language/data-io/file-handle.q:154 msgid "scratch file" msgstr "" -#: src/language/data-io/file-handle.q:176 +#: src/language/data-io/file-handle.q:175 msgid "expecting a file name or handle name" msgstr "" -#: src/language/data-io/file-handle.q:203 +#: src/language/data-io/file-handle.q:202 #, c-format msgid "Handle for %s not allowed here." msgstr "" -#: src/language/data-io/get.c:117 +#: src/language/data-io/get.c:116 msgid "expecting COMM or TAPE" msgstr "" -#: src/language/data-io/get.c:361 src/language/data-io/get.c:375 -#: src/language/data-io/get.c:400 +#: src/language/data-io/get.c:360 src/language/data-io/get.c:374 +#: src/language/data-io/get.c:399 #, c-format msgid "expecting %s or %s" msgstr "" -#: src/language/data-io/get.c:609 src/language/data-io/print.c:178 +#: src/language/data-io/get.c:608 src/language/data-io/print.c:177 msgid "expecting a valid subcommand" msgstr "" -#: src/language/data-io/get.c:642 +#: src/language/data-io/get.c:641 #, c-format msgid "" "Cannot rename %s as %s because there already exists a variable named %s. To " @@ -1179,801 +1179,801 @@ msgid "" "as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." msgstr "" -#: src/language/data-io/get.c:668 +#: src/language/data-io/get.c:667 msgid "`=' expected after variable list." msgstr "" -#: src/language/data-io/get.c:675 +#: src/language/data-io/get.c:674 #, c-format msgid "" "Number of variables on left side of `=' (%d) does not match number of " "variables on right side (%d), in parenthesized group %d of RENAME subcommand." msgstr "" -#: src/language/data-io/get.c:688 +#: src/language/data-io/get.c:687 #, c-format msgid "Requested renaming duplicates variable name %s." msgstr "" -#: src/language/data-io/get.c:718 +#: src/language/data-io/get.c:717 msgid "Cannot DROP all variables from dictionary." msgstr "" -#: src/language/data-io/get.c:896 +#: src/language/data-io/get.c:895 msgid "The active file may not be specified more than once." msgstr "" -#: src/language/data-io/get.c:904 +#: src/language/data-io/get.c:903 msgid "Cannot specify the active file since no active file has been defined." msgstr "" -#: src/language/data-io/get.c:911 +#: src/language/data-io/get.c:910 msgid "" "MATCH FILES may not be used after TEMPORARY when the active file is an input " "source. Temporary transformations will be made permanent." msgstr "" -#: src/language/data-io/get.c:947 +#: src/language/data-io/get.c:946 msgid "Multiple IN subcommands for a single FILE or TABLE." msgstr "" -#: src/language/data-io/get.c:967 +#: src/language/data-io/get.c:966 msgid "BY may appear at most once." msgstr "" -#: src/language/data-io/get.c:988 +#: src/language/data-io/get.c:987 #, c-format msgid "File %s lacks BY variable %s." msgstr "" -#: src/language/data-io/get.c:1002 +#: src/language/data-io/get.c:1001 msgid "FIRST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1016 +#: src/language/data-io/get.c:1015 msgid "LAST may appear at most once." msgstr "" -#: src/language/data-io/get.c:1057 +#: src/language/data-io/get.c:1056 msgid "BY is required when TABLE is specified." msgstr "" -#: src/language/data-io/get.c:1062 +#: src/language/data-io/get.c:1061 msgid "BY is required when IN is specified." msgstr "" -#: src/language/data-io/get.c:1091 +#: src/language/data-io/get.c:1090 #, c-format msgid "IN variable name %s duplicates an existing variable name." msgstr "" -#: src/language/data-io/get.c:1547 +#: src/language/data-io/get.c:1546 #, c-format msgid "" "Variable %s in file %s (%s) has different type or width from the same " "variable in earlier file (%s)." msgstr "" -#: src/language/data-io/inpt-pgm.c:134 +#: src/language/data-io/inpt-pgm.c:133 msgid "Unexpected end-of-file within INPUT PROGRAM." msgstr "" -#: src/language/data-io/inpt-pgm.c:147 +#: src/language/data-io/inpt-pgm.c:146 msgid "Input program did not create any variables." msgstr "" -#: src/language/data-io/inpt-pgm.c:341 +#: src/language/data-io/inpt-pgm.c:340 msgid "COLUMN subcommand multiply specified." msgstr "" -#: src/language/data-io/inpt-pgm.c:389 +#: src/language/data-io/inpt-pgm.c:388 msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "" -#: src/language/data-io/list.q:155 src/language/stats/descriptives.c:365 +#: src/language/data-io/list.q:154 src/language/stats/descriptives.c:364 msgid "No variables specified." msgstr "" -#: src/language/data-io/list.q:163 +#: src/language/data-io/list.q:162 #, c-format msgid "" "The first case (%ld) specified precedes the last case (%ld) specified. The " "values will be swapped." msgstr "" -#: src/language/data-io/list.q:171 +#: src/language/data-io/list.q:170 #, c-format msgid "" "The first case (%ld) to list is less than 1. The value is being reset to 1." msgstr "" -#: src/language/data-io/list.q:177 +#: src/language/data-io/list.q:176 #, c-format msgid "" "The last case (%ld) to list is less than 1. The value is being reset to 1." msgstr "" -#: src/language/data-io/list.q:183 +#: src/language/data-io/list.q:182 #, c-format msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "" -#: src/language/data-io/list.q:209 +#: src/language/data-io/list.q:208 msgid "`/FORMAT WEIGHT' specified, but weighting is not on." msgstr "" -#: src/language/data-io/list.q:443 +#: src/language/data-io/list.q:442 msgid "Line" msgstr "" -#: src/language/data-io/matrix-data.c:219 +#: src/language/data-io/matrix-data.c:218 msgid "VARIABLES subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:234 +#: src/language/data-io/matrix-data.c:233 msgid "VARNAME_ cannot be explicitly specified on VARIABLES." msgstr "" -#: src/language/data-io/matrix-data.c:295 +#: src/language/data-io/matrix-data.c:294 msgid "in FORMAT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:306 +#: src/language/data-io/matrix-data.c:305 msgid "SPLIT subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:313 +#: src/language/data-io/matrix-data.c:312 msgid "in SPLIT subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:323 +#: src/language/data-io/matrix-data.c:322 msgid "Split variable may not be named ROWTYPE_ or VARNAME_." msgstr "" -#: src/language/data-io/matrix-data.c:357 +#: src/language/data-io/matrix-data.c:356 #, c-format msgid "Split variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:372 +#: src/language/data-io/matrix-data.c:371 msgid "FACTORS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:390 +#: src/language/data-io/matrix-data.c:389 #, c-format msgid "Factor variable %s is already another type." msgstr "" -#: src/language/data-io/matrix-data.c:405 +#: src/language/data-io/matrix-data.c:404 msgid "CELLS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:411 -#: src/language/data-io/matrix-data.c:430 +#: src/language/data-io/matrix-data.c:410 +#: src/language/data-io/matrix-data.c:429 msgid "expecting positive integer" msgstr "" -#: src/language/data-io/matrix-data.c:424 +#: src/language/data-io/matrix-data.c:423 msgid "N subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:445 +#: src/language/data-io/matrix-data.c:444 msgid "CONTENTS subcommand multiply specified." msgstr "" -#: src/language/data-io/matrix-data.c:465 +#: src/language/data-io/matrix-data.c:464 msgid "Nested parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:475 +#: src/language/data-io/matrix-data.c:474 msgid "Mismatched right parenthesis (`(')." msgstr "" -#: src/language/data-io/matrix-data.c:480 +#: src/language/data-io/matrix-data.c:479 msgid "Empty parentheses not allowed." msgstr "" -#: src/language/data-io/matrix-data.c:493 -#: src/language/data-io/matrix-data.c:501 +#: src/language/data-io/matrix-data.c:492 +#: src/language/data-io/matrix-data.c:500 msgid "in CONTENTS subcommand" msgstr "" -#: src/language/data-io/matrix-data.c:508 +#: src/language/data-io/matrix-data.c:507 #, c-format msgid "Content multiply specified for %s." msgstr "" -#: src/language/data-io/matrix-data.c:525 +#: src/language/data-io/matrix-data.c:524 msgid "Missing right parenthesis." msgstr "" -#: src/language/data-io/matrix-data.c:545 +#: src/language/data-io/matrix-data.c:544 msgid "Missing VARIABLES subcommand." msgstr "" -#: src/language/data-io/matrix-data.c:551 +#: src/language/data-io/matrix-data.c:550 msgid "" "CONTENTS subcommand not specified: assuming file contains only CORR matrix." msgstr "" -#: src/language/data-io/matrix-data.c:561 +#: src/language/data-io/matrix-data.c:560 msgid "" "Missing CELLS subcommand. CELLS is required when ROWTYPE_ is not given in " "the data and factors are present." msgstr "" -#: src/language/data-io/matrix-data.c:569 +#: src/language/data-io/matrix-data.c:568 msgid "Split file values must be present in the data when ROWTYPE_ is present." msgstr "" -#: src/language/data-io/matrix-data.c:622 +#: src/language/data-io/matrix-data.c:621 msgid "No continuous variables specified." msgstr "" -#: src/language/data-io/matrix-data.c:841 +#: src/language/data-io/matrix-data.c:840 msgid "Scope of string exceeds line." msgstr "" -#: src/language/data-io/matrix-data.c:894 +#: src/language/data-io/matrix-data.c:893 #, c-format msgid "End of line expected %s while reading %s." msgstr "" -#: src/language/data-io/matrix-data.c:1085 +#: src/language/data-io/matrix-data.c:1084 #, c-format msgid "expecting value for %s %s" msgstr "" -#: src/language/data-io/matrix-data.c:1250 +#: src/language/data-io/matrix-data.c:1249 #, c-format msgid "Syntax error expecting SPLIT FILE value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1259 +#: src/language/data-io/matrix-data.c:1258 #, c-format msgid "Expecting value %g for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1300 -#: src/language/data-io/matrix-data.c:1782 +#: src/language/data-io/matrix-data.c:1299 +#: src/language/data-io/matrix-data.c:1781 #, c-format msgid "Syntax error expecting factor value %s." msgstr "" -#: src/language/data-io/matrix-data.c:1309 +#: src/language/data-io/matrix-data.c:1308 #, c-format msgid "Syntax error expecting value %g for %s %s." msgstr "" -#: src/language/data-io/matrix-data.c:1558 +#: src/language/data-io/matrix-data.c:1557 #, c-format msgid "Syntax error %s expecting SPLIT FILE value." msgstr "" -#: src/language/data-io/matrix-data.c:1686 +#: src/language/data-io/matrix-data.c:1685 #, c-format msgid "" "Expected %d lines of data for %s content; actually saw %d lines. No data " "will be output for this content." msgstr "" -#: src/language/data-io/matrix-data.c:1724 +#: src/language/data-io/matrix-data.c:1723 #, c-format msgid "Multiply specified ROWTYPE_ %s." msgstr "" -#: src/language/data-io/matrix-data.c:1729 +#: src/language/data-io/matrix-data.c:1728 #, c-format msgid "Syntax error %s expecting ROWTYPE_ string." msgstr "" -#: src/language/data-io/matrix-data.c:1749 +#: src/language/data-io/matrix-data.c:1748 #, c-format msgid "Syntax error %s." msgstr "" -#: src/language/data-io/matrix-data.c:1900 +#: src/language/data-io/matrix-data.c:1899 #, c-format msgid "Duplicate specification for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1912 +#: src/language/data-io/matrix-data.c:1911 #, c-format msgid "Too many rows of matrix data for %s." msgstr "" -#: src/language/data-io/matrix-data.c:1956 +#: src/language/data-io/matrix-data.c:1955 #, c-format msgid "Syntax error expecting value for %s %s." msgstr "" -#: src/language/data-io/placement-parser.c:88 +#: src/language/data-io/placement-parser.c:87 #, c-format msgid "" "Number of variables specified (%d) differs from number of variable formats (%" "d)." msgstr "" -#: src/language/data-io/placement-parser.c:98 +#: src/language/data-io/placement-parser.c:97 msgid "" "SPSS-like or Fortran-like format specification expected after variable names." msgstr "" -#: src/language/data-io/placement-parser.c:120 +#: src/language/data-io/placement-parser.c:119 #, c-format msgid "The %d columns %d-%d can't be evenly divided into %d fields." msgstr "" -#: src/language/data-io/placement-parser.c:227 -#: src/language/lexer/format-parser.c:111 -#: src/language/lexer/format-parser.c:130 +#: src/language/data-io/placement-parser.c:226 +#: src/language/lexer/format-parser.c:110 +#: src/language/lexer/format-parser.c:129 #, c-format msgid "Unknown format type \"%s\"." msgstr "" -#: src/language/data-io/placement-parser.c:311 -#: src/language/data-io/placement-parser.c:325 +#: src/language/data-io/placement-parser.c:310 +#: src/language/data-io/placement-parser.c:324 msgid "Column positions for fields must be positive." msgstr "" -#: src/language/data-io/placement-parser.c:330 +#: src/language/data-io/placement-parser.c:329 msgid "The ending column for a field must be greater than the starting column." msgstr "" -#: src/language/data-io/placement-parser.c:365 +#: src/language/data-io/placement-parser.c:364 #, c-format msgid "" "The record number specified, %ld, is at or before the previous record, %d. " "Data fields must be listed in order of increasing record number." msgstr "" -#: src/language/data-io/print.c:261 +#: src/language/data-io/print.c:260 #, c-format msgid "Output calls for %d records but %d specified on RECORDS subcommand." msgstr "" -#: src/language/data-io/print.c:430 +#: src/language/data-io/print.c:429 #, c-format msgid "Writing %d record to %s." msgid_plural "Writing %d records to %s." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/print.c:434 +#: src/language/data-io/print.c:433 #, c-format msgid "Writing %d record." msgid_plural "Writing %d records." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/print-space.c:117 +#: src/language/data-io/print-space.c:116 msgid "The expression on PRINT SPACE evaluated to the system-missing value." msgstr "" -#: src/language/data-io/print-space.c:120 +#: src/language/data-io/print-space.c:119 #, c-format msgid "The expression on PRINT SPACE evaluated to %g." msgstr "" -#: src/language/dictionary/apply-dictionary.c:75 +#: src/language/dictionary/apply-dictionary.c:74 #, c-format msgid "Variable %s is %s in target file, but %s in source file." msgstr "" -#: src/language/dictionary/apply-dictionary.c:99 +#: src/language/dictionary/apply-dictionary.c:98 #, c-format msgid "Cannot add value labels from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:113 +#: src/language/dictionary/apply-dictionary.c:112 #, c-format msgid "" "Cannot apply missing values from source file to long string variable %s." msgstr "" -#: src/language/dictionary/apply-dictionary.c:126 +#: src/language/dictionary/apply-dictionary.c:125 msgid "No matching variables found between the source and target files." msgstr "" -#: src/language/dictionary/formats.c:92 +#: src/language/dictionary/formats.c:91 msgid "`(' expected after variable list." msgstr "" -#: src/language/dictionary/formats.c:102 src/language/dictionary/numeric.c:72 +#: src/language/dictionary/formats.c:101 src/language/dictionary/numeric.c:71 msgid "`)' expected after output format." msgstr "" -#: src/language/dictionary/missing-values.c:59 -#: src/language/stats/aggregate.c:468 +#: src/language/dictionary/missing-values.c:58 +#: src/language/stats/aggregate.c:467 msgid "expecting `('" msgstr "" -#: src/language/dictionary/missing-values.c:75 +#: src/language/dictionary/missing-values.c:74 #, c-format msgid "" "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " "a single list." msgstr "" -#: src/language/dictionary/missing-values.c:120 +#: src/language/dictionary/missing-values.c:119 #, c-format msgid "Truncating missing value to short string length (%d characters)." msgstr "" -#: src/language/dictionary/missing-values.c:142 +#: src/language/dictionary/missing-values.c:141 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." msgstr "" -#: src/language/dictionary/modify-variables.c:96 +#: src/language/dictionary/modify-variables.c:95 msgid "" "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " "be made permanent." msgstr "" -#: src/language/dictionary/modify-variables.c:118 +#: src/language/dictionary/modify-variables.c:117 msgid "REORDER subcommand may be given at most once." msgstr "" -#: src/language/dictionary/modify-variables.c:141 +#: src/language/dictionary/modify-variables.c:140 msgid "Cannot specify ALL after specifying a set of variables." msgstr "" -#: src/language/dictionary/modify-variables.c:151 +#: src/language/dictionary/modify-variables.c:150 msgid "`(' expected on REORDER subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:163 +#: src/language/dictionary/modify-variables.c:162 msgid "`)' expected following variable names on REORDER subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:181 +#: src/language/dictionary/modify-variables.c:180 msgid "RENAME subcommand may be given at most once." msgstr "" -#: src/language/dictionary/modify-variables.c:194 +#: src/language/dictionary/modify-variables.c:193 msgid "`(' expected on RENAME subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:203 +#: src/language/dictionary/modify-variables.c:202 msgid "" "`=' expected between lists of new and old variable names on RENAME " "subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:212 +#: src/language/dictionary/modify-variables.c:211 #, c-format msgid "" "Differing number of variables in old name list (%d) and in new name list (%" "d)." msgstr "" -#: src/language/dictionary/modify-variables.c:223 +#: src/language/dictionary/modify-variables.c:222 msgid "`)' expected after variable lists on RENAME subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:237 +#: src/language/dictionary/modify-variables.c:236 msgid "" "KEEP subcommand may be given at most once. It may notbe given in " "conjunction with the DROP subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:280 +#: src/language/dictionary/modify-variables.c:279 msgid "" "DROP subcommand may be given at most once. It may not be given in " "conjunction with the KEEP subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:306 +#: src/language/dictionary/modify-variables.c:305 #, c-format msgid "Unrecognized subcommand name `%s'." msgstr "" -#: src/language/dictionary/modify-variables.c:308 +#: src/language/dictionary/modify-variables.c:307 msgid "Subcommand name expected." msgstr "" -#: src/language/dictionary/modify-variables.c:316 +#: src/language/dictionary/modify-variables.c:315 msgid "`/' or `.' expected." msgstr "" -#: src/language/dictionary/numeric.c:65 +#: src/language/dictionary/numeric.c:64 #, c-format msgid "Format type %s may not be used with a numeric variable." msgstr "" -#: src/language/dictionary/numeric.c:84 src/language/dictionary/numeric.c:153 -#: src/language/dictionary/vector.c:165 +#: src/language/dictionary/numeric.c:83 src/language/dictionary/numeric.c:152 +#: src/language/dictionary/vector.c:164 #, c-format msgid "There is already a variable named %s." msgstr "" -#: src/language/dictionary/numeric.c:138 +#: src/language/dictionary/numeric.c:137 #, c-format msgid "Format type %s may not be used with a string variable." msgstr "" -#: src/language/dictionary/rename-variables.c:51 +#: src/language/dictionary/rename-variables.c:50 msgid "" "RENAME VARS may not be used after TEMPORARY. Temporary transformations will " "be made permanent." msgstr "" -#: src/language/dictionary/rename-variables.c:61 +#: src/language/dictionary/rename-variables.c:60 msgid "`(' expected." msgstr "" -#: src/language/dictionary/rename-variables.c:69 +#: src/language/dictionary/rename-variables.c:68 msgid "`=' expected between lists of new and old variable names." msgstr "" -#: src/language/dictionary/rename-variables.c:78 +#: src/language/dictionary/rename-variables.c:77 #, c-format msgid "" "Differing number of variables in old name list (%u) and in new name list (%" "u)." msgstr "" -#: src/language/dictionary/rename-variables.c:90 +#: src/language/dictionary/rename-variables.c:89 msgid "`)' expected after variable names." msgstr "" -#: src/language/dictionary/rename-variables.c:100 +#: src/language/dictionary/rename-variables.c:99 #, c-format msgid "Renaming would duplicate variable name %s." msgstr "" -#: src/language/dictionary/split-file.c:87 -#: src/language/dictionary/sys-file-info.c:550 -#: src/language/stats/crosstabs.q:1115 src/language/stats/crosstabs.q:1142 -#: src/language/stats/crosstabs.q:1162 src/language/stats/crosstabs.q:1184 -#: src/language/stats/examine.q:1193 src/language/stats/frequencies.q:1178 -#: src/language/stats/frequencies.q:1301 +#: src/language/dictionary/split-file.c:86 +#: src/language/dictionary/sys-file-info.c:549 +#: src/language/stats/crosstabs.q:1114 src/language/stats/crosstabs.q:1141 +#: src/language/stats/crosstabs.q:1161 src/language/stats/crosstabs.q:1183 +#: src/language/stats/examine.q:1193 src/language/stats/frequencies.q:1177 +#: src/language/stats/frequencies.q:1300 msgid "Value" msgstr "" -#: src/language/dictionary/split-file.c:88 -#: src/language/dictionary/sys-file-info.c:403 -#: src/language/dictionary/sys-file-info.c:551 src/ui/gui/var-sheet.c:75 +#: src/language/dictionary/split-file.c:87 +#: src/language/dictionary/sys-file-info.c:402 +#: src/language/dictionary/sys-file-info.c:550 src/ui/gui/var-sheet.c:74 msgid "Label" msgstr "Kennsatz" -#: src/language/dictionary/sys-file-info.c:110 +#: src/language/dictionary/sys-file-info.c:109 msgid "File:" msgstr "Datei:" -#: src/language/dictionary/sys-file-info.c:112 +#: src/language/dictionary/sys-file-info.c:111 msgid "Label:" msgstr "Kennsatz:" -#: src/language/dictionary/sys-file-info.c:116 +#: src/language/dictionary/sys-file-info.c:115 msgid "No label." msgstr "Kein Kennsatz." -#: src/language/dictionary/sys-file-info.c:119 +#: src/language/dictionary/sys-file-info.c:118 msgid "Created:" msgstr "Gemacht:" -#: src/language/dictionary/sys-file-info.c:122 +#: src/language/dictionary/sys-file-info.c:121 msgid "Integer Format:" msgstr "" -#: src/language/dictionary/sys-file-info.c:124 +#: src/language/dictionary/sys-file-info.c:123 msgid "Big Endian." msgstr "" -#: src/language/dictionary/sys-file-info.c:125 +#: src/language/dictionary/sys-file-info.c:124 msgid "Little Endian." msgstr "" -#: src/language/dictionary/sys-file-info.c:126 -#: src/language/dictionary/sys-file-info.c:134 +#: src/language/dictionary/sys-file-info.c:125 +#: src/language/dictionary/sys-file-info.c:133 msgid "Unknown." msgstr "" -#: src/language/dictionary/sys-file-info.c:127 +#: src/language/dictionary/sys-file-info.c:126 msgid "Real Format:" msgstr "" -#: src/language/dictionary/sys-file-info.c:129 +#: src/language/dictionary/sys-file-info.c:128 msgid "IEEE 754 LE." msgstr "" -#: src/language/dictionary/sys-file-info.c:130 +#: src/language/dictionary/sys-file-info.c:129 msgid "IEEE 754 BE." msgstr "" -#: src/language/dictionary/sys-file-info.c:131 +#: src/language/dictionary/sys-file-info.c:130 msgid "VAX D." msgstr "" -#: src/language/dictionary/sys-file-info.c:132 +#: src/language/dictionary/sys-file-info.c:131 msgid "VAX G." msgstr "" -#: src/language/dictionary/sys-file-info.c:133 +#: src/language/dictionary/sys-file-info.c:132 msgid "IBM 390 Hex Long." msgstr "" -#: src/language/dictionary/sys-file-info.c:135 +#: src/language/dictionary/sys-file-info.c:134 msgid "Variables:" msgstr "" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 msgid "Cases:" msgstr "" -#: src/language/dictionary/sys-file-info.c:140 +#: src/language/dictionary/sys-file-info.c:139 msgid "Unknown" msgstr "" -#: src/language/dictionary/sys-file-info.c:141 +#: src/language/dictionary/sys-file-info.c:140 msgid "Type:" msgstr "" -#: src/language/dictionary/sys-file-info.c:142 +#: src/language/dictionary/sys-file-info.c:141 msgid "System File." msgstr "" -#: src/language/dictionary/sys-file-info.c:143 +#: src/language/dictionary/sys-file-info.c:142 msgid "Weight:" msgstr "" -#: src/language/dictionary/sys-file-info.c:148 +#: src/language/dictionary/sys-file-info.c:147 msgid "Not weighted." msgstr "" -#: src/language/dictionary/sys-file-info.c:150 +#: src/language/dictionary/sys-file-info.c:149 msgid "Mode:" msgstr "" -#: src/language/dictionary/sys-file-info.c:152 +#: src/language/dictionary/sys-file-info.c:151 #, c-format msgid "Compression %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:152 +#: src/language/dictionary/sys-file-info.c:151 msgid "on" msgstr "" -#: src/language/dictionary/sys-file-info.c:152 +#: src/language/dictionary/sys-file-info.c:151 msgid "off" msgstr "" -#: src/language/dictionary/sys-file-info.c:162 -#: src/language/dictionary/sys-file-info.c:401 +#: src/language/dictionary/sys-file-info.c:161 +#: src/language/dictionary/sys-file-info.c:400 msgid "Description" msgstr "" -#: src/language/dictionary/sys-file-info.c:163 -#: src/language/dictionary/sys-file-info.c:399 +#: src/language/dictionary/sys-file-info.c:162 +#: src/language/dictionary/sys-file-info.c:398 msgid "Position" msgstr "" -#: src/language/dictionary/sys-file-info.c:221 +#: src/language/dictionary/sys-file-info.c:220 msgid "The active file does not have a file label." msgstr "" -#: src/language/dictionary/sys-file-info.c:224 +#: src/language/dictionary/sys-file-info.c:223 msgid "File label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:287 +#: src/language/dictionary/sys-file-info.c:286 msgid "No variables to display." msgstr "" -#: src/language/dictionary/sys-file-info.c:306 +#: src/language/dictionary/sys-file-info.c:305 msgid "Macros not supported." msgstr "" -#: src/language/dictionary/sys-file-info.c:316 +#: src/language/dictionary/sys-file-info.c:315 msgid "The active file dictionary does not contain any documents." msgstr "" -#: src/language/dictionary/sys-file-info.c:325 +#: src/language/dictionary/sys-file-info.c:324 msgid "Documents in the active file:" msgstr "" -#: src/language/dictionary/sys-file-info.c:481 +#: src/language/dictionary/sys-file-info.c:480 #, c-format msgid "Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:489 +#: src/language/dictionary/sys-file-info.c:488 #, c-format msgid "Print Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:492 +#: src/language/dictionary/sys-file-info.c:491 #, c-format msgid "Write Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:504 +#: src/language/dictionary/sys-file-info.c:503 msgid "Missing Values: " msgstr "" -#: src/language/dictionary/sys-file-info.c:596 +#: src/language/dictionary/sys-file-info.c:595 msgid "No vectors defined." msgstr "" -#: src/language/dictionary/sys-file-info.c:611 +#: src/language/dictionary/sys-file-info.c:610 msgid "Vector" msgstr "" -#: src/language/dictionary/value-labels.c:123 +#: src/language/dictionary/value-labels.c:122 #, c-format msgid "" "It is not possible to assign value labels to long string variables such as %" "s." msgstr "" -#: src/language/dictionary/value-labels.c:159 src/language/lexer/lexer.c:601 +#: src/language/dictionary/value-labels.c:158 src/language/lexer/lexer.c:600 msgid "expecting string" msgstr "" -#: src/language/dictionary/value-labels.c:168 src/language/lexer/lexer.c:615 +#: src/language/dictionary/value-labels.c:167 src/language/lexer/lexer.c:614 msgid "expecting integer" msgstr "" -#: src/language/dictionary/value-labels.c:172 +#: src/language/dictionary/value-labels.c:171 #, c-format msgid "Value label `%g' is not integer." msgstr "" -#: src/language/dictionary/value-labels.c:186 +#: src/language/dictionary/value-labels.c:185 msgid "Truncating value label to 60 characters." msgstr "" -#: src/language/dictionary/variable-label.c:53 +#: src/language/dictionary/variable-label.c:52 msgid "String expected for variable label." msgstr "" -#: src/language/dictionary/variable-label.c:61 +#: src/language/dictionary/variable-label.c:60 msgid "Truncating variable label to 255 characters." msgstr "" -#: src/language/dictionary/vector.c:76 +#: src/language/dictionary/vector.c:75 #, c-format msgid "Vector name %s is given twice." msgstr "" -#: src/language/dictionary/vector.c:82 +#: src/language/dictionary/vector.c:81 #, c-format msgid "There is already a vector with name %s." msgstr "" -#: src/language/dictionary/vector.c:103 +#: src/language/dictionary/vector.c:102 msgid "" "A slash must be used to separate each vector specification when using the " "long form. Commands such as VECTOR A,B=Q1 TO Q20 are not supported." msgstr "" -#: src/language/dictionary/vector.c:137 +#: src/language/dictionary/vector.c:136 msgid "Vectors must have at least one element." msgstr "" -#: src/language/dictionary/vector.c:151 +#: src/language/dictionary/vector.c:150 #, c-format msgid "%s%d is too long for a variable name." msgstr "" -#: src/language/dictionary/vector.c:190 +#: src/language/dictionary/vector.c:189 msgid "" "The syntax for this command does not match the expected syntax for either " "the long form or the short form of VECTOR." msgstr "" -#: src/language/dictionary/weight.c:52 +#: src/language/dictionary/weight.c:51 msgid "The weighting variable must be numeric." msgstr "" -#: src/language/dictionary/weight.c:57 +#: src/language/dictionary/weight.c:56 msgid "The weighting variable may not be scratch." msgstr "" -#: src/language/expressions/evaluate.c:156 +#: src/language/expressions/evaluate.c:155 msgid "expecting number or string" msgstr "" @@ -2025,24 +2025,24 @@ msgid "" "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." msgstr "" -#: src/language/expressions/parse.c:261 +#: src/language/expressions/parse.c:260 #, c-format msgid "" "Type mismatch: expression has %s type, but a numeric value is required here." msgstr "" -#: src/language/expressions/parse.c:273 +#: src/language/expressions/parse.c:272 #, c-format msgid "" "Type mismatch: expression has %s type, but a string value is required here." msgstr "" -#: src/language/expressions/parse.c:429 +#: src/language/expressions/parse.c:428 #, c-format msgid "Type mismatch while applying %s operator: cannot convert %s to %s." msgstr "" -#: src/language/expressions/parse.c:645 +#: src/language/expressions/parse.c:644 msgid "" "Chaining relational operators (e.g. \"a < b < c\") will not produce the " "mathematically expected result. Use the AND logical operator to fix the " @@ -2050,272 +2050,272 @@ msgid "" "parentheses will disable this warning (e.g. \"(a < b) < c\".)" msgstr "" -#: src/language/expressions/parse.c:746 +#: src/language/expressions/parse.c:745 msgid "" "The exponentiation operator (\"**\") is left-associative, even though right-" "associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)" "**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." msgstr "" -#: src/language/expressions/parse.c:811 +#: src/language/expressions/parse.c:810 #, c-format msgid "Unknown system variable %s." msgstr "" -#: src/language/expressions/parse.c:859 +#: src/language/expressions/parse.c:858 #, c-format msgid "Unknown identifier %s." msgstr "" -#: src/language/expressions/parse.c:887 src/language/stats/aggregate.c:526 +#: src/language/expressions/parse.c:886 src/language/stats/aggregate.c:525 msgid "expecting `)'" msgstr "" -#: src/language/expressions/parse.c:894 +#: src/language/expressions/parse.c:893 msgid "in expression" msgstr "" -#: src/language/expressions/parse.c:1075 +#: src/language/expressions/parse.c:1074 #, c-format msgid "%s must have at least %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1084 +#: src/language/expressions/parse.c:1083 #, c-format msgid "%s must have even number of arguments in list." msgstr "" -#: src/language/expressions/parse.c:1087 +#: src/language/expressions/parse.c:1086 #, c-format msgid "%s must have multiple of %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1097 +#: src/language/expressions/parse.c:1096 #, c-format msgid "%s function does not accept a minimum valid argument count." msgstr "" -#: src/language/expressions/parse.c:1106 +#: src/language/expressions/parse.c:1105 #, c-format msgid "%s requires at least %d valid arguments in list." msgstr "" -#: src/language/expressions/parse.c:1112 +#: src/language/expressions/parse.c:1111 #, c-format msgid "" "With %s, using minimum valid argument count of %d does not make sense when " "passing only %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1166 +#: src/language/expressions/parse.c:1165 #, c-format msgid "Type mismatch invoking %s as " msgstr "" -#: src/language/expressions/parse.c:1171 +#: src/language/expressions/parse.c:1170 msgid "Function invocation " msgstr "" -#: src/language/expressions/parse.c:1173 +#: src/language/expressions/parse.c:1172 msgid " does not match any known function. Candidates are:" msgstr "" -#: src/language/expressions/parse.c:1203 +#: src/language/expressions/parse.c:1202 #, c-format msgid "No function or vector named %s." msgstr "" -#: src/language/expressions/parse.c:1245 +#: src/language/expressions/parse.c:1244 #, c-format msgid "expecting `,' or `)' invoking %s function" msgstr "" -#: src/language/expressions/parse.c:1265 +#: src/language/expressions/parse.c:1264 #, c-format msgid "%s is a PSPP extension." msgstr "" -#: src/language/expressions/parse.c:1268 src/ui/terminal/command-line.c:133 -#: src/ui/terminal/command-line.c:152 src/ui/terminal/command-line.c:164 +#: src/language/expressions/parse.c:1267 src/ui/terminal/command-line.c:132 +#: src/ui/terminal/command-line.c:151 src/ui/terminal/command-line.c:163 #, c-format msgid "%s is not yet implemented." msgstr "" -#: src/language/expressions/parse.c:1274 +#: src/language/expressions/parse.c:1273 #, c-format msgid "%s may not appear after TEMPORARY." msgstr "" -#: src/language/lexer/format-parser.c:92 +#: src/language/lexer/format-parser.c:91 msgid "expecting valid format specifier" msgstr "" -#: src/language/lexer/format-parser.c:125 +#: src/language/lexer/format-parser.c:124 msgid "expecting format type" msgstr "" -#: src/language/lexer/lexer.c:272 +#: src/language/lexer/lexer.c:271 #, c-format msgid "%s does not form a valid number." msgstr "" -#: src/language/lexer/lexer.c:376 +#: src/language/lexer/lexer.c:375 #, c-format msgid "Bad character in input: `%c'." msgstr "" -#: src/language/lexer/lexer.c:378 +#: src/language/lexer/lexer.c:377 #, c-format msgid "Bad character in input: `\\%o'." msgstr "" -#: src/language/lexer/lexer.c:414 +#: src/language/lexer/lexer.c:413 #, c-format msgid "Subcommand %s may only be specified once." msgstr "" -#: src/language/lexer/lexer.c:422 +#: src/language/lexer/lexer.c:421 #, c-format msgid "missing required subcommand %s" msgstr "" -#: src/language/lexer/lexer.c:451 +#: src/language/lexer/lexer.c:450 #, c-format msgid "Syntax error %s at %s." msgstr "" -#: src/language/lexer/lexer.c:454 +#: src/language/lexer/lexer.c:453 #, c-format msgid "Syntax error at %s." msgstr "" -#: src/language/lexer/lexer.c:570 src/language/lexer/lexer.c:587 +#: src/language/lexer/lexer.c:569 src/language/lexer/lexer.c:586 #, c-format msgid "expecting `%s'" msgstr "" -#: src/language/lexer/lexer.c:628 +#: src/language/lexer/lexer.c:627 msgid "expecting number" msgstr "" -#: src/language/lexer/lexer.c:640 +#: src/language/lexer/lexer.c:639 msgid "expecting identifier" msgstr "" -#: src/language/lexer/lexer.c:1029 +#: src/language/lexer/lexer.c:1028 msgid "binary" msgstr "" -#: src/language/lexer/lexer.c:1034 +#: src/language/lexer/lexer.c:1033 msgid "octal" msgstr "" -#: src/language/lexer/lexer.c:1039 +#: src/language/lexer/lexer.c:1038 msgid "hex" msgstr "" -#: src/language/lexer/lexer.c:1049 +#: src/language/lexer/lexer.c:1048 #, c-format msgid "String of %s digits has %d characters, which is not a multiple of %d." msgstr "" -#: src/language/lexer/lexer.c:1078 +#: src/language/lexer/lexer.c:1077 #, c-format msgid "`%c' is not a valid %s digit." msgstr "" -#: src/language/lexer/lexer.c:1112 +#: src/language/lexer/lexer.c:1111 msgid "Unterminated string constant." msgstr "" -#: src/language/lexer/lexer.c:1166 +#: src/language/lexer/lexer.c:1165 msgid "Unexpected end of file in string concatenation." msgstr "" -#: src/language/lexer/lexer.c:1174 +#: src/language/lexer/lexer.c:1173 msgid "String expected following `+'." msgstr "" -#: src/language/lexer/lexer.c:1187 +#: src/language/lexer/lexer.c:1186 #, c-format msgid "String exceeds 255 characters in length (%d characters)." msgstr "" -#: src/language/lexer/range-parser.c:63 +#: src/language/lexer/range-parser.c:62 #, c-format msgid "" "Low end of range (%g) is below high end (%g). The range will be treated as " "reversed." msgstr "" -#: src/language/lexer/range-parser.c:71 +#: src/language/lexer/range-parser.c:70 #, c-format msgid "Ends of range are equal (%g)." msgstr "" -#: src/language/lexer/range-parser.c:79 +#: src/language/lexer/range-parser.c:78 msgid "LO or LOWEST must be part of a range." msgstr "" -#: src/language/lexer/range-parser.c:110 +#: src/language/lexer/range-parser.c:109 msgid "System-missing value is not valid here." msgstr "" -#: src/language/lexer/range-parser.c:118 +#: src/language/lexer/range-parser.c:117 msgid "expecting number or data string" msgstr "" -#: src/language/lexer/variable-parser.c:55 +#: src/language/lexer/variable-parser.c:54 msgid "expecting variable name" msgstr "" -#: src/language/lexer/variable-parser.c:65 +#: src/language/lexer/variable-parser.c:64 #, c-format msgid "%s is not a variable name." msgstr "" -#: src/language/lexer/variable-parser.c:170 +#: src/language/lexer/variable-parser.c:169 #, c-format msgid "" "%s is not a numeric variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:173 +#: src/language/lexer/variable-parser.c:172 #, c-format msgid "" "%s is not a string variable. It will not be included in the variable list." msgstr "" -#: src/language/lexer/variable-parser.c:177 +#: src/language/lexer/variable-parser.c:176 #, c-format msgid "Scratch variables (such as %s) are not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:181 +#: src/language/lexer/variable-parser.c:180 #, c-format msgid "" "%s and %s are not the same type. All variables in this variable list must " "be of the same type. %s will be omitted from the list." msgstr "" -#: src/language/lexer/variable-parser.c:187 +#: src/language/lexer/variable-parser.c:186 #, c-format msgid "" "%s and %s are string variables with different widths. All variables in this " "variable list must have the same width. %s will be omttied from the list." msgstr "" -#: src/language/lexer/variable-parser.c:192 +#: src/language/lexer/variable-parser.c:191 #, c-format msgid "Variable %s appears twice in variable list." msgstr "" -#: src/language/lexer/variable-parser.c:305 +#: src/language/lexer/variable-parser.c:304 #, c-format msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary." msgstr "" -#: src/language/lexer/variable-parser.c:313 +#: src/language/lexer/variable-parser.c:312 #, c-format msgid "" "When using the TO keyword to specify several variables, both variables must " @@ -2323,492 +2323,492 @@ msgid "" "system variables. %s is a %s variable, whereas %s is %s." msgstr "" -#: src/language/lexer/variable-parser.c:387 +#: src/language/lexer/variable-parser.c:386 msgid "incorrect use of TO convention" msgstr "" -#: src/language/lexer/variable-parser.c:430 +#: src/language/lexer/variable-parser.c:429 msgid "Scratch variables not allowed here." msgstr "" -#: src/language/lexer/variable-parser.c:452 +#: src/language/lexer/variable-parser.c:451 msgid "Prefixes don't match in use of TO convention." msgstr "" -#: src/language/lexer/variable-parser.c:457 +#: src/language/lexer/variable-parser.c:456 msgid "Bad bounds in use of TO convention." msgstr "" -#: src/language/stats/aggregate.c:219 +#: src/language/stats/aggregate.c:218 msgid "while expecting COLUMNWISE" msgstr "" -#: src/language/stats/aggregate.c:248 +#: src/language/stats/aggregate.c:247 msgid "expecting BREAK" msgstr "" -#: src/language/stats/aggregate.c:253 +#: src/language/stats/aggregate.c:252 msgid "" "When PRESORTED is specified, specifying sorting directions with (A) or (D) " "has no effect. Output data will be sorted the same way as the input data." msgstr "" -#: src/language/stats/aggregate.c:433 +#: src/language/stats/aggregate.c:432 msgid "expecting aggregation function" msgstr "" -#: src/language/stats/aggregate.c:451 +#: src/language/stats/aggregate.c:450 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/language/stats/aggregate.c:507 +#: src/language/stats/aggregate.c:506 #, c-format msgid "Missing argument %d to %s." msgstr "" -#: src/language/stats/aggregate.c:516 +#: src/language/stats/aggregate.c:515 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/language/stats/aggregate.c:538 +#: src/language/stats/aggregate.c:537 #, c-format msgid "" "Number of source variables (%u) does not match number of target variables (%" "u)." msgstr "" -#: src/language/stats/aggregate.c:554 +#: src/language/stats/aggregate.c:553 #, c-format msgid "" "The value arguments passed to the %s function are out-of-order. They will " "be treated as if they had been specified in the correct order." msgstr "" -#: src/language/stats/aggregate.c:624 +#: src/language/stats/aggregate.c:623 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " "contains the aggregate variables and the break variables." msgstr "" -#: src/language/stats/autorecode.c:136 +#: src/language/stats/autorecode.c:135 #, c-format msgid "Source variable count (%u) does not match target variable count (%u)." msgstr "" -#: src/language/stats/autorecode.c:164 +#: src/language/stats/autorecode.c:163 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/language/stats/autorecode.c:171 +#: src/language/stats/autorecode.c:170 #, c-format msgid "Duplicate variable name %s among target variables." msgstr "" -#: src/language/stats/crosstabs.q:272 +#: src/language/stats/crosstabs.q:271 msgid "" "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." msgstr "" -#: src/language/stats/crosstabs.q:282 +#: src/language/stats/crosstabs.q:281 msgid "Write mode ALL not allowed in general mode. Assuming WRITE=CELLS." msgstr "" -#: src/language/stats/crosstabs.q:338 +#: src/language/stats/crosstabs.q:337 msgid "Too many crosstabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:348 +#: src/language/stats/crosstabs.q:347 msgid "expecting BY" msgstr "" -#: src/language/stats/crosstabs.q:415 +#: src/language/stats/crosstabs.q:414 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:453 +#: src/language/stats/crosstabs.q:452 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:817 +#: src/language/stats/crosstabs.q:816 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:977 +#: src/language/stats/crosstabs.q:818 src/language/stats/examine.q:977 msgid "Cases" msgstr "" -#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:911 -#: src/language/stats/frequencies.q:1176 src/language/stats/frequencies.q:1551 +#: src/language/stats/crosstabs.q:819 src/language/stats/examine.q:911 +#: src/language/stats/frequencies.q:1175 src/language/stats/frequencies.q:1550 msgid "Valid" msgstr "" -#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:912 -#: src/language/stats/frequencies.q:1245 src/language/stats/frequencies.q:1552 -#: src/ui/gui/var-sheet.c:77 +#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:912 +#: src/language/stats/frequencies.q:1244 src/language/stats/frequencies.q:1551 +#: src/ui/gui/var-sheet.c:76 msgid "Missing" msgstr "Löse" -#: src/language/stats/crosstabs.q:822 src/language/stats/crosstabs.q:1022 -#: src/language/stats/crosstabs.q:1745 src/language/stats/examine.q:913 -#: src/language/stats/frequencies.q:1254 src/language/stats/oneway.q:307 +#: src/language/stats/crosstabs.q:821 src/language/stats/crosstabs.q:1021 +#: src/language/stats/crosstabs.q:1744 src/language/stats/examine.q:913 +#: src/language/stats/frequencies.q:1253 src/language/stats/oneway.q:307 #: src/language/stats/oneway.q:471 src/language/stats/regression.q:315 msgid "Total" msgstr "" -#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:989 -#: src/language/stats/frequencies.q:1550 src/language/stats/oneway.q:392 +#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:989 +#: src/language/stats/frequencies.q:1549 src/language/stats/oneway.q:392 #: src/language/stats/t-test.q:683 src/language/stats/t-test.q:706 #: src/language/stats/t-test.q:832 src/language/stats/t-test.q:1369 msgid "N" msgstr "" -#: src/language/stats/crosstabs.q:833 src/language/stats/examine.q:992 -#: src/language/stats/frequencies.q:1180 src/language/stats/frequencies.q:1181 -#: src/language/stats/frequencies.q:1182 +#: src/language/stats/crosstabs.q:832 src/language/stats/examine.q:992 +#: src/language/stats/frequencies.q:1179 src/language/stats/frequencies.q:1180 +#: src/language/stats/frequencies.q:1181 msgid "Percent" msgstr "Prozent" -#: src/language/stats/crosstabs.q:1074 +#: src/language/stats/crosstabs.q:1073 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1075 +#: src/language/stats/crosstabs.q:1074 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1076 +#: src/language/stats/crosstabs.q:1075 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1077 +#: src/language/stats/crosstabs.q:1076 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1078 +#: src/language/stats/crosstabs.q:1077 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1079 +#: src/language/stats/crosstabs.q:1078 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1080 +#: src/language/stats/crosstabs.q:1079 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1081 +#: src/language/stats/crosstabs.q:1080 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1111 +#: src/language/stats/crosstabs.q:1110 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1114 src/language/stats/crosstabs.q:1141 -#: src/language/stats/crosstabs.q:1161 src/language/stats/crosstabs.q:1182 +#: src/language/stats/crosstabs.q:1113 src/language/stats/crosstabs.q:1140 +#: src/language/stats/crosstabs.q:1160 src/language/stats/crosstabs.q:1181 #: src/language/stats/examine.q:1424 msgid "Statistic" msgstr "" -#: src/language/stats/crosstabs.q:1116 src/language/stats/oneway.q:280 +#: src/language/stats/crosstabs.q:1115 src/language/stats/oneway.q:280 #: src/language/stats/oneway.q:681 src/language/stats/regression.q:308 #: src/language/stats/t-test.q:983 src/language/stats/t-test.q:1175 #: src/language/stats/t-test.q:1268 msgid "df" msgstr "" -#: src/language/stats/crosstabs.q:1118 +#: src/language/stats/crosstabs.q:1117 msgid "Asymp. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1120 +#: src/language/stats/crosstabs.q:1119 msgid "Exact. Sig. (2-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1122 +#: src/language/stats/crosstabs.q:1121 msgid "Exact. Sig. (1-sided)" msgstr "" -#: src/language/stats/crosstabs.q:1137 +#: src/language/stats/crosstabs.q:1136 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1140 src/language/stats/crosstabs.q:1181 +#: src/language/stats/crosstabs.q:1139 src/language/stats/crosstabs.q:1180 msgid "Category" msgstr "" -#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1185 +#: src/language/stats/crosstabs.q:1142 src/language/stats/crosstabs.q:1184 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186 +#: src/language/stats/crosstabs.q:1143 src/language/stats/crosstabs.q:1185 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1145 src/language/stats/crosstabs.q:1187 +#: src/language/stats/crosstabs.q:1144 src/language/stats/crosstabs.q:1186 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1156 +#: src/language/stats/crosstabs.q:1155 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1160 +#: src/language/stats/crosstabs.q:1159 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1163 src/language/stats/t-test.q:987 +#: src/language/stats/crosstabs.q:1162 src/language/stats/t-test.q:987 #: src/language/stats/t-test.q:1172 src/language/stats/t-test.q:1271 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1164 src/language/stats/t-test.q:988 +#: src/language/stats/crosstabs.q:1163 src/language/stats/t-test.q:988 #: src/language/stats/t-test.q:1173 src/language/stats/t-test.q:1272 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1178 +#: src/language/stats/crosstabs.q:1177 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1183 src/ui/gui/var-sheet.c:72 +#: src/language/stats/crosstabs.q:1182 src/ui/gui/var-sheet.c:71 msgid "Type" msgstr "Typ" -#: src/language/stats/crosstabs.q:1936 +#: src/language/stats/crosstabs.q:1935 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1937 +#: src/language/stats/crosstabs.q:1936 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1938 +#: src/language/stats/crosstabs.q:1937 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1939 +#: src/language/stats/crosstabs.q:1938 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1940 +#: src/language/stats/crosstabs.q:1939 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1977 src/language/stats/crosstabs.q:2047 -#: src/language/stats/crosstabs.q:2106 +#: src/language/stats/crosstabs.q:1976 src/language/stats/crosstabs.q:2046 +#: src/language/stats/crosstabs.q:2105 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122 +#: src/language/stats/crosstabs.q:1992 src/language/stats/crosstabs.q:2121 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1994 src/language/stats/crosstabs.q:2123 +#: src/language/stats/crosstabs.q:1993 src/language/stats/crosstabs.q:2122 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1995 +#: src/language/stats/crosstabs.q:1994 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1996 +#: src/language/stats/crosstabs.q:1995 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:2001 +#: src/language/stats/crosstabs.q:2000 msgid "Phi" msgstr "" -#: src/language/stats/crosstabs.q:2002 +#: src/language/stats/crosstabs.q:2001 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:2003 +#: src/language/stats/crosstabs.q:2002 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2004 +#: src/language/stats/crosstabs.q:2003 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:2005 +#: src/language/stats/crosstabs.q:2004 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:2006 +#: src/language/stats/crosstabs.q:2005 msgid "Gamma" msgstr "" -#: src/language/stats/crosstabs.q:2007 +#: src/language/stats/crosstabs.q:2006 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:2008 +#: src/language/stats/crosstabs.q:2007 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:2009 +#: src/language/stats/crosstabs.q:2008 msgid "Kappa" msgstr "" -#: src/language/stats/crosstabs.q:2079 +#: src/language/stats/crosstabs.q:2078 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:2082 +#: src/language/stats/crosstabs.q:2081 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:2090 +#: src/language/stats/crosstabs.q:2089 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:2093 +#: src/language/stats/crosstabs.q:2092 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:2124 +#: src/language/stats/crosstabs.q:2123 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:2129 +#: src/language/stats/crosstabs.q:2128 msgid "Lambda" msgstr "" -#: src/language/stats/crosstabs.q:2130 +#: src/language/stats/crosstabs.q:2129 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:2131 +#: src/language/stats/crosstabs.q:2130 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:2132 +#: src/language/stats/crosstabs.q:2131 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:2133 +#: src/language/stats/crosstabs.q:2132 msgid "Eta" msgstr "" -#: src/language/stats/crosstabs.q:2138 +#: src/language/stats/crosstabs.q:2137 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:2139 src/language/stats/crosstabs.q:2140 +#: src/language/stats/crosstabs.q:2138 src/language/stats/crosstabs.q:2139 #, c-format msgid "%s Dependent" msgstr "" -#: src/language/stats/descriptives.c:107 src/language/stats/examine.q:1529 -#: src/language/stats/frequencies.q:124 src/language/stats/oneway.q:393 +#: src/language/stats/descriptives.c:106 src/language/stats/examine.q:1529 +#: src/language/stats/frequencies.q:123 src/language/stats/oneway.q:393 #: src/language/stats/t-test.q:684 src/language/stats/t-test.q:707 #: src/language/stats/t-test.q:831 src/language/stats/t-test.q:1169 msgid "Mean" msgstr "" -#: src/language/stats/descriptives.c:108 +#: src/language/stats/descriptives.c:107 msgid "S E Mean" msgstr "" -#: src/language/stats/descriptives.c:109 src/language/stats/frequencies.q:128 +#: src/language/stats/descriptives.c:108 src/language/stats/frequencies.q:127 msgid "Std Dev" msgstr "" -#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1609 -#: src/language/stats/frequencies.q:129 +#: src/language/stats/descriptives.c:109 src/language/stats/examine.q:1609 +#: src/language/stats/frequencies.q:128 msgid "Variance" msgstr "" -#: src/language/stats/descriptives.c:111 src/language/stats/examine.q:1716 -#: src/language/stats/frequencies.q:130 +#: src/language/stats/descriptives.c:110 src/language/stats/examine.q:1716 +#: src/language/stats/frequencies.q:129 msgid "Kurtosis" msgstr "" -#: src/language/stats/descriptives.c:112 +#: src/language/stats/descriptives.c:111 msgid "S E Kurt" msgstr "" -#: src/language/stats/descriptives.c:113 src/language/stats/examine.q:1696 -#: src/language/stats/frequencies.q:132 +#: src/language/stats/descriptives.c:112 src/language/stats/examine.q:1696 +#: src/language/stats/frequencies.q:131 msgid "Skewness" msgstr "" -#: src/language/stats/descriptives.c:114 +#: src/language/stats/descriptives.c:113 msgid "S E Skew" msgstr "" -#: src/language/stats/descriptives.c:115 src/language/stats/examine.q:1657 -#: src/language/stats/frequencies.q:134 +#: src/language/stats/descriptives.c:114 src/language/stats/examine.q:1657 +#: src/language/stats/frequencies.q:133 msgid "Range" msgstr "" -#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1634 -#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:405 +#: src/language/stats/descriptives.c:115 src/language/stats/examine.q:1634 +#: src/language/stats/frequencies.q:134 src/language/stats/oneway.q:405 msgid "Minimum" msgstr "" -#: src/language/stats/descriptives.c:117 src/language/stats/examine.q:1645 -#: src/language/stats/frequencies.q:136 src/language/stats/oneway.q:406 +#: src/language/stats/descriptives.c:116 src/language/stats/examine.q:1645 +#: src/language/stats/frequencies.q:135 src/language/stats/oneway.q:406 msgid "Maximum" msgstr "" -#: src/language/stats/descriptives.c:118 src/language/stats/frequencies.q:137 +#: src/language/stats/descriptives.c:117 src/language/stats/frequencies.q:136 msgid "Sum" msgstr "" -#: src/language/stats/descriptives.c:347 +#: src/language/stats/descriptives.c:346 #, c-format msgid "Z-score variable name %s would be a duplicate variable name." msgstr "" -#: src/language/stats/descriptives.c:450 +#: src/language/stats/descriptives.c:449 msgid "expecting statistic name: reverting to default" msgstr "" -#: src/language/stats/descriptives.c:523 +#: src/language/stats/descriptives.c:522 msgid "" "Ran out of generic names for Z-score variables. There are only 126 generic " "names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." msgstr "" -#: src/language/stats/descriptives.c:555 +#: src/language/stats/descriptives.c:554 msgid "Mapping of variables to corresponding Z-scores." msgstr "" -#: src/language/stats/descriptives.c:560 +#: src/language/stats/descriptives.c:559 msgid "Source" msgstr "" -#: src/language/stats/descriptives.c:561 +#: src/language/stats/descriptives.c:560 msgid "Target" msgstr "" -#: src/language/stats/descriptives.c:675 +#: src/language/stats/descriptives.c:674 #, c-format msgid "Z-score of %s" msgstr "" -#: src/language/stats/descriptives.c:894 +#: src/language/stats/descriptives.c:893 msgid "Valid N" msgstr "" -#: src/language/stats/descriptives.c:895 +#: src/language/stats/descriptives.c:894 msgid "Missing N" msgstr "" -#: src/language/stats/descriptives.c:922 +#: src/language/stats/descriptives.c:921 #, c-format msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" @@ -2870,7 +2870,7 @@ msgstr "" msgid "5%% Trimmed Mean" msgstr "" -#: src/language/stats/examine.q:1587 src/language/stats/frequencies.q:126 +#: src/language/stats/examine.q:1587 src/language/stats/frequencies.q:125 msgid "Median" msgstr "" @@ -2916,7 +2916,7 @@ msgid "Dev from Normal" msgstr "" #: src/language/stats/examine.q:2015 src/language/stats/examine.q:2037 -#: src/language/stats/frequencies.q:1562 +#: src/language/stats/frequencies.q:1561 msgid "Percentiles" msgstr "" @@ -2924,162 +2924,162 @@ msgstr "" msgid "Tukey's Hinges" msgstr "" -#: src/language/stats/flip.c:102 +#: src/language/stats/flip.c:101 msgid "" "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." msgstr "" -#: src/language/stats/flip.c:244 +#: src/language/stats/flip.c:243 #, c-format msgid "Could not create acceptable variant for variable %s." msgstr "" -#: src/language/stats/flip.c:260 +#: src/language/stats/flip.c:259 msgid "Cannot create more than 99999 variable names." msgstr "" -#: src/language/stats/flip.c:297 +#: src/language/stats/flip.c:296 msgid "Could not create temporary file for FLIP." msgstr "" -#: src/language/stats/flip.c:308 src/language/stats/flip.c:377 +#: src/language/stats/flip.c:307 src/language/stats/flip.c:376 #, c-format msgid "Error writing FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:424 +#: src/language/stats/flip.c:423 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:431 +#: src/language/stats/flip.c:430 msgid "Error creating FLIP source file." msgstr "" -#: src/language/stats/flip.c:443 +#: src/language/stats/flip.c:442 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:467 +#: src/language/stats/flip.c:466 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:475 +#: src/language/stats/flip.c:474 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:486 +#: src/language/stats/flip.c:485 #, c-format msgid "Error closing FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:494 +#: src/language/stats/flip.c:493 #, c-format msgid "Error rewinding FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:542 +#: src/language/stats/flip.c:541 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/language/stats/flip.c:545 +#: src/language/stats/flip.c:544 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" -#: src/language/stats/frequencies.q:125 +#: src/language/stats/frequencies.q:124 msgid "S.E. Mean" msgstr "" -#: src/language/stats/frequencies.q:127 +#: src/language/stats/frequencies.q:126 msgid "Mode" msgstr "" -#: src/language/stats/frequencies.q:131 +#: src/language/stats/frequencies.q:130 msgid "S.E. Kurt" msgstr "" -#: src/language/stats/frequencies.q:133 +#: src/language/stats/frequencies.q:132 msgid "S.E. Skew" msgstr "" -#: src/language/stats/frequencies.q:415 +#: src/language/stats/frequencies.q:414 msgid "" "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be " "assumed. Argument values will be given precedence increasing along the " "order given." msgstr "" -#: src/language/stats/frequencies.q:498 +#: src/language/stats/frequencies.q:497 #, c-format msgid "" "MAX must be greater than or equal to MIN, if both are specified. However, " "MIN was specified as %g and MAX as %g. MIN and MAX will be ignored." msgstr "" -#: src/language/stats/frequencies.q:830 +#: src/language/stats/frequencies.q:829 msgid "" "Upper limit of integer mode value range must be greater than lower limit." msgstr "" -#: src/language/stats/frequencies.q:843 +#: src/language/stats/frequencies.q:842 #, c-format msgid "Variable %s specified multiple times on VARIABLES subcommand." msgstr "" -#: src/language/stats/frequencies.q:849 +#: src/language/stats/frequencies.q:848 #, c-format msgid "Integer mode specified, but %s is not a numeric variable." msgstr "" -#: src/language/stats/frequencies.q:923 +#: src/language/stats/frequencies.q:922 msgid "`)' expected after GROUPED interval list." msgstr "" -#: src/language/stats/frequencies.q:935 +#: src/language/stats/frequencies.q:934 #, c-format msgid "Variables %s specified on GROUPED but not on VARIABLES." msgstr "" -#: src/language/stats/frequencies.q:942 +#: src/language/stats/frequencies.q:941 #, c-format msgid "Variables %s specified multiple times on GROUPED subcommand." msgstr "" -#: src/language/stats/frequencies.q:1177 src/language/stats/frequencies.q:1269 -#: src/language/stats/frequencies.q:1270 src/language/stats/frequencies.q:1304 +#: src/language/stats/frequencies.q:1176 src/language/stats/frequencies.q:1268 +#: src/language/stats/frequencies.q:1269 src/language/stats/frequencies.q:1303 msgid "Cum" msgstr "" -#: src/language/stats/frequencies.q:1179 src/output/charts/plot-hist.c:129 +#: src/language/stats/frequencies.q:1178 src/output/charts/plot-hist.c:129 msgid "Frequency" msgstr "" -#: src/language/stats/frequencies.q:1200 +#: src/language/stats/frequencies.q:1199 msgid "Value Label" msgstr "" -#: src/language/stats/frequencies.q:1302 +#: src/language/stats/frequencies.q:1301 msgid "Freq" msgstr "" -#: src/language/stats/frequencies.q:1303 src/language/stats/frequencies.q:1305 +#: src/language/stats/frequencies.q:1302 src/language/stats/frequencies.q:1304 msgid "Pct" msgstr "" -#: src/language/stats/frequencies.q:1524 +#: src/language/stats/frequencies.q:1523 #, c-format msgid "No valid data for variable %s; statistics not displayed." msgstr "" -#: src/language/stats/means.q:103 +#: src/language/stats/means.q:102 msgid "Missing required subcommand TABLES." msgstr "" -#: src/language/stats/means.q:137 +#: src/language/stats/means.q:136 msgid "TABLES subcommand may not appear more than once." msgstr "" @@ -3291,15 +3291,15 @@ msgstr "" msgid "Dependent variable must be numeric." msgstr "" -#: src/language/stats/sort-cases.c:64 +#: src/language/stats/sort-cases.c:63 msgid "Buffer limit must be at least 2." msgstr "" -#: src/language/stats/sort-criteria.c:98 +#: src/language/stats/sort-criteria.c:97 msgid "`A' or `D' expected inside parentheses." msgstr "" -#: src/language/stats/sort-criteria.c:103 +#: src/language/stats/sort-criteria.c:102 msgid "`)' expected." msgstr "" @@ -3431,59 +3431,59 @@ msgstr "" msgid "%s & %s" msgstr "" -#: src/language/syntax-file.c:89 +#: src/language/syntax-file.c:88 #, c-format msgid "opening \"%s\" as syntax file" msgstr "" -#: src/language/syntax-file.c:94 +#: src/language/syntax-file.c:93 #, c-format msgid "Opening `%s': %s." msgstr "" -#: src/language/syntax-file.c:107 +#: src/language/syntax-file.c:106 #, c-format msgid "Reading `%s': %s." msgstr "" -#: src/language/syntax-file.c:128 +#: src/language/syntax-file.c:127 #, c-format msgid "Closing `%s': %s." msgstr "" -#: src/language/tests/float-format.c:127 +#: src/language/tests/float-format.c:126 #, c-format msgid "%d-byte string needed but %d-byte string supplied." msgstr "" -#: src/language/tests/float-format.c:138 +#: src/language/tests/float-format.c:137 msgid "Hexadecimal floating constant too long." msgstr "" -#: src/language/tests/float-format.c:203 +#: src/language/tests/float-format.c:202 #, c-format msgid "" "%s conversion of %s from %s to %s should have produced %s but actually " "produced %s." msgstr "" -#: src/language/tests/float-format.c:249 +#: src/language/tests/float-format.c:248 msgid "Too many values in single command." msgstr "" -#: src/language/tests/moments-test.c:50 +#: src/language/tests/moments-test.c:49 msgid "expecting weight value" msgstr "" -#: src/language/utilities/date.c:35 +#: src/language/utilities/date.c:34 msgid "Only USE ALL is currently implemented." msgstr "" -#: src/language/utilities/include.c:50 +#: src/language/utilities/include.c:49 msgid "expecting file name" msgstr "" -#: src/language/utilities/include.c:65 +#: src/language/utilities/include.c:64 #, c-format msgid "Can't find `%s' in include file search path." msgstr "" @@ -3503,235 +3503,235 @@ msgstr "" msgid "Cannot change mode of %s: %s" msgstr "" -#: src/language/utilities/set.q:202 src/language/utilities/set.q:204 -#: src/language/utilities/set.q:206 src/language/utilities/set.q:208 -#: src/language/utilities/set.q:210 src/language/utilities/set.q:212 -#: src/language/utilities/set.q:214 src/language/utilities/set.q:216 -#: src/language/utilities/set.q:218 +#: src/language/utilities/set.q:201 src/language/utilities/set.q:203 +#: src/language/utilities/set.q:205 src/language/utilities/set.q:207 +#: src/language/utilities/set.q:209 src/language/utilities/set.q:211 +#: src/language/utilities/set.q:213 src/language/utilities/set.q:215 +#: src/language/utilities/set.q:217 #, c-format msgid "%s is obsolete." msgstr "" -#: src/language/utilities/set.q:221 +#: src/language/utilities/set.q:220 #, c-format msgid "%s is not implemented." msgstr "" -#: src/language/utilities/set.q:224 +#: src/language/utilities/set.q:223 msgid "Active file compression is not implemented." msgstr "" -#: src/language/utilities/set.q:348 +#: src/language/utilities/set.q:347 #, c-format msgid "" "%s: Custom currency string `%s' does not contain exactly three periods or " "commas (or it contains both)." msgstr "" -#: src/language/utilities/set.q:404 +#: src/language/utilities/set.q:403 msgid "EPOCH must be 1500 or later." msgstr "" -#: src/language/utilities/set.q:411 +#: src/language/utilities/set.q:410 msgid "expecting AUTOMATIC or year" msgstr "" -#: src/language/utilities/set.q:432 +#: src/language/utilities/set.q:431 msgid "LENGTH must be at least 1." msgstr "" -#: src/language/utilities/set.q:476 +#: src/language/utilities/set.q:475 msgid "WIDTH must be at least 40." msgstr "" -#: src/language/utilities/set.q:499 +#: src/language/utilities/set.q:498 #, c-format msgid "" "FORMAT requires numeric output format as an argument. Specified format %s " "is of type string." msgstr "" -#: src/language/utilities/set.q:556 +#: src/language/utilities/set.q:555 msgid "BLANKS is SYSMIS." msgstr "" -#: src/language/utilities/set.q:558 +#: src/language/utilities/set.q:557 #, c-format msgid "BLANKS is %g." msgstr "" -#: src/language/utilities/set.q:593 +#: src/language/utilities/set.q:592 #, c-format msgid "%s is \"%s\"." msgstr "" -#: src/language/utilities/set.q:629 +#: src/language/utilities/set.q:628 #, c-format msgid "DECIMAL is \"%c\"." msgstr "" -#: src/language/utilities/set.q:635 +#: src/language/utilities/set.q:634 #, c-format msgid "ENDCMD is \"%c\"." msgstr "" -#: src/language/utilities/set.q:643 +#: src/language/utilities/set.q:642 #, c-format msgid "ERRORS is \"%s\"." msgstr "" -#: src/language/utilities/set.q:654 +#: src/language/utilities/set.q:653 #, c-format msgid "FORMAT is %s." msgstr "" -#: src/language/utilities/set.q:660 +#: src/language/utilities/set.q:659 #, c-format msgid "LENGTH is %d." msgstr "" -#: src/language/utilities/set.q:666 +#: src/language/utilities/set.q:665 #, c-format msgid "MXERRS is %d." msgstr "" -#: src/language/utilities/set.q:672 +#: src/language/utilities/set.q:671 #, c-format msgid "MXLOOPS is %d." msgstr "" -#: src/language/utilities/set.q:678 +#: src/language/utilities/set.q:677 #, c-format msgid "MXWARNS is %d." msgstr "" -#: src/language/utilities/set.q:685 src/language/utilities/set.q:736 +#: src/language/utilities/set.q:684 src/language/utilities/set.q:735 #, c-format msgid "%s is %s (%s)." msgstr "" -#: src/language/utilities/set.q:757 +#: src/language/utilities/set.q:756 msgid "SCOMPRESSION is ON." msgstr "" -#: src/language/utilities/set.q:759 +#: src/language/utilities/set.q:758 msgid "SCOMPRESSION is OFF." msgstr "" -#: src/language/utilities/set.q:766 +#: src/language/utilities/set.q:765 msgid "UNDEFINED is WARN." msgstr "" -#: src/language/utilities/set.q:768 +#: src/language/utilities/set.q:767 msgid "UNDEFINED is NOWARN." msgstr "" -#: src/language/utilities/set.q:776 +#: src/language/utilities/set.q:775 msgid "WEIGHT is off." msgstr "" -#: src/language/utilities/set.q:778 +#: src/language/utilities/set.q:777 #, c-format msgid "WEIGHT is variable %s." msgstr "" -#: src/language/utilities/set.q:796 +#: src/language/utilities/set.q:795 #, c-format msgid "WIDTH is %d." msgstr "" -#: src/language/utilities/title.c:70 +#: src/language/utilities/title.c:69 #, c-format msgid "%s: `.' expected after string." msgstr "" -#: src/language/utilities/title.c:139 +#: src/language/utilities/title.c:138 #, c-format msgid "Document entered %s by %s:" msgstr "" -#: src/language/xforms/compute.c:148 src/language/xforms/compute.c:196 +#: src/language/xforms/compute.c:147 src/language/xforms/compute.c:195 #, c-format msgid "" "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %" "s." msgstr "" -#: src/language/xforms/compute.c:152 src/language/xforms/compute.c:203 +#: src/language/xforms/compute.c:151 src/language/xforms/compute.c:202 #, c-format msgid "" "When executing COMPUTE: %g is not a valid value as an index into vector %s." msgstr "" -#: src/language/xforms/compute.c:346 +#: src/language/xforms/compute.c:345 #, c-format msgid "There is no vector named %s." msgstr "" -#: src/language/xforms/count.c:125 +#: src/language/xforms/count.c:124 msgid "Destination cannot be a string variable." msgstr "" -#: src/language/xforms/recode.c:249 +#: src/language/xforms/recode.c:248 msgid "" "Inconsistent target variable types. Target variables must be all numeric or " "all string." msgstr "" -#: src/language/xforms/recode.c:269 +#: src/language/xforms/recode.c:268 msgid "CONVERT requires string input values and numeric output values." msgstr "" -#: src/language/xforms/recode.c:387 +#: src/language/xforms/recode.c:386 msgid "expecting output value" msgstr "" -#: src/language/xforms/recode.c:436 +#: src/language/xforms/recode.c:435 #, c-format msgid "" "%u variable(s) cannot be recoded into %u variable(s). Specify the same " "number of variables as source and target variables." msgstr "" -#: src/language/xforms/recode.c:451 +#: src/language/xforms/recode.c:450 #, c-format msgid "" "There is no variable named %s. (All string variables specified on INTO must " "already exist. Use the STRING command to create a string variable.)" msgstr "" -#: src/language/xforms/recode.c:466 +#: src/language/xforms/recode.c:465 #, c-format msgid "INTO is required with %s input values and %s output values." msgstr "" -#: src/language/xforms/recode.c:479 +#: src/language/xforms/recode.c:478 #, c-format msgid "Type mismatch. Cannot store %s data in %s variable %s." msgstr "" -#: src/language/xforms/sample.c:78 +#: src/language/xforms/sample.c:77 msgid "The sampling factor must be between 0 and 1 exclusive." msgstr "" -#: src/language/xforms/sample.c:98 +#: src/language/xforms/sample.c:97 #, c-format msgid "Cannot sample %d observations from a population of %d." msgstr "" -#: src/language/xforms/select-if.c:102 +#: src/language/xforms/select-if.c:101 msgid "Syntax error expecting OFF or BY. Turning off case filtering." msgstr "" -#: src/language/xforms/select-if.c:117 +#: src/language/xforms/select-if.c:116 msgid "The filter variable must be numeric." msgstr "" -#: src/language/xforms/select-if.c:123 +#: src/language/xforms/select-if.c:122 msgid "The filter variable may not be scratch." msgstr "" -#: src/libpspp/hash.c:617 +#: src/libpspp/hash.c:616 #, c-format msgid "hash table:" msgstr "" @@ -3756,144 +3756,144 @@ msgstr "" msgid "Empirical with averaging" msgstr "" -#: src/math/sort.c:439 +#: src/math/sort.c:438 #, c-format msgid "" "Out of memory. Could not allocate room for minimum of %d cases of %d bytes " "each. (PSPP workspace is currently restricted to a maximum of %d KB.)" msgstr "" -#: src/output/afm.c:151 +#: src/output/afm.c:150 #, c-format msgid "opening font metrics file \"%s\"" msgstr "" -#: src/output/afm.c:241 +#: src/output/afm.c:240 msgid "first line must be StartFontMetrics" msgstr "" -#: src/output/afm.c:268 +#: src/output/afm.c:267 #, c-format msgid "unsupported MappingScheme %d" msgstr "" -#: src/output/afm.c:289 +#: src/output/afm.c:288 msgid "required FontName is missing" msgstr "" -#: src/output/afm.c:396 +#: src/output/afm.c:395 msgid "CharMetrics line must start with C or CH" msgstr "" -#: src/output/afm.c:537 +#: src/output/afm.c:536 #, c-format msgid "reference to unknown character \"%s\"" msgstr "" -#: src/output/afm.c:595 +#: src/output/afm.c:594 msgid "expected end of file" msgstr "" -#: src/output/afm.c:607 +#: src/output/afm.c:606 msgid "syntax error expecting end of line" msgstr "" -#: src/output/afm.c:625 src/output/afm.c:662 +#: src/output/afm.c:624 src/output/afm.c:661 msgid "number out of valid range" msgstr "" -#: src/output/afm.c:627 src/output/afm.c:664 +#: src/output/afm.c:626 src/output/afm.c:663 msgid "invalid numeric syntax" msgstr "" -#: src/output/afm.c:643 +#: src/output/afm.c:642 msgid "syntax error expecting integer" msgstr "" -#: src/output/afm.c:681 +#: src/output/afm.c:680 msgid "syntax error expecting number" msgstr "" -#: src/output/afm.c:694 +#: src/output/afm.c:693 msgid "syntax error in hex constant" msgstr "" -#: src/output/afm.c:709 +#: src/output/afm.c:708 msgid "syntax error expecting hex constant" msgstr "" -#: src/output/afm.c:747 +#: src/output/afm.c:746 msgid "unexpected end of line" msgstr "" -#: src/output/afm.c:797 +#: src/output/afm.c:796 msgid "unexpected end of line expecting string" msgstr "" -#: src/output/ascii.c:161 +#: src/output/ascii.c:160 #, c-format msgid "ascii: opening output file \"%s\"" msgstr "" -#: src/output/ascii.c:172 +#: src/output/ascii.c:171 #, c-format msgid "" "ascii: page excluding margins and headers must be at least 59 characters " "wide by 15 lines long, but as configured is only %d characters by %d lines" msgstr "" -#: src/output/ascii.c:233 +#: src/output/ascii.c:232 #, c-format msgid "ascii: closing output file \"%s\"" msgstr "" -#: src/output/ascii.c:285 +#: src/output/ascii.c:284 #, c-format msgid "" "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d " "decimal, with INDEX expressed in base 4" msgstr "" -#: src/output/ascii.c:292 +#: src/output/ascii.c:291 #, c-format msgid "ascii: multiple values for %s" msgstr "" -#: src/output/ascii.c:300 +#: src/output/ascii.c:299 #, c-format msgid "ascii: unknown parameter `%s'" msgstr "" -#: src/output/ascii.c:314 +#: src/output/ascii.c:313 #, c-format msgid "ascii: positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:340 +#: src/output/ascii.c:339 msgid "ascii: `emphasis' value must be `bold', `underline', or `none'" msgstr "" -#: src/output/ascii.c:353 +#: src/output/ascii.c:352 #, c-format msgid "ascii: zero or positive integer required as `%s' value" msgstr "" -#: src/output/ascii.c:384 +#: src/output/ascii.c:383 #, c-format msgid "ascii: boolean value expected for `%s'" msgstr "" -#: src/output/ascii.c:473 +#: src/output/ascii.c:472 #, c-format msgid "ascii: bad line (%d,%d)-(%d,%d) out of (%d,%d)\n" msgstr "" -#: src/output/ascii.c:683 src/output/postscript.c:830 +#: src/output/ascii.c:682 src/output/postscript.c:829 #, c-format msgid "%s - Page %d" msgstr "" -#: src/output/ascii.c:727 +#: src/output/ascii.c:726 msgid "ascii: charts are unsupported by this driver" msgstr "" @@ -3901,173 +3901,173 @@ msgstr "" msgid "HISTOGRAM" msgstr "" -#: src/output/html.c:70 +#: src/output/html.c:69 #, c-format msgid "opening HTML output file: %s" msgstr "" -#: src/output/html.c:81 +#: src/output/html.c:80 msgid "PSPP Output" msgstr "" -#: src/output/html.c:170 +#: src/output/html.c:169 #, c-format msgid "unknown configuration parameter `%s' for HTML device driver" msgstr "" -#: src/output/html.c:186 +#: src/output/html.c:185 msgid "`chart-files' value must contain `#'" msgstr "" -#: src/output/html.c:384 +#: src/output/html.c:383 #, c-format msgid "creating \"%s\"" msgstr "" -#: src/output/output.c:165 +#: src/output/output.c:164 #, c-format msgid "unknown output driver `%s'" msgstr "" -#: src/output/output.c:167 +#: src/output/output.c:166 #, c-format msgid "output driver `%s' referenced but never defined" msgstr "" -#: src/output/output.c:258 +#: src/output/output.c:257 msgid "using default output driver configuration" msgstr "" -#: src/output/output.c:287 +#: src/output/output.c:286 msgid "cannot find output initialization file (use `-vv' to view search path)" msgstr "" -#: src/output/output.c:295 +#: src/output/output.c:294 #, c-format msgid "cannot open \"%s\"" msgstr "" -#: src/output/output.c:307 +#: src/output/output.c:306 #, c-format msgid "reading \"%s\"" msgstr "" -#: src/output/output.c:329 +#: src/output/output.c:328 msgid "syntax error" msgstr "" -#: src/output/output.c:338 +#: src/output/output.c:337 #, c-format msgid "error closing \"%s\"" msgstr "" -#: src/output/output.c:346 +#: src/output/output.c:345 msgid "no active output drivers" msgstr "" -#: src/output/output.c:349 +#: src/output/output.c:348 msgid "error reading device definition file" msgstr "" -#: src/output/output.c:466 +#: src/output/output.c:465 #, c-format msgid "" "Driver classes:\n" "\t" msgstr "" -#: src/output/output.c:498 +#: src/output/output.c:497 #, c-format msgid "syntax error parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:514 +#: src/output/output.c:513 #, c-format msgid "" "reached end of options inside quoted string parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:584 +#: src/output/output.c:583 #, c-format msgid "syntax error in string constant parsing options for \"%s\" driver" msgstr "" -#: src/output/output.c:632 +#: src/output/output.c:631 #, c-format msgid "syntax error expecting `=' parsing options for driver \"%s\"" msgstr "" -#: src/output/output.c:683 +#: src/output/output.c:682 #, c-format msgid "unknown output driver class `%.*s'" msgstr "" -#: src/output/output.c:698 +#: src/output/output.c:697 #, c-format msgid "unknown device type `%.*s'" msgstr "" -#: src/output/output.c:715 +#: src/output/output.c:714 #, c-format msgid "cannot initialize output driver `%s' of class `%s'" msgstr "" -#: src/output/output.c:761 +#: src/output/output.c:760 msgid "driver definition line missing driver name or class name" msgstr "" -#: src/output/output.c:907 +#: src/output/output.c:906 #, c-format msgid "unit \"%s\" is unknown in dimension \"%s\"" msgstr "" -#: src/output/output.c:922 +#: src/output/output.c:921 #, c-format msgid "bad dimension \"%s\"" msgstr "" -#: src/output/output.c:948 +#: src/output/output.c:947 #, c-format msgid "`x' expected in paper size `%s'" msgstr "" -#: src/output/output.c:958 +#: src/output/output.c:957 #, c-format msgid "trailing garbage `%s' on paper size `%s'" msgstr "" -#: src/output/output.c:1002 +#: src/output/output.c:1001 msgid "paper size name cannot be empty" msgstr "" -#: src/output/output.c:1019 +#: src/output/output.c:1018 msgid "cannot find `papersize' configuration file" msgstr "" -#: src/output/output.c:1026 +#: src/output/output.c:1025 #, c-format msgid "error opening \"%s\"" msgstr "" -#: src/output/output.c:1037 +#: src/output/output.c:1036 #, c-format msgid "error reading \"%s\"" msgstr "" -#: src/output/output.c:1063 +#: src/output/output.c:1062 msgid "syntax error in paper size definition" msgstr "" -#: src/output/output.c:1075 +#: src/output/output.c:1074 msgid "error reading paper size definition file" msgstr "" -#: src/output/postscript.c:163 +#: src/output/postscript.c:162 #, c-format msgid "opening PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:201 +#: src/output/postscript.c:200 #, c-format msgid "" "The defined PostScript page is not long enough to hold margins and headers, " @@ -4075,87 +4075,87 @@ msgid "" "lines of each font at the default size of %d.%03d points." msgstr "" -#: src/output/postscript.c:249 +#: src/output/postscript.c:248 #, c-format msgid "closing PostScript output file \"%s\"" msgstr "" -#: src/output/postscript.c:309 +#: src/output/postscript.c:308 #, c-format msgid "unknown configuration parameter `%s' for PostScript device driver" msgstr "" -#: src/output/postscript.c:325 +#: src/output/postscript.c:324 #, c-format msgid "" "unknown orientation `%s' (valid orientations are `portrait' and `landscape')" msgstr "" -#: src/output/postscript.c:337 +#: src/output/postscript.c:336 #, c-format msgid "boolean value expected for %s" msgstr "" -#: src/output/postscript.c:350 +#: src/output/postscript.c:349 #, c-format msgid "positive integer value required for `%s'" msgstr "" -#: src/output/postscript.c:355 +#: src/output/postscript.c:354 #, c-format msgid "default font size must be at least 1 point (value of 1000 for key `%s')" msgstr "" -#: src/output/postscript.c:387 +#: src/output/postscript.c:386 #, c-format msgid "value for `%s' must be a dimension of positive length (i.e., `1in')" msgstr "" -#: src/output/postscript.c:1180 +#: src/output/postscript.c:1179 #, c-format msgid "\"%s\": bad font specification" msgstr "" -#: src/output/postscript.c:1188 +#: src/output/postscript.c:1187 #, c-format msgid "could not find AFM file \"%s\"" msgstr "" -#: src/output/postscript.c:1202 +#: src/output/postscript.c:1201 #, c-format msgid "could not find font \"%s\"" msgstr "" -#: src/output/postscript.c:1211 +#: src/output/postscript.c:1210 #, c-format msgid "could not find encoding \"%s\"" msgstr "" -#: src/output/postscript.c:1311 +#: src/output/postscript.c:1310 #, c-format msgid "cannot open font file \"%s\"" msgstr "" -#: src/output/postscript.c:1352 +#: src/output/postscript.c:1351 #, c-format msgid "reading font file \"%s\"" msgstr "" -#: src/output/postscript.c:1374 +#: src/output/postscript.c:1373 #, c-format msgid "cannot open font encoding file \"%s\"" msgstr "" -#: src/output/postscript.c:1403 +#: src/output/postscript.c:1402 msgid "invalid numeric format" msgstr "" -#: src/output/table.c:238 +#: src/output/table.c:237 #, c-format msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/output/table.c:309 +#: src/output/table.c:308 #, c-format msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" @@ -4165,37 +4165,37 @@ msgstr "" msgid "Style of bevel around the custom entry button" msgstr "" -#: src/ui/gui/menu-actions.c:63 src/ui/gui/syntax-editor.c:61 +#: src/ui/gui/menu-actions.c:64 src/ui/gui/syntax-editor.c:61 #: src/ui/gui/syntax-editor.c:83 msgid "Untitled" msgstr "Unbetitelt" -#: src/ui/gui/menu-actions.c:65 +#: src/ui/gui/menu-actions.c:66 msgid "PSPP Data Editor" msgstr "PSPP Dateiaufbereiter" -#: src/ui/gui/menu-actions.c:219 src/ui/gui/psppire.glade:502 +#: src/ui/gui/menu-actions.c:220 src/ui/gui/psppire.glade:502 msgid "Open" msgstr "Öffen" -#: src/ui/gui/menu-actions.c:227 +#: src/ui/gui/menu-actions.c:228 msgid "System Files (*.sav)" msgstr "Systemedatein (*.sav)" -#: src/ui/gui/menu-actions.c:233 +#: src/ui/gui/menu-actions.c:234 msgid "Portable Files (*.por) " msgstr "Tragbardatein (*.por)" -#: src/ui/gui/menu-actions.c:239 src/ui/gui/syntax-editor.c:122 +#: src/ui/gui/menu-actions.c:240 src/ui/gui/syntax-editor.c:122 #: src/ui/gui/syntax-editor.c:378 msgid "All Files" msgstr "Alle Datei" -#: src/ui/gui/menu-actions.c:287 +#: src/ui/gui/menu-actions.c:288 msgid "Save Data As" msgstr "Speichern unter" -#: src/ui/gui/menu-actions.c:514 +#: src/ui/gui/menu-actions.c:515 msgid "Font Selection" msgstr "Schriftwahlung" @@ -4223,13 +4223,13 @@ msgstr "Falshe Spannweitebeschreibung" msgid "Sorry. The help system hasn't yet been implemented." msgstr "Es gibt noch nicht kein Helpsysteme. Schade!" -#: src/ui/gui/psppire-data-store.c:724 +#: src/ui/gui/psppire-data-store.c:725 msgid "var" msgstr "" -#: src/ui/gui/psppire-data-store.c:805 src/ui/gui/psppire-var-store.c:521 -#: src/ui/gui/psppire-var-store.c:531 src/ui/gui/psppire-var-store.c:541 -#: src/ui/gui/psppire-var-store.c:738 +#: src/ui/gui/psppire-data-store.c:806 src/ui/gui/psppire-var-store.c:554 +#: src/ui/gui/psppire-var-store.c:564 src/ui/gui/psppire-var-store.c:574 +#: src/ui/gui/psppire-var-store.c:772 #, c-format msgid "%d" msgstr "" @@ -4421,11 +4421,11 @@ msgstr "" msgid "Variable Type" msgstr "Variableansicht" -#: src/ui/gui/psppire.glade:1107 src/ui/gui/psppire-var-store.c:445 +#: src/ui/gui/psppire.glade:1107 src/ui/gui/psppire-var-store.c:478 msgid "Comma" msgstr "Komma" -#: src/ui/gui/psppire.glade:1127 src/ui/gui/psppire-var-store.c:446 +#: src/ui/gui/psppire.glade:1127 src/ui/gui/psppire-var-store.c:479 msgid "Dot" msgstr "Punkt" @@ -4433,11 +4433,11 @@ msgstr "Punkt" msgid "Scientific notation" msgstr "Wissenschaftlichnotation" -#: src/ui/gui/psppire.glade:1167 src/ui/gui/psppire-var-store.c:448 +#: src/ui/gui/psppire.glade:1167 src/ui/gui/psppire-var-store.c:481 msgid "Date" msgstr "Datum" -#: src/ui/gui/psppire.glade:1187 src/ui/gui/psppire-var-store.c:449 +#: src/ui/gui/psppire.glade:1187 src/ui/gui/psppire-var-store.c:482 msgid "Dollar" msgstr "Euro" @@ -4505,11 +4505,11 @@ msgstr "Di_skretwerte" msgid "Case Number:" msgstr "" -#: src/ui/gui/psppire.glade:2732 src/ui/gui/sort-cases-dialog.c:282 +#: src/ui/gui/psppire.glade:2732 src/ui/gui/sort-cases-dialog.c:280 msgid "Ascending" msgstr "" -#: src/ui/gui/psppire.glade:2751 src/ui/gui/sort-cases-dialog.c:284 +#: src/ui/gui/psppire.glade:2751 src/ui/gui/sort-cases-dialog.c:282 msgid "Descending" msgstr "" @@ -4546,23 +4546,23 @@ msgstr "" msgid "To End" msgstr "" -#: src/ui/gui/psppire-var-store.c:440 +#: src/ui/gui/psppire-var-store.c:473 msgid "None" msgstr "Keine" -#: src/ui/gui/psppire-var-store.c:447 +#: src/ui/gui/psppire-var-store.c:480 msgid "Scientific" msgstr "Wissenschäflich" -#: src/ui/gui/psppire-var-store.c:450 +#: src/ui/gui/psppire-var-store.c:483 msgid "Custom" msgstr "Spezial" -#: src/ui/gui/sort-cases-dialog.c:342 +#: src/ui/gui/sort-cases-dialog.c:340 msgid "Var" msgstr "" -#: src/ui/gui/sort-cases-dialog.c:370 +#: src/ui/gui/sort-cases-dialog.c:368 msgid "Criteria" msgstr "" @@ -4590,55 +4590,55 @@ msgstr "PSPP Dateiaufbereiter" msgid "Open Syntax" msgstr "" -#: src/ui/gui/var-sheet.c:71 +#: src/ui/gui/var-sheet.c:70 msgid "Name" msgstr "Name" -#: src/ui/gui/var-sheet.c:73 +#: src/ui/gui/var-sheet.c:72 msgid "Width" msgstr "Große" -#: src/ui/gui/var-sheet.c:74 +#: src/ui/gui/var-sheet.c:73 msgid "Decimals" msgstr "Dezimalstellen" -#: src/ui/gui/var-sheet.c:76 +#: src/ui/gui/var-sheet.c:75 msgid "Values" msgstr "Werten" -#: src/ui/gui/var-sheet.c:79 +#: src/ui/gui/var-sheet.c:78 msgid "Align" msgstr "Einstellung" -#: src/ui/gui/var-sheet.c:80 +#: src/ui/gui/var-sheet.c:79 msgid "Measure" msgstr "Messe" -#: src/ui/gui/var-sheet.c:103 +#: src/ui/gui/var-sheet.c:102 msgid "Left" msgstr "Links" -#: src/ui/gui/var-sheet.c:104 +#: src/ui/gui/var-sheet.c:103 msgid "Right" msgstr "Rechts" -#: src/ui/gui/var-sheet.c:105 +#: src/ui/gui/var-sheet.c:104 msgid "Centre" msgstr "Mittel" -#: src/ui/gui/var-sheet.c:110 +#: src/ui/gui/var-sheet.c:109 msgid "Nominal" msgstr "Nominalwert" -#: src/ui/gui/var-sheet.c:111 +#: src/ui/gui/var-sheet.c:110 msgid "Ordinal" msgstr "Ordinalwert" -#: src/ui/gui/var-sheet.c:112 +#: src/ui/gui/var-sheet.c:111 msgid "Scale" msgstr "Skalwert" -#: src/ui/terminal/command-line.c:222 +#: src/ui/terminal/command-line.c:221 #, c-format msgid "" "PSPP, a program for statistical analysis of sample data.\n" @@ -4684,43 +4684,43 @@ msgid "" "\n" msgstr "" -#: src/ui/terminal/command-line.c:257 +#: src/ui/terminal/command-line.c:256 #, c-format msgid "" "\n" "Report bugs to <%s>.\n" msgstr "" -#: src/ui/terminal/main.c:126 +#: src/ui/terminal/main.c:125 msgid "" "Stopping syntax file processing here to avoid a cascade of dependent command " "failures." msgstr "" -#: src/ui/terminal/msg-ui.c:66 +#: src/ui/terminal/msg-ui.c:65 #, c-format msgid "Cannot open %s (%s). Writing errors to stdout instead.\n" msgstr "" -#: src/ui/terminal/msg-ui.c:93 +#: src/ui/terminal/msg-ui.c:92 msgid "Terminating execution of syntax file due to error." msgstr "" -#: src/ui/terminal/msg-ui.c:95 +#: src/ui/terminal/msg-ui.c:94 #, c-format msgid "Errors (%d) exceeds limit (%d)." msgstr "" -#: src/ui/terminal/msg-ui.c:98 +#: src/ui/terminal/msg-ui.c:97 #, c-format msgid "Warnings (%d) exceed limit (%d)." msgstr "" -#: src/ui/terminal/msg-ui.c:147 +#: src/ui/terminal/msg-ui.c:146 msgid "error" msgstr "Fehler" -#: src/ui/terminal/msg-ui.c:148 +#: src/ui/terminal/msg-ui.c:147 msgid "warning" msgstr "Warnung" diff --git a/src/data/ChangeLog b/src/data/ChangeLog index e88749621d..aae7ca9562 100644 --- a/src/data/ChangeLog +++ b/src/data/ChangeLog @@ -1,3 +1,13 @@ +Sat Dec 16 12:17:34 WST 2006 John Darrington + + * dictionary.c dictionary.h vardict.h variable.c: Added optional + callbacks which are invoked when the dictionary or its + variables are changed. + + * missing-values.c missing-values.h value-labels.c: Tidied up + consistency checks, and made some of them return false + instead of assert-failing. + Wed Dec 13 19:30:11 2006 Ben Pfaff * calendar.c (calendar_days_in_month): New function. diff --git a/src/data/dictionary.c b/src/data/dictionary.c index d344e7516a..a5a36527c3 100644 --- a/src/data/dictionary.c +++ b/src/data/dictionary.c @@ -61,14 +61,33 @@ struct dictionary char *documents; /* Documents, as a string. */ struct vector **vector; /* Vectors of variables. */ size_t vector_cnt; /* Number of vectors. */ + const struct dict_callbacks *callbacks; /* Callbacks on dictionary + modification */ + void *cb_data ; /* Data passed to callbacks */ }; + +/* Associate CALLBACKS with DICT. Callbacks will be invoked whenever + the dictionary or any of the variables it contains are modified. + Each callback will get passed CALLBACK_DATA. + Any callback may be NULL, in which case it'll be ignored. +*/ +void +dict_set_callbacks (struct dictionary *dict, + const struct dict_callbacks *callbacks, + void *callback_data) +{ + dict->callbacks = callbacks; + dict->cb_data = callback_data; +} + + /* Creates and returns a new dictionary. */ struct dictionary * -dict_create (void) +dict_create (void) { - struct dictionary *d = xmalloc (sizeof *d); - + struct dictionary *d = xzalloc (sizeof *d); + d->var = NULL; d->var_cnt = d->var_cap = 0; d->name_tab = hsh_create (8, compare_vars_by_name, hash_var_by_name, @@ -90,7 +109,7 @@ dict_create (void) /* Creates and returns a (deep) copy of an existing dictionary. */ struct dictionary * -dict_clone (const struct dictionary *s) +dict_clone (const struct dictionary *s) { struct dictionary *d; size_t i; @@ -99,7 +118,7 @@ dict_clone (const struct dictionary *s) d = dict_create (); - for (i = 0; i < s->var_cnt; i++) + for (i = 0; i < s->var_cnt; i++) { struct variable *sv = s->var[i]; struct variable *dv = dict_clone_var_assert (d, sv, var_get_name (sv)); @@ -109,17 +128,17 @@ dict_clone (const struct dictionary *s) d->next_value_idx = s->next_value_idx; d->split_cnt = s->split_cnt; - if (d->split_cnt > 0) + if (d->split_cnt > 0) { d->split = xnmalloc (d->split_cnt, sizeof *d->split); - for (i = 0; i < d->split_cnt; i++) + for (i = 0; i < d->split_cnt; i++) d->split[i] = dict_lookup_var_assert (d, var_get_name (s->split[i])); } - if (s->weight != NULL) + if (s->weight != NULL) d->weight = dict_lookup_var_assert (d, var_get_name (s->weight)); - if (s->filter != NULL) + if (s->filter != NULL) d->filter = dict_lookup_var_assert (d, var_get_name (s->filter)); d->case_limit = s->case_limit; @@ -137,7 +156,7 @@ dict_clone (const struct dictionary *s) /* Clears the contents from a dictionary without destroying the dictionary itself. */ void -dict_clear (struct dictionary *d) +dict_clear (struct dictionary *d) { /* FIXME? Should we really clear case_limit, label, documents? Others are necessarily cleared by deleting all the variables.*/ @@ -148,7 +167,7 @@ dict_clear (struct dictionary *d) for (i = 0; i < d->var_cnt; i++) { var_clear_vardict (d->var[i]); - var_destroy (d->var[i]); + var_destroy (d->var[i]); } free (d->var); d->var = NULL; @@ -171,12 +190,12 @@ dict_clear (struct dictionary *d) /* Destroys the aux data for every variable in D, by calling var_clear_aux() for each variable. */ void -dict_clear_aux (struct dictionary *d) +dict_clear_aux (struct dictionary *d) { int i; - + assert (d != NULL); - + for (i = 0; i < d->var_cnt; i++) var_clear_aux (d->var[i]); } @@ -185,7 +204,7 @@ dict_clear_aux (struct dictionary *d) void dict_destroy (struct dictionary *d) { - if (d != NULL) + if (d != NULL) { dict_clear (d); hsh_destroy (d->name_tab); @@ -195,7 +214,7 @@ dict_destroy (struct dictionary *d) /* Returns the number of variables in D. */ size_t -dict_get_var_cnt (const struct dictionary *d) +dict_get_var_cnt (const struct dictionary *d) { assert (d != NULL); @@ -206,7 +225,7 @@ dict_get_var_cnt (const struct dictionary *d) must be between 0 and the count returned by dict_get_var_cnt(), exclusive. */ struct variable * -dict_get_var (const struct dictionary *d, size_t idx) +dict_get_var (const struct dictionary *d, size_t idx) { assert (d != NULL); assert (idx < d->var_cnt); @@ -225,14 +244,14 @@ dict_get_vars (const struct dictionary *d, struct variable ***vars, { size_t count; size_t i; - + assert (d != NULL); assert (vars != NULL); assert (cnt != NULL); assert ((exclude_classes & ~((1u << DC_ORDINARY) | (1u << DC_SYSTEM) | (1u << DC_SCRATCH))) == 0); - + count = 0; for (i = 0; i < d->var_cnt; i++) { @@ -240,36 +259,40 @@ dict_get_vars (const struct dictionary *d, struct variable ***vars, if (!(exclude_classes & (1u << class))) count++; } - + *vars = xnmalloc (count, sizeof **vars); *cnt = 0; - for (i = 0; i < d->var_cnt; i++) + for (i = 0; i < d->var_cnt; i++) { enum dict_class class = dict_class_from_id (var_get_name (d->var[i])); if (!(exclude_classes & (1u << class))) - (*vars)[(*cnt)++] = d->var[i]; + (*vars)[(*cnt)++] = d->var[i]; } assert (*cnt == count); } static struct variable * -add_var (struct dictionary *d, struct variable *v) +add_var (struct dictionary *d, struct variable *v) { /* Add dictionary info to variable. */ struct vardict_info vdi; vdi.case_index = d->next_value_idx; vdi.dict_index = d->var_cnt; + vdi.dict = d; var_set_vardict (v, &vdi); /* Update dictionary. */ - if (d->var_cnt >= d->var_cap) + if (d->var_cnt >= d->var_cap) { - d->var_cap = 8 + 2 * d->var_cap; + d->var_cap = 8 + 2 * d->var_cap; d->var = xnrealloc (d->var, d->var_cap, sizeof *d->var); } d->var[d->var_cnt++] = v; hsh_force_insert (d->name_tab, v); + if ( d->callbacks && d->callbacks->var_added ) + d->callbacks->var_added (d, d->next_value_idx, d->cb_data); + d->next_value_idx += var_get_value_cnt (v); return v; @@ -350,12 +373,12 @@ dict_lookup_var_assert (const struct dictionary *d, const char *name) bool dict_contains_var (const struct dictionary *d, const struct variable *v) { - if (var_has_vardict (v)) + if (var_has_vardict (v)) { const struct vardict_info *vdi = var_get_vardict (v); return (vdi->dict_index >= 0 && vdi->dict_index < d->var_cnt - && d->var[vdi->dict_index] == v); + && d->var[vdi->dict_index] == v); } else return false; @@ -378,7 +401,7 @@ set_var_dict_index (struct variable *v, int dict_index) { struct vardict_info vdi = *var_get_vardict (v); vdi.dict_index = dict_index; - var_set_vardict (v, &vdi); + var_set_vardict (v, &vdi); } /* Sets the case_index in V's vardict to DICT_INDEX. */ @@ -387,16 +410,16 @@ set_var_case_index (struct variable *v, int case_index) { struct vardict_info vdi = *var_get_vardict (v); vdi.case_index = case_index; - var_set_vardict (v, &vdi); + var_set_vardict (v, &vdi); } /* Re-sets the dict_index in the dictionary variables with indexes from FROM to TO (exclusive). */ static void -reindex_vars (struct dictionary *d, size_t from, size_t to) +reindex_vars (struct dictionary *d, size_t from, size_t to) { size_t i; - + for (i = from; i < to; i++) set_var_dict_index (d->var[i], i); } @@ -442,9 +465,13 @@ dict_delete_var (struct dictionary *d, struct variable *v) /* Update name hash. */ hsh_force_delete (d->name_tab, v); + /* Free memory. */ var_clear_vardict (v); var_destroy (v); + + if (d->callbacks && d->callbacks->var_deleted ) + d->callbacks->var_deleted (d, dict_index, d->cb_data); } /* Deletes the COUNT variables listed in VARS from D. This is @@ -559,9 +586,9 @@ rename_var (struct dictionary *d, struct variable *v, const char *new_name) /* Changes the name of V in D to name NEW_NAME. Assert-fails if a variable named NEW_NAME is already in D, except that NEW_NAME may be the same as V's existing name. */ -void +void dict_rename_var (struct dictionary *d, struct variable *v, - const char *new_name) + const char *new_name) { assert (!strcasecmp (var_get_name (v), new_name) || dict_lookup_var (d, new_name) == NULL); @@ -572,6 +599,9 @@ dict_rename_var (struct dictionary *d, struct variable *v, if (get_algorithm () == ENHANCED) var_clear_short_name (v); + + if ( d->callbacks && d->callbacks->var_changed ) + d->callbacks->var_changed (d, var_get_dict_index (v), d->cb_data); } /* Renames COUNT variables specified in VARS to the names given @@ -1237,3 +1267,21 @@ dict_assign_short_names (struct dictionary *d) /* Get rid of hash table. */ hsh_destroy (short_names); } + + +/* Called from variable.c to notify the dictionary that some property of + the variable has changed */ +void +dict_var_changed (const struct variable *v) +{ + if ( var_has_vardict (v)) + { + const struct vardict_info *vdi = var_get_vardict (v); + struct dictionary *d; + + d = vdi->dict; + + if ( d->callbacks && d->callbacks->var_changed ) + d->callbacks->var_changed (d, var_get_dict_index (v), d->cb_data); + } +} diff --git a/src/data/dictionary.h b/src/data/dictionary.h index 02e04f67af..7a40e0dc5f 100644 --- a/src/data/dictionary.h +++ b/src/data/dictionary.h @@ -22,11 +22,24 @@ #include #include -/* Dictionary. */ +/* Dictionary. */ struct variable; +struct dictionary; + +struct dict_callbacks + { + void (*var_added) (struct dictionary *, int, void *); + void (*var_deleted) (struct dictionary *, int, void *); + void (*var_changed) (struct dictionary *, int, void *); + }; + + struct dictionary *dict_create (void); struct dictionary *dict_clone (const struct dictionary *); +void dict_set_callbacks (struct dictionary *, const struct dict_callbacks *, + void *); + void dict_clear (struct dictionary *); void dict_clear_aux (struct dictionary *); void dict_destroy (struct dictionary *); @@ -115,4 +128,8 @@ void dict_clear_vectors (struct dictionary *); void dict_assign_short_names (struct dictionary *); +/* Called only from variable.c */ +void dict_var_changed (const struct variable *v); + + #endif /* dictionary.h */ diff --git a/src/data/missing-values.c b/src/data/missing-values.c index fac56d0257..ba9ab53b98 100644 --- a/src/data/missing-values.c +++ b/src/data/missing-values.c @@ -21,6 +21,7 @@ #include #include #include +#include "variable.h" #include @@ -302,17 +303,20 @@ can_resize_string (const char *s, int old_width, int new_width) contains only spaces in the characters that will be trimmed. */ bool -mv_is_resizable (const struct missing_values *mv, int width) +mv_is_resizable (const struct missing_values *mv, int width) { - assert ((width == 0) == (mv->width == 0)); + if ( var_type_from_width (width) != var_type_from_width (mv->width) ) + return false; + if (width > MAX_SHORT_STRING && mv->type != MV_NONE) return false; - else if (width >= mv->width) + + if (width >= mv->width) return true; - else + else { int i; - + for (i = 0; i < 3; i++) if (using_element (mv->type, i) && !can_resize_string (mv->values[i].s, mv->width, width)) diff --git a/src/data/missing-values.h b/src/data/missing-values.h index 5e30c65c67..535e99a863 100644 --- a/src/data/missing-values.h +++ b/src/data/missing-values.h @@ -24,7 +24,7 @@ /* Types of user-missing values. Invisible--use access functions defined below instead. */ -enum mv_type +enum mv_type { MV_NONE = 0, /* No user-missing values. */ MV_1 = 1, /* One user-missing value. */ @@ -36,9 +36,9 @@ enum mv_type /* Missing values. Opaque--use access functions defined below. */ -struct missing_values +struct missing_values { - unsigned type; /* Number and type of missing values. */ + enum mv_type type; /* Number and type of missing values. */ int width; /* 0=numeric, otherwise string width. */ union value values[3]; /* Missing values. [y,z] are the range. */ }; diff --git a/src/data/procedure.h b/src/data/procedure.h index 835f883535..d426c8e432 100644 --- a/src/data/procedure.h +++ b/src/data/procedure.h @@ -57,8 +57,7 @@ bool proc_cancel_temporary_transformations (struct dataset *ds); /* Procedures. */ - -struct dataset *create_dataset (void); +struct dataset * create_dataset (void); void destroy_dataset (struct dataset *); void proc_set_source (struct dataset *ds, struct case_source *); diff --git a/src/data/value-labels.c b/src/data/value-labels.c index 56491535fc..f54a4870fc 100644 --- a/src/data/value-labels.c +++ b/src/data/value-labels.c @@ -90,7 +90,8 @@ val_labs_copy (const struct val_labs *vls) bool val_labs_can_set_width (const struct val_labs *vls, int new_width) { - assert ((vls->width == 0) == (new_width == 0)); + if ( var_type_from_width (new_width) != var_type_from_width (vls->width )) + return false; if (vls->width == 0) return new_width == 0; diff --git a/src/data/vardict.h b/src/data/vardict.h index 8ae7286605..2af9b92b87 100644 --- a/src/data/vardict.h +++ b/src/data/vardict.h @@ -23,11 +23,14 @@ This header file should only be included by variable.c and dictionary.c. */ +struct dictionary ; + /* Dictionary data stored in variable. */ struct vardict_info { int dict_index; /* Dictionary index containing the variable. */ int case_index; /* Index into case of variable data. */ + struct dictionary *dict; /* The dictionary containing the variable */ }; const struct vardict_info *var_get_vardict (const struct variable *); diff --git a/src/data/variable.c b/src/data/variable.c index 9a64da1baf..3a50240340 100644 --- a/src/data/variable.c +++ b/src/data/variable.c @@ -1,5 +1,5 @@ /* PSPP - computes sample statistics. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as @@ -22,13 +22,11 @@ #include #include "cat-routines.h" -#include "category.h" #include "data-out.h" -#include "dictionary.h" #include "format.h" +#include "dictionary.h" #include "identifier.h" #include "missing-values.h" -#include "value.h" #include "value-labels.h" #include "vardict.h" @@ -37,11 +35,8 @@ #include #include #include -#include #include -#include "minmax.h" - #include "gettext.h" #define _(msgid) gettext (msgid) @@ -207,6 +202,7 @@ var_set_name (struct variable *v, const char *name) assert (var_is_plausible_name (name, false)); str_copy_trunc (v->name, sizeof v->name, name); + dict_var_changed (v); } /* Returns true if NAME is an acceptable name for a variable, @@ -353,27 +349,27 @@ var_get_width (const struct variable *v) /* Sets the width of V to WIDTH. */ void -var_set_width (struct variable *v, int new_width) +var_set_width (struct variable *v, int new_width) { enum var_type new_type = var_type_from_width (new_width); - + if (mv_is_resizable (&v->miss, new_width)) mv_resize (&v->miss, new_width); else mv_init (&v->miss, new_width); - if (v->val_labs != NULL) + if (v->val_labs != NULL) { if (val_labs_can_set_width (v->val_labs, new_width)) val_labs_set_width (v->val_labs, new_width); - else + else { val_labs_destroy (v->val_labs); v->val_labs = NULL; } } - - if (var_get_type (v) != new_type) + + if (var_get_type (v) != new_type) { v->print = (new_type == VAR_NUMERIC ? fmt_for_output (FMT_F, 8, 2) @@ -387,6 +383,8 @@ var_set_width (struct variable *v, int new_width) } v->width = new_width; + + dict_var_changed (v); } /* Returns true if variable V is numeric, false otherwise. */ @@ -450,6 +448,8 @@ var_set_missing_values (struct variable *v, const struct missing_values *miss) } else mv_init (&v->miss, v->width); + + dict_var_changed (v); } /* Sets variable V to have no user-missing values. */ @@ -557,6 +557,7 @@ var_set_value_labels (struct variable *v, const struct val_labs *vls) assert (val_labs_can_set_width (vls, v->width)); v->val_labs = val_labs_copy (vls); val_labs_set_width (v->val_labs, v->width); + dict_var_changed (v); } } @@ -642,6 +643,7 @@ var_set_print_format (struct variable *v, const struct fmt_spec *print) { assert (fmt_check_width_compat (print, v->width)); v->print = *print; + dict_var_changed (v); } /* Returns V's write format specification. */ @@ -659,6 +661,7 @@ var_set_write_format (struct variable *v, const struct fmt_spec *write) { assert (fmt_check_width_compat (write, v->width)); v->write = *write; + dict_var_changed (v); } /* Sets V's print and write format specifications to FORMAT, @@ -705,6 +708,7 @@ var_set_label (struct variable *v, const char *label) ss_truncate (&s, 255); if (!ss_is_empty (s)) v->label = ss_xstrdup (s); + dict_var_changed (v); } } @@ -744,6 +748,7 @@ var_set_measure (struct variable *v, enum measure measure) { assert (measure_is_valid (measure)); v->measure = measure; + dict_var_changed (v); } /* Returns V's display width, which applies only to GUIs. */ @@ -753,11 +758,15 @@ var_get_display_width (const struct variable *v) return v->display_width; } + + + /* Sets V's display width to DISPLAY_WIDTH. */ void var_set_display_width (struct variable *v, int display_width) { v->display_width = display_width; + dict_var_changed (v); } /* Returns true if A is a valid alignment, @@ -781,6 +790,7 @@ var_set_alignment (struct variable *v, enum alignment alignment) { assert (alignment_is_valid (alignment)); v->alignment = alignment; + dict_var_changed (v); } /* Whether variables' values should be preserved from case to @@ -800,6 +810,7 @@ var_set_leave (struct variable *v, bool leave) { assert (leave || !var_must_leave (v)); v->leave = leave; + dict_var_changed (v); } /* Returns true if V must be left from case to case, @@ -841,6 +852,7 @@ var_set_short_name (struct variable *v, const char *short_name) } else v->short_name[0] = '\0'; + dict_var_changed (v); } /* Clears V's short name. */ diff --git a/src/language/expressions/evaluate.c b/src/language/expressions/evaluate.c index 471c411850..aeb374ced5 100644 --- a/src/language/expressions/evaluate.c +++ b/src/language/expressions/evaluate.c @@ -155,13 +155,13 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED) lex_error (lexer, _("expecting number or string")); goto done; } - - if ( ds == NULL ) + + if ( ds == NULL ) { ds = create_dataset (); d = dataset_dict (ds); } - + old_value_cnt = dict_get_next_value_idx (d); v = dict_create_var (d, name, width); if (v == NULL) diff --git a/src/language/stats/aggregate.c b/src/language/stats/aggregate.c index 883f12fd9d..4c85592bc5 100644 --- a/src/language/stats/aggregate.c +++ b/src/language/stats/aggregate.c @@ -188,7 +188,7 @@ cmd_aggregate (struct lexer *lexer, struct dataset *ds) memset(&agr, 0 , sizeof (agr)); agr.missing = ITEMWISE; case_nullify (&agr.break_case); - + agr.dict = dict_create (); agr.src_dict = dict; dict_set_label (agr.dict, dict_get_label (dict)); diff --git a/src/ui/gui/ChangeLog b/src/ui/gui/ChangeLog index 1fbddc3e5e..c8ea53ce6c 100644 --- a/src/ui/gui/ChangeLog +++ b/src/ui/gui/ChangeLog @@ -1,3 +1,19 @@ +Sat Dec 16 12:24:35 WST 2006 John Darrington + + * psppire-variable.c psppire-variable.h: Deleted. + + * psppire-dict.c psppire-dict.h: Removed the caching of the variable + data, which is now unecessary because src/data/vardict.h maintains + an association between variables and their dictionary. + + * data-sheet.c menu-actions.c missing-val-dialog.c + missing-val-dialog.h psppire-data-store.c + psppire-var-store.c psppire-var-store.h + sort-cases-dialog.c val-labs-dialog.c val-labs-dialog.h + var-sheet.c var-type-dialog.c var-type-dialog.h: Dealt with the + consequences of deleting psppire-variable.[ch]. + + Sat Dec 9 20:03:04 2006 Ben Pfaff * var-type-dialog.c (var_type_dialog_create): Use diff --git a/src/ui/gui/automake.mk b/src/ui/gui/automake.mk index e198b7e327..2e537cfdb7 100644 --- a/src/ui/gui/automake.mk +++ b/src/ui/gui/automake.mk @@ -55,8 +55,6 @@ src_ui_gui_psppire_SOURCES = \ src/ui/gui/psppire-dict.h \ src/ui/gui/psppire-object.c \ src/ui/gui/psppire-object.h \ - src/ui/gui/psppire-variable.c \ - src/ui/gui/psppire-variable.h \ src/ui/gui/psppire-var-store.c \ src/ui/gui/psppire-var-store.h \ src/ui/gui/sort-cases-dialog.c \ diff --git a/src/ui/gui/data-sheet.c b/src/ui/gui/data-sheet.c index de4a357bf3..a1301d19a6 100644 --- a/src/ui/gui/data-sheet.c +++ b/src/ui/gui/data-sheet.c @@ -29,7 +29,6 @@ #include #include "psppire-dict.h" -#include "psppire-variable.h" #include "psppire-data-store.h" #include "helper.h" @@ -103,7 +102,7 @@ update_data_ref_entry(const GtkSheet *sheet, gint row, gint col) PsppireDataStore *data_store = PSPPIRE_DATA_STORE(gtk_sheet_get_model(sheet)); if (data_store) { - const struct PsppireVariable *pv = + const struct variable *pv = psppire_dict_get_variable(data_store->dict, col); gchar *text ; @@ -113,7 +112,7 @@ update_data_ref_entry(const GtkSheet *sheet, gint row, gint col) return FALSE; text = g_strdup_printf("%d: %s", row, - pv ? psppire_variable_get_name(pv) : ""); + pv ? var_get_name (pv) : ""); cell_ref_entry = GTK_ENTRY(get_widget_assert(xml, "cell_ref_entry")); diff --git a/src/ui/gui/menu-actions.c b/src/ui/gui/menu-actions.c index ce9732826a..f30bf74f75 100644 --- a/src/ui/gui/menu-actions.c +++ b/src/ui/gui/menu-actions.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -39,7 +40,7 @@ #include #include "helper.h" #include "menu-actions.h" -#include "psppire-variable.h" + #include "psppire-dict.h" #include "var-sheet.h" @@ -398,24 +399,24 @@ on_clear_activate (GtkMenuItem *menuitem, case GTK_SHEET_COLUMN_SELECTED: { gint fv; - struct PsppireVariable *pv = - psppire_dict_get_variable(the_dictionary, - data_sheet->range.col0); - fv = psppire_variable_get_fv(pv); + struct variable *pv = + psppire_dict_get_variable (the_dictionary, + data_sheet->range.col0); + fv = var_get_case_index (pv); - psppire_dict_delete_variables(the_dictionary, - data_sheet->range.col0, - 1); + psppire_dict_delete_variables (the_dictionary, + data_sheet->range.col0, + 1); - psppire_case_file_insert_values(data_store->case_file, - -1, fv); + psppire_case_file_insert_values (data_store->case_file, + -1, fv); } break; default: - gtk_sheet_cell_clear(data_sheet, - data_sheet->active_cell.row, - data_sheet->active_cell.col); + gtk_sheet_cell_clear (data_sheet, + data_sheet->active_cell.row, + data_sheet->active_cell.col); break; } diff --git a/src/ui/gui/missing-val-dialog.c b/src/ui/gui/missing-val-dialog.c index 945cebe3aa..78714fd959 100644 --- a/src/ui/gui/missing-val-dialog.c +++ b/src/ui/gui/missing-val-dialog.c @@ -1,4 +1,4 @@ -/* +/* PSPPIRE --- A Graphical User Interface for PSPP Copyright (C) 2005, 2006 Free Software Foundation Written by John Darrington @@ -32,7 +32,7 @@ #include #include #include -#include "psppire-variable.h" + #include #include @@ -84,7 +84,7 @@ missing_val_dialog_accept(GtkWidget *w, gpointer data) { struct missing_val_dialog *dialog = data; - const struct fmt_spec *write_spec = psppire_variable_get_write_spec(dialog->pv); + const struct fmt_spec *write_spec = var_get_write_format (dialog->pv); if ( gtk_toggle_button_get_active(dialog->button_discrete)) { @@ -174,9 +174,9 @@ missing_val_dialog_accept(GtkWidget *w, gpointer data) if (gtk_toggle_button_get_active(dialog->button_none)) mv_set_type(&dialog->mvl, MV_NONE); - psppire_variable_set_missing(dialog->pv, &dialog->mvl); + var_set_missing_values (dialog->pv, &dialog->mvl); - gtk_widget_hide(dialog->window); + gtk_widget_hide (dialog->window); } @@ -266,9 +266,9 @@ missing_val_dialog_show(struct missing_val_dialog *dialog) g_return_if_fail(dialog); g_return_if_fail(dialog->pv); - mv_copy (&dialog->mvl, psppire_variable_get_missing(dialog->pv)); + mv_copy (&dialog->mvl, var_get_missing_values (dialog->pv)); - write_spec = psppire_variable_get_write_spec(dialog->pv); + write_spec = var_get_write_format (dialog->pv); /* Blank all entry boxes and make them insensitive */ gtk_entry_set_text(GTK_ENTRY(dialog->low), ""); @@ -278,10 +278,11 @@ missing_val_dialog_show(struct missing_val_dialog *dialog) gtk_widget_set_sensitive(dialog->high, FALSE); gtk_widget_set_sensitive(dialog->discrete, FALSE); - gtk_widget_set_sensitive(GTK_WIDGET(dialog->button_range), - psppire_variable_get_type(dialog->pv) == VAR_NUMERIC); + gtk_widget_set_sensitive(GTK_WIDGET(dialog->button_range), + var_is_numeric (dialog->pv)); - for(i = 0 ; i < 3 ; ++i ) + + for(i = 0 ; i < 3 ; ++i ) { gtk_entry_set_text(GTK_ENTRY(dialog->mv[i]), ""); gtk_widget_set_sensitive(dialog->mv[i], FALSE); diff --git a/src/ui/gui/missing-val-dialog.h b/src/ui/gui/missing-val-dialog.h index 44f025e68c..210ee193c8 100644 --- a/src/ui/gui/missing-val-dialog.h +++ b/src/ui/gui/missing-val-dialog.h @@ -35,8 +35,8 @@ struct missing_val_dialog GtkWidget *window; /* The variable whose missing values are to be updated */ - struct PsppireVariable *pv; - + struct variable *pv; + /* local copy */ struct missing_values mvl; diff --git a/src/ui/gui/psppire-data-store.c b/src/ui/gui/psppire-data-store.c index 59c7f4947c..660e24dd35 100644 --- a/src/ui/gui/psppire-data-store.c +++ b/src/ui/gui/psppire-data-store.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -36,7 +37,6 @@ #include -#include "psppire-variable.h" #include "psppire-data-store.h" #include "psppire-case-file.h" #include "helper.h" @@ -299,10 +299,10 @@ insert_variable_callback(GObject *obj, gint var_num, gpointer data) if ( var_num > 0 ) { - struct PsppireVariable *variable; + struct variable *variable; variable = psppire_dict_get_variable(store->dict, var_num); - posn = psppire_variable_get_fv(variable); + posn = var_get_case_index (variable); } else { @@ -441,11 +441,11 @@ psppire_data_store_insert_new_case(PsppireDataStore *ds, gint posn) for (v = 0 ; v < psppire_dict_get_var_cnt (ds->dict) ; ++v) { - const struct PsppireVariable *pv = psppire_dict_get_variable(ds->dict, v); - if (VAR_STRING == psppire_variable_get_type(pv) ) + const struct variable *pv = psppire_dict_get_variable (ds->dict, v); + if ( var_is_alpha (pv)) continue; - case_data_rw_idx (&cc, psppire_variable_get_fv (pv))->f = SYSMIS; + case_data_rw (&cc, pv)->f = SYSMIS; } result = psppire_case_file_insert_case (ds->case_file, &cc, posn); @@ -462,7 +462,7 @@ psppire_data_store_get_string (const GSheetModel *model, gint row, gint column) gint idx; char *text; const struct fmt_spec *fp ; - const struct PsppireVariable *pv ; + const struct variable *pv ; const union value *v ; GString *s; PsppireDataStore *store = PSPPIRE_DATA_STORE(model); @@ -478,7 +478,7 @@ psppire_data_store_get_string (const GSheetModel *model, gint row, gint column) pv = psppire_dict_get_variable (store->dict, column); - idx = psppire_variable_get_fv (pv); + idx = var_get_case_index (pv); v = psppire_case_file_get_value (store->case_file, row, idx); @@ -486,7 +486,7 @@ psppire_data_store_get_string (const GSheetModel *model, gint row, gint column) if ( store->show_labels) { - const struct val_labs * vl = psppire_variable_get_value_labels (pv); + const struct val_labs * vl = var_get_value_labels (pv); const gchar *label; if ( (label = val_labs_find(vl, *v)) ) @@ -495,7 +495,7 @@ psppire_data_store_get_string (const GSheetModel *model, gint row, gint column) } } - fp = psppire_variable_get_write_spec (pv); + fp = var_get_write_format (pv); s = g_string_sized_new (fp->w + 1); g_string_set_size (s, fp->w); @@ -526,17 +526,18 @@ psppire_data_store_clear_datum (GSheetModel *model, PsppireDataStore *store = PSPPIRE_DATA_STORE(model); union value v; - const struct PsppireVariable *pv = psppire_dict_get_variable(store->dict, col); + const struct variable *pv = psppire_dict_get_variable (store->dict, col); - const gint index = psppire_variable_get_fv(pv) ; + const gint index = var_get_case_index (pv) ; - if ( psppire_variable_get_type(pv) == VAR_NUMERIC) + if ( var_is_numeric (pv)) v.f = SYSMIS; else memcpy(v.s, "", MAX_SHORT_STRING); psppire_case_file_set_value(store->case_file, row, index, &v, - psppire_variable_get_width(pv)); + var_get_width (pv)); + return TRUE; } @@ -551,7 +552,7 @@ psppire_data_store_set_string(GSheetModel *model, { PsppireDataStore *store = PSPPIRE_DATA_STORE(model); - const struct PsppireVariable *pv = psppire_dict_get_variable(store->dict, col); + const struct variable *pv = psppire_dict_get_variable(store->dict, col); g_return_val_if_fail(pv, FALSE); #if 0 @@ -570,8 +571,8 @@ psppire_data_store_set_string(GSheetModel *model, #endif psppire_case_file_data_in (store->case_file, row, - psppire_variable_get_fv (pv), ss_cstr (text), - psppire_variable_get_write_spec (pv)); + var_get_case_index (pv), ss_cstr (text), + var_get_write_format (pv)); return TRUE; } @@ -677,18 +678,18 @@ geometry_get_column_count(const GSheetColumn *geom) static gint geometry_get_width(const GSheetColumn *geom, gint unit) { - const struct PsppireVariable *pv ; + const struct variable *pv ; PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom); if ( unit >= psppire_dict_get_var_cnt(ds->dict) ) return ds->width_of_m * 8 ; - pv = psppire_dict_get_variable(ds->dict, unit); + pv = psppire_dict_get_variable (ds->dict, unit); if ( pv == NULL ) return ds->width_of_m * 8 ; - return ds->width_of_m * psppire_variable_get_columns(pv); + return ds->width_of_m * var_get_display_width (pv); } static void @@ -696,9 +697,9 @@ geometry_set_width(GSheetColumn *geom, gint unit, gint width) { PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom); - struct PsppireVariable *pv = psppire_dict_get_variable(ds->dict, unit); + struct variable *pv = psppire_dict_get_variable (ds->dict, unit); - psppire_variable_set_columns(pv, width / ds->width_of_m ); + var_set_display_width (pv, width / ds->width_of_m ); } @@ -707,7 +708,7 @@ static GtkJustification geometry_get_justification(const GSheetColumn *geom, gint unit) { PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom); - const struct PsppireVariable *pv ; + const struct variable *pv ; if ( unit >= psppire_dict_get_var_cnt(ds->dict) ) @@ -717,7 +718,7 @@ geometry_get_justification(const GSheetColumn *geom, gint unit) /* Kludge: Happily GtkJustification is defined similarly to enum alignment from pspp/variable.h */ - return psppire_variable_get_alignment(pv); + return var_get_alignment(pv); } @@ -727,15 +728,15 @@ static gchar * geometry_get_column_button_label(const GSheetColumn *geom, gint unit) { gchar *text; - struct PsppireVariable *pv ; + struct variable *pv ; PsppireDataStore *ds = PSPPIRE_DATA_STORE(geom); if ( unit >= psppire_dict_get_var_cnt(ds->dict) ) return g_locale_to_utf8(null_var_name, -1, 0, 0, 0); - pv = psppire_dict_get_variable(ds->dict, unit); + pv = psppire_dict_get_variable (ds->dict, unit); - text = pspp_locale_to_utf8(psppire_variable_get_name(pv), -1, 0); + text = pspp_locale_to_utf8 (var_get_name (pv), -1, 0); return text; } diff --git a/src/ui/gui/psppire-dict.c b/src/ui/gui/psppire-dict.c index 94023f55bd..0d700fe5a4 100644 --- a/src/ui/gui/psppire-dict.c +++ b/src/ui/gui/psppire-dict.c @@ -31,10 +31,9 @@ #include #include #include - +#include #include "message-dialog.h" -#include "psppire-variable.h" /* --- prototypes --- */ static void psppire_dict_class_init (PsppireDictClass *class); @@ -165,27 +164,46 @@ psppire_dict_class_init (PsppireDictClass *class) static void psppire_dict_finalize (GObject *object) { - gint v; PsppireDict *d = PSPPIRE_DICT (object); - - for (v = 0 ; v < psppire_dict_get_var_cnt(d) ; ++v ) - g_free(d->variables[v]); - - g_free(d->variables); - d->cache_size = 0; dict_destroy(d->dict); G_OBJECT_CLASS (parent_class)->finalize (object); } +/* Pass on callbacks from src/data/dictionary, as + signals in the Gtk library */ +static void +addcb (struct dictionary *d, int idx, void *pd) +{ + g_signal_emit(pd, signal[VARIABLE_INSERTED], 0, idx); +} + +static void +delcb (struct dictionary *d, int idx, void *pd) +{ + g_signal_emit(pd, signal[VARIABLES_DELETED], 0, idx, 1); +} + +static void +mutcb (struct dictionary *d, int idx, void *pd) +{ + g_signal_emit(pd, signal[VARIABLE_CHANGED], 0, idx); +} + +static const struct dict_callbacks gui_callbacks = + { + addcb, + delcb, + mutcb + }; + static void psppire_dict_init (PsppireDict *psppire_dict) { - psppire_dict->dict = dict_create(); + psppire_dict->dict = dict_create (); - psppire_dict->variables = 0; - psppire_dict->cache_size = 0; + dict_set_callbacks (psppire_dict->dict, &gui_callbacks, psppire_dict); psppire_dict->stamp = g_random_int(); } @@ -193,8 +211,8 @@ psppire_dict_init (PsppireDict *psppire_dict) /** * psppire_dict_new: * @returns: a new #PsppireDict object - * - * Creates a new #PsppireDict. + * + * Creates a new #PsppireDict. */ PsppireDict* psppire_dict_new (void) @@ -206,18 +224,14 @@ psppire_dict_new (void) /** * psppire_dict_new_from_dict: * @returns: a new #PsppireDict object - * - * Creates a new #PsppireDict. + * + * Creates a new #PsppireDict. */ PsppireDict* psppire_dict_new_from_dict (struct dictionary *d) { PsppireDict *new_dict = g_object_new (G_TYPE_PSPPIRE_DICT, NULL); new_dict->dict = d; - new_dict->cache_size = dict_get_var_cnt(d); - new_dict->variables = g_malloc0(sizeof(struct PsppireVariable *) * - new_dict->cache_size); - return new_dict; } @@ -226,12 +240,11 @@ psppire_dict_new_from_dict (struct dictionary *d) /* Returns a valid name for a new variable in DICT. The return value is statically allocated */ static gchar * -auto_generate_var_name(PsppireDict *dict) +auto_generate_var_name (PsppireDict *dict) { gint d = 0; static gchar name[10]; - while (g_snprintf(name, 10, "VAR%05d",d++), psppire_dict_lookup_var(dict, name)) ; @@ -246,32 +259,10 @@ void psppire_dict_insert_variable(PsppireDict *d, gint idx, const gchar *name) { struct variable *var ; - gint i; g_return_if_fail(d); g_return_if_fail(G_IS_PSPPIRE_DICT(d)); - /* Invalidate the cache from IDX onwards */ - for ( i = idx ; i < d->cache_size ; ++i ) - { - g_free(d->variables[i]); - d->variables[i] = 0; - } - - /* Ensure that the cache is large enough */ - if ( dict_get_var_cnt(d->dict) >= d->cache_size ) - { - d->variables = g_realloc(d->variables, sizeof(struct PsppireVariable*) * - (d->cache_size + CACHE_CHUNK)); - d->cache_size += CACHE_CHUNK; - } - - /* Zero the new pointers */ - for ( ; i < d->cache_size ; ++i ) - { - d->variables[i] = 0; - } - if ( ! name ) name = auto_generate_var_name(d); @@ -279,10 +270,6 @@ psppire_dict_insert_variable(PsppireDict *d, gint idx, const gchar *name) dict_reorder_var(d->dict, var, idx); - d->variables[idx] = g_malloc(sizeof (struct PsppireVariable)); - d->variables[idx]->v = var; - d->variables[idx]->dict = d; - g_signal_emit(d, signal[VARIABLE_INSERTED], 0, idx ); } @@ -295,13 +282,6 @@ psppire_dict_delete_variables(PsppireDict *d, gint first, gint n) g_return_if_fail(d->dict); g_return_if_fail(G_IS_PSPPIRE_DICT(d)); - /* Invalidate all pvs from FIRST onwards */ - for ( idx = first ; idx < d->cache_size ; ++idx ) - { - g_free(d->variables[idx]); - d->variables[idx] = 0; - } - for (idx = 0 ; idx < n ; ++idx ) { struct variable *var; @@ -345,42 +325,27 @@ psppire_dict_set_name(PsppireDict* d, gint idx, const gchar *name) /* Return the IDXth variable */ -struct PsppireVariable * +struct variable * psppire_dict_get_variable(PsppireDict *d, gint idx) { - struct PsppireVariable *var ; g_return_val_if_fail(d, NULL); g_return_val_if_fail(d->dict, NULL); - if ( ! d->variables) + if ( dict_get_var_cnt (d->dict) <= idx ) return NULL; - - if (idx < 0 || idx >= psppire_dict_get_var_cnt(d)) - return NULL; - - var = d->variables[idx] ; - if (! var ) - { - var = g_malloc(sizeof (*var)); - var->dict = d; - var->v = dict_get_var(d->dict, idx); - d->variables[idx] = var; - } - - return var; + return dict_get_var (d->dict, idx); } /* Return the number of variables in the dictionary */ -gint -psppire_dict_get_var_cnt(const PsppireDict *d) +gint +psppire_dict_get_var_cnt (const PsppireDict *d) { - g_return_val_if_fail(d, -1); - g_return_val_if_fail(d->dict, -1); - + g_return_val_if_fail (d, -1); + g_return_val_if_fail (d->dict, -1); - return dict_get_var_cnt(d->dict); + return dict_get_var_cnt (d->dict); } @@ -390,15 +355,15 @@ psppire_dict_get_var_cnt(const PsppireDict *d) struct variable * psppire_dict_lookup_var (const PsppireDict *d, const gchar *name) { - g_return_val_if_fail(d, NULL); - g_return_val_if_fail(d->dict, NULL); + g_return_val_if_fail (d, NULL); + g_return_val_if_fail (d->dict, NULL); - return dict_lookup_var(d->dict, name); + return dict_lookup_var (d->dict, name); } void -psppire_dict_var_changed(PsppireDict *d, gint idx) +psppire_dict_var_changed (PsppireDict *d, gint idx) { g_return_if_fail(d); @@ -407,7 +372,7 @@ psppire_dict_var_changed(PsppireDict *d, gint idx) /* Clears the contents of D */ -void +void psppire_dict_clear(PsppireDict *d) { g_return_if_fail(d); @@ -415,29 +380,21 @@ psppire_dict_clear(PsppireDict *d) { const gint n_vars = dict_get_var_cnt(d->dict); - gint i; - - dict_clear(d->dict); - /* Invalidate the entire cache */ - for ( i = 0 ; i < d->cache_size ; ++i ) - { - g_free(d->variables[i]); - d->variables[i] = 0; - } + dict_clear(d->dict); - g_signal_emit(d, signal[VARIABLES_DELETED], 0, 0, n_vars ); + g_signal_emit(d, signal[VARIABLES_DELETED], 0, 0, n_vars ); } } -/* Return true is NAME would be a valid name of a variable to add to the - dictionary. False otherwise. +/* Return true is NAME would be a valid name of a variable to add to the + dictionary. False otherwise. If REPORT is true, then invalid names will be reported as such as errors */ gboolean -psppire_dict_check_name(const PsppireDict *dict, +psppire_dict_check_name(const PsppireDict *dict, const gchar *name, gboolean report) { if ( ! var_is_valid_name(name, report ) ) @@ -445,7 +402,7 @@ psppire_dict_check_name(const PsppireDict *dict, if (psppire_dict_lookup_var(dict, name)) { - if ( report ) + if ( report ) msg(ME,"Duplicate variable name."); return FALSE; } @@ -454,62 +411,59 @@ psppire_dict_check_name(const PsppireDict *dict, } -inline gint +inline gint psppire_dict_get_next_value_idx (const PsppireDict *dict) { return dict_get_next_value_idx(dict->dict); } -void -psppire_dict_resize_variable(PsppireDict *d, const struct PsppireVariable *pv, - gint old_size, gint new_size) +void +psppire_dict_resize_variable (PsppireDict *d, const struct variable *pv, + gint old_size, gint new_size) { gint fv; g_return_if_fail (d); g_return_if_fail (d->dict); - - if ( old_size == new_size ) + + if ( old_size == new_size ) return ; - dict_compact_values(d->dict); + dict_compact_values (d->dict); - fv = psppire_variable_get_fv(pv); + fv = var_get_case_index (pv); - g_signal_emit(d, signal[VARIABLE_RESIZED], 0, - fv + old_size, - new_size - old_size ); + g_signal_emit(d, signal[VARIABLE_RESIZED], 0, + fv + old_size, + new_size - old_size ); } - - - /* Tree Model Stuff */ -static GtkTreeModelFlags tree_model_get_flags(GtkTreeModel *model); +static GtkTreeModelFlags tree_model_get_flags (GtkTreeModel *model); -static gint tree_model_n_columns(GtkTreeModel *model); +static gint tree_model_n_columns (GtkTreeModel *model); -static GType tree_model_column_type(GtkTreeModel *model, gint index); +static GType tree_model_column_type (GtkTreeModel *model, gint index); -static gboolean tree_model_get_iter(GtkTreeModel *model, GtkTreeIter *iter, - GtkTreePath *path); +static gboolean tree_model_get_iter (GtkTreeModel *model, GtkTreeIter *iter, + GtkTreePath *path); -static gboolean tree_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter); +static gboolean tree_model_iter_next (GtkTreeModel *model, GtkTreeIter *iter); -static GtkTreePath * tree_model_get_path(GtkTreeModel *model, - GtkTreeIter *iter); +static GtkTreePath * tree_model_get_path (GtkTreeModel *model, + GtkTreeIter *iter); -static void tree_model_get_value(GtkTreeModel *model, GtkTreeIter *iter, - gint column, GValue *value); +static void tree_model_get_value (GtkTreeModel *model, GtkTreeIter *iter, + gint column, GValue *value); -static gboolean tree_model_nth_child(GtkTreeModel *model, GtkTreeIter *iter, - GtkTreeIter *parent, gint n); +static gboolean tree_model_nth_child (GtkTreeModel *model, GtkTreeIter *iter, + GtkTreeIter *parent, gint n); static void -dictionary_tree_model_init(GtkTreeModelIface *iface) +dictionary_tree_model_init (GtkTreeModelIface *iface) { iface->get_flags = tree_model_get_flags; iface->get_n_columns = tree_model_n_columns; @@ -527,40 +481,40 @@ dictionary_tree_model_init(GtkTreeModelIface *iface) } static GtkTreeModelFlags -tree_model_get_flags(GtkTreeModel *model) +tree_model_get_flags (GtkTreeModel *model) { - g_return_val_if_fail(G_IS_PSPPIRE_DICT(model), (GtkTreeModelFlags) 0); + g_return_val_if_fail (G_IS_PSPPIRE_DICT(model), (GtkTreeModelFlags) 0); return GTK_TREE_MODEL_LIST_ONLY; } static gint -tree_model_n_columns(GtkTreeModel *model) +tree_model_n_columns (GtkTreeModel *model) { return n_DICT_COLS; } static GType -tree_model_column_type(GtkTreeModel *model, gint index) +tree_model_column_type (GtkTreeModel *model, gint index) { - g_return_val_if_fail(G_IS_PSPPIRE_DICT(model), (GType) 0); - - switch(index) - { - case DICT_TVM_COL_NAME: - return G_TYPE_STRING; - break; - case DICT_TVM_COL_VAR: - return G_TYPE_POINTER; - break; - default: - g_return_val_if_reached((GType)0); - break; - } - - g_assert_not_reached(); - return ((GType)0); + g_return_val_if_fail (G_IS_PSPPIRE_DICT(model), (GType) 0); + + switch(index) + { + case DICT_TVM_COL_NAME: + return G_TYPE_STRING; + break; + case DICT_TVM_COL_VAR: + return G_TYPE_POINTER; + break; + default: + g_return_val_if_reached((GType)0); + break; + } + + g_assert_not_reached(); + return ((GType)0); } static gboolean @@ -568,28 +522,28 @@ tree_model_get_iter(GtkTreeModel *model, GtkTreeIter *iter, GtkTreePath *path) { gint *indices, depth; gint n; - struct PsppireVariable *variable; + struct variable *variable; PsppireDict *dict = PSPPIRE_DICT (model); - g_return_val_if_fail(path, FALSE); + g_return_val_if_fail (path, FALSE); - indices = gtk_tree_path_get_indices(path); - depth = gtk_tree_path_get_depth(path); + indices = gtk_tree_path_get_indices (path); + depth = gtk_tree_path_get_depth (path); g_return_val_if_fail(depth == 1, FALSE); n = indices[0]; - if ( n < 0 || n >= psppire_dict_get_var_cnt(dict)) + if ( n < 0 || n >= psppire_dict_get_var_cnt (dict)) return FALSE; - variable = psppire_dict_get_variable(dict, n); + variable = dict_get_var (dict->dict, n); - g_assert(psppire_variable_get_index(variable) == n); + g_assert (var_get_dict_index (variable) == n); iter->stamp = dict->stamp; - iter->user_data = variable; + iter->user_data = variable; return TRUE; } @@ -599,7 +553,7 @@ static gboolean tree_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter) { PsppireDict *dict = PSPPIRE_DICT (model); - struct PsppireVariable *variable; + struct variable *variable; gint idx; g_return_val_if_fail(iter->stamp == dict->stamp, FALSE); @@ -607,17 +561,17 @@ tree_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter) if ( iter == NULL || iter->user_data == NULL) return FALSE; - variable = (struct PsppireVariable *) iter->user_data; + variable = (struct variable *) iter->user_data; + + idx = var_get_dict_index (variable); - idx = psppire_variable_get_index(variable); - if ( idx + 1 >= psppire_dict_get_var_cnt(dict)) return FALSE; - variable = psppire_dict_get_variable(dict, idx + 1); + variable = psppire_dict_get_variable (dict, idx + 1); + + g_assert (var_get_dict_index (variable) == idx + 1); - g_assert(psppire_variable_get_index(variable) == idx + 1); - iter->user_data = variable; return TRUE; @@ -627,15 +581,15 @@ static GtkTreePath * tree_model_get_path(GtkTreeModel *model, GtkTreeIter *iter) { GtkTreePath *path; - struct PsppireVariable *variable; + struct variable *variable; PsppireDict *dict = PSPPIRE_DICT (model); g_return_val_if_fail(iter->stamp == dict->stamp, FALSE); - variable = (struct PsppireVariable *) iter->user_data; + variable = (struct variable *) iter->user_data; path = gtk_tree_path_new(); - gtk_tree_path_append_index(path, psppire_variable_get_index(variable)); + gtk_tree_path_append_index(path, var_get_dict_index (variable)); return path; } @@ -645,18 +599,18 @@ static void tree_model_get_value(GtkTreeModel *model, GtkTreeIter *iter, gint column, GValue *value) { - struct PsppireVariable *variable; + struct variable *variable; PsppireDict *dict = PSPPIRE_DICT (model); g_return_if_fail(iter->stamp == dict->stamp); - variable = (struct PsppireVariable *) iter->user_data; + variable = (struct variable *) iter->user_data; switch(column) { case DICT_TVM_COL_NAME: g_value_init(value, G_TYPE_STRING); - g_value_set_string(value, psppire_variable_get_name(variable)); + g_value_set_string(value, var_get_name(variable)); break; case DICT_TVM_COL_VAR: g_value_init(value, G_TYPE_POINTER); @@ -670,7 +624,7 @@ tree_model_get_value(GtkTreeModel *model, GtkTreeIter *iter, static gboolean -tree_model_nth_child(GtkTreeModel *model, GtkTreeIter *iter, +tree_model_nth_child(GtkTreeModel *model, GtkTreeIter *iter, GtkTreeIter *parent, gint n) { PsppireDict *dict; @@ -678,18 +632,26 @@ tree_model_nth_child(GtkTreeModel *model, GtkTreeIter *iter, dict = PSPPIRE_DICT(model); - if ( parent ) + if ( parent ) return FALSE; - if ( n >= psppire_dict_get_var_cnt(dict) ) + if ( n >= psppire_dict_get_var_cnt(dict) ) return FALSE; iter->stamp = dict->stamp; iter->user_data = psppire_dict_get_variable(dict, n); - if ( !iter->user_data) + if ( !iter->user_data) return FALSE; - - + + return TRUE; } + + +void +psppire_dict_rename_var (PsppireDict *dict, struct variable *v, + const gchar *text) +{ + dict_rename_var (dict->dict, v, text); +} diff --git a/src/ui/gui/psppire-dict.h b/src/ui/gui/psppire-dict.h index e71ef20403..e7acb1e046 100644 --- a/src/ui/gui/psppire-dict.h +++ b/src/ui/gui/psppire-dict.h @@ -54,11 +54,6 @@ struct _PsppireDict GObject parent; struct dictionary *dict; - /* Cache of variables */ - struct PsppireVariable **variables; - - gint cache_size; - /* For GtkTreeModelIface */ gint stamp; }; @@ -94,7 +89,7 @@ void psppire_dict_clear(PsppireDict *d); /* Return the IDXth variable */ -struct PsppireVariable * psppire_dict_get_variable(PsppireDict *d, gint idx); +struct variable * psppire_dict_get_variable (PsppireDict *d, gint idx); /* Delete N variables beginning at FIRST */ void psppire_dict_delete_variables(PsppireDict *d, gint first, gint n); @@ -102,15 +97,18 @@ void psppire_dict_delete_variables(PsppireDict *d, gint first, gint n); /* Insert a new variable at posn IDX */ void psppire_dict_insert_variable(PsppireDict *d, gint idx, const gchar *name); -void psppire_dict_resize_variable(PsppireDict *d, - const struct PsppireVariable *pv, - gint old_size, gint new_size); +void psppire_dict_resize_variable(PsppireDict *, + const struct variable *, + gint, gint ); gboolean psppire_dict_check_name(const PsppireDict *dict, const gchar *name, gboolean report); gint psppire_dict_get_next_value_idx (const PsppireDict *dict); +void psppire_dict_rename_var (PsppireDict *dict, struct variable *v, + const gchar *text); + G_END_DECLS diff --git a/src/ui/gui/psppire-var-store.c b/src/ui/gui/psppire-var-store.c index daeeb23e56..85d9ec5a1b 100644 --- a/src/ui/gui/psppire-var-store.c +++ b/src/ui/gui/psppire-var-store.c @@ -32,7 +32,6 @@ #include -#include "psppire-variable.h" #include "psppire-var-store.h" #include "var-sheet.h" #include "helper.h" @@ -63,7 +62,7 @@ static gboolean psppire_var_store_set_string(GSheetModel *model, static gint psppire_var_store_get_row_count(const GSheetModel * model); -static gchar *text_for_column(const struct PsppireVariable *pv, gint c, GError **err); +static gchar *text_for_column(const struct variable *pv, gint c, GError **err); static void psppire_var_store_sheet_row_init (GSheetRowIface *iface); @@ -151,15 +150,15 @@ psppire_var_store_item_editable(PsppireVarStore *var_store, gint row, gint colum { const struct fmt_spec *write_spec ; - struct PsppireVariable *pv = psppire_var_store_get_variable(var_store, row); + struct variable *pv = psppire_var_store_get_var (var_store, row); if ( !pv ) return TRUE; - if ( VAR_STRING == psppire_variable_get_type(pv) && column == COL_DECIMALS ) + if ( VAR_STRING == var_get_type (pv) && column == COL_DECIMALS ) return FALSE; - write_spec = psppire_variable_get_write_spec(pv); + write_spec =var_get_write_format (pv); switch ( write_spec->type ) { @@ -186,6 +185,13 @@ psppire_var_store_item_editable(PsppireVarStore *var_store, gint row, gint colum return TRUE; } + +struct variable * +psppire_var_store_get_var (PsppireVarStore *store, gint row) +{ + return psppire_dict_get_variable (store->dict, row); +} + static gboolean psppire_var_store_is_editable(const GSheetModel *model, gint row, gint column) { @@ -324,29 +330,17 @@ psppire_var_store_get_string(const GSheetModel *model, gint row, gint column) { PsppireVarStore *store = PSPPIRE_VAR_STORE(model); - struct PsppireVariable *pv; + struct variable *pv; if ( row >= psppire_dict_get_var_cnt(store->dict)) return 0; pv = psppire_dict_get_variable (store->dict, row); - return text_for_column(pv, column, 0); + return text_for_column (pv, column, 0); } -struct PsppireVariable * -psppire_var_store_get_variable(PsppireVarStore *store, gint row) -{ - g_return_val_if_fail(store, NULL); - g_return_val_if_fail(store->dict, NULL); - - if ( row >= psppire_dict_get_var_cnt(store->dict)) - return 0; - - return psppire_dict_get_variable (store->dict, row); -} - /* Clears that part of the variable store, if possible, which corresponds to ROW, COL. Returns true if anything was updated, false otherwise. @@ -354,14 +348,14 @@ psppire_var_store_get_variable(PsppireVarStore *store, gint row) static gboolean psppire_var_store_clear(GSheetModel *model, gint row, gint col) { - struct PsppireVariable *pv ; + struct variable *pv ; PsppireVarStore *var_store = PSPPIRE_VAR_STORE(model); - if ( row >= psppire_dict_get_var_cnt(var_store->dict)) + if ( row >= psppire_dict_get_var_cnt (var_store->dict)) return FALSE; - pv = psppire_var_store_get_variable(var_store, row); + pv = psppire_var_store_get_var (var_store, row); if ( !pv ) return FALSE; @@ -369,7 +363,7 @@ psppire_var_store_clear(GSheetModel *model, gint row, gint col) switch (col) { case COL_LABEL: - psppire_variable_set_label(pv, 0); + var_set_label (pv, 0); return TRUE; break; } @@ -385,36 +379,73 @@ static gboolean psppire_var_store_set_string(GSheetModel *model, const gchar *text, gint row, gint col) { - struct PsppireVariable *pv ; + struct variable *pv ; PsppireVarStore *var_store = PSPPIRE_VAR_STORE(model); if ( row >= psppire_dict_get_var_cnt(var_store->dict)) return FALSE; - pv = psppire_var_store_get_variable(var_store, row); + pv = psppire_var_store_get_var (var_store, row); + if ( !pv ) return FALSE; switch (col) { case COL_NAME: - return psppire_variable_set_name(pv, text); + psppire_dict_rename_var (var_store->dict, pv, text); + return TRUE; break; case COL_COLUMNS: if ( ! text) return FALSE; - return psppire_variable_set_columns(pv, atoi(text)); + var_set_display_width (pv, atoi(text)); + return TRUE; break; case COL_WIDTH: - if ( ! text) return FALSE; - return psppire_variable_set_width(pv, atoi(text)); + { + int width = atoi (text); + if ( ! text) return FALSE; + if ( var_is_alpha (pv)) + var_set_width (pv, width); + else + { + struct fmt_spec fmt ; + fmt = *var_get_write_format (pv); + if ( width < fmt_min_output_width (fmt.type) + || + width > fmt_max_output_width (fmt.type)) + return FALSE; + + fmt.w = width; + fmt.d = MIN (fmt_max_output_decimals (fmt.type, width), fmt.d); + + var_set_both_formats (pv, &fmt); + } + + return TRUE; + } break; case COL_DECIMALS: - if ( ! text) return FALSE; - return psppire_variable_set_decimals(pv, atoi(text)); + { + int decimals; + struct fmt_spec fmt; + if ( ! text) return FALSE; + decimals = atoi (text); + fmt = *var_get_write_format (pv); + if ( decimals > + fmt_max_output_decimals (fmt.type, + fmt.w + )) + return FALSE; + + fmt.d = decimals; + var_set_both_formats (pv, &fmt); + return TRUE; + } break; case COL_LABEL: - psppire_variable_set_label(pv, text); + var_set_label(pv, text); return TRUE; break; case COL_TYPE: @@ -435,7 +466,7 @@ psppire_var_store_set_string(GSheetModel *model, static gchar * -text_for_column(const struct PsppireVariable *pv, gint c, GError **err) +text_for_column(const struct variable *pv, gint c, GError **err) { static gchar none[] = N_("None"); @@ -453,12 +484,12 @@ text_for_column(const struct PsppireVariable *pv, gint c, GError **err) enum {VT_NUMERIC, VT_COMMA, VT_DOT, VT_SCIENTIFIC, VT_DATE, VT_DOLLAR, VT_CUSTOM, VT_STRING}; - const struct fmt_spec *write_spec = psppire_variable_get_write_spec(pv); + const struct fmt_spec *write_spec = var_get_write_format (pv); switch (c) { case COL_NAME: - return pspp_locale_to_utf8(psppire_variable_get_name(pv), -1, err); + return pspp_locale_to_utf8 ( var_get_name (pv), -1, err); break; case COL_TYPE: { @@ -538,20 +569,20 @@ text_for_column(const struct PsppireVariable *pv, gint c, GError **err) { gchar *s; GString *gstr = g_string_sized_new(10); - g_string_printf(gstr, _("%d"), psppire_variable_get_columns(pv)); + g_string_printf(gstr, _("%d"), var_get_display_width (pv)); s = g_locale_to_utf8(gstr->str, gstr->len, 0, 0, err); g_string_free(gstr, TRUE); return s; } break; case COL_LABEL: - return pspp_locale_to_utf8(psppire_variable_get_label(pv), -1, err); + return pspp_locale_to_utf8 (var_get_label (pv), -1, err); break; case COL_MISSING: { gchar *s; - const struct missing_values *miss = psppire_variable_get_missing(pv); + const struct missing_values *miss = var_get_missing_values (pv); if ( mv_is_empty(miss)) return g_locale_to_utf8(gettext(none), -1, 0, 0, err); else @@ -611,47 +642,48 @@ text_for_column(const struct PsppireVariable *pv, gint c, GError **err) break; case COL_VALUES: { - const struct val_labs *vls = psppire_variable_get_value_labels(pv); - if ( ! vls || 0 == val_labs_count(vls) ) - return g_locale_to_utf8(gettext(none), -1, 0, 0, err); + if ( ! var_has_value_labels (pv)) + return g_locale_to_utf8 (gettext (none), -1, 0, 0, err); else { gchar *ss; - GString *gstr = g_string_sized_new(10); + GString *gstr = g_string_sized_new (10); + const struct val_labs *vls = var_get_value_labels (pv); struct val_labs_iterator *ip = 0; struct val_lab *vl = val_labs_first_sorted (vls, &ip); - g_assert(vl); + g_assert (vl); { - gchar *const vstr = value_to_text(vl->value, *write_spec); + gchar *const vstr = value_to_text (vl->value, *write_spec); - g_string_printf(gstr, "{%s,\"%s\"}_", vstr, vl->label); - g_free(vstr); + g_string_printf (gstr, "{%s,\"%s\"}_", vstr, vl->label); + g_free (vstr); } - val_labs_done(&ip); - - ss = pspp_locale_to_utf8(gstr->str, gstr->len, err); - g_string_free(gstr, TRUE); + val_labs_done (&ip); + + ss = pspp_locale_to_utf8 (gstr->str, gstr->len, err); + g_string_free (gstr, TRUE); return ss; } } break; case COL_ALIGN: { - const gint align = psppire_variable_get_alignment(pv); + const gint align = var_get_alignment(pv); - g_assert(align < n_ALIGNMENTS); + g_assert (align < n_ALIGNMENTS); return g_locale_to_utf8(gettext(alignments[align]), -1, 0, 0, err); } break; case COL_MEASURE: { - const gint measure = psppire_variable_get_measure(pv); + const gint measure = var_get_measure (pv); - g_assert(measure < n_MEASURES); - return g_locale_to_utf8(gettext(measures[measure]), -1, 0, 0, err); + g_assert (measure - 1 < n_MEASURES); + return g_locale_to_utf8 (gettext (measures[measure - 1]), + -1, 0, 0, err); } break; } @@ -736,7 +768,7 @@ static gchar * geometry_get_button_label(const GSheetRow *geom, gint unit, gpointer data) { gchar *label = g_strdup_printf(_("%d"), unit); - + return label; } diff --git a/src/ui/gui/psppire-var-store.h b/src/ui/gui/psppire-var-store.h index 792db1f17a..11a224d392 100644 --- a/src/ui/gui/psppire-var-store.h +++ b/src/ui/gui/psppire-var-store.h @@ -77,14 +77,12 @@ struct _PsppireVarStoreClass GType psppire_var_store_get_type (void) G_GNUC_CONST; PsppireVarStore *psppire_var_store_new (PsppireDict *dict); struct variable * psppire_var_store_get_var (PsppireVarStore *store, gint row); -struct PsppireVariable * psppire_var_store_get_variable(PsppireVarStore *store, - gint row); -void psppire_var_store_set_dictionary(PsppireVarStore *var_store, PsppireDict *dict); +void psppire_var_store_set_dictionary (PsppireVarStore *var_store, PsppireDict *dict); /* Return the number of variables */ -gint psppire_var_store_get_var_cnt(PsppireVarStore *var_store); +gint psppire_var_store_get_var_cnt (PsppireVarStore *var_store); void psppire_var_store_set_font(PsppireVarStore *store, const PangoFontDescription *fd); diff --git a/src/ui/gui/psppire-variable.c b/src/ui/gui/psppire-variable.c deleted file mode 100644 index 70c69a7ee7..0000000000 --- a/src/ui/gui/psppire-variable.c +++ /dev/null @@ -1,393 +0,0 @@ -/* - PSPPIRE --- A Graphical User Interface for PSPP - Copyright (C) 2004, 2006 Free Software Foundation - Written by John Darrington - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include "psppire-variable.h" -#include "psppire-dict.h" - - - -gboolean -psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - if ( !text) - return FALSE; - - if ( 0 == strcmp(var_get_name (pv->v), text)) - return FALSE; - - if ( ! psppire_dict_check_name(pv->dict, text, TRUE) ) - return FALSE; - - dict_rename_var(pv->dict->dict, pv->v, text); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - - return TRUE; -} - - -gboolean -psppire_variable_set_columns(struct PsppireVariable *pv, gint columns) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_display_width (pv->v, columns); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - - return TRUE; -} - -gboolean -psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_label (pv->v, label); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - - return TRUE; -} - - -gboolean -psppire_variable_set_decimals(struct PsppireVariable *pv, gint decimals) -{ - struct fmt_spec fmt; - - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - fmt = *var_get_write_format (pv->v); - fmt.d = decimals; - - return psppire_variable_set_format(pv, &fmt); -} - - - -gboolean -psppire_variable_set_width(struct PsppireVariable *pv, gint width) -{ - struct fmt_spec fmt ; - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - fmt = *var_get_write_format (pv->v); - fmt.w = width; - - if (var_is_alpha (pv->v)) - { - gint old_var_cnt , new_var_cnt ; - - if ( var_get_width (pv->v) == 0 ) - old_var_cnt = 1; - else - old_var_cnt = DIV_RND_UP(var_get_width (pv->v), MAX_SHORT_STRING); - - new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING); - var_set_width (pv->v, width); - - psppire_dict_resize_variable(pv->dict, pv, - old_var_cnt, new_var_cnt); - } - - return psppire_variable_set_format(pv, &fmt); -} - - -gboolean -psppire_variable_set_type(struct PsppireVariable *pv, int type) -{ - gint old_var_cnt , new_var_cnt ; - - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - if ( var_get_width (pv->v) ) - old_var_cnt = 1; - else - old_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING); - - var_set_width (pv->v, type == VAR_NUMERIC ? 0 : 1); - - if ( var_get_width (pv->v) == 0 ) - new_var_cnt = 1; - else - new_var_cnt = DIV_RND_UP (var_get_width (pv->v), MAX_SHORT_STRING); - - psppire_dict_resize_variable(pv->dict, pv, - old_var_cnt, new_var_cnt); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - - -gboolean -psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - msg_disable (); - if ( fmt_check_output(fmt) - && fmt_check_type_compat (fmt, var_get_type (pv->v)) - && fmt_check_width_compat (fmt, var_get_width (pv->v))) - { - msg_enable (); - var_set_both_formats (pv->v, fmt); - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; - } - msg_enable (); - - return FALSE; -} - - -gboolean -psppire_variable_set_value_labels(const struct PsppireVariable *pv, - const struct val_labs *vls) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_value_labels (pv->v, vls); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - -gboolean -psppire_variable_set_missing(const struct PsppireVariable *pv, - const struct missing_values *miss) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_missing_values (pv->v, miss); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - -gboolean -psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spec fmt) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_write_format (pv->v, &fmt); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - -gboolean -psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spec fmt) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_print_format (pv->v, &fmt); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - - - -gboolean -psppire_variable_set_alignment(struct PsppireVariable *pv, gint align) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_alignment (pv->v, align); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - - -gboolean -psppire_variable_set_measure(struct PsppireVariable *pv, gint measure) -{ - g_return_val_if_fail(pv, FALSE); - g_return_val_if_fail(pv->dict, FALSE); - g_return_val_if_fail(pv->v, FALSE); - - var_set_measure (pv->v, measure + 1); - - psppire_dict_var_changed(pv->dict, var_get_dict_index (pv->v)); - return TRUE; -} - - -const struct fmt_spec * -psppire_variable_get_write_spec(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, NULL); - g_return_val_if_fail(pv->v, NULL); - - return var_get_write_format (pv->v); -} - - -const gchar * -psppire_variable_get_name(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, NULL); - g_return_val_if_fail(pv->v, NULL); - - return var_get_name (pv->v); -} - - -gint -psppire_variable_get_columns(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_display_width (pv->v); -} - - - -const gchar * -psppire_variable_get_label(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, NULL); - g_return_val_if_fail(pv->v, NULL); - - return var_get_label (pv->v); -} - - -const struct missing_values * -psppire_variable_get_missing(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, NULL); - g_return_val_if_fail(pv->v, NULL); - - return var_get_missing_values (pv->v); -} - - -const struct val_labs * -psppire_variable_get_value_labels(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, NULL); - g_return_val_if_fail(pv->v, NULL); - - return var_get_value_labels (pv->v); -} - - -gint -psppire_variable_get_alignment(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_alignment (pv->v); -} - - - -gint -psppire_variable_get_measure(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_measure (pv->v) - 1; -} - -gint -psppire_variable_get_type(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_type (pv->v); -} - - -gint -psppire_variable_get_width(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_width (pv->v); -} - - -gint -psppire_variable_get_fv(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_case_index (pv->v); -} - - - -gint -psppire_variable_get_index(const struct PsppireVariable *pv) -{ - g_return_val_if_fail(pv, -1); - g_return_val_if_fail(pv->v, -1); - - return var_get_dict_index (pv->v); -} - diff --git a/src/ui/gui/psppire-variable.h b/src/ui/gui/psppire-variable.h deleted file mode 100644 index 2b06336d33..0000000000 --- a/src/ui/gui/psppire-variable.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - PSPPIRE --- A Graphical User Interface for PSPP - Copyright (C) 2006 Free Software Foundation - Written by John Darrington - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ - - -#ifndef __PSPPIRE_VARIABLE_H__ -#define __PSPPIRE_VARIABLE_H__ - -#include -#include - -#include -#include "psppire-dict.h" - -struct val_labs; - -/* Don't use any of these members. - Use accessor functions instead. -*/ -struct PsppireVariable -{ - /* The payload */ - struct variable *v; - - /* The dictionary to which this variable belongs */ - PsppireDict *dict; -}; - - - -gboolean psppire_variable_set_name(struct PsppireVariable *pv, const gchar *text); - -gboolean psppire_variable_set_columns(struct PsppireVariable *pv, gint columns); -gboolean psppire_variable_set_label(struct PsppireVariable *pv, const gchar *label); -gboolean psppire_variable_set_format(struct PsppireVariable *pv, struct fmt_spec *fmt); -gboolean psppire_variable_set_decimals(struct PsppireVariable *pv, gint decimals); -gboolean psppire_variable_set_width(struct PsppireVariable *pv, gint width); -gboolean psppire_variable_set_alignment(struct PsppireVariable *pv, gint align); -gboolean psppire_variable_set_measure(struct PsppireVariable *pv, gint measure); -gboolean psppire_variable_set_value_labels(const struct PsppireVariable *pv, - const struct val_labs *vls); - -gboolean psppire_variable_set_missing(const struct PsppireVariable *pv, - const struct missing_values *miss); - -gboolean psppire_variable_set_print_spec(const struct PsppireVariable *pv, struct fmt_spec fmt); -gboolean psppire_variable_set_write_spec(const struct PsppireVariable *pv, struct fmt_spec fmt); - -gboolean psppire_variable_set_type(struct PsppireVariable *pv, int type); - - - -const struct fmt_spec *psppire_variable_get_write_spec(const struct PsppireVariable *pv); -const gchar * psppire_variable_get_name(const struct PsppireVariable *pv); - -gint psppire_variable_get_columns(const struct PsppireVariable *pv); - -const gchar * psppire_variable_get_label(const struct PsppireVariable *pv); - - -const struct missing_values *psppire_variable_get_missing - (const struct PsppireVariable *pv); - -const struct val_labs * psppire_variable_get_value_labels - (const struct PsppireVariable *pv); - -gint psppire_variable_get_alignment(const struct PsppireVariable *pv); - -gint psppire_variable_get_measure(const struct PsppireVariable *pv); - -gint psppire_variable_get_fv(const struct PsppireVariable *pv); - -gint psppire_variable_get_type(const struct PsppireVariable *pv); - -gint psppire_variable_get_width(const struct PsppireVariable *pv); - -gint psppire_variable_get_index(const struct PsppireVariable *pv); - - -#endif /* __PSPPIRE_VARIABLE_H__ */ diff --git a/src/ui/gui/sort-cases-dialog.c b/src/ui/gui/sort-cases-dialog.c index cdf30cad0d..40795a2051 100644 --- a/src/ui/gui/sort-cases-dialog.c +++ b/src/ui/gui/sort-cases-dialog.c @@ -46,7 +46,6 @@ 8. The dialog box structure itself ought to be a GtkWindow and abstracted better. */ - #include @@ -54,7 +53,6 @@ #include "sort-cases-dialog.h" #include "psppire-dict.h" #include -#include "psppire-variable.h" #include #define _(msgid) gettext (msgid) @@ -155,7 +153,7 @@ select_criteria(GtkTreeModel *model, GtkTreePath *path, GtkTreeIter new_iter; gint index; gint dir; - struct PsppireVariable *variable; + struct variable *variable; struct sort_cases_dialog *dialog = (struct sort_cases_dialog*) data; /* Get the variable from the dictionary */ @@ -163,7 +161,7 @@ select_criteria(GtkTreeModel *model, GtkTreePath *path, DICT_TVM_COL_VAR, &variable, -1); - index = psppire_variable_get_index(variable); + index = var_get_dict_index (variable); dir = gtk_toggle_button_get_active (dialog->ascending_button) ? SRT_ASCEND:SRT_DESCEND; @@ -263,7 +261,7 @@ criteria_render_func(GtkTreeViewColumn *column, GtkCellRenderer *renderer, gpointer data) { gint var_index; - struct PsppireVariable *variable ; + struct variable *variable ; gint direction; gchar *buf; gchar *varname; @@ -275,7 +273,7 @@ criteria_render_func(GtkTreeViewColumn *column, GtkCellRenderer *renderer, variable = psppire_dict_get_variable(dict, var_index); - varname = pspp_locale_to_utf8(psppire_variable_get_name(variable), + varname = pspp_locale_to_utf8 (var_get_name(variable), -1, 0); if ( direction == SRT_ASCEND) @@ -464,7 +462,7 @@ convert_list_store_to_criteria(GtkListStore *list, valid; valid = gtk_tree_model_iter_next(model, &iter)) { - struct PsppireVariable *variable; + struct variable *variable; gint index; struct sort_criterion *scn = &criteria->crits[n]; g_assert ( n < criteria->crit_cnt); @@ -477,8 +475,8 @@ convert_list_store_to_criteria(GtkListStore *list, variable = psppire_dict_get_variable(dict, index); - scn->fv = psppire_variable_get_fv(variable); - scn->width = psppire_variable_get_width(variable); + scn->fv = var_get_case_index (variable); + scn->width = var_get_width(variable); } } diff --git a/src/ui/gui/val-labs-dialog.c b/src/ui/gui/val-labs-dialog.c index d24dd381d6..c8440ccbd1 100644 --- a/src/ui/gui/val-labs-dialog.c +++ b/src/ui/gui/val-labs-dialog.c @@ -29,7 +29,6 @@ #include "helper.h" #include "val-labs-dialog.h" #include -#include "psppire-variable.h" /* This callback occurs when the text in the label entry box is changed */ @@ -44,7 +43,7 @@ on_label_entry_change(GtkEntry *entry, gpointer data) text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry)); text_to_value(text, &v, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); if ( val_labs_find (dialog->labs, v) ) @@ -114,7 +113,7 @@ on_value_entry_change(GtkEntry *entry, gpointer data) union value v; text_to_value(text, &v, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); g_signal_handler_block(GTK_ENTRY(dialog->label_entry), @@ -148,9 +147,10 @@ val_labs_ok(GtkWidget *w, gpointer data) { struct val_labs_dialog *dialog = data; - psppire_variable_set_value_labels(dialog->pv, dialog->labs); + var_set_value_labels (dialog->pv, dialog->labs); val_labs_destroy (dialog->labs); + dialog->labs = 0; return FALSE; @@ -210,12 +210,12 @@ on_change(GtkWidget *w, gpointer data) union value v; text_to_value(val_text, &v, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); val_labs_replace (dialog->labs, v, - gtk_entry_get_text(GTK_ENTRY(dialog->label_entry))); + gtk_entry_get_text (GTK_ENTRY(dialog->label_entry))); - gtk_widget_set_sensitive(dialog->change_button, FALSE); + gtk_widget_set_sensitive (dialog->change_button, FALSE); repopulate_dialog(dialog); @@ -233,14 +233,14 @@ on_add(GtkWidget *w, gpointer data) const gchar *text = gtk_entry_get_text(GTK_ENTRY(dialog->value_entry)); text_to_value(text, &v, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); if ( ! val_labs_add (dialog->labs, v, - gtk_entry_get_text(GTK_ENTRY(dialog->label_entry)) ) ) + gtk_entry_get_text + ( GTK_ENTRY (dialog->label_entry)) ) ) return FALSE; - gtk_widget_set_sensitive(dialog->add_button, FALSE); repopulate_dialog(dialog); @@ -279,7 +279,7 @@ on_select_row (GtkTreeView *treeview, struct val_lab * vl = get_selected_tuple(dialog); gchar *const text = value_to_text(vl->value, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); g_signal_handler_block(GTK_ENTRY(dialog->value_entry), dialog->value_handler_id); @@ -420,7 +420,7 @@ repopulate_dialog(struct val_labs_dialog *dialog) gchar *const vstr = value_to_text(vl->value, - *psppire_variable_get_write_spec(dialog->pv)); + *var_get_write_format (dialog->pv)); gchar *labeltext = pspp_locale_to_utf8(vl->label, -1, 0); @@ -455,13 +455,13 @@ val_labs_dialog_show(struct val_labs_dialog *dialog) g_assert(!dialog->labs); - value_labels = psppire_variable_get_value_labels (dialog->pv); + value_labels = var_get_value_labels (dialog->pv); if (value_labels) dialog->labs = val_labs_copy ( value_labels ); else - dialog->labs = val_labs_create ( psppire_variable_get_width (dialog->pv)); - + dialog->labs = val_labs_create ( var_get_width (dialog->pv)); + gtk_widget_set_sensitive(dialog->remove_button, FALSE); gtk_widget_set_sensitive(dialog->change_button, FALSE); gtk_widget_set_sensitive(dialog->add_button, FALSE); diff --git a/src/ui/gui/val-labs-dialog.h b/src/ui/gui/val-labs-dialog.h index 85f1a6d317..fe2c3bacf4 100644 --- a/src/ui/gui/val-labs-dialog.h +++ b/src/ui/gui/val-labs-dialog.h @@ -40,7 +40,7 @@ struct val_labs_dialog /* The variable to be updated */ - struct PsppireVariable *pv; + struct variable *pv; /* Local copy of labels */ struct val_labs *labs; diff --git a/src/ui/gui/var-sheet.c b/src/ui/gui/var-sheet.c index 2cf12f5870..2c3137adb6 100644 --- a/src/ui/gui/var-sheet.c +++ b/src/ui/gui/var-sheet.c @@ -46,7 +46,6 @@ #include "helper.h" #include "menu-actions.h" #include "psppire-dict.h" -#include "psppire-variable.h" #include "var-type-dialog.h" #include "var-sheet.h" #include "customentry.h" @@ -141,28 +140,28 @@ static void change_alignment(GtkComboBox *cb, gpointer user_data) { - struct PsppireVariable *pv = user_data; + struct variable *pv = user_data; gint active_item = gtk_combo_box_get_active(cb); if ( active_item < 0 ) return ; - psppire_variable_set_alignment(pv, active_item); + var_set_alignment (pv, active_item); } /* Callback for when the measure combo box item is selected */ -static void +static void change_measure(GtkComboBox *cb, gpointer user_data) { - struct PsppireVariable *pv = user_data; + struct variable *pv = user_data; gint active_item = gtk_combo_box_get_active(cb); if ( active_item < 0 ) return ; - psppire_variable_set_measure(pv, active_item); + var_set_measure (pv, active_item + 1); } @@ -215,7 +214,7 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, { GtkSheetCellAttr attributes; PsppireVarStore *var_store ; - struct PsppireVariable *pv ; + struct variable *pv ; g_return_val_if_fail(sheet != NULL, FALSE); @@ -233,7 +232,7 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, gtk_sheet_get_attributes(sheet, row, column, &attributes); - pv = psppire_var_store_get_variable(var_store, row); + pv = psppire_var_store_get_var (var_store, row); switch (column) { @@ -267,15 +266,15 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, GTK_COMBO_BOX_ENTRY(gtk_sheet_get_entry(sheet)->parent); - if ( ! list_store) list_store = create_label_list(measures); + if ( ! list_store) list_store = create_label_list (measures); gtk_combo_box_set_model(GTK_COMBO_BOX(cbe), GTK_TREE_MODEL(list_store)); gtk_combo_box_entry_set_text_column (cbe, 0); - g_signal_connect(G_OBJECT(cbe),"changed", - G_CALLBACK(change_measure), pv); + g_signal_connect (G_OBJECT(cbe),"changed", + G_CALLBACK (change_measure), pv); } break; @@ -315,7 +314,7 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, if (!missing_val_dialog ) missing_val_dialog = missing_val_dialog_create(xml); - missing_val_dialog->pv = psppire_var_store_get_variable(var_store, row); + missing_val_dialog->pv = psppire_var_store_get_var (var_store, row); g_signal_connect_swapped(GTK_OBJECT(customEntry), "clicked", @@ -367,16 +366,16 @@ var_sheet_cell_change_entry (GtkSheet * sheet, gint row, gint column, const gint current_value = atoi(s); GtkObject *adj ; - const struct fmt_spec *fmt = psppire_variable_get_write_spec(pv); + const struct fmt_spec *fmt = var_get_write_format (pv); switch (column) { case COL_WIDTH: - r_min = fmt->d + 1; - r_max = (psppire_variable_get_type(pv) == VAR_STRING) ? MAX_STRING : 40; + r_min = MAX (fmt->d + 1, fmt_min_output_width (fmt->type)); + r_max = fmt_max_output_width (fmt->type); break; case COL_DECIMALS: r_min = 0 ; - r_max = MIN(fmt->w - 1, 16); + r_max = fmt_max_output_decimals (fmt->type, fmt->w); break; case COL_COLUMNS: r_min = 1; diff --git a/src/ui/gui/var-type-dialog.c b/src/ui/gui/var-type-dialog.c index d4262872e0..0d58026df0 100644 --- a/src/ui/gui/var-type-dialog.c +++ b/src/ui/gui/var-type-dialog.c @@ -32,7 +32,6 @@ #include "var-type-dialog.h" -#include "psppire-variable.h" #include "helper.h" #include @@ -130,7 +129,7 @@ static void update_width_decimals(const struct var_type_dialog *dialog); static void set_local_width_decimals(struct var_type_dialog *dialog) { - dialog->fmt_l = * psppire_variable_get_write_spec(dialog->pv); + dialog->fmt_l = * var_get_write_format (dialog->pv); switch (dialog->active_button) { @@ -665,7 +664,7 @@ var_type_dialog_set_state(struct var_type_dialog *dialog) g_assert(dialog->pv); /* Populate width and decimals */ - write_spec = psppire_variable_get_write_spec(dialog->pv); + write_spec = var_get_write_format (dialog->pv); g_string_printf(str, "%d", write_spec->d); @@ -820,12 +819,10 @@ on_var_type_ok_clicked(GtkWidget *w, gpointer data) break; } - if ( result == true ) + if ( result == true ) { - psppire_variable_set_type(dialog->pv, new_type); - psppire_variable_set_width(dialog->pv, new_width); - psppire_variable_set_write_spec(dialog->pv, spec); - psppire_variable_set_print_spec(dialog->pv, spec); + var_set_width (dialog->pv, new_width); + var_set_both_formats (dialog->pv, &spec); } } diff --git a/src/ui/gui/var-type-dialog.h b/src/ui/gui/var-type-dialog.h index d259fa1a71..2b2caee6f0 100644 --- a/src/ui/gui/var-type-dialog.h +++ b/src/ui/gui/var-type-dialog.h @@ -50,13 +50,7 @@ struct var_type_dialog GtkWidget *window; /* Variable to be updated */ - struct PsppireVariable *pv; -#if 0 - struct variable *var; - - /* Function to be run when the dialog changes a variable */ - variable_changed_func var_change_func; -#endif + struct variable *pv; /* Local copy of format specifier */ struct fmt_spec fmt_l; @@ -104,5 +98,4 @@ void var_type_dialog_set_variable(struct var_type_dialog *dialog, void var_type_dialog_show(struct var_type_dialog *dialog); - #endif diff --git a/src/ui/terminal/main.c b/src/ui/terminal/main.c index 0ece812b92..7e1f5c99f9 100644 --- a/src/ui/terminal/main.c +++ b/src/ui/terminal/main.c @@ -130,7 +130,7 @@ main (int argc, char **argv) check_msg_count (the_source_stream); } } - + terminate (!any_errors ()); } -- 2.30.2