Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
energye
energy
提交
b711d376
energy
项目概览
energye
/
energy
通知
13
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
energy
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
b711d376
编写于
1月 06, 2023
作者:
yanghye
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v2.2.1 Fixed Chinese input and gtk3 issues for linux packaging
上级
be6c03f5
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
307 addition
and
90 deletion
+307
-90
cef/cef-aux-dev-tools-window.go
cef/cef-aux-dev-tools-window.go
+2
-2
cef/cef-aux-view-source-window.go
cef/cef-aux-view-source-window.go
+6
-8
cef/cef-browser-config.go
cef/cef-browser-config.go
+3
-3
cef/cef-browser-window.go
cef/cef-browser-window.go
+20
-30
cef/cef-browser.go
cef/cef-browser.go
+1
-1
cef/cef-commponent-tray_window.go
cef/cef-commponent-tray_window.go
+1
-1
cef/cef-lcl-browser-window.go
cef/cef-lcl-browser-window.go
+54
-1
cef/cef-views-framework-browser-window.go
cef/cef-views-framework-browser-window.go
+148
-12
cef/window-component_windows.go
cef/window-component_windows.go
+6
-3
cef/window.go
cef/window.go
+39
-2
example/browser-control/src/main-browser-window.go
example/browser-control/src/main-browser-window.go
+3
-3
example/browser-cookie/cookie.go
example/browser-cookie/cookie.go
+1
-1
example/browser-download/download.go
example/browser-download/download.go
+2
-2
example/browser-linux/linux.go
example/browser-linux/linux.go
+1
-1
example/mini-browser/src/min-browser.go
example/mini-browser/src/min-browser.go
+20
-20
未找到文件。
cef/cef-aux-dev-tools-window.go
浏览文件 @
b711d376
...
...
@@ -22,9 +22,9 @@ const (
func
updateBrowserDevTools
(
browser
*
ICefBrowser
,
title
string
)
{
if
browserWinInfo
:=
BrowserWindow
.
GetWindowInfo
(
browser
.
Identifier
());
browserWinInfo
!=
nil
{
if
browserWinInfo
.
auxTools
!=
nil
&&
browserWinInfo
.
auxTools
.
devToolsWindow
!=
nil
{
if
browserWinInfo
.
getAuxTools
()
!=
nil
&&
browserWinInfo
.
getAuxTools
()
.
devToolsWindow
!=
nil
{
QueueAsyncCall
(
func
(
id
int
)
{
browserWinInfo
.
auxTools
.
devToolsWindow
.
SetCaption
(
fmt
.
Sprintf
(
"%s - %s"
,
dev_tools_name
,
browser
.
MainFrame
()
.
Url
))
browserWinInfo
.
getAuxTools
()
.
devToolsWindow
.
SetCaption
(
fmt
.
Sprintf
(
"%s - %s"
,
dev_tools_name
,
browser
.
MainFrame
()
.
Url
))
})
}
}
...
...
cef/cef-aux-view-source-window.go
浏览文件 @
b711d376
...
...
@@ -22,7 +22,7 @@ func updateBrowserViewSource(browser *ICefBrowser, title string) {
if
browserWinInfo
:=
BrowserWindow
.
GetWindowInfo
(
browser
.
Identifier
());
browserWinInfo
!=
nil
&&
browserWinInfo
.
WindowType
()
==
WT_VIEW_SOURCE
{
QueueAsyncCall
(
func
(
id
int
)
{
if
mainFrame
:=
browser
.
MainFrame
();
mainFrame
!=
nil
{
browserWinInfo
.
Set
Caption
(
fmt
.
Sprintf
(
"%s - %s"
,
view_source_name
,
mainFrame
.
Url
))
browserWinInfo
.
Set
Title
(
fmt
.
Sprintf
(
"%s - %s"
,
view_source_name
,
mainFrame
.
Url
))
}
else
{
logger
.
Error
(
"failed to get main frame"
)
}
...
...
@@ -32,8 +32,8 @@ func updateBrowserViewSource(browser *ICefBrowser, title string) {
func
viewSourceAfterCreate
(
browser
*
ICefBrowser
)
bool
{
if
winInfo
:=
BrowserWindow
.
GetWindowInfo
(
browser
.
Identifier
());
winInfo
!=
nil
{
if
winInfo
.
WindowType
()
==
WT_VIEW_SOURCE
&&
winInfo
.
auxTools
.
viewSourceWindow
!=
nil
{
winInfo
.
auxTools
.
viewSourceWindow
.
chromium
.
LoadUrl
(
winInfo
.
auxTools
.
viewSourceUrl
)
if
winInfo
.
WindowType
()
==
WT_VIEW_SOURCE
&&
winInfo
.
getAuxTools
()
.
viewSourceWindow
!=
nil
{
winInfo
.
getAuxTools
()
.
viewSourceWindow
.
chromium
.
LoadUrl
(
winInfo
.
getAuxTools
()
.
viewSourceUrl
)
return
true
}
}
...
...
@@ -53,11 +53,9 @@ func createBrowserViewSource(browser *ICefBrowser, frame *ICefFrame) {
m
.
SetWidth
(
1024
)
m
.
SetHeight
(
768
)
if
winInfo
:=
BrowserWindow
.
GetWindowInfo
(
m
.
windowId
);
winInfo
!=
nil
{
if
winInfo
.
auxTools
==
nil
{
winInfo
.
auxTools
=
&
auxTools
{}
}
winInfo
.
auxTools
.
viewSourceUrl
=
viewSourceUrl
winInfo
.
auxTools
.
viewSourceWindow
=
m
winInfo
.
createAuxTools
()
winInfo
.
getAuxTools
()
.
viewSourceUrl
=
viewSourceUrl
winInfo
.
getAuxTools
()
.
viewSourceWindow
=
m
}
m
.
Show
()
}
else
{
...
...
cef/cef-browser-config.go
浏览文件 @
b711d376
...
...
@@ -12,9 +12,9 @@ import (
"github.com/energye/energy/common"
)
type
viewsFrameBrowserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
*
ViewsFrameworkBrowserWindow
)
type
browserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
*
LCLBrowserWindow
)
type
browserWindowAfterOnEventCallback
func
(
window
*
LCLBrowserWindow
)
type
viewsFrameBrowserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
I
ViewsFrameworkBrowserWindow
)
type
browserWindowOnEventCallback
func
(
event
*
BrowserEvent
,
window
I
LCLBrowserWindow
)
type
browserWindowAfterOnEventCallback
func
(
window
I
LCLBrowserWindow
)
//创建主窗口指定的一些快捷配置属性
type
browserConfig
struct
{
...
...
cef/cef-browser-window.go
浏览文件 @
b711d376
...
...
@@ -30,7 +30,7 @@ var (
Config
:
&
browserConfig
{
WindowProperty
:
*
NewWindowProperty
(),
},
windowInfo
:
make
(
map
[
int32
]
*
LCL
BrowserWindow
),
windowInfo
:
make
(
map
[
int32
]
I
BrowserWindow
),
windowSerial
:
1
,
}
browserProcessStartAfterCallback
browserProcessStartAfterCallbackFunc
...
...
@@ -49,13 +49,13 @@ func SetBrowserProcessStartAfterCallback(callback browserProcessStartAfterCallba
// 浏览器包装结构体
type
browser
struct
{
mainBrowserWindow
*
browserWindow
//主浏览器窗口
mainVFBrowserWindow
*
vfBrowserWindow
//主浏览器窗口
popupWindow
*
LCLBrowserWindow
//弹出的子窗口
browserEvent
*
BrowserEvent
//浏览器全局事件
Config
*
browserConfig
//浏览器和窗口配置
windowInfo
map
[
int32
]
*
LCLBrowserWindow
//窗口信息集合
windowSerial
int32
//窗口序号
mainBrowserWindow
*
browserWindow
//主浏览器窗口
mainVFBrowserWindow
IViewsFrameworkBrowserWindow
//主浏览器窗口
popupWindow
*
LCLBrowserWindow
//弹出的子窗口
browserEvent
*
BrowserEvent
//浏览器全局事件
Config
*
browserConfig
//浏览器和窗口配置
windowInfo
map
[
int32
]
IBrowserWindow
//窗口信息集合
windowSerial
int32
//窗口序号
}
// 浏览器全局事件监听-扩展
...
...
@@ -83,13 +83,6 @@ type BrowserEvent struct {
type
browserWindow
struct
{
LCLBrowserWindow
isFirstActivate
bool
tray
ITray
}
type
vfBrowserWindow
struct
{
ViewsFrameworkBrowserWindow
isFirstActivate
bool
tray
ITray
}
// 运行应用
...
...
@@ -183,7 +176,7 @@ func (m *browserWindow) OnFormCreate(sender lcl.IObject) {
}
func
(
m
*
browser
)
MainWindow
()
*
LCLBrowserWindow
{
return
&
m
.
mainBrowserWindow
.
LCLBrowserWindow
return
m
.
mainBrowserWindow
.
BrowserWindow
()
}
// 基于CEF views framework窗口 - 主窗口和chromium初始化时回调
...
...
@@ -255,18 +248,18 @@ func (m *browser) createNextPopupWindow() {
}
// 拿到窗口信息
func
(
m
*
browser
)
GetWindowInfo
(
browserId
int32
)
*
LCL
BrowserWindow
{
func
(
m
*
browser
)
GetWindowInfo
(
browserId
int32
)
I
BrowserWindow
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browserId
];
ok
{
return
winInfo
}
return
nil
}
func
(
m
*
browser
)
GetWindowsInfo
()
map
[
int32
]
*
LCL
BrowserWindow
{
func
(
m
*
browser
)
GetWindowsInfo
()
map
[
int32
]
I
BrowserWindow
{
return
m
.
windowInfo
}
func
(
m
*
browser
)
putWindowInfo
(
browserId
int32
,
windowInfo
*
LCL
BrowserWindow
)
{
func
(
m
*
browser
)
putWindowInfo
(
browserId
int32
,
windowInfo
I
BrowserWindow
)
{
m
.
windowInfo
[
browserId
]
=
windowInfo
}
...
...
@@ -277,38 +270,35 @@ func (m *browser) removeWindowInfo(browseId int32) {
func
(
m
*
browser
)
GetBrowser
(
browseId
int32
)
*
ICefBrowser
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browseId
];
ok
{
return
winInfo
.
browser
return
winInfo
.
Browser
()
}
return
nil
}
func
(
m
*
browser
)
putBrowserFrame
(
browser
*
ICefBrowser
,
frame
*
ICefFrame
)
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browser
.
Identifier
()];
ok
{
if
winInfo
.
frames
==
nil
{
winInfo
.
frames
=
make
(
TCEFFrame
)
}
winInfo
.
browser
=
browser
winInfo
.
frames
[
frame
.
Id
]
=
frame
winInfo
.
setBrowser
(
browser
)
winInfo
.
addFrame
(
frame
)
}
}
func
(
m
*
browser
)
GetFrames
(
browseId
int32
)
map
[
int64
]
*
ICefFrame
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browseId
];
ok
{
return
winInfo
.
frames
return
winInfo
.
Frames
()
}
return
nil
}
func
(
m
*
browser
)
GetFrame
(
browseId
int32
,
frameId
int64
)
*
ICefFrame
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browseId
];
ok
{
return
winInfo
.
frames
[
frameId
]
return
winInfo
.
Frames
()
[
frameId
]
}
return
nil
}
func
(
m
*
browser
)
RemoveFrame
(
browseId
int32
,
frameId
int64
)
{
if
winInfo
,
ok
:=
m
.
windowInfo
[
browseId
];
ok
{
delete
(
winInfo
.
frames
,
frameId
)
delete
(
winInfo
.
Frames
()
,
frameId
)
}
}
...
...
@@ -321,9 +311,9 @@ func (m *browser) IsSameFrame(browseId int32, frameId int64) bool {
func
(
m
*
browser
)
removeNoValidFrames
()
{
for
_
,
winInfo
:=
range
m
.
windowInfo
{
for
_
,
frm
:=
range
winInfo
.
frames
{
for
_
,
frm
:=
range
winInfo
.
Frames
()
{
if
!
frm
.
IsValid
()
{
delete
(
winInfo
.
frames
,
frm
.
Id
)
delete
(
winInfo
.
Frames
()
,
frm
.
Id
)
}
}
}
...
...
cef/cef-browser.go
浏览文件 @
b711d376
...
...
@@ -244,7 +244,7 @@ func (m *ICefBrowser) ViewSource(frame *ICefFrame) {
//显示开发者工具
func
(
m
*
ICefBrowser
)
ShowDevTools
()
{
if
browserWinInfo
:=
BrowserWindow
.
GetWindowInfo
(
m
.
Identifier
());
browserWinInfo
!=
nil
{
createBrowserDevTools
(
m
,
browserWinInfo
)
createBrowserDevTools
(
m
,
browserWinInfo
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
)
}
}
...
...
cef/cef-commponent-tray_window.go
浏览文件 @
b711d376
...
...
@@ -59,7 +59,7 @@ func (m *tCefTrayForm) Tray() *Tray {
}
func
(
m
*
tCefTrayForm
)
Show
()
{
if
BrowserWindow
.
mainBrowserWindow
.
chromium
==
nil
||
!
BrowserWindow
.
mainBrowserWindow
.
chromium
.
Initialized
()
{
if
BrowserWindow
.
mainBrowserWindow
.
Chromium
()
==
nil
||
!
BrowserWindow
.
mainBrowserWindow
.
Chromium
()
.
Initialized
()
{
return
}
m
.
TForm
.
Show
()
...
...
cef/cef-lcl-browser-window.go
浏览文件 @
b711d376
...
...
@@ -54,6 +54,7 @@ type LCLBrowserWindow struct {
isChromiumCreate
bool
//是否创建完成 Chromium
frames
TCEFFrame
//当前浏览器下的所有frame
auxTools
*
auxTools
//辅助工具
tray
ITray
//
}
//创建一个带有 chromium 窗口
...
...
@@ -74,10 +75,58 @@ func NewBrowserWindow(config *tCefChromiumConfig, windowProperty *WindowProperty
return
window
}
func
(
m
*
LCLBrowserWindow
)
BrowserWindow
()
*
LCLBrowserWindow
{
return
m
}
func
(
m
*
LCLBrowserWindow
)
AsViewsFrameworkBrowserWindow
()
IViewsFrameworkBrowserWindow
{
return
nil
}
func
(
m
*
LCLBrowserWindow
)
AsLCLBrowserWindow
()
ILCLBrowserWindow
{
return
m
}
func
(
m
*
LCLBrowserWindow
)
SetTitle
(
title
string
)
{
if
m
.
TForm
==
nil
{
return
}
m
.
TForm
.
SetCaption
(
title
)
}
func
(
m
*
LCLBrowserWindow
)
getAuxTools
()
*
auxTools
{
return
m
.
auxTools
}
func
(
m
*
LCLBrowserWindow
)
createAuxTools
()
{
if
m
.
auxTools
==
nil
{
m
.
auxTools
=
&
auxTools
{}
}
}
func
(
m
*
LCLBrowserWindow
)
Browser
()
*
ICefBrowser
{
return
m
.
browser
}
func
(
m
*
LCLBrowserWindow
)
setBrowser
(
browser
*
ICefBrowser
)
{
m
.
browser
=
browser
}
func
(
m
*
LCLBrowserWindow
)
addFrame
(
frame
*
ICefFrame
)
{
m
.
createFrames
()
m
.
frames
[
frame
.
Id
]
=
frame
}
func
(
m
*
LCLBrowserWindow
)
Frames
()
TCEFFrame
{
return
m
.
frames
}
func
(
m
*
LCLBrowserWindow
)
createFrames
()
{
if
m
.
frames
==
nil
{
m
.
frames
=
make
(
TCEFFrame
)
}
}
func
(
m
*
LCLBrowserWindow
)
Chromium
()
IChromium
{
return
m
.
chromium
}
...
...
@@ -152,6 +201,10 @@ func (m *LCLBrowserWindow) IsClosing() bool {
return
m
.
isClosing
}
func
(
m
*
LCLBrowserWindow
)
ITray
()
{
}
// 设置窗口类型
func
(
m
*
LCLBrowserWindow
)
SetWindowType
(
windowType
consts
.
WINDOW_TYPE
)
{
m
.
windowType
=
windowType
...
...
@@ -243,7 +296,7 @@ func (m *LCLBrowserWindow) defaultWindowCloseEvent() {
}
//启用默认关闭事件行为-该窗口将被关闭
func
(
m
*
LCLBrowserWindow
)
EnableDefaultClose
()
{
func
(
m
*
LCLBrowserWindow
)
EnableDefaultClose
Event
()
{
m
.
defaultWindowCloseEvent
()
m
.
registerDefaultChromiumCloseEvent
()
}
...
...
cef/cef-views-framework-browser-window.go
浏览文件 @
b711d376
...
...
@@ -92,18 +92,6 @@ func NewViewsFrameworkBrowserWindow(chromiumConfig *tCefChromiumConfig, windowPr
return
m
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Component
()
lcl
.
IComponent
{
return
m
.
component
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
WindowComponent
()
*
TCEFWindowComponent
{
return
m
.
windowComponent
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
BrowserViewComponent
()
*
TCEFBrowserViewComponent
{
return
m
.
browserViewComponent
}
//ViewsFrameworkBrowserWindow 主窗口初始化
func
(
m
*
browser
)
appContextInitialized
(
app
*
TCEFApplication
)
{
if
!
common
.
Args
.
IsMain
()
{
...
...
@@ -265,3 +253,151 @@ func (m *ViewsFrameworkBrowserWindow) registerDefaultEvent() {
}
})
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
BrowserWindow
()
*
ViewsFrameworkBrowserWindow
{
return
m
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
AsViewsFrameworkBrowserWindow
()
IViewsFrameworkBrowserWindow
{
return
m
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
AsLCLBrowserWindow
()
ILCLBrowserWindow
{
return
nil
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
SetTitle
(
title
string
)
{
m
.
WindowComponent
()
.
SetTitle
(
title
)
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
getAuxTools
()
*
auxTools
{
return
m
.
auxTools
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
createAuxTools
()
{
if
m
.
auxTools
==
nil
{
m
.
auxTools
=
&
auxTools
{}
}
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Browser
()
*
ICefBrowser
{
return
m
.
browser
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Frames
()
TCEFFrame
{
return
m
.
frames
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
createFrames
()
{
if
m
.
frames
==
nil
{
m
.
frames
=
make
(
TCEFFrame
)
}
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
setBrowser
(
browser
*
ICefBrowser
)
{
m
.
browser
=
browser
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
addFrame
(
frame
*
ICefFrame
)
{
m
.
createFrames
()
m
.
frames
[
frame
.
Id
]
=
frame
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Chromium
()
IChromium
{
return
m
.
chromium
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Id
()
int32
{
return
m
.
windowId
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Show
()
{
m
.
WindowComponent
()
.
Show
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Hide
()
{
m
.
WindowComponent
()
.
Hide
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Close
()
{
m
.
WindowComponent
()
.
Close
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Maximize
()
{
m
.
WindowComponent
()
.
Maximize
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Minimize
()
{
m
.
WindowComponent
()
.
Minimize
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Restore
()
{
m
.
WindowComponent
()
.
Restore
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
CloseBrowserWindow
()
{
m
.
chromium
.
CloseBrowser
(
true
)
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
CreateTopLevelWindow
()
{
m
.
WindowComponent
()
.
CreateTopLevelWindow
()
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
CenterWindow
(
size
*
TCefSize
)
{
m
.
WindowComponent
()
.
CenterWindow
(
size
)
}
//返回窗口关闭状态
func
(
m
*
ViewsFrameworkBrowserWindow
)
IsClosing
()
bool
{
return
m
.
isClosing
}
// 返回窗口类型
func
(
m
*
ViewsFrameworkBrowserWindow
)
WindowType
()
consts
.
WINDOW_TYPE
{
return
m
.
windowType
}
// 设置窗口类型
func
(
m
*
ViewsFrameworkBrowserWindow
)
SetWindowType
(
windowType
consts
.
WINDOW_TYPE
)
{
m
.
windowType
=
windowType
}
//禁用最小化按钮
func
(
m
*
ViewsFrameworkBrowserWindow
)
DisableMinimize
()
{
m
.
WindowComponent
()
.
SetOnCanMinimize
(
func
(
sender
lcl
.
IObject
,
window
*
ICefWindow
,
aResult
*
bool
)
{
*
aResult
=
false
})
}
//禁用最大化按钮
func
(
m
*
ViewsFrameworkBrowserWindow
)
DisableMaximize
()
{
m
.
WindowComponent
()
.
SetOnCanMaximize
(
func
(
sender
lcl
.
IObject
,
window
*
ICefWindow
,
aResult
*
bool
)
{
*
aResult
=
false
})
}
//启用最小化按钮
func
(
m
*
ViewsFrameworkBrowserWindow
)
EnableMinimize
()
{
m
.
WindowComponent
()
.
SetOnCanMinimize
(
func
(
sender
lcl
.
IObject
,
window
*
ICefWindow
,
aResult
*
bool
)
{
*
aResult
=
true
})
}
//启用最大化按钮
func
(
m
*
ViewsFrameworkBrowserWindow
)
EnableMaximize
()
{
m
.
WindowComponent
()
.
SetOnCanMaximize
(
func
(
sender
lcl
.
IObject
,
window
*
ICefWindow
,
aResult
*
bool
)
{
*
aResult
=
true
})
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
Component
()
lcl
.
IComponent
{
return
m
.
component
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
WindowComponent
()
*
TCEFWindowComponent
{
return
m
.
windowComponent
}
func
(
m
*
ViewsFrameworkBrowserWindow
)
BrowserViewComponent
()
*
TCEFBrowserViewComponent
{
return
m
.
browserViewComponent
}
cef/window-component_windows.go
浏览文件 @
b711d376
...
...
@@ -13,8 +13,11 @@ package cef
//只适用于windows的无菜单托盘
func
(
m
*
LCLBrowserWindow
)
NewCefTray
(
width
,
height
int32
,
url
string
)
ITray
{
if
BrowserWindow
.
mainBrowserWindow
.
tray
==
nil
{
BrowserWindow
.
mainBrowserWindow
.
tray
=
newCefTray
(
m
,
width
,
height
,
url
)
if
BrowserWindow
.
mainBrowserWindow
.
AsLCLBrowserWindow
()
==
nil
{
return
nil
}
return
BrowserWindow
.
mainBrowserWindow
.
tray
if
BrowserWindow
.
mainBrowserWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
.
tray
==
nil
{
BrowserWindow
.
mainBrowserWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
.
tray
=
newCefTray
(
m
,
width
,
height
,
url
)
}
return
BrowserWindow
.
mainBrowserWindow
.
AsLCLBrowserWindow
()
.
BrowserWindow
()
.
tray
}
cef/window.go
浏览文件 @
b711d376
...
...
@@ -9,6 +9,7 @@
package
cef
import
(
"github.com/energye/energy/consts"
"github.com/energye/golcl/lcl"
"github.com/energye/golcl/lcl/types"
)
...
...
@@ -90,20 +91,56 @@ func NewWindow(windowProperty *WindowProperty, owner ...lcl.IComponent) *LCLBrow
}
type
IBrowserWindow
interface
{
Id
()
int32
Show
()
Hide
()
Close
()
Maximize
()
Minimize
()
CloseBrowserWindow
()
WindowType
()
consts
.
WINDOW_TYPE
SetWindowType
(
windowType
consts
.
WINDOW_TYPE
)
Browser
()
*
ICefBrowser
Chromium
()
IChromium
DisableMaximize
()
DisableMinimize
()
EnableMaximize
()
EnableMinimize
()
IsClosing
()
bool
AsViewsFrameworkBrowserWindow
()
IViewsFrameworkBrowserWindow
AsLCLBrowserWindow
()
ILCLBrowserWindow
Frames
()
TCEFFrame
addFrame
(
frame
*
ICefFrame
)
setBrowser
(
browser
*
ICefBrowser
)
createAuxTools
()
getAuxTools
()
*
auxTools
SetTitle
(
title
string
)
}
type
ILCLBrowserWindow
interface
{
IBrowserWindow
Id
()
int32
BrowserWindow
()
*
LCLBrowserWindow
EnableDefaultCloseEvent
()
EnableAllDefaultEvent
()
SetDefaultInTaskBar
()
SetShowInTaskBar
()
SetNotInTaskBar
()
WindowParent
()
ITCefWindowParent
DisableTransparent
()
EnableTransparent
(
value
uint8
)
DisableSystemMenu
()
DisableHelp
()
EnableSystemMenu
()
EnableHelp
()
}
type
IViewsFrameworkBrowserWindow
interface
{
IBrowserWindow
BrowserWindow
()
*
ViewsFrameworkBrowserWindow
CreateTopLevelWindow
()
CenterWindow
(
size
*
TCefSize
)
Component
()
lcl
.
IComponent
WindowComponent
()
*
TCEFWindowComponent
BrowserViewComponent
()
*
TCEFBrowserViewComponent
}
//创建一个 窗口默认属性
...
...
example/browser-control/src/main-browser-window.go
浏览文件 @
b711d376
...
...
@@ -28,11 +28,11 @@ func MainBrowserWindow() {
config
.
SetEnableDevTools
(
true
)
cef
.
BrowserWindow
.
Config
.
SetChromiumConfig
(
config
)
//创建窗口时的回调函数 对浏览器事件设置,和窗口属性组件等创建和修改
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCLBrowserWindow
)
{
//设置应用图标 这里加载的图标是内置到执行程序里的资源文件
lcl
.
Application
.
Icon
()
.
LoadFromFSFile
(
"resources/icon.ico"
)
//在窗体初始化时创建窗口内的组件
back
,
forward
,
stop
,
refresh
,
progressLabel
,
addr
:=
controlUI
(
browserWindow
)
back
,
forward
,
stop
,
refresh
,
progressLabel
,
addr
:=
controlUI
(
browserWindow
.
BrowserWindow
()
)
//页面加载处理进度
event
.
SetOnLoadingProgressChange
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
progress
float64
)
{
//linux 更新UI组件必须使用 QueueAsyncCall 主线程异步同步
...
...
@@ -59,7 +59,7 @@ func MainBrowserWindow() {
})
})
//创建窗口之后对对主窗口的属性、组件或子窗口的创建
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
cef
.
I
LCLBrowserWindow
)
{
fmt
.
Println
(
"SetBrowserInitAfter"
)
})
}
...
...
example/browser-cookie/cookie.go
浏览文件 @
b711d376
...
...
@@ -51,7 +51,7 @@ func main() {
})
})
//在SetBrowserInit中设置cookie事件,这些事件将返回操作后的结果
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCLBrowserWindow
)
{
//获取cookie时触发
event
.
SetOnCookiesVisited
(
func
(
sender
lcl
.
IObject
,
cookie
*
cef
.
ICefCookie
)
{
fmt
.
Printf
(
"SetOnCookiesVisited: %+v
\n
"
,
cookie
)
...
...
example/browser-download/download.go
浏览文件 @
b711d376
...
...
@@ -27,10 +27,10 @@ func main() {
//指定一个URL地址,或本地html文件目录
cef
.
BrowserWindow
.
Config
.
Url
=
"http://localhost:22022/download.html"
//在主窗口初始化回调函数里设置浏览器事件
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCLBrowserWindow
)
{
//linux 下载文件 系统弹出保存对话框不启作用
//所以 自己调用系统的保存对话框获得保存路径
linuxDlSave
:=
lcl
.
NewSaveDialog
(
browserWindow
)
linuxDlSave
:=
lcl
.
NewSaveDialog
(
browserWindow
.
BrowserWindow
()
)
linuxDlSave
.
SetTitle
(
"保存对话框标题"
)
//下载之前事件
...
...
example/browser-linux/linux.go
浏览文件 @
b711d376
...
...
@@ -23,7 +23,7 @@ func main() {
//指定一个URL地址,或本地html文件目录
cef
.
BrowserWindow
.
Config
.
Url
=
"http://localhost:22022/index.html"
cef
.
BrowserWindow
.
Config
.
IconFS
=
"resources/icon.png"
cef
.
BrowserWindow
.
SetViewFrameBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
window
*
cef
.
ViewsFrameworkBrowserWindow
)
{
cef
.
BrowserWindow
.
SetViewFrameBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
window
cef
.
I
ViewsFrameworkBrowserWindow
)
{
fmt
.
Println
(
"cef.BrowserWindow.SetViewFrameBrowserInit"
,
window
)
fmt
.
Printf
(
"%+v
\n
"
,
window
)
event
.
SetOnBeforeContextMenu
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
frame
*
cef
.
ICefFrame
,
params
*
cef
.
ICefContextMenuParams
,
model
*
cef
.
ICefMenuModel
)
{
...
...
example/mini-browser/src/min-browser.go
浏览文件 @
b711d376
...
...
@@ -142,7 +142,7 @@ func AppBrowserInit() {
browserWindow
.
SetWidth
(
800
)
browserWindow
.
SetHeight
(
600
)
browserWindow
.
SetShowInTaskBar
()
browserWindow
.
EnableDefaultClose
()
browserWindow
.
EnableDefaultClose
Event
()
browserWindow
.
Chromium
()
.
SetOnTitleChange
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
title
string
)
{
fmt
.
Println
(
wp
.
Title
,
title
)
})
...
...
@@ -180,13 +180,13 @@ func AppBrowserInit() {
})
//主窗口初始化回调函数
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInit
(
func
(
event
*
cef
.
BrowserEvent
,
browserWindow
cef
.
I
LCLBrowserWindow
)
{
lcl
.
Application
.
SetOnMinimize
(
func
(
sender
lcl
.
IObject
)
{
fmt
.
Println
(
"minimize"
)
})
fmt
.
Println
(
"主窗口初始化回调函数"
)
lcl
.
Application
.
Icon
()
.
LoadFromFSFile
(
"resources/icon.ico"
)
//设置应用图标
browserWindow
.
Set
Caption
(
"这里设置应用标题"
)
browserWindow
.
Set
Title
(
"这里设置应用标题"
)
//browserWindow.EnableTransparent(100) //窗口透明
//设置窗口样式,无标题 ,最大化按钮等
//browserWindow.SetBorderStyle(types.BsSingle)
...
...
@@ -200,16 +200,16 @@ func AppBrowserInit() {
//browserWindow.Window.Constraints().SetMinWidth(300)
//browserWindow.Window.Constraints().SetMaxWidth(1600)
//browserWindow.Window.Constraints().SetMaxHeight(900)
browserWindow
.
Constraints
()
.
SetOnChange
(
func
(
sender
lcl
.
IObject
)
{
browserWindow
.
BrowserWindow
()
.
Constraints
()
.
SetOnChange
(
func
(
sender
lcl
.
IObject
)
{
fmt
.
Println
(
"browserWindow SetOnChange"
)
})
//添加事件,add不会覆盖默认的事件 set会覆盖默认的事件
browserWindow
.
AddOnClose
(
func
(
sender
lcl
.
IObject
,
action
*
types
.
TCloseAction
)
bool
{
browserWindow
.
BrowserWindow
()
.
AddOnClose
(
func
(
sender
lcl
.
IObject
,
action
*
types
.
TCloseAction
)
bool
{
fmt
.
Println
(
"添加onclose事件"
)
return
false
})
//窗口大小改变后触发
browserWindow
.
AddOnResize
(
func
(
sender
lcl
.
IObject
)
bool
{
browserWindow
.
BrowserWindow
()
.
AddOnResize
(
func
(
sender
lcl
.
IObject
)
bool
{
//Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在
if
browserWindow
.
Browser
()
!=
nil
{
var
target
=
&
cef
.
EmitTarget
{
...
...
@@ -217,10 +217,10 @@ func AppBrowserInit() {
FrameId
:
browserWindow
.
Browser
()
.
MainFrame
()
.
Id
,
}
var
argumentList
=
ipc
.
NewArgumentList
()
argumentList
.
SetInt32
(
0
,
browserWindow
.
Left
())
argumentList
.
SetInt32
(
1
,
browserWindow
.
Top
())
argumentList
.
SetInt32
(
2
,
browserWindow
.
Width
())
argumentList
.
SetInt32
(
3
,
browserWindow
.
Height
())
argumentList
.
SetInt32
(
0
,
browserWindow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
browserWindow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
browserWindow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
browserWindow
.
BrowserWindow
()
.
Height
())
browserWindow
.
Chromium
()
.
Emit
(
"window-resize"
,
argumentList
,
target
)
browserWindow
.
Chromium
()
.
EmitAndCallback
(
"window-resize"
,
argumentList
,
target
,
func
(
context
ipc
.
IIPCContext
)
{
fmt
.
Println
(
"EmitAndCallback AddOnResize"
)
...
...
@@ -232,7 +232,7 @@ func AppBrowserInit() {
return
false
})
//windows下可以使用这个函数,实时触发
browserWindow
.
SetOnConstrainedResize
(
func
(
sender
lcl
.
IObject
,
minWidth
,
minHeight
,
maxWidth
,
maxHeight
*
int32
)
{
browserWindow
.
BrowserWindow
()
.
SetOnConstrainedResize
(
func
(
sender
lcl
.
IObject
,
minWidth
,
minHeight
,
maxWidth
,
maxHeight
*
int32
)
{
//Browser是在chromium加载完之后创建, 窗口创建时该对象还不存在
if
browserWindow
.
Browser
()
!=
nil
{
var
target
=
&
cef
.
EmitTarget
{
...
...
@@ -240,10 +240,10 @@ func AppBrowserInit() {
FrameId
:
browserWindow
.
Browser
()
.
MainFrame
()
.
Id
,
}
var
argumentList
=
ipc
.
NewArgumentList
()
argumentList
.
SetInt32
(
0
,
browserWindow
.
Left
())
argumentList
.
SetInt32
(
1
,
browserWindow
.
Top
())
argumentList
.
SetInt32
(
2
,
browserWindow
.
Width
())
argumentList
.
SetInt32
(
3
,
browserWindow
.
Height
())
argumentList
.
SetInt32
(
0
,
browserWindow
.
BrowserWindow
()
.
Left
())
argumentList
.
SetInt32
(
1
,
browserWindow
.
BrowserWindow
()
.
Top
())
argumentList
.
SetInt32
(
2
,
browserWindow
.
BrowserWindow
()
.
Width
())
argumentList
.
SetInt32
(
3
,
browserWindow
.
BrowserWindow
()
.
Height
())
browserWindow
.
Chromium
()
.
Emit
(
"window-resize"
,
argumentList
,
target
)
//使用EmitAndReturn函数会锁死
// browserWindow.Chromium.EmitAndCallback("window-resize", argumentList, target, func(context cef.IIPCContext) {
...
...
@@ -252,11 +252,11 @@ func AppBrowserInit() {
}
})
//自定义browser窗体
addressBar
(
browserWindow
)
addressBar
(
browserWindow
.
BrowserWindow
()
)
//下载文件
//linux系统弹出保存对话框不启作用
//自己调用系统的保存对话框获得保存路径
dlSave
:=
lcl
.
NewSaveDialog
(
browserWindow
)
dlSave
:=
lcl
.
NewSaveDialog
(
browserWindow
.
BrowserWindow
()
)
dlSave
.
SetTitle
(
"保存对话框标题"
)
event
.
SetOnBeforeDownload
(
func
(
sender
lcl
.
IObject
,
browser
*
cef
.
ICefBrowser
,
beforeDownloadItem
*
cef
.
DownloadItem
,
suggestedName
string
,
callback
*
cef
.
ICefBeforeDownloadCallback
)
{
fmt
.
Println
(
"OnBeforeDownload:"
,
beforeDownloadItem
,
suggestedName
)
...
...
@@ -380,13 +380,13 @@ func AppBrowserInit() {
})
})
//添加子窗口初始化
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
*
cef
.
LCLBrowserWindow
)
{
cef
.
BrowserWindow
.
SetBrowserInitAfter
(
func
(
browserWindow
cef
.
I
LCLBrowserWindow
)
{
//在这里创建 一些子窗口 子组件 等
//托盘
if
common
.
IsWindows
()
{
cefTray
(
browserWindow
)
cefTray
(
browserWindow
.
BrowserWindow
()
)
}
else
{
tray
(
browserWindow
)
tray
(
browserWindow
.
BrowserWindow
()
)
}
})
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录