summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrés <andmarti@gmail.com>2021-12-17 10:30:54 -0300
committerAndrés <andmarti@gmail.com>2021-12-17 10:30:54 -0300
commit3bda5392a3084b20d792c1e9f0a09f52a202f036 (patch)
tree3be1838bfa7a4f48b3fe7ca76a104c1dc6f54b3d
parenta4afad2fd718dd439c0861cd81737c9ecaec49c7 (diff)
store offscr_sc values when saving sc files. restore them when loading sc files.
-rw-r--r--src/file.c8
-rwxr-xr-xsrc/gram.y39
2 files changed, 47 insertions, 0 deletions
diff --git a/src/file.c b/src/file.c
index 827be0b..9ab7e77 100644
--- a/src/file.c
+++ b/src/file.c
@@ -416,6 +416,14 @@ void write_fd(FILE * f, struct roman * doc) {
while (sh != NULL) {
fprintf (f, "movetosheet \"%s\"\n", sh->name);
+ // save off screen values
+ fprintf (f, "offscr_sc_cols %d\n", sh->offscr_sc_cols);
+ fprintf (f, "offscr_sc_rows %d\n", sh->offscr_sc_rows);
+ fprintf (f, "nb_frozen_rows %d\n", sh->nb_frozen_rows);
+ fprintf (f, "nb_frozen_cols %d\n", sh->nb_frozen_cols);
+ fprintf (f, "nb_frozen_screenrows %d\n", sh->nb_frozen_screenrows);
+ fprintf (f, "nb_frozen_screencols %d\n", sh->nb_frozen_screencols);
+
for (c = 0; c <= sh->maxcol; c++)
if (sh->fwidth[c] != DEFWIDTH || sh->precision[c] != DEFPREC || sh->realfmt[c] != DEFREFMT)
(void) fprintf (f, "format %s %d %d %d\n", coltoa(c), sh->fwidth[c], sh->precision[c], sh->realfmt[c]);
diff --git a/src/gram.y b/src/gram.y
index fdcd0d7..579f8aa 100755
--- a/src/gram.y
+++ b/src/gram.y
@@ -239,6 +239,13 @@ token S_YANKCOL
%token S_TRIGGER
%token S_UNTRIGGER
+%token S_OFFSCR_SC_COLS
+%token S_OFFSCR_SC_ROWS
+%token S_NB_FROZEN_ROWS
+%token S_NB_FROZEN_COLS
+%token S_NB_FROZEN_SCREENROWS
+%token S_NB_FROZEN_SCREENCOLS
+
%token K_AUTOBACKUP
%token K_NOAUTOBACKUP
%token K_AUTOCALC
@@ -403,6 +410,7 @@ token K_COLORERR
%token K_CHR
%token K_FACT
+
%right ';'
%left '?' ':'
%left '|'
@@ -1001,6 +1009,37 @@ command:
scxfree($3);
}
+ | S_OFFSCR_SC_COLS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->offscr_sc_cols = $2;
+ }
+ | S_OFFSCR_SC_ROWS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->offscr_sc_rows = $2;
+ }
+ | S_NB_FROZEN_ROWS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->nb_frozen_rows = $2;
+ }
+ | S_NB_FROZEN_COLS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->nb_frozen_cols = $2;
+ }
+ | S_NB_FROZEN_SCREENROWS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->nb_frozen_screenrows = $2;
+ }
+ | S_NB_FROZEN_SCREENCOLS NUMBER {
+ struct roman * roman = session->cur_doc;
+ struct sheet * sh = roman->cur_sh;
+ sh->nb_frozen_screencols = $2;
+ }
+
| S_UNTRIGGER var_or_range {
del_trigger(session->cur_doc->cur_sh, $2.left.vp->row, $2.left.vp->col, $2.right.vp->row, $2.right.vp->col);
}