ui
ui copied to clipboard
Version 0.1 Roadmap
Many features will need discussion so this thread acts as both a discussion & a task list for contributors/maintainers.
Notes:
- All these features won't necessarily make it into the v0.1 but they are planned nonetheless.
- Mentions after the each entry means that feature is being worked on by those persons.
- Please don't ask for ETAs. We are working on it as much as possible. Once it's done, you will know. You can follow the development on the Discord Channel.
API
- [x] Declarative style (@thecodrr)
- [ ] Hot code reloading
- [x] Proper eventing system using
eventbus
(@thecodrr) - [ ] RTL support
- [ ] Themes
- [ ] Custom widgets on user level
- [ ] DataBinding to arrays & orm columns
- [ ] Widget customization using properties (color etc.)
Window API
- [ ] Drag & Drop
- [ ] Custom Scaling
- [ ] Resizing
Responsiveness
- [ ] Relative values for dimensions, margins etc. (percentage or px)
- [ ] Hover, focus feedback
- [x] Animations & Transitions (@memeone)
- [ ] Tab support (focus)
Layout
- [x] Column (@thecodrr)
- [x] Row (@thecodrr)
- [ ] FlexBox
- [ ] Grid
- [ ] Dock Panel
Widgets
- [ ] Menus
- [ ] ScrollView (@thecodrr)
- [ ] ListBox
- [ ] ListView
- [ ] DataGrid
- [ ] Tab Control
- [ ] WebView
- [x] Slider (@thecodrr)
- [x] Dropdown (@thecodrr)
- [ ] Tooltips
- [ ] TreeView
TextBox
- [ ] Multiline textbox
- [x] Text selection with a mouse (@thecodrr)
- [ ] TextBox Validation
- [ ] Format support
Accessibility
- [ ] Screen reader support
More items will be added as required
I feel like animations/transitions are pretty important in modern software as well. Add it to the list?
Proper eventing system using eventbus instead of the current struct Fn fields.
This might be solved automatically by implementing everything as generic streams.
For the lay out manager of components, please consider also looking at the imperative programming style of MigLayout API. It's small easy-to-read tutorial/manual is enough to give you an overview of its entire API. http://www.miglayout.com/
For the lay out manager of components, please consider also looking at the imperative programming style of MigLayout API.
Does this have advantages over just using flexbox?
- Render or Viewport Widget (aka direct access to the display memory to stream video or render frames from a game)
- Right-Left text editing direction (Arabic, Hebrew, Urdu...)
- Drag-and-drop (i.e. filename or whole path+filename)
- Tabbed widget
- Resizeable widget's borders
- Dockable widget or windows
- Inability to drag or put a widget/windows completely outside of screen view !!! Perhaps with a recenter event.
- Fullscreen command for widget
- Prefilling forms (perhaps this can be done with events)
- Zoom
- Color selector widget
@lazalong
Render or Viewport Widget
We already have Canvas
which does basically the same thing.
Good job! Can you give an approximate completion time? I insterest in v lang and I want dev cnc controll software using vui.
Good job! Can you give an approximate completion time? I insterest in v lang and I want dev cnc controll software using vui.
@origel No ETAs please.
@thecodrr you can put me on animations, transitions are already merged
I’m also looking at implementing a scrollview but no guarantee that I’ll be able to pull it off
@memeone I will move on to ScrollView after the new API is merged. If you want to take it, I will look at something else.
@thecodrr you can take it, maybe I’ll look at styling or hover feedback instead 🤔
@memeone okay awesome.
@thecodrr I want implment some layout just like FillLayout,FormLayout, RowLayout and GridLayout in SWT, if vui is added layout function, vui can be used to develope actual software. But I have no idea if it is needed. and the layout description in 0.1 roadmap I don't know what does it mean, can you give me some suggestion? What can I do to make this project move faster?
@origel I have already implemented 2 layouts: ColumnLayout & RowLayout. You should try it out.
- Tabs (mentioned above)
- Framebuffer (is canvas the same? )
- Map / Cartography / Webdata visualizer
- Dials, guages, windrose, clock...
- Charting widget
- Rich text
is the codebase of V in C? how can i write my own custom widgets and contribute?
V is written in V, the main repo can be found at https://github.com/vlang/v
Creating new widgets is quite easy, you can look at rectangle.v and label.v in this repo for some simple reference implementations.
Will the lambda expression be added? Hope to be like kotlin anko's ui dsl
Add MDI (Multiple Document Interface)
Years ago I implemented in a Java UI framework the ability to disable animations and transitions, sometimes (on old/poor hardware and some kind on users) they are not needed ... maybe you could add here even a similar feature, but of course by default enabled :-) . Bye
A navigator widget could be nice
@lampato don’t really know what you mean by “navigator widget”. Do you have any examples? I’m gonna start trying to implement a few more widgets soon :)
file dialogue probably
@leahlundqvist a widget to navigator to/for a page with twists!!
webview webview!!!
It would also be nice to have a font_path
option. And since multiline_textbox
is on the roadmap, it would make good sense to have a text.v
file dedicated to the text calculation, width, wrapping, etc... functions.
Is tab-handling (in the meaning of navigation from control to control) already in the pipeline? When trying examples/users.v
this was the first issue I was missing.
yes @vmcrash, I've added it to the roadmap
Maybe also having some documentation would be something needed no ? Because I can't find any api doc, tutorial or something else...
@dedesite currently you have to look at the examples or in the widget source codes directly. Currently the main focus is on stabilizing V. After that UI will get some love too and it will get some docs for sure ;)