提交 2d285d85 编写于 作者: yanghye's avatar yanghye

v2.3.56 add new sys tray

上级 71e0865b
...@@ -15,3 +15,10 @@ func (m *LCLBrowserWindow) NewTray() ITray { ...@@ -15,3 +15,10 @@ func (m *LCLBrowserWindow) NewTray() ITray {
} }
return m.tray return m.tray
} }
func (m *LCLBrowserWindow) NewSysTray() ITray {
if m.tray == nil {
m.tray = newSysTray()
}
return m.tray
}
...@@ -41,6 +41,10 @@ func (m *CEFTray) OnFormCreate(sender lcl.IObject) { ...@@ -41,6 +41,10 @@ func (m *CEFTray) OnFormCreate(sender lcl.IObject) {
m.SetShowInTaskBar(types.StNever) m.SetShowInTaskBar(types.StNever)
} }
func (m *CEFTray) AsSysTray() *SysTray {
return nil
}
func (m *CEFTray) AsViewsFrameTray() *ViewsFrameTray { func (m *CEFTray) AsViewsFrameTray() *ViewsFrameTray {
return nil return nil
} }
...@@ -53,10 +57,6 @@ func (m *CEFTray) AsLCLTray() *LCLTray { ...@@ -53,10 +57,6 @@ func (m *CEFTray) AsLCLTray() *LCLTray {
return nil return nil
} }
func (m *CEFTray) Tray() ITray {
return m
}
func (m *CEFTray) Show() { func (m *CEFTray) Show() {
if BrowserWindow.mainBrowserWindow.Chromium() == nil || !BrowserWindow.mainBrowserWindow.Chromium().Initialized() { if BrowserWindow.mainBrowserWindow.Chromium() == nil || !BrowserWindow.mainBrowserWindow.Chromium().Initialized() {
return return
......
...@@ -27,20 +27,17 @@ type ITray interface { ...@@ -27,20 +27,17 @@ type ITray interface {
Show() //Show 显示托盘菜单窗口 windows有效 Show() //Show 显示托盘菜单窗口 windows有效
Hide() //Hide 隐藏托盘菜单窗口 windows有效 Hide() //Hide 隐藏托盘菜单窗口 windows有效
close() //close 关闭托盘菜单窗口 windows有效 close() //close 关闭托盘菜单窗口 windows有效
SetOnDblClick(fn TrayICONClick) //SetOnDblClick 双击事件 linux 和 macos 可能不启作用
SetOnClick(fn TrayICONClick) //SetOnClick 单击事件 SetOnClick(fn TrayICONClick) //SetOnClick 单击事件
SetOnMouseUp(fn TMouseEvent) //SetOnMouseUp up事件 linux 和 macos 可能不启作用 SetOnDblClick(fn TrayICONClick) //SetOnDblClick 双击事件 linux 和 macos 可能不启作用
SetOnMouseDown(fn lcl.TMouseEvent) //SetOnMouseDown down事件 linux 和 macos 可能不启作用
SetOnMouseMove(fn lcl.TMouseMoveEvent) //SetOnMouseMove move事件 linux 和 macos 可能不启作用
SetIconFS(iconResourcePath string) //SetIconFS 设置托盘图标 SetIconFS(iconResourcePath string) //SetIconFS 设置托盘图标
SetIcon(iconResourcePath string) //SetIcon 设置托盘图标 SetIcon(iconResourcePath string) //SetIcon 设置托盘图标
SetHint(value string) //SetHint 设置托盘hint(鼠标移动到托盘图标显示的文字) SetHint(value string) //SetHint 设置托盘hint(鼠标移动到托盘图标显示的文字)
ShowBalloon() //ShowBalloon 显示托盘气泡 ShowBalloon() //ShowBalloon 显示托盘气泡
SetBalloon(title, content string, timeout int32) ITray //SetBalloon 设置托盘气泡内容 SetBalloon(title, content string, timeout int32) ITray //SetBalloon 设置托盘气泡内容
Tray() ITray //Tray 返回ITray接口 AsSysTray() *SysTray //AsSysTray 尝试转换为 SysTray 组件托盘,如果创建的是其它类型托盘返回nil
AsViewsFrameTray() *ViewsFrameTray //AsViewsFrameTray 尝试转换为 views framework 组件托盘, 如果当前创建的是其它类型托盘返回nil AsViewsFrameTray() *ViewsFrameTray //AsViewsFrameTray 尝试转换为 views framework 组件托盘, 如果创建的是其它类型托盘返回nil
AsCEFTray() *CEFTray //AsCEFTray 尝试转换为 LCL+CEF 组件托盘, 如果当前创建的是其它类型托盘返回nil AsCEFTray() *CEFTray //AsCEFTray 尝试转换为 LCL+CEF 组件托盘, 如果创建的是其它类型托盘返回nil
AsLCLTray() *LCLTray //AsLCLTray 尝试转换为 LCL 组件托盘, 如果当前创建的是其它类型托盘返回nil AsLCLTray() *LCLTray //AsLCLTray 尝试转换为 LCL 组件托盘, 如果创建的是其它类型托盘返回nil
} }
//LCLTray LCL 托盘 //LCLTray LCL 托盘
...@@ -74,5 +71,6 @@ type CEFTray struct { ...@@ -74,5 +71,6 @@ type CEFTray struct {
//SysTray 系统原生托盘 //SysTray 系统原生托盘
type SysTray struct { type SysTray struct {
menu *SysMenu
trayStart, trayStop func() trayStart, trayStop func()
} }
...@@ -22,6 +22,10 @@ func newTray(owner lcl.IComponent) *LCLTray { ...@@ -22,6 +22,10 @@ func newTray(owner lcl.IComponent) *LCLTray {
} }
} }
func (m *LCLTray) AsSysTray() *SysTray {
return nil
}
func (m *LCLTray) AsViewsFrameTray() *ViewsFrameTray { func (m *LCLTray) AsViewsFrameTray() *ViewsFrameTray {
return nil return nil
} }
...@@ -34,10 +38,6 @@ func (m *LCLTray) AsLCLTray() *LCLTray { ...@@ -34,10 +38,6 @@ func (m *LCLTray) AsLCLTray() *LCLTray {
return m return m
} }
func (m *LCLTray) Tray() ITray {
return m
}
func (m *LCLTray) SetVisible(v bool) { func (m *LCLTray) SetVisible(v bool) {
m.trayIcon.SetVisible(v) m.trayIcon.SetVisible(v)
} }
......
...@@ -7,3 +7,78 @@ ...@@ -7,3 +7,78 @@
//---------------------------------------- //----------------------------------------
package cef package cef
import "energye/systray"
//创建系统托盘
func newSysTray() *SysTray {
return &SysTray{}
}
func (m *SysTray) AsSysTray() *SysTray {
return m
}
func (m *SysTray) AsViewsFrameTray() *ViewsFrameTray {
return nil
}
func (m *SysTray) AsCEFTray() *CEFTray {
return nil
}
func (m *SysTray) AsLCLTray() *LCLTray {
return nil
}
func (m *SysTray) Show() {
}
func (m *SysTray) Hide() {
}
func (m *SysTray) close() {
}
func (m *SysTray) SetOnDblClick(fn TrayICONClick) {
}
func (m *SysTray) SetOnClick(fn TrayICONClick) {
}
func (m *SysTray) Visible() bool {
return false
}
func (m *SysTray) SetVisible(v bool) {
}
func (m *SysTray) SetHint(value string) {
systray.SetTooltip(value)
}
func (m *SysTray) SetTitle(title string) {
systray.SetTitle(title)
}
//设置托盘气泡
//title 气泡标题
//content 气泡内容
//timeout 显示时间(毫秒)
func (m *SysTray) SetBalloon(title, content string, timeout int32) ITray {
return nil
}
//显示托盘气泡
func (m *SysTray) ShowBalloon() {
}
//设置托盘图标
func (m *SysTray) SetIconFS(iconResourcePath string) {
}
//设置托盘图标
func (m *SysTray) SetIcon(iconResourcePath string) {
}
...@@ -121,6 +121,10 @@ func (m *ViewsFrameTray) registerChromiumEvent() { ...@@ -121,6 +121,10 @@ func (m *ViewsFrameTray) registerChromiumEvent() {
}) })
} }
func (m *ViewsFrameTray) AsSysTray() *SysTray {
return nil
}
func (m *ViewsFrameTray) AsViewsFrameTray() *ViewsFrameTray { func (m *ViewsFrameTray) AsViewsFrameTray() *ViewsFrameTray {
return m return m
} }
...@@ -133,10 +137,6 @@ func (m *ViewsFrameTray) AsLCLTray() *LCLTray { ...@@ -133,10 +137,6 @@ func (m *ViewsFrameTray) AsLCLTray() *LCLTray {
return nil return nil
} }
func (m *ViewsFrameTray) Tray() ITray {
return m
}
func (m *ViewsFrameTray) Show() { func (m *ViewsFrameTray) Show() {
m.trayWindow.Show() m.trayWindow.Show()
} }
......
...@@ -6,6 +6,7 @@ import ( ...@@ -6,6 +6,7 @@ import (
"github.com/energye/energy/cef" "github.com/energye/energy/cef"
"github.com/energye/energy/common" "github.com/energye/energy/common"
"github.com/energye/energy/consts" "github.com/energye/energy/consts"
sys_tray "github.com/energye/energy/example/dev-test/sys-tray"
"github.com/energye/energy/ipc" "github.com/energye/energy/ipc"
"github.com/energye/golcl/lcl" "github.com/energye/golcl/lcl"
"github.com/energye/golcl/lcl/types" "github.com/energye/golcl/lcl/types"
...@@ -395,6 +396,9 @@ func AppBrowserInit() { ...@@ -395,6 +396,9 @@ func AppBrowserInit() {
}) })
//添加子窗口初始化 //添加子窗口初始化
cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow cef.IBrowserWindow) { cef.BrowserWindow.SetBrowserInitAfter(func(browserWindow cef.IBrowserWindow) {
tray(browserWindow)
sys_tray.TrayMain()
return
//在这里创建 一些子窗口 子组件 等 //在这里创建 一些子窗口 子组件 等
//托盘 //托盘
if common.IsWindows() { if common.IsWindows() {
...@@ -451,6 +455,8 @@ func tray(browserWindow cef.IBrowserWindow) { ...@@ -451,6 +455,8 @@ func tray(browserWindow cef.IBrowserWindow) {
//托盘 windows linux macos 系统托盘 //托盘 windows linux macos 系统托盘
newTray := window.NewTray() newTray := window.NewTray()
tray := newTray.AsLCLTray() tray := newTray.AsLCLTray()
tray.SetTitle("任务管理器里显示的标题")
tray.SetHint("这里是文字\n文字啊")
tray.SetIconFS("resources/icon.ico") tray.SetIconFS("resources/icon.ico")
menu1 := tray.AddMenuItem("父菜单", nil) menu1 := tray.AddMenuItem("父菜单", nil)
menu1.Add(tray.NewMenuItem("子菜单", func(object lcl.IObject) { menu1.Add(tray.NewMenuItem("子菜单", func(object lcl.IObject) {
......
...@@ -46,7 +46,8 @@ func addQuitItem() { ...@@ -46,7 +46,8 @@ func addQuitItem() {
func onReady() { func onReady() {
fmt.Println("systray.onReady") fmt.Println("systray.onReady")
systray.SetTemplateIcon(icon.Data, icon.Data) //systray.SetTemplateIcon(icon.Data, icon.Data)
systray.SetIcon(icon.Data)
systray.SetTitle("Energy Sys Tray") systray.SetTitle("Energy Sys Tray")
systray.SetTooltip("这里是文字\nEnergy tooltip") systray.SetTooltip("这里是文字\nEnergy tooltip")
systray.SetOnClick(func() { systray.SetOnClick(func() {
...@@ -56,8 +57,8 @@ func onReady() { ...@@ -56,8 +57,8 @@ func onReady() {
fmt.Println("SetOnDClick") fmt.Println("SetOnDClick")
}) })
systray.SetOnRClick(func(menu systray.IMenu) { systray.SetOnRClick(func(menu systray.IMenu) {
menu.ShowMenu()
fmt.Println("SetOnRClick") fmt.Println("SetOnRClick")
menu.ShowMenu()
}) })
systray.CreateMenu() systray.CreateMenu()
//return //return
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册