//---------------------------------------- // // Copyright © yanghy. All Rights Reserved. // // Licensed under GNU General Public License v3.0 // //---------------------------------------- package cef import ( "github.com/energye/energy/consts" "github.com/energye/golcl/lcl" "github.com/energye/golcl/lcl/types" ) // 辅助工具 type auxTools struct { devToolsWindow IBrowserWindow //devTools devToolsX int32 //上次改变的窗体位置,宽度 devToolsY int32 // devToolsWidth int32 // devToolsHeight int32 // viewSourceWindow IBrowserWindow //viewSource viewSourceUrl string // viewSourceX int32 //上次改变的窗体位置,宽度 viewSourceY int32 // viewSourceWidth int32 // viewSourceHeight int32 // } // 窗口属性配置器 // // 部分属性配置并不支持所有平台 type WindowProperty struct { IsShowModel bool //是否以模态窗口显示 WindowState types.TWindowState //窗口 状态 WindowType consts.WINDOW_TYPE //窗口 类型 WINDOW_TYPE default: WT_MAIN_BROWSER Title string //窗口 标题 Url string //默认打开URL Icon string //窗口图标 加载本地图标 local > /app/resources/icon.ico, linux使用png IconFS string //窗口图标 加载emfs内置图标 emfs > resources/icon.ico, linux使用png EnableHideCaption bool //窗口 是否隐藏标题栏, VF窗口组件Linux下不能动态控制 EnableMinimize bool //窗口 是否启用最小化 default: true EnableMaximize bool //窗口 是否启用最大化 default: true EnableResize bool //窗口 是否允许调整大小 default: true EnableClose bool //窗口 关闭时是否关闭窗口 default: true EnableCenterWindow bool //窗口 居中显示 default: true EnableDragFile bool //窗口 是否允许向窗口内拖拽文件 EnableWebkitAppRegion bool //窗口 html元素中设置css属性 -webkit-app-region: drag/no-drag 是否允许拖拽区域 default: true EnableWebkitAppRegionDClk bool //窗口 拖拽区域是否启用标题栏双击最大化和还原 default: true AlwaysOnTop bool //窗口 窗口置顶 X int32 //窗口 EnableCenterWindow=false X坐标 default: 100 Y int32 //窗口 EnableCenterWindow=false Y坐标 default: 100 Width int32 //窗口 宽 default: 1024 Height int32 //窗口 高 default: 768 } // 浏览器窗口基础接口 // // 定义了常用函数 type IBrowserWindow interface { Id() int32 //窗口ID Handle() types.HWND //窗口句柄 Show() //显示窗口 Hide() //隐藏窗口 Maximize() //窗口最大化 Minimize() //窗口最小化 Restore() //窗口还原 Close() //关闭窗口 CloseBrowserWindow() //关闭浏览器窗口 WindowType() consts.WINDOW_TYPE //窗口类型 SetWindowType(windowType consts.WINDOW_TYPE) //设置窗口类型 Browser() *ICefBrowser //窗口内的Browser对象 Chromium() IChromium //窗口内的Chromium对象 DisableMaximize() //禁用最大化 DisableMinimize() //禁用最小化 DisableResize() //禁用窗口大小调整 EnableMaximize() //启用最大化 EnableMinimize() //启用最小化 EnableResize() //启用窗口大小调用 IsClosing() bool //窗口是否已状态 AsViewsFrameworkBrowserWindow() IViewsFrameworkBrowserWindow //转换为ViewsFramework窗口接口 AsLCLBrowserWindow() ILCLBrowserWindow //转换为LCL窗口接口 Frames() TCEFFrame //窗口内的所有Frame addFrame(frame *ICefFrame) // setBrowser(browser *ICefBrowser) // EnableAllDefaultEvent() //启用所有默认事件 SetTitle(title string) //设置窗口标题栏标题 IsViewsFramework() bool //是否为 IViewsFrameworkBrowserWindow 窗口 IsLCL() bool //是否为 ILCLBrowserWindow 窗口 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系统原生 } // 浏览器 LCLBrowserWindow 窗口接口 继承 IBrowserWindow // // 定义了LCL常用函数 type ILCLBrowserWindow interface { IBrowserWindow BrowserWindow() *LCLBrowserWindow //返回 LCLBrowserWindow 窗口结构 EnableDefaultCloseEvent() //启用默认关闭事件 WindowParent() ITCefWindowParent //浏览器父窗口组件 DisableTransparent() //禁用窗口透明 EnableTransparent(value uint8) //用用并设置窗口透明 DisableSystemMenu() //禁用标题栏系统菜单 DisableHelp() //禁用标题栏帮助 EnableSystemMenu() //启用标题栏系统菜单 EnableHelp() //启用标题栏帮助 NewTray() ITray //创建LCL的系统托盘 } // 浏览器 ViewsFrameworkBrowserWindow 窗口接口 继承 IBrowserWindow // // 定义了ViewsFramework常用函数 type IViewsFrameworkBrowserWindow interface { IBrowserWindow BrowserWindow() *ViewsFrameworkBrowserWindow //返回 ViewsFrameworkBrowserWindow 窗口结构 CreateTopLevelWindow() //创建窗口, 在窗口组件中需要默认调用Show函数 CenterWindow(size *TCefSize) //设置窗口居中,同时指定窗口大小 Component() lcl.IComponent //窗口父组件 WindowComponent() *TCEFWindowComponent //窗口组件 BrowserViewComponent() *TCEFBrowserViewComponent //窗口浏览器组件 SetOnWindowCreated(onWindowCreated WindowComponentOnWindowCreated) //设置窗口默认的创建回调事件函数 SetOnGetInitialBounds(onGetInitialBounds WindowComponentOnGetInitialBounds) //设置窗口初始bounds } // 创建一个属性配置器,带有窗口默认属性值 func NewWindowProperty() WindowProperty { return WindowProperty{ Title: "Energy", Url: "about:blank", EnableMinimize: true, EnableMaximize: true, EnableResize: true, EnableClose: true, EnableCenterWindow: true, EnableWebkitAppRegion: true, EnableWebkitAppRegionDClk: true, X: 100, Y: 100, Width: 1024, Height: 768, } }