/synthings

synthings is a cross-platform library for building applications based on connected input modules.

Primary LanguageF#

synthings

synthings screenshot

Research into simple, flexible, and robust systems for interactive graphical programming.

Setup

  1. Download .NET SDK
  2. Install JetBrains Rider (via Toolbox)
  3. Install Xcode
  4. Open Xcode, sign in, install command line tools, and install "Platforms" in Xcode > Settings...
  5. Install Android Studio (via Toolbox)
  6. Open Android Studio and accept licences
  7. Clone this repository
  8. Run sudo dotnet workload restore

TODO

  • import images
  • Replace proposal -> Replace (entire subtree) and Refresh (just one entity)
  • Remove all uneccessary failwith statements with error reporting mechanisms (don't fail, recover and provide next steps)

Proposals and Operations

Proposal Action Data
Initialize Delete state and create new entity as root initialTree
Add Create new entity and insert into siblings list tree, parent, order
Refresh Update one entity (value) only entityId, entity, replacementEntity
Replace Delete existing entity (and all its children) and create new entity with same Identifier entityId, entity, replacementTree
Remove Delete existing entity entityId, entity
Operation Action Data
Create Creates a new entity entityId, entity
Parent Assigns child to parent childId, parentId
Reorder Moves an entity relative to its siblings entityId, parentId, order, priorOrder
Update Replaces an entity with a new value, leaving relations intact entityId, entity, priorEntity
Orphan Removes an entity from the relations table entityId, parentId
Delete Deletes an entity entityId, entityToRestore