Random list of things to be implemented on this library
-
Widgets
List viewCombo boxStackWidgetTabView/TabWidgetNorth- West
- East
- South
- Small triangles (only south?)
- Toolbar
- Actions
- Clickacble actions
- Toggle actions
- Actions with submenus
- ScrollBar
- Finish drawing barrel
- Click on empty areas - step up/down
- Drag the barrel - change value (needs mouse drag support?)
- Scroll wheel support
- Layout system
Horizontal/Vertical layout- https://www.qt.io/blog/responsive-layouts-in-qt?
- Other layouts?
- Menus
- sub-menu, popup-menu
- Window menu
- Initial implementation will be a "local menu bar"
- Second implementation will be a proxy so we can have nice OSX global menus.
- Dialog
- Normal dialog
- Inline dialog (no window created)
- Message boxes
- Save/Open dir dialogs
- Choose dir dialog
- Scrolling inside widget
- Need to have an offset - from which the widget is dispalayed
- All drawing will reduce from this offset
- New widget with a scroll bar - to have a scroll area. (Horizontal layout, with a main sub widget, and a scroll bar).
- Textbox
- Fix cursor movement, by measuing on screen text
- Fix selection
- We need to be able to select part of the text
- When part of the text is selected - work uppon it (delete/replace text)
- Properly display the selected area.
- Buttons
- Bitmap on buttons
- Open menu on click
- Color picker
- Font picker
- Directory chooser
- File choosed
-
Infrastructure
- Mouse drag
- Mouse wheel support
- keyboard
- Fix Unicode support (adding several char* on input, per unicode point)
- Propagate keyboard events
widget::add<Widget>.. (constructor)
(is this possible at all?)- All getters should return a reference
- All callbacks should have a reference to the widget as first argument
- Override functions for the library, callbacks for the consumers of the API
- Theme:
Widget::on_theme_changed()
- modify implicit widget sizes, colorRip of color form theme, into color style.Make the frame part of a widget theme - so you can choose frame per widget- Add GTK based theme
- Add Aqua (old OSX) theme
- Add OSX theme
- Add Material (Andorid) theme
- Add support for a 'transparent color' (currently 0 paints black)
- Finish dark color support
- Missing API: when to use dark themes
- MacOS support
- MSDOS support (for gaming!?)
- Multitouch (?)
- High DPI: drawing functions will be on a wrapper - that will multiply values before caling good-old-raster-code
- Rounded corner rectangle drawing
- Better bitmap support
- Alpha blending drawing (blend pixel done).
- At least transparent color - non-drawing.
Use freetype for better text- Use Harfbuzz for better rendering
- Wayland native support (see https://gaultier.github.io/blog/wayland_from_scratch.html)
- Connan recipe - for consumers of this library
- VCPKG - both internally, and for consumers of this library
- Rust integration? How can I use this in Rust?
- Clipboard integration
- Printing support
- Move all code into a namespace.
namespace svision;
,auto a = std::make_shared<svision::Widget>(pos,size);
- Move all public includes into
/inc/svision
, and in the cmake - make it public api (will trigger a refactor in all code -#include <svision/widget>
) - i18n
- We need to have a
_()
/tr()
macro which will ask for the translated string at runtime - Default implementation will return the same string
- We need a way to extract messages into a translation templeate
- We eed to be able to merge a translation template, into a translation list
- Do we have avialable formats?
- We need to have a
- Minimum size
- Widgets need to have a minimum size
- Layouts need to have a minimum size (computing all sub items)
- Windows need to have a minimum size
- problem: setting minimum size is trivial. Getting it on windows, is not. Might need to cache the value, and the function return might not be always read from the OS.
- Do we need a maximum?
- Relayout on first display on X11
-
3rd party porting
- Code to load images: I would like to be able to choose which decoders to use: (libpng, libjpg) vs, https://libspng.org/, and stb (https://github.com/nothings/stb)
- HTML widget - https://github.com/litehtml/litehtml
- TextEditor - https://www.scintilla.org/
-
Demos 0. Demo/reference app
- Freetype rendering demo
- CopyPasta - clipboard manager, ala CopyQ
- SVComm - Nortoma/Midnight/Total Commander clone - dual panel file manager
-
Bugs
Mouse hover with subwidgets is borked.- TabWidget changing tab flickers
- Changing theme on the fly does not work
- TabWidget/TabHeader on Redmond theme - height is wrong.