SMOLNET PORTAL home about changes
idelete and default write file - 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 575703d810415c9f427104ab0225a1e5916983ec	/scm/gramscii/commit/575703d810415c9f427104ab0225a1e5916983ec.gph	bitreich.org	70
1parent 52a48d7718c6467da380a51f49327323e15e00c7	/scm/gramscii/commit/52a48d7718c6467da380a51f49327323e15e00c7.gph	bitreich.org	70
hAuthor: KatolaZ <katolaz@freaknet.org>	URL:mailto:katolaz@freaknet.org	bitreich.org	70
iDate:   Fri, 19 Jul 2019 19:23:38 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
idelete and default write file	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M TODO                                |       3 ++-	Err	bitreich.org	70
i  M gramscii.c                          |     143 +++++++++++++++++++------------	Err	bitreich.org	70
i	Err	bitreich.org	70
i2 files changed, 92 insertions(+), 54 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@@ -1,7 +1,6 @@	Err	bitreich.org	70
i + optimize redraws (i.e., avoid to redraw if possible)	Err	bitreich.org	70
i - (?) change cursor shape according to action	Err	bitreich.org	70
i - auto-arrow 'A' (automatic end-char)	Err	bitreich.org	70
i-- delete -- 'x' or 'd' 	Err	bitreich.org	70
i - load from file	Err	bitreich.org	70
i - read file at point	Err	bitreich.org	70
i - visual selection	Err	bitreich.org	70
i@@ -14,6 +13,8 @@	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+* 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
i * implement arrow	Err	bitreich.org	70
i * set different line styles (done for hl, vl, corner)	Err	bitreich.org	70
1diff --git a/gramscii.c b/gramscii.c	/scm/gramscii/file/gramscii.c.gph	bitreich.org	70
i@@ -15,7 +15,7 @@	Err	bitreich.org	70
i #define BOX    0x01	Err	bitreich.org	70
i #define ARROW  0x02	Err	bitreich.org	70
i #define TEXT   0x04	Err	bitreich.org	70
i-	Err	bitreich.org	70
i+#define DEL    0x08	Err	bitreich.org	70
i 	Err	bitreich.org	70
i #define DIR_N  0x00	Err	bitreich.org	70
i #define DIR_R  0x01	Err	bitreich.org	70
i@@ -55,6 +55,7 @@ int dir;	Err	bitreich.org	70
i int x;	Err	bitreich.org	70
i int y;	Err	bitreich.org	70
i int step;	Err	bitreich.org	70
i+int force_new;	Err	bitreich.org	70
i char cursor;	Err	bitreich.org	70
i char corner;	Err	bitreich.org	70
i char hlines[]  = {"-~=#@._ "};	Err	bitreich.org	70
i@@ -75,6 +76,9 @@ char line_v;	Err	bitreich.org	70
i char mark_st;	Err	bitreich.org	70
i char mark_end;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+char modified;	Err	bitreich.org	70
i+char fname[256];	Err	bitreich.org	70
i+	Err	bitreich.org	70
i struct termios t1, t2, t3;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -130,6 +134,8 @@ char* state_str(){	Err	bitreich.org	70
i                         return "box";	Err	bitreich.org	70
i                 case ARROW:	Err	bitreich.org	70
i                         return "arr";	Err	bitreich.org	70
i+                case DEL:	Err	bitreich.org	70
i+                        return "del";	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i                         return "ERR";	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i@@ -178,6 +184,8 @@ void init(){	Err	bitreich.org	70
i         init_screen();	Err	bitreich.org	70
i         x = WIDTH/2;	Err	bitreich.org	70
i         y = HEIGHT/2;	Err	bitreich.org	70
i+        modified = 0;	Err	bitreich.org	70
i+        fname[0] = '\0';	Err	bitreich.org	70
i         redraw();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -249,10 +257,33 @@ void draw_box(int x1, int y1, int fix){	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-void move_around(char c){	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-	Err	bitreich.org	70
i+int move_around(char c){	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        switch(c){	Err	bitreich.org	70
i+                case 'H': step = 5;	Err	bitreich.org	70
i+                case 'h': 	Err	bitreich.org	70
i+                        dir = DIR_L;	Err	bitreich.org	70
i+                        x -= step;	Err	bitreich.org	70
i+                        break;        	Err	bitreich.org	70
i+                case 'J': step = 5;	Err	bitreich.org	70
i+                case 'j':	Err	bitreich.org	70
i+                        dir = DIR_D;	Err	bitreich.org	70
i+                        y += step;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case 'K': step = 5;	Err	bitreich.org	70
i+                case 'k':	Err	bitreich.org	70
i+                        dir = DIR_U;	Err	bitreich.org	70
i+                        y -= step;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case 'L': step = 5;	Err	bitreich.org	70
i+                case 'l':	Err	bitreich.org	70
i+                        dir = DIR_R;	Err	bitreich.org	70
i+                        x += step;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                default:	Err	bitreich.org	70
i+                        return 1;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        return 0;	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -263,24 +294,7 @@ void get_box(){	Err	bitreich.org	70
i         step = 1;	Err	bitreich.org	70
i         draw_box(x,y,NOFIX);	Err	bitreich.org	70
i         while((c=getchar())!=EOF && c != 27 && c!= 'b'){	Err	bitreich.org	70
i-                switch(c){	Err	bitreich.org	70
i-                        case 'H': step = 5;	Err	bitreich.org	70
i-                        case 'h': 	Err	bitreich.org	70
i-                                x -= step;	Err	bitreich.org	70
i-                                break;        	Err	bitreich.org	70
i-                        case 'J': step = 5;	Err	bitreich.org	70
i-                        case 'j':	Err	bitreich.org	70
i-                                y += step;	Err	bitreich.org	70
i-                                break;	Err	bitreich.org	70
i-                        case 'K': step = 5;	Err	bitreich.org	70
i-                        case 'k':	Err	bitreich.org	70
i-                                y -= step;	Err	bitreich.org	70
i-                                break;	Err	bitreich.org	70
i-                        case 'L': step = 5;	Err	bitreich.org	70
i-                        case 'l':	Err	bitreich.org	70
i-                                x += step;	Err	bitreich.org	70
i-                                break;         	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i+                if (move_around(c)) continue;	Err	bitreich.org	70
i                 check_bound();	Err	bitreich.org	70
i                 redraw();	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
i@@ -363,30 +377,7 @@ void get_arrow(){	Err	bitreich.org	70
i         step = 1;	Err	bitreich.org	70
i         draw_arrow(x,y, arrow, 0, NOFIX);	Err	bitreich.org	70
i         while((c=getchar())!=EOF && c != 27 && c!= 'a'){	Err	bitreich.org	70
i-                switch(c){	Err	bitreich.org	70
i-                        case 'H': step = 5;	Err	bitreich.org	70
i-                        case 'h': 	Err	bitreich.org	70
i-                                dir = DIR_L;	Err	bitreich.org	70
i-                                x -= step;	Err	bitreich.org	70
i-                                break;        	Err	bitreich.org	70
i-                        case 'J': step = 5;	Err	bitreich.org	70
i-                        case 'j':	Err	bitreich.org	70
i-                                dir = DIR_D;	Err	bitreich.org	70
i-                                y += step;	Err	bitreich.org	70
i-                                break;	Err	bitreich.org	70
i-                        case 'K': step = 5;	Err	bitreich.org	70
i-                        case 'k':	Err	bitreich.org	70
i-                                dir = DIR_U;	Err	bitreich.org	70
i-                                y -= step;	Err	bitreich.org	70
i-                                break;	Err	bitreich.org	70
i-                        case 'L': step = 5;	Err	bitreich.org	70
i-                        case 'l':	Err	bitreich.org	70
i-                                dir = DIR_R;	Err	bitreich.org	70
i-                                x += step;	Err	bitreich.org	70
i-                                break;	Err	bitreich.org	70
i-                        default:	Err	bitreich.org	70
i-                                continue;	Err	bitreich.org	70
i-                }	Err	bitreich.org	70
i+                if (move_around(c)) continue;	Err	bitreich.org	70
i                 check_bound();	Err	bitreich.org	70
i                 /* FIXME: if we are out of bound, do nothing? */	Err	bitreich.org	70
i                 if (arrow_len == arrow_sz){	Err	bitreich.org	70
i@@ -438,17 +429,18 @@ int is_yes(char c){	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void write_file(){	Err	bitreich.org	70
i-        char fname[256];	Err	bitreich.org	70
i         FILE *f;	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i-	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+        	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+                                fclose(f);	Err	bitreich.org	70
i+                                return;	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i                         fclose(f);	Err	bitreich.org	70
i-                        return;	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i-                fclose(f);	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i         if((f=fopen(fname, "w"))==NULL){	Err	bitreich.org	70
i                 get_key("Error opening file.");	Err	bitreich.org	70
i@@ -512,6 +504,44 @@ void go_to(int where){	Err	bitreich.org	70
i         show_cursor();	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+void do_delete(int x1, int y1){	Err	bitreich.org	70
i+        int i;	Err	bitreich.org	70
i+        switch(dir){	Err	bitreich.org	70
i+                case DIR_R:	Err	bitreich.org	70
i+                        for(i=x1; i<=x; i++) set_xy(i,y,BG);	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case DIR_L:	Err	bitreich.org	70
i+                        for(i=x1; i>=x; i--) set_xy(i,y,BG);	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case DIR_U:	Err	bitreich.org	70
i+                        for(i=y1; i>=y; i--) set_xy(x,i,BG);	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i+                case DIR_D:	Err	bitreich.org	70
i+                        for(i=y1; i<=y; i++) set_xy(x,i,BG);	Err	bitreich.org	70
i+                        break;	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 delete(){	Err	bitreich.org	70
i+        char c;	Err	bitreich.org	70
i+        int orig_x = x, orig_y = y;	Err	bitreich.org	70
i+        status_bar();	Err	bitreich.org	70
i+        show_cursor();	Err	bitreich.org	70
i+        while((c=getchar())!=EOF && c!=27 && c!= 'x'){	Err	bitreich.org	70
i+                if (move_around(c)) continue;	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+                orig_x = x;	Err	bitreich.org	70
i+                orig_y = y;	Err	bitreich.org	70
i+                redraw();	Err	bitreich.org	70
i+                status_bar();	Err	bitreich.org	70
i+                show_cursor();	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        state = MOVE;	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@@ -554,6 +584,8 @@ void commands(){	Err	bitreich.org	70
i                                 state = ARROW;	Err	bitreich.org	70
i                                 get_arrow();	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i+                        case 'W':	Err	bitreich.org	70
i+                                force_new = 1;	Err	bitreich.org	70
i                         case 'w':	Err	bitreich.org	70
i                                 write_file();	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i@@ -566,6 +598,10 @@ void commands(){	Err	bitreich.org	70
i                         case 'm':	Err	bitreich.org	70
i                                 go_to(MIDDLE);	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i+                        case 'x':	Err	bitreich.org	70
i+                                state = DEL;	Err	bitreich.org	70
i+                                delete();	Err	bitreich.org	70
i+                                break;	Err	bitreich.org	70
i                         case '-':	Err	bitreich.org	70
i                                 toggle_hline();	Err	bitreich.org	70
i                                 break;	Err	bitreich.org	70
i@@ -593,6 +629,7 @@ void commands(){	Err	bitreich.org	70
i                 status_bar();	Err	bitreich.org	70
i                 show_cursor();	Err	bitreich.org	70
i                 step = 1;	Err	bitreich.org	70
i+                force_new = 0;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i }	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/gramscii/commit/575703d810415...
Content-Typetext/plain; charset=utf-8