energy/cef/cef-frame.go

146 lines
4.6 KiB
Go
Raw Normal View History

2023-02-20 14:42:17 +08:00
// ----------------------------------------
2022-10-04 13:21:05 +08:00
//
// Copyright © yanghy. All Rights Reserved.
//
2023-02-20 14:42:17 +08:00
// # Licensed under Apache License Version 2.0, January 2004
//
// https://www.apache.org/licenses/LICENSE-2.0
2022-10-04 13:21:05 +08:00
//
2023-02-20 14:42:17 +08:00
// ----------------------------------------
2022-10-04 13:21:05 +08:00
2023-02-20 14:42:17 +08:00
// CEF Frame
2022-10-04 13:21:05 +08:00
package cef
import (
"github.com/energye/energy/common/imports"
2022-10-04 22:34:57 +08:00
. "github.com/energye/energy/consts"
"github.com/energye/energy/ipc"
2022-10-04 13:21:05 +08:00
"github.com/energye/golcl/lcl/api"
"unsafe"
)
2023-02-20 14:42:17 +08:00
// ICefFrame
// Html <frame>...</frame>
2022-10-04 13:21:05 +08:00
type ICefFrame struct {
Browser *ICefBrowser
Name string
Url string
Id int64
}
type cefFrame struct {
Name uintptr
Url uintptr
Identifier uintptr
}
2023-02-20 14:42:17 +08:00
// TCEFFrame Frame 集合
type TCEFFrame map[int64]*ICefFrame
func (m TCEFFrame) GetByFrameId(frameId int64) *ICefFrame {
if m != nil {
if frame, ok := m[frameId]; ok {
return frame
}
}
return nil
}
2023-02-20 14:42:17 +08:00
// Undo 撤销操作
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Undo() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Undo).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// Redo 恢复
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Redo() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Redo).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// Cut 剪切
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Cut() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Cut).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// Copy 复制
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Copy() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Copy).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// Paste 粘贴
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Paste() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Paste).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// Del 删除
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) Del() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_Del).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// SelectAll 选择所有
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) SelectAll() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_SelectAll).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// ViewSource 显示源码
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) ViewSource() {
var frameId = m.Id
imports.Proc(internale_CEFFrame_ViewSource).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// LoadUrl 加载URL
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) LoadUrl(url string) {
var frameId = m.Id
imports.Proc(internale_CEFFrame_LoadUrl).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)), api.PascalStr(url))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// ExecuteJavaScript 执行JS
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) ExecuteJavaScript(code, scriptUrl string, startLine int32) {
var frameId = m.Id
imports.Proc(internale_CEFFrame_ExecuteJavaScript).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)), api.PascalStr(code), api.PascalStr(scriptUrl), uintptr(startLine))
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// IsValid 该Frame是否有效
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) IsValid() bool {
var frameId = m.Id
r1, _, _ := imports.Proc(internale_CEFFrame_IsValid).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-12-03 21:56:51 +08:00
return api.GoBool(r1)
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// IsMain 是否为主Frame
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) IsMain() bool {
var frameId = m.Id
r1, _, _ := imports.Proc(internale_CEFFrame_IsMain).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-12-03 21:56:51 +08:00
return api.GoBool(r1)
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// IsFocused 是否已获取焦点
2022-10-04 13:21:05 +08:00
func (m *ICefFrame) IsFocused() bool {
var frameId = m.Id
r1, _, _ := imports.Proc(internale_CEFFrame_IsFocused).Call(uintptr(m.Browser.Identifier()), uintptr(unsafe.Pointer(&frameId)))
2022-12-03 21:56:51 +08:00
return api.GoBool(r1)
2022-10-04 13:21:05 +08:00
}
2023-02-20 14:42:17 +08:00
// SendProcessMessage 发送进程消息
2022-10-04 22:34:57 +08:00
func (m *ICefFrame) SendProcessMessage(targetProcess CefProcessId, processMessage *ipc.ICefProcessMessage) ProcessMessageError {
2022-10-04 13:21:05 +08:00
if processMessage == nil || processMessage.Name == "" || processMessage.ArgumentList == nil {
return PMErr_REQUIRED_PARAMS_IS_NULL
2022-10-04 22:34:57 +08:00
} else if ipc.InternalIPCNameCheck(processMessage.Name) {
2022-10-04 13:21:05 +08:00
return PMErr_NAME_CANNOT_USED
}
data := processMessage.ArgumentList.Package()
r1 := _CEFFrame_SendProcessMessage(m.Browser.Identifier(), m.Id, processMessage.Name, targetProcess, int32(processMessage.ArgumentList.Size()), uintptr(unsafe.Pointer(&data[0])), uintptr(len(data)))
return ProcessMessageError(r1)
}
func _CEFFrame_SendProcessMessage(browseId int32, frameId int64, name string, targetProcess CefProcessId, itemLength int32, data, dataLen uintptr) uintptr {
r1, _, _ := imports.Proc(internale_CEFFrame_SendProcessMessage).Call(uintptr(browseId), uintptr(unsafe.Pointer(&frameId)), api.PascalStr(name), uintptr(targetProcess), uintptr(itemLength), data, dataLen)
2022-10-04 13:21:05 +08:00
return r1
}