# "*": "https://raw.githubusercontent.com/wefindx/schema/master/method/oo-item.yaml" # "base:title": "0oo - Additive GUIs" "og:title": "Additive GUIs" "og:description": "I have a idea whereby you specify the relationships of widgets on the screen and the computer generates the layout. Rather than positioning widgets manually, the computer generates the layout. Essentially the widgets are an inequality formula where X and y is set relative to one another. We say that one widget is left of another widget or another widget is below another. This is how you might describe practically any GUI The idea is that the computer generates variations of the layout and the human reviews them. You also define the data flow between widgets. BackedBy is how we …" "og:image": "https://avatars0.githubusercontent.com/u/28134655" "og:url": "/method/67001/" "base:css": "/static/css/bootstrap.min.9c25540d6272.css" "base:extra-css": "/static/css/base.57997aeac1df.css" "base:favicon": "/static/favicon.acaa334f0136.ico" "base:body_class": "" "layout:logo": "/static/0oo.8d2a8bbef612.svg" "layout:index": "/" "layout:menu": "/menu/" "layout:categories": "/intents/" "layout:ideas": "/methods/" "layout:projects": "/projects/" "layout:users": "/users/" "layout:about": "/about/" "layout:help": "/help/" "layout:bug_report": "https://github.com/wefindx/0oo" "layout:login": "/accounts/login/" "layout:light-off": "/darken/?darken=true" "layout:set-multilingual": "/mulang/?mulang=true" "layout:lang": "言語" "layout:set-language-post-action": "/i18n/setlang/" "layout:csrf-token": "sg9I0lGuVQCt53MsxYNeY6KhjPizv8TjFn6gi0PXNcgDy64idEDOSqou2tNBna8J" "layout:input-next": "/method/67001/" "layout:languages": [{"code": "ja", "is-active": "true", "name": "日本語"}, {"code": "lt", "is-active": "false", "name": "Lietuviškai"}, {"code": "zh-hans", "is-active": "false", "name": "简体中文"}, {"code": "en", "is-active": "false", "name": "English"}, {"code": "ru", "is-active": "false", "name": "Русский"}, {"code": "oo", "is-active": "false", "name": "O;o,"}] # "item:parent:intents": [{"url": "/intent/19001/", "title": "Programming too difficult"}] "item:title": "Additive GUIs" "item:summary": "Specify the attributes of the GUI and let the computer generate the GUI" "item:voting": +1 "item:voting:add": "/admin/hlog/voting/add/?method=67001" "item:voting:csrf_token": "sg9I0lGuVQCt53MsxYNeY6KhjPizv8TjFn6gi0PXNcgDy64idEDOSqou2tNBna8J" "item:voting:submit-value-option": {"selected": "[-]", "value": "-"} "item:voting:submit-value-option": {"selected": "[+]", "value": "+"} "item:base-administration": false "item:body": | I have a idea whereby you specify the relationships of widgets on the screen and the computer generates the layout. Rather than positioning widgets manually, the computer generates the layout. Essentially the widgets are an inequality formula where X and y is set relative to one another. We say that one widget is left of another widget or another widget is below another. This is how you might describe practically any GUI The idea is that the computer generates variations of the layout and the human reviews them. You also define the data flow between widgets. BackedBy is how we set the data source for a widget. MappedTo is a reference to a template that defines the GUI for an item in a collection. It's the same as a functional map. The system is configured in triples. Have you ever heard of Todo MVC? https://todomvc.com/ It's a simple problem implemented in many frameworks. The problem is a to-do list. This is a to-do app written in additive GUIs. You should notice that it is extremely compact. { "predicates": [ "NewTodo leftOf insertButton", "Todos below insertButton", "Todos backedBy todos", "Todos mappedTo todos", "Todos key .description", "Todos editable $item.description", "insertButton on:click insert-new-item", "insert-new-item 0.pushes {\"description\": \"$item.NewTodo.description\"}", "insert-new-item 0.pushTo $item.todos", "NewTodo backedBy NewTodo", "NewTodo mappedTo editBox", "NewTodo editable $item.description", "NewTodo key .description" ], "widgets": { "todos": { "predicates": [ "label hasContent .description" ] }, "editBox": { "predicates": [ "NewItemField hasContent .description" ] } }, "data": { "NewTodo": { "description": "Hello world" }, "todos": [ { "description": "todo one" }, { "description": "todo two" }, { "description": "todo three" } ] } } "item:source-date": "" "item:permalink": "/method/67001/?l=ja" "item:owner": "chronological" "item:created": "2021-09-05T14:14:02.288898" "item:ownerlink": "/user/198/chronological" # "item:link:items": - "id": "l-28001" "url": "https://github.com/samsquire/additive-guis" "text": "Project homepage" "note": "I have a working implementation of additive GUIs here." "owner": "chronological" "ownerlink": "/user/198/chronological" "permalink": "/method/67001/?l=ja#l-28001" "created": "2021-09-05T14:17:26.054608" "item:link:add": "/admin/hlog/link/add/?parent=67001" "item:project:items": "item:project:add": "/admin/hlog/project/add/?parent=67001" "item:comment:add": "/methods/addnote?parent=67001" "item:comment:add:csrf_token": "sg9I0lGuVQCt53MsxYNeY6KhjPizv8TjFn6gi0PXNcgDy64idEDOSqou2tNBna8J" "item:comment:form": |