87 lines
2.4 KiB
Markdown
87 lines
2.4 KiB
Markdown
# MujicaUI
|
|
|
|
宫廷哥特风格的 Go 桌面组件库,建立在 [MyGo](https://mygo.egoist.dev/docs/ui) 原生 UI 之上。象牙白与炭黑底色,酒红主色,旧金装饰线,衬线标题。100 个组件,浅深两套主题,三种密度。
|
|
|
|
界面由 MyGo 在 GPU 上自绘,不使用 HTML、JavaScript 或 WebView。
|
|
|
|
## 安装
|
|
|
|
模块路径暂为 `mujicaui`,尚未发布到代码托管地址。本地使用:
|
|
|
|
```sh
|
|
go mod edit -require=mujicaui@v0.0.0 -replace=mujicaui=/path/to/MujicaUI
|
|
```
|
|
|
|
要求 Go 1.27.1 与 MyGo v0.2.10(见 [兼容表](docs/compat.md))。
|
|
|
|
## 最小示例
|
|
|
|
```go
|
|
package main
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/egoist/mygo"
|
|
"github.com/egoist/mygo/ui"
|
|
|
|
mujica "mujicaui"
|
|
)
|
|
|
|
type app struct{ name string }
|
|
|
|
func (a *app) view(c *ui.Context) {
|
|
mujica.Use(c, mujica.Settings{Locale: mujica.ZhCN})
|
|
ui.Column(c).Fill().Center().Gap(12).Children(func() {
|
|
mujica.TextInput(c, &a.name, mujica.TextInputOptions{Placeholder: "姓名"})
|
|
if mujica.Button(c, "觐见", mujica.ButtonOptions{}).Clicked() {
|
|
log.Println("hello", a.name)
|
|
}
|
|
})
|
|
}
|
|
|
|
func main() {
|
|
a := &app{}
|
|
mygo.App.WhenReady(func() {
|
|
mygo.NewWindow(mygo.WindowOptions{Title: "Mujica", Width: 480, Height: 320, Content: ui.View(a.view)})
|
|
})
|
|
if err := mygo.App.Run(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
```
|
|
|
|
## 主题
|
|
|
|
每帧开头调用 `mujica.Use(c, settings)`。`Settings` 决定模式(`System`、`Light`、`Dark`)、密度(`theme.Compact`、`theme.Default`、`theme.Comfortable`)、语言与文案覆盖。每个窗口各自设置,切换不重置业务状态。
|
|
|
|
```go
|
|
mujica.Use(c, mujica.Settings{
|
|
Mode: mujica.Dark,
|
|
Density: theme.Compact,
|
|
Locale: mujica.ZhCN,
|
|
})
|
|
k := mujica.Tokens(c) // 当前窗口的颜色
|
|
```
|
|
|
|
覆盖顺序:组件参数,窗口 `Settings`,库默认值。系统高对比度、文本缩放、减少动画始终生效。
|
|
|
|
## Gallery
|
|
|
|
```sh
|
|
go run ./examples/gallery # 原生窗口
|
|
go run ./examples/gallery -web :8080 # 浏览器镜像
|
|
```
|
|
|
|
浏览器镜像不在浏览器里运行组件。Go 进程用 `ui.NewTester` 驱动同一个 Gallery 视图,把帧推给页面,再把指针、键盘、输入法和剪贴板事件送回 Go。
|
|
|
|
## 文档
|
|
|
|
- [组件文档](docs/components/):每个组件一页。
|
|
- [兼容与平台依赖](docs/compat.md)
|
|
- [上游归并](docs/upstream.md)
|
|
|
|
## 许可
|
|
|
|
MIT。第三方声明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
|