提交 7b9f35f2 编写于 作者: yanghye's avatar yanghye

U&A: VF-SetCreateBrowserExtraInfo

上级 30fe5c3f
......@@ -71,7 +71,7 @@ func (m *lclBrowserWindow) OnFormCreate(sender lcl.IObject) {
m.setProperty()
if BrowserWindow.Config.browserWindowOnEventCallback != nil {
BrowserWindow.browserEvent.chromium = m.Chromium()
BrowserWindow.Config.browserWindowOnEventCallback(BrowserWindow.browserEvent, &m.LCLBrowserWindow)
BrowserWindow.Config.browserWindowOnEventCallback(BrowserWindow.browserEvent, m)
m.setProperty() //再次设置可能修改属性
}
//browserWindowOnEventCallback 执行完后,注册CompMsgEvent
......
......@@ -655,16 +655,8 @@ func (m *LCLBrowserWindow) IsLCL() bool {
// show 内部调用
func (m *LCLBrowserWindow) show(sender lcl.IObject) {
var ret bool
if m.onShow != nil {
ret = m.onShow(sender)
}
if !ret { //true表示用户自己处理, false继续执行默认实现
if m.chromiumBrowser != nil && !m.chromiumBrowser.IsCreated() {
if m.WindowProperty().WindowType != consts.WT_DEV_TOOLS {
m.chromiumBrowser.CreateBrowser()
}
}
m.onShow(sender)
}
}
......@@ -710,6 +702,11 @@ func (m *LCLBrowserWindow) activate(sender lcl.IObject) {
if m.isClosing {
return
}
if m.chromiumBrowser != nil && !m.chromiumBrowser.IsCreated() {
if m.WindowProperty().WindowType != consts.WT_DEV_TOOLS {
m.chromiumBrowser.CreateBrowser()
}
}
}
if m.onActivateAfter != nil {
m.onActivateAfter(sender)
......
......@@ -44,6 +44,8 @@ type ViewsFrameworkBrowserWindow struct {
doOnWindowCreated WindowComponentOnWindowCreated //窗口创建
doOnGetInitialBounds WindowComponentOnGetInitialBounds //窗口初始bounds
regions *TCefDraggableRegions //窗口内html拖拽区域
context *ICefRequestContext
extraInfo *ICefDictionaryValue
}
// NewViewsFrameworkBrowserWindow 创建 ViewsFrameworkBrowserWindow 窗口
......@@ -72,7 +74,7 @@ func NewViewsFrameworkBrowserWindow(config *TCefChromiumConfig, windowProperty W
m.SetWindowType(windowProperty.WindowType)
m.chromium.SetEnableMultiBrowserMode(true)
m.windowComponent.SetOnWindowCreated(func(sender lcl.IObject, window *ICefWindow) {
if m.chromium.CreateBrowserByBrowserViewComponent(windowProperty.Url, m.browserViewComponent) {
if m.chromium.CreateBrowserByBrowserViewComponent(windowProperty.Url, m.browserViewComponent, m.context, m.extraInfo) {
m.windowComponent.AddChildView(m.browserViewComponent)
if windowProperty.Title != "" {
m.windowComponent.SetTitle(windowProperty.Title)
......@@ -331,6 +333,13 @@ func (m *ViewsFrameworkBrowserWindow) SetOnGetInitialBounds(onGetInitialBounds W
m.doOnGetInitialBounds = onGetInitialBounds
}
// SetCreateBrowserExtraInfo
// 设置 Chromium 创建浏览器时设置的扩展信息
func (m *ViewsFrameworkBrowserWindow) SetCreateBrowserExtraInfo(_ string, context *ICefRequestContext, extraInfo *ICefDictionaryValue) {
m.context = context
m.extraInfo = extraInfo
}
// IsViewsFramework 返回是否VF窗口组件,这里返回true
func (m *ViewsFrameworkBrowserWindow) IsViewsFramework() bool {
return true
......
......@@ -58,50 +58,51 @@ type WindowProperty struct {
//
// 定义了常用函数
type IBrowserWindow interface {
Id() int32 //窗口ID
Handle() types.HWND //窗口句柄
Show() //显示窗口
Hide() //隐藏窗口
WindowState() types.TWindowState //返回窗口最小化、最大化、全屏状态
Maximize() //窗口最大化
Minimize() //窗口最小化
Restore() //窗口还原
Close() //关闭窗口 非browser窗口使用
CloseBrowserWindow() //关闭浏览器窗口 带有browser窗口使用
WindowType() consts.WINDOW_TYPE //窗口类型
SetWindowType(windowType consts.WINDOW_TYPE) //设置窗口类型
Browser() *ICefBrowser //窗口内的Browser对象
Chromium() IChromium //窗口内的Chromium对象
DisableMaximize() //禁用最大化
DisableMinimize() //禁用最小化
DisableResize() //禁用窗口大小调整
EnableMaximize() //启用最大化
EnableMinimize() //启用最小化
EnableResize() //启用允许调整窗口大小
IsClosing() bool //返回窗口是否正在关闭/或已关闭 true正在或已关闭
AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow //转换为ViewsFramework窗口接口, 失败返回nil
AsLCLBrowserWindow() ILCLBrowserWindow //转换为LCL窗口接口, 失败返回nil
EnableAllDefaultEvent() //启用所有默认事件
SetTitle(title string) //设置窗口标题栏标题
IsViewsFramework() bool //是否为 IViewsFrameworkBrowserWindow 窗口,失败返回false
IsLCL() bool //是否为 ILCLBrowserWindow 窗口,失败返回false
WindowProperty() *WindowProperty //窗口常用属性
SetWidth(value int32) //设置窗口宽
SetHeight(value int32) //设置窗口高
Point() *TCefPoint //窗口坐标
Size() *TCefSize //窗口宽高
Bounds() *TCefRect //窗口坐标和宽高
SetPoint(x, y int32) //设置窗口坐标
SetSize(width, height int32) //设置窗口宽高
SetBounds(x, y, width, height int32) //设置窗口坐标和宽高
SetCenterWindow(value bool) //设置窗口居中
ShowTitle() //显示窗口标题栏
HideTitle() //隐藏窗口标题栏
SetDefaultInTaskBar() //默认窗口在任务栏上显示按钮
SetShowInTaskBar() //强制窗口在任务栏上显示按钮
SetNotInTaskBar() //强制窗口不在任务栏上显示按钮
NewCefTray(width, height int32, url string) ITray //仅支持windows托盘LCL+[CEF|VF](使用web端技术自定义实现,如使用LCL窗口组件该托盘实现是LCL+CEF,如使用VF窗口组件该托盘实现是LCL+VF)
NewSysTray() ITray //systray系统原生
Id() int32 //窗口ID
Handle() types.HWND //窗口句柄
Show() //显示窗口
Hide() //隐藏窗口
WindowState() types.TWindowState //返回窗口最小化、最大化、全屏状态
Maximize() //窗口最大化
Minimize() //窗口最小化
Restore() //窗口还原
Close() //关闭窗口 非browser窗口使用
CloseBrowserWindow() //关闭浏览器窗口 带有browser窗口使用
WindowType() consts.WINDOW_TYPE //窗口类型
SetWindowType(windowType consts.WINDOW_TYPE) //设置窗口类型
Browser() *ICefBrowser //窗口内的Browser对象
Chromium() IChromium //窗口内的Chromium对象
DisableMaximize() //禁用最大化
DisableMinimize() //禁用最小化
DisableResize() //禁用窗口大小调整
EnableMaximize() //启用最大化
EnableMinimize() //启用最小化
EnableResize() //启用允许调整窗口大小
IsClosing() bool //返回窗口是否正在关闭/或已关闭 true正在或已关闭
AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow //转换为ViewsFramework窗口接口, 失败返回nil
AsLCLBrowserWindow() ILCLBrowserWindow //转换为LCL窗口接口, 失败返回nil
EnableAllDefaultEvent() //启用所有默认事件
SetTitle(title string) //设置窗口标题栏标题
IsViewsFramework() bool //是否为 IViewsFrameworkBrowserWindow 窗口,失败返回false
IsLCL() bool //是否为 ILCLBrowserWindow 窗口,失败返回false
WindowProperty() *WindowProperty //窗口常用属性
SetWidth(value int32) //设置窗口宽
SetHeight(value int32) //设置窗口高
Point() *TCefPoint //窗口坐标
Size() *TCefSize //窗口宽高
Bounds() *TCefRect //窗口坐标和宽高
SetPoint(x, y int32) //设置窗口坐标
SetSize(width, height int32) //设置窗口宽高
SetBounds(x, y, width, height int32) //设置窗口坐标和宽高
SetCenterWindow(value bool) //设置窗口居中
ShowTitle() //显示窗口标题栏
HideTitle() //隐藏窗口标题栏
SetDefaultInTaskBar() //默认窗口在任务栏上显示按钮
SetShowInTaskBar() //强制窗口在任务栏上显示按钮
SetNotInTaskBar() //强制窗口不在任务栏上显示按钮
NewCefTray(width, height int32, url string) ITray //仅支持windows托盘LCL+[CEF|VF](使用web端技术自定义实现,如使用LCL窗口组件该托盘实现是LCL+CEF,如使用VF窗口组件该托盘实现是LCL+VF)
NewSysTray() ITray //systray系统原生
SetCreateBrowserExtraInfo(windowName string, context *ICefRequestContext, extraInfo *ICefDictionaryValue) //设置 Chromium 创建浏览器时设置的扩展信息
}
// ILCLBrowserWindow
......@@ -110,17 +111,16 @@ type IBrowserWindow interface {
// 定义了LCL常用函数
type ILCLBrowserWindow interface {
IBrowserWindow
BrowserWindow() *LCLBrowserWindow //返回 LCLBrowserWindow 窗口结构
EnableDefaultCloseEvent() //启用默认关闭事件
WindowParent() ICEFWindowParent //浏览器父窗口组件
DisableTransparent() //禁用窗口透明
EnableTransparent(value uint8) //启用并设置窗口透明
DisableSystemMenu() //禁用标题栏系统菜单
DisableHelp() //禁用标题栏帮助
EnableSystemMenu() //启用标题栏系统菜单
EnableHelp() //启用标题栏帮助
NewTray() ITray //创建LCL的系统托盘
SetCreateBrowserExtraInfo(windowName string, context *ICefRequestContext, extraInfo *ICefDictionaryValue) //设置 Chromium 创建浏览器时设置的扩展信息
BrowserWindow() *LCLBrowserWindow //返回 LCLBrowserWindow 窗口结构
EnableDefaultCloseEvent() //启用默认关闭事件
WindowParent() ICEFWindowParent //浏览器父窗口组件
DisableTransparent() //禁用窗口透明
EnableTransparent(value uint8) //启用并设置窗口透明
DisableSystemMenu() //禁用标题栏系统菜单
DisableHelp() //禁用标题栏帮助
EnableSystemMenu() //启用标题栏系统菜单
EnableHelp() //启用标题栏帮助
NewTray() ITray //创建LCL的系统托盘
}
// IViewsFrameworkBrowserWindow
......
......@@ -54,7 +54,7 @@ func NewChromiumBrowser(owner lcl.IWinControl, config *TCefChromiumConfig) ICEFC
// 创建浏览器
// 创建时如果未创建成功, 使用定时器创建直到成功
func (m *TCEFChromiumBrowser) checkAndCreateBrowser(sender lcl.IObject) {
if m.chromium == nil || m.createTimer == nil {
if m.isCreated || m.chromium == nil || m.createTimer == nil {
return
}
m.createTimer.SetEnabled(false)
......
......@@ -52,7 +52,7 @@ type IChromiumProc interface {
ResetZoomLevel()
CloseAllBrowsers()
CreateBrowser(window ICEFWindowParent, windowName string, context *ICefRequestContext, extraInfo *ICefDictionaryValue) bool
CreateBrowserByBrowserViewComponent(homePage string, browserViewComponent *TCEFBrowserViewComponent) bool
CreateBrowserByBrowserViewComponent(homePage string, browserViewComponent *TCEFBrowserViewComponent, context *ICefRequestContext, extraInfo *ICefDictionaryValue) bool
Initialized() bool
IsSameBrowser(browser *ICefBrowser) bool
PrintToPDF(saveFilePath string)
......@@ -422,11 +422,12 @@ func (m *TCEFChromium) CreateBrowser(window ICEFWindowParent, windowName string,
return _CEFChromium_CreateBrowse(m.Instance(), windowPtr, api.PascalStr(windowName), context.Instance(), extraInfo.Instance())
}
func (m *TCEFChromium) CreateBrowserByBrowserViewComponent(homePage string, browserViewComponent *TCEFBrowserViewComponent) bool {
func (m *TCEFChromium) CreateBrowserByBrowserViewComponent(homePage string, browserViewComponent *TCEFBrowserViewComponent, context *ICefRequestContext, extraInfo *ICefDictionaryValue) bool {
if !m.IsValid() {
return false
}
return _CEFChromium_CreateBrowserByBrowserViewComponent(m.Instance(), api.PascalStr(homePage), browserViewComponent.Instance())
r1, _, _ := imports.Proc(def.CEFChromium_CreateBrowserByBrowserViewComponent).Call(m.Instance(), api.PascalStr(homePage), browserViewComponent.Instance(), context.Instance(), extraInfo.Instance())
return api.GoBool(r1)
}
func (m *TCEFChromium) Initialized() bool {
......@@ -1622,12 +1623,6 @@ func _CEFChromium_CreateBrowseByLinkedWindow(instance, window uintptr) bool {
return api.GoBool(r1)
}
// TCEFChromium _CEFChromium_CreateBrowserByBrowserViewComponent
func _CEFChromium_CreateBrowserByBrowserViewComponent(instance, homePage, browserViewComponent uintptr) bool {
r1, _, _ := imports.Proc(def.CEFChromium_CreateBrowserByBrowserViewComponent).Call(instance, homePage, browserViewComponent)
return api.GoBool(r1)
}
// TCEFChromium _CEFChromium_Initialized
func _CEFChromium_Initialized(instance uintptr) bool {
r1, _, _ := imports.Proc(def.CEFChromium_Initialized).Call(instance)
......
......@@ -48,11 +48,11 @@ func main() {
})
context := cef.RequestContextRef.New(nil, ch)
// 主窗口的扩展参数设置
window.AsLCLBrowserWindow().SetCreateBrowserExtraInfo("", context, nil)
window.SetCreateBrowserExtraInfo("", context, nil)
// 弹出窗口
event.SetOnBeforePopup(func(sender lcl.IObject, browser *cef.ICefBrowser, frame *cef.ICefFrame, beforePopupInfo *cef.BeforePopupInfo, popupWindow cef.IBrowserWindow, noJavascriptAccess *bool) bool {
// 弹出窗口的扩展参数设置
popupWindow.AsLCLBrowserWindow().SetCreateBrowserExtraInfo("", context, nil)
popupWindow.SetCreateBrowserExtraInfo("", context, nil)
return false
})
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册