From: Patrick Date: Sun, 13 Aug 2023 19:51:48 +0000 (+0200) Subject: notes.md, changes in GetNode() X-Git-Url: https://gitweb.ps.run/iftint/commitdiff_plain/458e5019b068ff5673405b62bf7ac35fd60bc28a notes.md, changes in GetNode() --- diff --git a/main2.c b/main2.c index db8e7cb..aeb0c55 100644 --- a/main2.c +++ b/main2.c @@ -327,15 +327,48 @@ GetNode() { if (c == KEY_CTRL_C) break; - if (editingNode) { - if (node->data == (size_t)NULL) { - node->data = (size_t)NEWARR(char, 16); - strLen = 0; - } - if (isNewline(c)) { + /* + + - editing + - primitive -> input + - obj/arr -> new node inside + - not editing + - hjkl -> movement + - isoa + - parent=obj -> new key/value node after + - parent=arr -> new node after + - else -> nothing + */ + + if (isNewline(c)) { + if (editingNode) { editingNode = false; + if (node->parent != NULL && node->parent->kind == JSONNodeKind_Obj && node->firstChild != NULL) { + node = node->firstChild; + editingNode = true; + } + else if (node->parent != NULL && node->parent->kind == JSONNodeKind_Str && node->parent->parent != NULL) { + node = node->parent->parent; + editingNode = true; + } } else { + if (node->parent != NULL) + node = node->parent; + } + + g_CurrNode = node; + + continue; + } + + if (editingNode) { + if (JSONNodeEditable(node)) { + if (node->data == (size_t)NULL) { + node->data = (size_t)NEWARR(char, 16); + strLen = 0; + } + char * str = (char *)node->data; if (isBackspace(c)) { @@ -348,56 +381,44 @@ GetNode() { strLen++; } } + else { + if (node->kind == JSONNodeKind_Obj) { + /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Int))->parent); } + else if (c == 's') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Str))->parent); } + else if (c == 'o') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Obj))->parent); } + else if (c == 'a') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Arr))->parent); } + } + else if (node->kind == JSONNodeKind_Arr) { + /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Int)); } + else if (c == 's') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Str)); } + else if (c == 'o') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Obj)); } + else if (c == 'a') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Arr)); } + } + g_CurrNode = node; + } } else { if (node == NULL) { /**/ if (c == 'i') { node = JSONNodeNew(JSONNodeKind_Int); editingNode = true; } else if (c == 's') { node = JSONNodeNew(JSONNodeKind_Str); editingNode = true; } - else if (c == 'o') { node = JSONNodeNew(JSONNodeKind_Obj); } - else if (c == 'a') { node = JSONNodeNew(JSONNodeKind_Arr); } + else if (c == 'o') { node = JSONNodeNew(JSONNodeKind_Obj); editingNode = true; } + else if (c == 'a') { node = JSONNodeNew(JSONNodeKind_Arr); editingNode = true; } g_DrawNode = g_CurrNode = result = node; } - else if (node->kind == JSONNodeKind_Int) { - /**/ if (c == 'h') { if (node->prev != NULL) g_CurrNode = node = node->prev; } - else if (c == 'l') { if (node->next != NULL) g_CurrNode = node = node->next; } - else if (c == 'k') { if (node->parent != NULL) g_CurrNode = node = node->parent; } - else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; } - else if (c == ' ') { if (JSONNodeEditable(node)) editingNode = true; } - else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); } - } - else if (node->kind == JSONNodeKind_Str) { - /**/ if (c == 'h') { if (node->prev != NULL) g_CurrNode = node = node->prev; } - else if (c == 'l') { if (node->next != NULL) g_CurrNode = node = node->next; } - else if (c == 'k') { if (node->parent != NULL) g_CurrNode = node = node->parent; } - else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; } - else if (c == ' ') { if (JSONNodeEditable(node)) editingNode = true; } - else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); } - } - else if (node->kind == JSONNodeKind_Obj) { - /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Int))->parent); editingNode = true; } - else if (c == 's') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Str))->parent); editingNode = true; } - else if (c == 'o') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Obj))->parent); editingNode = true; } - else if (c == 'a') { node = JSONNodePush(node, JSONNodePush(JSONNodeNew(JSONNodeKind_Str), JSONNodeNew(JSONNodeKind_Arr))->parent); editingNode = true; } - - else if (c == 'h') { if (node->prev != NULL) g_CurrNode = node = node->prev; } - else if (c == 'l') { if (node->next != NULL) g_CurrNode = node = node->next; } - else if (c == 'k') { if (node->parent != NULL) g_CurrNode = node = node->parent; } - else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; } - else if (isBackspace(c)) { node = JSONNodeRemove(node); } - - g_CurrNode = node; - } - else if (node->kind == JSONNodeKind_Arr) { - /**/ if (c == 'i') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Int)); editingNode = true; } - else if (c == 's') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Str)); editingNode = true; } - else if (c == 'o') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Obj)); } - else if (c == 'a') { node = JSONNodePush(node, JSONNodeNew(JSONNodeKind_Arr)); } + // else if (node->kind == JSONNodeKind_Str && node->parent != NULL && node->parent->kind == JSONNodeKind_Obj) { + // } + else { + /**/ if (c == 'i' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Int)); editingNode = true; } + else if (c == 's' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Str)); editingNode = true; } + else if (c == 'o' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Obj)); editingNode = true; } + else if (c == 'a' && node->parent != NULL) { node = JSONNodePush(node->parent, JSONNodeNew(JSONNodeKind_Arr)); editingNode = true; } else if (c == 'h') { if (node->prev != NULL) g_CurrNode = node = node->prev; } else if (c == 'l') { if (node->next != NULL) g_CurrNode = node = node->next; } else if (c == 'k') { if (node->parent != NULL) g_CurrNode = node = node->parent; } else if (c == 'j') { if (node->firstChild != NULL) g_CurrNode = node = node->firstChild; } - else if (isBackspace(c)) { node = JSONNodeRemove(node); } + else if (c == ' ') { editingNode = true; if (JSONNodeEditable(node) && (void *)node->data != NULL) strLen = strlen((char *)node->data); } + else if (isBackspace(c)) { g_CurrNode = node = JSONNodeRemove(node); } g_CurrNode = node; } diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..9810cb5 --- /dev/null +++ b/notes.md @@ -0,0 +1,3 @@ +# ideen +- utility die unicode zeichen inputtet, eine Tastenkombi, Menü mit Eingabe, Tastatur simulieren + - maybe AHK? \ No newline at end of file