36 files changed, 332 insertions, 176 deletions
diff --git a/src/controller/actions/sel_save.sqc b/src/controller/actions/sel_save.sqc new file mode 100644 index 0000000..5fa614f --- a/dev/null +++ b/src/controller/actions/sel_save.sqc | |||
@@ -0,0 +1,41 @@ | |||
1 | #include "../../util/check_error.h" | ||
2 | #include "../../view/exp004state0.h" | ||
3 | #include "sel_save.h" | ||
4 | #include "sqlca.h" | ||
5 | #include <string.h> | ||
6 | extern struct sqlca sqlca; | ||
7 | |||
8 | /* | ||
9 | * A simple alias to make the code more readable. | ||
10 | */ | ||
11 | #define S exp004state0 | ||
12 | |||
13 | void | ||
14 | sel_save (void) | ||
15 | { | ||
16 | EXEC SQL BEGIN DECLARE SECTION; | ||
17 | char gi[255]; | ||
18 | EXEC SQL END DECLARE SECTION; | ||
19 | |||
20 | /* | ||
21 | * WHERE gi IS NOT NULL is added to prevent the PRECOMPILE command | ||
22 | * from throwing a warning about modifying an entire table. Since | ||
23 | * gi is defined as NOT NULL this will clear the entire table. | ||
24 | */ | ||
25 | EXEC SQL DELETE FROM vis_selection WHERE gi IS NOT NULL; | ||
26 | check_error (__FILE__, __LINE__); | ||
27 | |||
28 | for (unsigned int i = 0; i < S.rows; i++) | ||
29 | { | ||
30 | if (S.selection.set[i] == true) | ||
31 | { | ||
32 | strncpy (gi, S.gi_data + i + 3, sizeof (gi)); | ||
33 | EXEC SQL INSERT INTO vis_selection VALUES (:gi); | ||
34 | } | ||
35 | } | ||
36 | |||
37 | EXEC SQL COMMIT; | ||
38 | check_error (__FILE__, __LINE__); | ||
39 | |||
40 | return; | ||
41 | } | ||