ui
ui copied to clipboard
My UI Widget library for V

Isaiah's cross-platform GUI library for V. Inspired by the syntax of Java's Swing.
Example: (examples/demo/)
Example
fn main() {
mut window := ui.Window.new(
title: 'My App'
width: 640
height: 480
)
// Create Button
mut btn := ui.Button.new(text: 'My Button')
btn.subscribe_event('mouse_up', on_click_event)
// Add Button to Window & Run
window.add_child(btn)
window.gg.run()
}
fn on_click_event(mut e ui.MouseEvent) {
println('Button clicked!')
}
Install
Install via VPM:
v install https://github.com/pisaiah/ui
then
import iui as ui
Components, Containers, & Layouts
| Components | Containers | Panel Layouts |
|---|---|---|
| Button | Window | Flow Layout |
| Label | Panel | Border Layout |
| Panel | Tabbox | Box Layout |
| Textbox | HBox | Grid Layout |
| TextField | VBox | |
| Menubar | Modal | |
| MenuItem | Page | |
| Checkbox | ButtonGroup | |
| Selectbox | ScrollView | |
| Treeview | Splitview | |
| ProgressBar | TitleGroup | |
| Hyperlink | Popup | |
| Image | ||
| Slider | ||
| Switch |
- Components are the elements of the UI (buttons, inputs, etc).
- Containers are components that can hold other components (known as children).
- Layouts define how the panel positions it's children.
More details about Layout: A Visual Guide to Layout Managers - docs.oracle.com
Themes
| Light: - Default, Minty, Ocean, Seven. | |
| Dark: - Dark, Black (with White, Red, & Green accent colors), Seven Dark. |
Included Examples
| Notepad | Calculator | BorderLayout Demo | Clock | Internal Frames |
|---|---|---|---|---|
| See: Notepad | Calculator | Border Layout Demo | Clock | Internal Frames |
| Mines | (Tic Tac Toe)^2 | Snake |
|---|---|---|
| 1-Minesweeper | 2-Tic-Tac-Toe-Squared | 3-Snake |
Used in
- Vide
- Verminal
- vPaint - Demo: https://vpaint.app

License
This project is licensed under MIT OR Boost.
Veasel (v mascot) on a Swing