メニュー
Wailsプロジェクトに、アプリケーションメニューを追加することができます。 Menu構造体を定義し、アプリケーション設定のMenuオプションへ設定するか、ランタイムのMenuSetApplicationMenuメソッドを 呼び出すことで、メニューを表示させることができます。
メニューを作成する例:
app := NewApp()
AppMenu := menu.NewMenu()
if runtime.GOOS == "darwin" {
AppMenu.Append(menu.AppMenu()) // On macOS platform, this must be done right after `NewMenu()`
}
FileMenu := AppMenu.AddSubmenu("File")
FileMenu.AddText("&Open", keys.CmdOrCtrl("o"), func(_ *menu.CallbackData) {
// do something
})
FileMenu.AddSeparator()
FileMenu.AddText("Quit", keys.CmdOrCtrl("q"), func(_ *menu.CallbackData) {
// `rt` is an alias of "github.com/wailsapp/wails/v2/pkg/runtime" to prevent collision with standard package
rt.Quit(app.ctx)
})
if runtime.GOOS == "darwin" {
AppMenu.Append(menu.EditMenu()) // On macOS platform, EditMenu should be appended to enable Cmd+C, Cmd+V, Cmd+Z... shortcuts
}
err := wails.Run(&options.App{
Title: "Menus Demo",
Width: 800,
Height: 600,
Menu: AppMenu, // reference the menu above
Bind: []interface{}{
app,
},
)
// ...
Menu構造体を更新し、MenuUpdateApplicationMenuメソッドを呼び出すことで、メニューを動的に更新することも可能です。
上記の例では、ヘルパーメソッドを使用していますが、Menu構造体を手動で構築することも可能です。
Menu
Menuは、MenuItemのコレクションです。
Package: github.com/wailsapp/wails/v2/pkg/menu
type Menu struct {
Items []*MenuItem
}
アプリケーションメニューにおいて、各MenuItemは、"編集"などの単一メニ ューを表します。
メニューを構築するするためのシンプルなヘルパーメソッドが提供されています:
Package: github.com/wailsapp/wails/v2/pkg/menu
func NewMenuFromItems(first *MenuItem, rest ...*MenuItem) *Menu
これにより、コードのレイアウトが、実際のメニューと似たレイアウトになるため、メニュー項目を作成した後にそれを手動で追加するといった作業は必要なくなります。 ヘルパーを使用せず、メニュー項目を作成して手動でメニューに追加することもできます。
MenuItem
MenuItemは、メニュー内の項目を表します。
Package: github.com/wailsapp/wails/v2/pkg/menu
// MenuItem represents a menu item contained in a menu
type MenuItem struct {
Label string
Role Role
Accelerator *keys.Accelerator
Type Type
Disabled bool
Hidden bool
Checked bool
SubMenu *Menu
Click Callback
}
| フィールド | 型 | 内容 |
|---|---|---|
| Label | string | メニューのテキスト |
| Accelerator | *keys.Accelerator | このメニュー項目のキーバインディング |
| 型 | 型 | メニュー項目の種類 |
| Disabled | bool | メニュー項目を無効化する |
| Hidden | bool | メニュー項目を非表示にする |
| Checked | bool | 項目にチェックを追加する (チェックボックス & ラジオタイプ) |
| SubMenu | *Menu | サブメニューを設定する |
| Click | Callback | メニューがクリックされたときのコールバック関数 |
| Role | string | メニュー項目にロールを定義する。 現在のところ、Macでのみ有効です。 |