Move TODO-list to own TODO.md
This commit is contained in:
parent
8f1def11f1
commit
3160c44a4b
2 changed files with 127 additions and 108 deletions
127
TODO.md
Normal file
127
TODO.md
Normal file
|
@ -0,0 +1,127 @@
|
|||
# TODO
|
||||
TODO-list for the Egui project. If you looking for something to do, look here.
|
||||
|
||||
* Widgets:
|
||||
* [ ] Text input
|
||||
* [x] Input
|
||||
* [x] Text focus
|
||||
* [x] Cursor movement
|
||||
* [ ] Text selection
|
||||
* [ ] Clipboard copy/paste
|
||||
* [ ] Move focus with tab
|
||||
* [ ] Horizontal slider
|
||||
* [ ] Color picker
|
||||
* [x] linear rgb <-> sRGB
|
||||
* Containers:
|
||||
* [ ] Scroll areas
|
||||
* [x] Vertical scrolling
|
||||
* [x] Scroll-wheel input
|
||||
* [x] Drag background to scroll
|
||||
* [ ] Horizontal scrolling
|
||||
* [ ] Kinetic scrolling
|
||||
* [ ] Text
|
||||
* [ ] Unicode
|
||||
* [ ] Shared mutable expanding texture map?
|
||||
* [ ] Change text style/color and continue in same layout
|
||||
* [ ] Menu bar (File, Edit, etc)
|
||||
* [ ] Sub-menus
|
||||
* [ ] Keyboard shortcuts
|
||||
* [ ] Layout
|
||||
* [x] Generalize Layout (separate from Ui)
|
||||
* [ ] Table with resizable columns
|
||||
* [ ] Grid layout
|
||||
* [ ] Point list
|
||||
* Windows
|
||||
* [ ] Positioning preference: `window.preference(Top, Right)`
|
||||
* [ ] Keeping right/bottom on expand. Maybe cover jitteryness with quick animation?
|
||||
* [ ] Image support
|
||||
* [ ] user-chosen texture ids (so people can show thing with mipmaps and whatnot)
|
||||
* [ ] `enum TextureId { Egui, User(u64) }` added to `Triangles`
|
||||
* [ ] API for creating a texture managed by Egui
|
||||
* Backend-agnostic. Good for people doing Egui-apps (games etc).
|
||||
* [ ] Convert font texture to RGBA, or communicate format in initialization?
|
||||
* [ ] Generalized font atlas
|
||||
* Visuals
|
||||
* [x] Pixel-perfect painting (round positions to nearest pixel).
|
||||
* [x] Fix `aa_size`: should be 1, currently fudged at 1.5
|
||||
* [x] Fix thin rounded corners rendering bug (too bright)
|
||||
* [ ] Veriy alpha and sRGB correctness
|
||||
* [x] sRGBA decode in fragment shader
|
||||
* [ ] Thin circles look bad
|
||||
* [ ] Color picker
|
||||
* [ ] Smoother animation (e.g. ease-out)?
|
||||
* Math
|
||||
* [ ] Change `width.min(max_width)` to `width.at_most(max_width)`
|
||||
|
||||
## egui_web
|
||||
* [x] Scroll input
|
||||
* [x] Change to resize cursor on hover
|
||||
* [x] Port most code to Rust
|
||||
* [x] Read url fragment and redirect to a subpage (e.g. different examples apps)
|
||||
* [ ] Embeddability
|
||||
* [ ] Support canvas that does NOT cover entire screen.
|
||||
* [ ] Support multiple eguis in one web page.
|
||||
* [ ] Filtering events to avoid too frequent repaints
|
||||
* [ ] Multiple canvases from the same rust code
|
||||
* Different Egui instances, same app
|
||||
* Allows very nice web integration
|
||||
|
||||
## Modularity
|
||||
* [x] `trait Widget` (`Label`, `Slider`, `Checkbox`, ...)
|
||||
* [ ] `trait Container` (`Frame`, `Resize`, `ScrollArea`, ...)
|
||||
* [ ] `widget::TextButton` implemented as a `container::Button` which contains a `widget::Label`.
|
||||
* [ ] Easily chain `Container`s without nested closures.
|
||||
* e.g. `ui.containers((Frame::new(), Resize::new(), ScrollArea::new()), |ui| ...)`
|
||||
* [ ] Attach labels to checkboxes, radio buttons and sliders with a separate wrapper-widget ?
|
||||
|
||||
## Input
|
||||
* [x] Distinguish between clicks and drags
|
||||
* [x] Double-click
|
||||
* [x] Text
|
||||
* [ ] Support all mouse buttons
|
||||
* [ ] Distinguish between touch input and mouse input
|
||||
|
||||
## Other
|
||||
* [x] Persist UI state in external storage
|
||||
* [x] Persist Example App state
|
||||
* [ ] Create an Egui icon (or use an emoji)
|
||||
* [ ] Build in a profiler which tracks which `Ui` in which window takes up CPU.
|
||||
* [ ] Draw as flame graph
|
||||
* [ ] Draw as hotmap
|
||||
* [ ] Windows should open from `UI`s and be boxed by parent ui.
|
||||
* Then we could open the example app inside a window in the example app, recursively.
|
||||
* [ ] Implement a minimal markdown viewer
|
||||
|
||||
## Names and structure
|
||||
* [x] Combine Egui and Context?
|
||||
* [x] Solve which parts of Context are behind a mutex
|
||||
* [x] Rename Region to Ui
|
||||
* [x] Maybe find a shorter name for the library like `egui`?
|
||||
* [ ] Rename things to be more consistent with Dear ImGui ?
|
||||
|
||||
## Global widget search
|
||||
Ability to do a search for any widget. The search works even for collapsed regions and closed windows and menus. This is implemented like this: while searching, all region are layed out and their add_content functions are run. If none of the contents matches the search, the layout is reverted and nothing is shown. So windows will get temporarily opened and run, but if the search is not a match in the window it is closed again. This means then when searching your whole GUI is being run, which may be a bit slower, but it would be a really awesome feature.
|
||||
|
||||
# Done:
|
||||
* Widgets
|
||||
* [x] Label
|
||||
* [x] Button
|
||||
* [x] Checkbox
|
||||
* [x] Radiobutton
|
||||
* [x] Collapsing header region
|
||||
* [x] Tooltip
|
||||
* [x] Movable/resizable windows
|
||||
* [x] Kinetic windows
|
||||
* [x] Add support for clicking hyperlinks
|
||||
* Containers
|
||||
* [x] Vertical slider
|
||||
* [x] Resize any side and corner on windows
|
||||
* [x] Fix autoshrink
|
||||
* [x] Automatic positioning of new windows
|
||||
* Simple animations
|
||||
* Clip rects
|
||||
* [x] Separate Ui::clip_rect from Ui::rect
|
||||
* [x] Use clip rectangles when painting
|
||||
* [x] Use clip rectangles when interacting
|
||||
* [x] Adjust clip rects so edges of child widgets aren't clipped
|
||||
* [x] Use HW clip rects
|
108
egui/README.md
108
egui/README.md
|
@ -1,110 +1,2 @@
|
|||
# GUI implementation
|
||||
This is the core library crate Egui. It is fully platform independent without any backend. You give the Egui library input each frame (mouse pos etc), and it outputs a triangle mesh for you to paint.
|
||||
|
||||
## TODO:
|
||||
### Widgets
|
||||
* [x] Label
|
||||
* [x] Button
|
||||
* [x] Checkbox
|
||||
* [x] Radiobutton
|
||||
* [x] Horizontal slider
|
||||
* [ ] Vertical slider
|
||||
* [x] Collapsing header region
|
||||
* [x] Tooltip
|
||||
* [x] Movable/resizable windows
|
||||
* [x] Kinetic windows
|
||||
* [ ] Windows should open from `UI`s and be boxed by parent ui.
|
||||
* Then we could open the example app inside a window in the example app, recursively.
|
||||
* [x] Resize any side and corner on windows
|
||||
* [x] Fix autoshrink
|
||||
* [x] Automatic positioning of new windows
|
||||
* [ ] Scroll areas
|
||||
* [x] Vertical scrolling
|
||||
* [ ] Horizontal scrolling
|
||||
* [x] Scroll-wheel input
|
||||
* [x] Drag background to scroll
|
||||
* [ ] Kinetic scrolling
|
||||
* [x] Add support for clicking hyperlinks
|
||||
* [x] Menu bar (File, Edit, etc)
|
||||
* [ ] Sub-menus
|
||||
* [ ] Keyboard shortcuts
|
||||
* [ ] Text input
|
||||
* [x] Input events (key presses)
|
||||
* [x] Text focus
|
||||
* [x] Cursor movement
|
||||
* [ ] Text selection
|
||||
* [ ] Clipboard copy/paste
|
||||
* [ ] Move focus with tab
|
||||
* [x] Handle leading/trailing space
|
||||
* [ ] Color picker
|
||||
* [ ] Style editor
|
||||
* [ ] Table with resizable columns
|
||||
* [ ] Layout
|
||||
* [ ] Generalize Layout (separate from Ui)
|
||||
* [ ] Cascading layout: same lite if it fits, else next line. Like text.
|
||||
* [ ] Grid layout
|
||||
* [ ] Point list
|
||||
* [ ] Image support
|
||||
|
||||
### Web version:
|
||||
* [x] Scroll input
|
||||
* [x] Change to resize cursor on hover
|
||||
* [ ] Make it a JS library for easily creating your own stuff
|
||||
* [x] Read url fragment and redirect to a subpage (e.g. different examples apps)
|
||||
* [ ] Read https://www.html5rocks.com/en/mobile/mobifying/#toc-meta-viewport
|
||||
|
||||
### Visuals
|
||||
* [x] Simplify button style to make for nicer collapsible headers. Maybe weak outline? Or just subtle different text color?
|
||||
* [/] Pixel-perfect painting (round positions to nearest pixel).
|
||||
* [ ] Make sure alpha blending is correct (different between web and glium)
|
||||
* [ ] Color picker widgets
|
||||
* [ ] Fix thin rounded corners rendering bug (too bright)
|
||||
|
||||
### Animations
|
||||
Add extremely quick animations for some things, maybe 2-3 frames. For instance:
|
||||
* [x] Animate collapsing headers with clip_rect
|
||||
|
||||
### Clip rects
|
||||
* [x] Separate Ui::clip_rect from Ui::rect
|
||||
* [x] Use clip rectangles when painting
|
||||
* [x] Use clip rectangles when interacting
|
||||
* [x] Adjust clip rects so edges of child widgets aren't clipped
|
||||
* [x] Use HW clip rects
|
||||
|
||||
### Modularity
|
||||
* [x] `trait Widget` (`Label`, `Slider`, `Checkbox`, ...)
|
||||
* [ ] `trait Container` (`Frame`, `Resize`, `ScrollArea`, ...)
|
||||
* [ ] `widget::TextButton` implemented as a `container::Button` which contains a `widget::Label`.
|
||||
* [ ] Easily chain `Container`s without nested closures.
|
||||
* e.g. `ui.containers((Frame::new(), Resize::new(), ScrollArea::new()), |ui| ...)`
|
||||
|
||||
### Input
|
||||
* [x] Distinguish between clicks and drags
|
||||
* [x] Double-click
|
||||
* [x] Text
|
||||
* [ ] Support all mouse buttons
|
||||
|
||||
### Debugability / Inspection
|
||||
* [x] Widget debug rectangles
|
||||
* [x] Easily debug why something keeps expanding
|
||||
|
||||
### Other
|
||||
* [x] Persist UI state in external storage
|
||||
* [ ] Persist Example App state
|
||||
* [ ] Build in a profiler which tracks which `Ui` in which window takes up CPU.
|
||||
* [ ] Draw as flame graph
|
||||
* [ ] Draw as hotmap
|
||||
* [ ] Change `width.min(max_width)` to `width.at_most(max_width)`
|
||||
* [ ] Egui icon
|
||||
* [ ] Minimal markdown viewer
|
||||
|
||||
### Names and structure
|
||||
* [ ] Rename things to be more consistent with Dear ImGui
|
||||
* [x] Combine Egui and Context?
|
||||
* [x] Solve which parts of Context are behind a mutex
|
||||
* [x] Rename Region to Ui
|
||||
* [ ] Move Path and Triangles to own crate
|
||||
* [x] Maybe find a shorter name for the library like `egui`?
|
||||
|
||||
### Global widget search
|
||||
Ability to do a search for any widget. The search works even for collapsed regions and closed windows and menus. This is implemented like this: while searching, all region are layed out and their add_content functions are run. If none of the contents matches the search, the layout is reverted and nothing is shown. So windows will get temporarily opened and run, but if the search is not a match in the window it is closed again. This means then when searching your whole GUI is being run, which may be a bit slower, but it would be a really awesome feature.
|
||||
|
|
Loading…
Reference in a new issue