icheck if modified before exit, and save - gramscii - A simple editor for ASCII box-and-arrow charts Err bitreich.org 70 1Log /scm/gramscii/log.gph bitreich.org 70 1Files /scm/gramscii/files.gph bitreich.org 70 1Refs /scm/gramscii/refs.gph bitreich.org 70 1Tags /scm/gramscii/tag bitreich.org 70 1README /scm/gramscii/file/README.md.gph bitreich.org 70 1LICENSE /scm/gramscii/file/COPYING.gph bitreich.org 70 i--- Err bitreich.org 70 1commit a4c6053e9df10cc4060696d6c29e84fa3105ad0e /scm/gramscii/commit/a4c6053e9df10cc4060696d6c29e84fa3105ad0e.gph bitreich.org 70 1parent 575703d810415c9f427104ab0225a1e5916983ec /scm/gramscii/commit/575703d810415c9f427104ab0225a1e5916983ec.gph bitreich.org 70 hAuthor: KatolaZ URL:mailto:katolaz@freaknet.org bitreich.org 70 iDate: Fri, 19 Jul 2019 19:39:04 +0100 Err bitreich.org 70 i Err bitreich.org 70 icheck if modified before exit, and save Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M TODO | 1 + Err bitreich.org 70 i M gramscii.c | 30 +++++++++++++++++++++++++----- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 26 insertions(+), 5 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/TODO b/TODO /scm/gramscii/file/TODO.gph bitreich.org 70 i@@ -13,6 +13,7 @@ Err bitreich.org 70 i (also do not print unmanaged chars!) Err bitreich.org 70 i - get screen geometry Err bitreich.org 70 i - allow scrolling (both vertical and horizontal) Err bitreich.org 70 i+* check if modified on exit Err bitreich.org 70 i * write to new file / default file Err bitreich.org 70 i * delete -- 'x' Err bitreich.org 70 i * save to file Err bitreich.org 70 1diff --git a/gramscii.c b/gramscii.c /scm/gramscii/file/gramscii.c.gph bitreich.org 70 i@@ -146,9 +146,11 @@ char* state_str(){ Err bitreich.org 70 i void status_bar(){ Err bitreich.org 70 i Err bitreich.org 70 i printf("\033[%d;1f\033[7m", HEIGHT+1); Err bitreich.org 70 i+ printf("%100s", " "); Err bitreich.org 70 i+ printf("\033[%d;1f\033[7m", HEIGHT+1); Err bitreich.org 70 i printf(" x: %3d y: %3d -- mode: %4s hl: %c vl: %c cn: %c <: %c >: %c %10s", Err bitreich.org 70 i x, y, state_str(), line_h, line_v, corner, mark_st, mark_end, ""); Err bitreich.org 70 i- Err bitreich.org 70 i+ printf(" [%s]", fname ); Err bitreich.org 70 i printf("\033[0m"); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -302,8 +304,10 @@ void get_box(){ Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i } Err bitreich.org 70 i- if (c == 'b') Err bitreich.org 70 i+ if (c == 'b'){ Err bitreich.org 70 i draw_box(orig_x, orig_y, FIX); Err bitreich.org 70 i+ modified = 1; Err bitreich.org 70 i+ } Err bitreich.org 70 i redraw(); Err bitreich.org 70 i state = MOVE; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -392,8 +396,10 @@ void get_arrow(){ Err bitreich.org 70 i status_bar(); Err bitreich.org 70 i show_cursor(); Err bitreich.org 70 i } Err bitreich.org 70 i- if (c == 'a') Err bitreich.org 70 i+ if (c == 'a'){ Err bitreich.org 70 i draw_arrow(orig_x, orig_y, arrow, arrow_len, FIX); Err bitreich.org 70 i+ modified = 1; Err bitreich.org 70 i+ } Err bitreich.org 70 i redraw(); Err bitreich.org 70 i state = MOVE; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -435,7 +441,7 @@ void write_file(){ Err bitreich.org 70 i if (!fname[0] || force_new){ Err bitreich.org 70 i get_string(fname, 255); Err bitreich.org 70 i if (f=fopen(fname, "r")){ Err bitreich.org 70 i- if (!is_yes(get_key("File exists. Overwrite [y/N]?")) ){ Err bitreich.org 70 i+ if (!is_yes(get_key("File exists. Overwrite [y/n]?")) ){ Err bitreich.org 70 i fclose(f); Err bitreich.org 70 i return; Err bitreich.org 70 i } Err bitreich.org 70 i@@ -450,6 +456,7 @@ void write_file(){ Err bitreich.org 70 i fprintf(f, "%s\n", screen[i]); Err bitreich.org 70 i } Err bitreich.org 70 i fclose(f); Err bitreich.org 70 i+ modified = 0; Err bitreich.org 70 i get_key("File saved."); Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i@@ -533,6 +540,7 @@ void delete(){ Err bitreich.org 70 i check_bound(); Err bitreich.org 70 i step = 1; Err bitreich.org 70 i do_delete(orig_x, orig_y); Err bitreich.org 70 i+ modified = 1; Err bitreich.org 70 i orig_x = x; Err bitreich.org 70 i orig_y = y; Err bitreich.org 70 i redraw(); Err bitreich.org 70 i@@ -542,6 +550,17 @@ void delete(){ Err bitreich.org 70 i state = MOVE; Err bitreich.org 70 i } Err bitreich.org 70 i Err bitreich.org 70 i+void check_modified(){ Err bitreich.org 70 i+ Err bitreich.org 70 i+ if (modified){ Err bitreich.org 70 i+ if (!is_yes(get_key("Unsaved changes. Write to file [y/n]?")) ){ Err bitreich.org 70 i+ return; Err bitreich.org 70 i+ } Err bitreich.org 70 i+ write_file(0); Err bitreich.org 70 i+ } Err bitreich.org 70 i+} Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i Err bitreich.org 70 i void commands(){ Err bitreich.org 70 i Err bitreich.org 70 i@@ -617,8 +636,9 @@ void commands(){ Err bitreich.org 70 i case '>': Err bitreich.org 70 i toggle_end_mark(); Err bitreich.org 70 i break; Err bitreich.org 70 i- case 'Q': Err bitreich.org 70 i case 'q': Err bitreich.org 70 i+ check_modified(); Err bitreich.org 70 i+ case 'Q': Err bitreich.org 70 i cleanup(0); Err bitreich.org 70 i exit(0); Err bitreich.org 70 i break; Err bitreich.org 70 .