80 lines
1.7 KiB
Go
80 lines
1.7 KiB
Go
package services
|
|
|
|
import (
|
|
"github.com/wailsapp/wails/v3/pkg/application"
|
|
"voidraft/internal/common/constant"
|
|
)
|
|
|
|
// WindowHelper 窗口辅助工具
|
|
type WindowHelper struct{}
|
|
|
|
// NewWindowHelper 创建窗口辅助工具实例
|
|
func NewWindowHelper() *WindowHelper {
|
|
return &WindowHelper{}
|
|
}
|
|
|
|
// GetMainWindow 获取主窗口实例
|
|
// 返回窗口对象和是否找到的标志
|
|
func (wh *WindowHelper) GetMainWindow() (application.Window, bool) {
|
|
app := application.Get()
|
|
return app.Window.GetByName(constant.VOIDRAFT_MAIN_WINDOW_NAME)
|
|
}
|
|
|
|
// MustGetMainWindow 获取主窗口实例
|
|
// 如果窗口不存在则返回 nil
|
|
func (wh *WindowHelper) MustGetMainWindow() application.Window {
|
|
window, ok := wh.GetMainWindow()
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return window
|
|
}
|
|
|
|
// ShowMainWindow 显示主窗口
|
|
func (wh *WindowHelper) ShowMainWindow() bool {
|
|
if window := wh.MustGetMainWindow(); window != nil {
|
|
window.Show()
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// HideMainWindow 隐藏主窗口
|
|
func (wh *WindowHelper) HideMainWindow() bool {
|
|
if window := wh.MustGetMainWindow(); window != nil {
|
|
window.Hide()
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// MinimiseMainWindow 最小化主窗口
|
|
func (wh *WindowHelper) MinimiseMainWindow() bool {
|
|
if window := wh.MustGetMainWindow(); window != nil {
|
|
window.Minimise()
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// FocusMainWindow 聚焦主窗口
|
|
func (wh *WindowHelper) FocusMainWindow() bool {
|
|
if window := wh.MustGetMainWindow(); window != nil {
|
|
window.Show()
|
|
window.Restore()
|
|
window.Focus()
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// AutoShowMainWindow 自动显示主窗口
|
|
func (wh *WindowHelper) AutoShowMainWindow() {
|
|
window := wh.MustGetMainWindow()
|
|
if window.IsVisible() {
|
|
window.Hide()
|
|
} else {
|
|
window.Show()
|
|
}
|
|
}
|