]> gitweb.ps.run Git - iftint/blob - main.c
object editing, press space to edit existing primitive node
[iftint] / main.c
1 #ifdef _WIN32\r
2 #include <pdcurses.h>\r
3 #else\r
4 #include <ncurses.h>\r
5 #endif\r
6 \r
7 \r
8 \r
9 \r
10 int main() {\r
11     initscr();\r
12 \r
13     noecho();\r
14 \r
15     char word[128];\r
16     int index = 0;\r
17 \r
18     int level = 1;\r
19 \r
20     struct Word {\r
21         char str[128];\r
22         int len;\r
23     };\r
24     struct Word words[128];\r
25     int numWords = 1;\r
26     words[0].str[0] = '(';\r
27     words[0].len = 1;\r
28 \r
29     while (true) {\r
30         move(0, 0);\r
31         clear();\r
32         refresh();\r
33 \r
34         for (int i = 0; i < numWords; i++) {\r
35             printw("%.*s\n", words[i].len, words[i].str);\r
36         }\r
37 \r
38 \r
39         int key = getch();\r
40 \r
41         /**/ if (key == ' ') {\r
42             if (index == 0) {\r
43                 if (level > 0) {\r
44                     // end list\r
45                     words[numWords].str[0] = ')';\r
46                     words[numWords].len = 1;\r
47                     numWords++;\r
48                     level--;\r
49                 }\r
50             }\r
51             else {\r
52                 // add to list\r
53                 // for (int i = 0; i < index; i++) {\r
54                 //     words[numWords].str[i] = word[i];\r
55                 // }\r
56                 // words[numWords].len = index;\r
57                 index = 0;\r
58                 // numWords++;\r
59             }\r
60         }\r
61         else if (key == '\n') {\r
62             // if (index == 0) {\r
63                 // // add to list\r
64                 // for (int i = 0; i < index; i++) {\r
65                 //     words[numWords].str[i] = word[i];\r
66                 // }\r
67                 // words[numWords].len = index;\r
68                 // index = 0;\r
69                 // numWords++;\r
70                 \r
71                 // add list\r
72                 words[numWords].str[0] = '(';\r
73                 words[numWords].len = 1;\r
74                 numWords++;\r
75                 level++;\r
76             // }\r
77             index = 0;\r
78         }\r
79         else if (key == 8 || key == 127) {\r
80             if (numWords > 0) {\r
81                 if (words[numWords-1].len == 1 && words[numWords-1].str[0] == '(') level--;\r
82                 if (words[numWords-1].len == 1 && words[numWords-1].str[0] == ')') level++;\r
83                 numWords--;\r
84             }\r
85         }\r
86         else {\r
87             if (index == 0) {\r
88                 numWords++;\r
89                 words[numWords-1].len = 0;\r
90             }\r
91             printw("%d\n", key);\r
92             words[numWords-1].str[index++] = (char)key;\r
93             words[numWords-1].len++;\r
94         }\r
95     }\r
96 \r
97     endwin();\r
98 \r
99     return 0;\r
100 }\r