2.2 KiB
Things missing
Color System
Topics to debate.
Given that we need pairs of foreground/background to be set when operating on a view, should we surface the values independently, or should we surface the attribute?
Currently views hardcode the colors to Colors.Base.SOmething for example, perhaps these should be set with styles instead, or even inheriting them.
The reason why the Colors definition is useful is because it comes with defaults that work for both color and black and white and other limited terminals. Setting foreground/background independently tends to break the black and white scenarios.
Color and Dialogs
Perhaps dialog containers need to set a general style for the child widgets, so that when we set a dialog, or error box, all the children added get the right set of default colors.
Should include another theme, like the TurboPascal 6 theme
Replaces Colors.Base.Normal with Attributes.Normal, and perhaps attributes
points to the container.
Views
Checkbox, ListView, Menu.
Wanted:
- Function Bar
- ScrollView
- Multi-line text editing
- Radio buttons
- DateTime widgets
- Shell/Process?
- Submenus in menus.
- Popup menus
- Make windows draggable
Layout manager
Unclear what to do about that right now. Perhaps use Flex?
Unicode
Needs to move to ustring from NStack.Core to get full Unicode support.
The reason for ustring is that we need proper measuring of characters, as we need to mirror what curses is showing it is a lot easier to go with ustring/rune than to manually add support for surrogate characters everywhere
Merge Responder into View
For now it is split, in case we want to introduce formal view controllers. But the design becomes very ugly.
Bugs
There is a problem with the high-intensity colors, they are not showing up
Add resizing support (still needs layout as well)
Mouse support
It is still pending.
Should allow for views to be dragged, in particular Window should allow this
Mono-Curses
The only missing feature in Mono-Curses that still relies on a native library is to fetch the OS SIGTSTP signal, we could hardcode this value if we had a way of detecting the host operating system and architecture, and just hardcode the value based on this.