C# consoleUI

C# consoleUI

30 devlogs
80h 14m
•  Ship certified

A C# Library that render TUI(Text User Interface) that handle mouse click and more

Timeline

Earned sticker

Included many fixes and also added Logger(which a logging system that allows you to push log on it and the old one will be hidden) and PagingTable, which allow you to make multiple pages of field using Field (it does remove some flexibility on what you can do tho)
This is a demonstration of how it can be used (although not included in the library) and I am sorry for the laggy recording since my laptop is too old, it feels much better if you don't record at the same time.
The top is the paging table and the bottom is the logger (the control bar was just button and bounded spinner which have previously shipped)

Ship 2

1 payout of shell 182.0 shells

i-am-unknown-81514525

25 days ago

i-am-unknown-81514525 Covers 17 devlogs and 41h 59m

Well, it is another multi-small update
Fixed a bunch of random bugs that cause the table to malformat (which took majority of the time)
Add more chaining for some functionality that make it easier to use (Like IComponent.WithChange which immediately edit the component that the function described)
Edit ComplexTest so the test is also demonstrate the new thing like multi line field and table of input

Update attachment

Implemented ComponentStore so that you can use handler system (particular in Button) directly with custom defined storage without having to defined custom class

I don't think people like to see 2 empty class (ComponentStore abstract class and EmptyStore) so here some more fun side-effect of it

Update attachment

Implemented:
- ITable, Table, LatexTable, FormattedTable for displaying 2D components
- ILatex for latex from (some) components
- Fix some math for prototype in ui.test

Update attachment

Added a Padding class (just a quick wrapper), added underlining for input field, a exit button (again another quick wrapper) and design a nice menu for testing, and now you have this!!!

Some minor update:
- Fix unnecessary Console.Write with no UI update
- Cache ANSI sequence generation for coloring string
- Make resize instantly reactive (instead require a mouse movement/keyboard click)

This took longer than expected due to debugging, but I now made Frame class, so now you can put a frame around a component, or group of component!

Update attachment

Add Switcher so it can switch between component group(which only possible after change made in previous devlog)
Add chain style to add attribute of component in a single line!!! (I love function chaining)
And now added the switcher and mounting to be autobuild

Update attachment

Added Mount, Dismount Uninit etc. API to allow component to be modular and can be dismount from an component and mount to another (also discover some bug due to the new test application that was occuring with previous test that wasn't notice)

Update attachment

Fixed various bug that make multi-input field possible! (you might confused what the difference compare to the single field one, but that code wasn't able to properly test the active handler that control which component is active)
So now, it fixed some bug like deactiving the wrong component, and off by one error on the row/col for the cursor position.

Update attachment

Implemented a single line text field and fix various other bug!

Update attachment

Quick update: Added seperator component so now you can seperate between item, Like following:

Update attachment

Finishing TextLabel and make Button a subclass of TextLabel(since well, Button is just an interactive text label)

Update attachment

Add an alignment system for string, for aligning the text content in the component

Update attachment

Took me a little bit too long but finally got word wrapping handling working (include python and equivalent C# persumably)

Update attachment

Add a Button demo... And also the multi-button one!!!
Yes, I forgot to write a devlog for a single button but now you can also have this by implementing GroupComponent abstract class that support vertical and horizontal component and they finally link up to each other!!! I am so happy rn.

Update attachment

Add a button class, ANSI handling, adding some convenient class for coding and more... (Kind of forgot some of the thing I did because I jump around with random thought and then immediately go and change something for the whole 2h)
Don't have a demo yet for the button so here more code snippet on what I have done. You should see a demo next devlog

Update attachment

Add handler for mouse activity
Rewrite active component management
Add further abstraction and fix some incorrectly used access modifier

Update attachment

Ship 1

1 payout of shell 127.0 shells

i-am-unknown-81514525

3 months ago

i-am-unknown-81514525 Covers 12 devlogs and 30h 2m

Updated:
- Pasting to input field
- Parsing value to fraction in exact form instead of calculating fraction base on non-precise double (64-bit)
- Add attestation to GitHub build and other build improvement
- Fixed default color wouldn't be consistent to potential updated color

Demo:
- Added new demo for testing what can parse for fraction
- Updated Prototype demo to have longer input field

Update attachment

Finally implement full build workflow to build the library and all the demo of the library

Update attachment

Fixed Rust -CString-> C# FFI cause potential error due to null byte

Update attachment

Fix UI bug and actual math solving

Update attachment

Setup basic demo finally

Update attachment

Add Fraction class for aspect ratio calculation for the component group such as containers

Update attachment

new partially complete App component

Update attachment

Update on BaseComponent:
- Add click event handler
- More rigorous lock checking
- Update Render logic to allow component to display animation
- Allow getting and setting parent(root) of the component
- Add active status handling

Update attachment

Update BaseComponent...
Basically horror

Update attachment

Finally fix Console weirdness ig
Trying to add Component

Update attachment

Fix the input handling (probably) by adding some messy code

Update attachment

Writing some C# horror (X
Adding Console Size control which allow program to run with a different size than the terminal size

Update attachment