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 <katolaz@freaknet.org> 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
.
Response:
text/plain