diff options
author | Andrés <andmarti@gmail.com> | 2021-12-17 10:30:54 -0300 |
---|---|---|
committer | Andrés <andmarti@gmail.com> | 2021-12-17 10:30:54 -0300 |
commit | 3bda5392a3084b20d792c1e9f0a09f52a202f036 (patch) | |
tree | 3be1838bfa7a4f48b3fe7ca76a104c1dc6f54b3d | |
parent | a4afad2fd718dd439c0861cd81737c9ecaec49c7 (diff) |
store offscr_sc values when saving sc files. restore them when loading sc files.
-rw-r--r-- | src/file.c | 8 | ||||
-rwxr-xr-x | src/gram.y | 39 |
2 files changed, 47 insertions, 0 deletions
@@ -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]); @@ -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); } |