John Darrington [Tue, 1 Mar 2016 05:24:54 +0000 (06:24 +0100)]
Speed up rendering of columns in sheet.
This change causes _pspp_sheet_view_install_mark_rows_col_dirty to be called once
per sheet, instead of once per column when adding/deleting columns. Hence there
is a significant speed improvement when dealing with a data sheet with a large
number of variables.
John Darrington [Fri, 26 Feb 2016 16:39:48 +0000 (17:39 +0100)]
Remove attempts do destroy windows before quit.
This change deletes an attempt to remove all existing
windows from a list (and thereby unreffing and deleting them).
The attempt fails, because lists may not be altered whilst
iterating them. This resulted only in a Critical Warning.
It is also pointless to attempt to destroy windows immediately
priot to quit.
Ben Pfaff [Sun, 21 Feb 2016 00:43:21 +0000 (16:43 -0800)]
expressions: Merge all the little generator programs into generate.pl.
The little generator programs had a bizarre flaw: they silently produced
no output if there was an error parsing their input. This was due to the
use of the Perl "do" construct for executing generate.pl, which just
returns the message if the nested code exits with "die". I know that the
generators actually worked better at one point...
Anyway, the simplest solution seems to be to just merge all the little
output generator programs into generate.pl. It doesn't make the code any
harder to understand, so that's what this commit does.
Ben Pfaff [Sun, 21 Feb 2016 00:33:54 +0000 (16:33 -0800)]
Makefiles: Fix use of $(AM_V_at) in makefile rules.
These are only for use at the beginning of a rule and cause weirdness in
the middle since they expand to directives that begin with @, which "make"
understands but the shell does not.
Ben Pfaff [Sat, 20 Feb 2016 18:12:48 +0000 (10:12 -0800)]
sys-file-reader: Read system files with multiple subtype-18 extensions.
These are written by "Stata 14.1/-savespss- 1.77 by S.Radyakin". I think
it's really a bug in that writer, but if SPSS accepts these files then I
guess PSPP should too.
histogram - added another upper bin to include cases which have max values
This fixes the problem that cases which have values exactly at the upper
bin limit of the upper bin are not included in the binning. The fix
is based on the idea from John to just add another bin when the bin
limit is just equal to the maximum case value.
The bin range computation for the histogram showed bin limits at 4.999999
when 5.0 was expected. Added values with value 5.0 were therefore added
to the following bin. With this change the bin limits do not show the
rounding error. At least I could not reproduce the error that showed
up when using the routing from gsl_histogram_set_ranges_uniform.
histogram - fixed missing cases which have the maximum value
The histogram uses gsl_histogram routines which exclude values from
the last bin when the value is exactly the maximum value, i.e. the upper
value of the last bin. This results in excluded cases in the histogram.
This fixes bug #47139: https://savannah.gnu.org/bugs/?47139
The build on MacOS failed because echo introduces newlines which
produces syntax errors in the generated version.c file. I replaced the
echo with printf.
Ben Pfaff [Sun, 31 Jan 2016 20:28:54 +0000 (12:28 -0800)]
spreadsheet: Avoid sharing a dictionary between spreadsheet and client.
Spreadsheet implementations keep a copy of the dictionary that they build
to simplify reading cases. Until now, they shared that dictionary, in a
modifiable way, with their client. This meant, however, that if the client
modified the dictionary, it could screw up reading further cases from the
spreadsheet.
This commit fixes the problem by forcing clients to make their own copy of
the dictionary if they want to modify it.
John Darrington [Sat, 30 Jan 2016 20:46:07 +0000 (21:46 +0100)]
Correct the use of signals vs. events.
Commit f8fdc760d4ee04801a2da8af0700b2a87f724ae4 used a button-press-event
where a toggled signal was appropriate. The signal might come from a
number of sources, not necesarily a button event.
John Darrington [Tue, 19 Jan 2016 16:47:04 +0000 (17:47 +0100)]
GLM: Do not print the intercept if the model is unbalanced
I cannot find any reliable explanation of how to calculate this
figure for unbalanced models not what it actually means. So
let's not even bother with it until an expert comes along.
Ben Pfaff [Fri, 15 Jan 2016 14:35:00 +0000 (06:35 -0800)]
SAVE TRANSLATE: Improve error message.
Before this commit, "SAVE TRANSLATE OUTFILE='...'" gave a confusing error
message. After this commit, it clearly reports the missing slash before
OUTFILE.
John Darrington [Mon, 4 Jan 2016 19:30:45 +0000 (20:30 +0100)]
Fix bad syntax generation introduced by previous commit.
Commit cdfb21de2cbbf921b4e1fe0662439da1c460eabc replaced syntax_gen_pspp
with g_string_append_printf which was wrong, because the latter is
sensitive to the user's locale, which is not desired for syntax generation.
Ben Pfaff [Mon, 4 Jan 2016 04:12:29 +0000 (20:12 -0800)]
REGRESSION: Correctly handle data in temporary file for SAVE subcommand.
The format of the data in the temporary file used by the SAVE subcommand is
basically unrelated to the format of the data in the active file, but the
code that created and wrote cases to it created them as clones of cases
in the active file. This is simply incorrect behavior and causes nasty
failures when the active file has an inconvenient number of variables or
contains long string variables.
This commit fixes the problem by correctly creating the cases for the
temporary file using that file's own caseproto.
In addition, the assignment of caseproto indexes to variables in the
temporary file was broken for /SAVE=PRED, because it would skip index 0.
This commit also fixes that problem.
Ben Pfaff [Sun, 3 Jan 2016 06:05:00 +0000 (22:05 -0800)]
val-labs-dialog: Improve keyboard interface.
Before, hitting Enter in the value label dialog did nothing. With this
commit, Enter in the value entry moves to the label entry, and Enter in
the label entry adds or changes the value label and jumps back to the
value entry.
Ben Pfaff [Sun, 3 Jan 2016 04:44:22 +0000 (20:44 -0800)]
sys-file-reader: Disallow system and scratch long variable names too.
Before this commit, the system file reader disallowed system and
scratch short variable names (e.g. names beginning with $ or #)
but not as long variable names. This fixes the problem.