2024-03-08 00:34:21 -08:00
# Sectr Prototype
2024-05-16 14:51:14 -07:00
This prototype aims to flesh out ideas I've wanted to explore futher on code editing & related tooling.
2024-03-08 00:34:21 -08:00
2024-03-08 15:45:08 -08:00
The things to explore:
* 2D canvas for laying out code visualized in various types of ASTs
* WYSIWYG frontend ASTs
* Making AST editing as versatile as text editing.
2024-05-16 14:51:14 -07:00
* High-performance UI framework designed & built for AST editing.
* Generating a large amount of UI widget boxes with proper auto-layout & no perceptible rendering-lag or input lag for interactions (frametimes stable).
2024-05-04 08:52:52 -07:00
* Model-View-Controller interface between code managed by a 'backend' (both in memory and filesystem) and the UX composition (which has separate filesystem composition).
2024-03-08 15:45:08 -08:00
2024-03-08 00:34:21 -08:00
The project is so far in a "codebase boostrapping" phase.
2024-03-08 15:45:08 -08:00
The project's is organized into 2 modules sectr_host & sectr.
2024-03-08 00:34:21 -08:00
The host module loads the main module & its memory. Hot-reloading it's dll when it detects a change.
2024-03-08 15:45:08 -08:00
The dependencies are:
2024-05-16 14:27:15 -07:00
* Odin Compiler (Slightly custom [fork ](https://github.com/Ed94/Odin ))
2024-05-12 13:02:38 -07:00
* Added #region , #endregion directives support for editors
2024-05-16 14:51:14 -07:00
* I added support for 'monlithic packages' or 'uniform-across-subdirectories packages'. It allows me to organize the main package with sub-directories.
2024-03-08 15:45:08 -08:00
* Odin repo's base, core, and vendor(raylib) libaries
* An ini parser
2024-05-13 18:53:08 -07:00
* backtrace
2024-05-16 10:35:03 -07:00
* Powershell (if you want to use my build scripts)
2024-03-08 15:45:08 -08:00
2024-05-16 10:35:03 -07:00
Major 'codebase modules':
2024-03-08 15:45:08 -08:00
2024-06-02 14:29:44 -07:00
* App : General app config & contextual state
* Engine : client interface for host, tick, update, rendering.
2024-05-16 10:35:03 -07:00
* Has the following definitions: startup, shutdown, reload, tick, clean_frame (which host hooks up to when managing the client dll)
2024-06-02 14:29:44 -07:00
* Will handle async ops.
2024-03-08 15:45:08 -08:00
* Font Provider : Manages fonts.
2024-06-02 14:29:44 -07:00
* Bulk of visualization must be able to render text effectively
* Going to use some form of caching.
* Needs to be able to scale text in-realtime to linear values.
2024-05-13 18:53:08 -07:00
* Grime : Name speaks for itself, stuff not directly related to the target features to iterate upon for the prototype.
* Defining dependency aliases or procedure overload tables, rolling own allocator, data structures, etc.
2024-05-11 19:38:05 -07:00
* Input : All human input related features
2024-06-02 14:29:44 -07:00
* Base input features (polling & related) are platform abstracted from sokol_app
* Entirely user rebindable
* Parsers
* AST generation, editing, and serialization.
* Parsers for different levels of "synatitic & semantic awareness", Formatting -> Domain Specific AST
* Figure out pragmatic transformations between ASTs.
* Project : Encpasulation of user config/context/state separate from persistent app's
* Manages the codebase (database & model view controller)
2024-05-11 19:38:05 -07:00
* Manages workspaces : View compositions of the codebase
* UI : Core graphic user interface framework, AST visualzation & editing, backend visualization
2024-05-10 01:16:04 -07:00
* PIMGUI (Persistent Immediate Mode User Interface)
2024-05-11 19:38:05 -07:00
* Auto-layout
* Supports heavy procedural generation of box widgets
2024-06-02 14:29:44 -07:00
* Viewports
* Docking/Tiling, Floating, Canvas
2024-05-11 19:38:05 -07:00
Due to the nature of the prototype there are 'sub-groups' such as the codebase being its own ordeal as well as the workspace.
They'll be elaborated in their own documentation
2024-05-04 08:52:52 -07:00
2024-05-04 09:59:08 -07:00
## Gallery
![img ](docs/assets/sectr_host_2024-03-09_04-30-27.png )
![img ](docs/assets/sectr_host_2024-05-04_12-29-39.png )
![img ](docs/assets/Code_2024-05-04_12-55-53.png )
2024-05-11 19:38:05 -07:00
![img ](docs/assets/sectr_host_2024-05-11_22-34-15.png )
2024-05-15 00:34:52 -07:00
![img ](docs/assets/sectr_host_2024-05-15_03-32-36.png )
2024-05-21 20:35:36 -07:00
![img ](docs/assets/Code_2024-05-21_23-15-16.gif )