cef-aux-view-source-window.go 2.3 KB
Newer Older
yanghye's avatar
yanghye 已提交
1 2 3 4
//----------------------------------------
//
// Copyright © yanghy. All Rights Reserved.
//
yanghye's avatar
yanghye 已提交
5
// Licensed under GNU General Public License v3.0
yanghye's avatar
yanghye 已提交
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
//
//----------------------------------------

package cef

import (
	"fmt"
	"github.com/energye/golcl/lcl"
)

const (
	view_source_name = "ViewSource"
)

func updateBrowserViewSource(browser *ICefBrowser, title string) {
	if browserWinInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); browserWinInfo != nil && browserWinInfo.Window != nil && browserWinInfo.Window.windowType == WT_VIEW_SOURCE {
		if browserWinInfo.Window != nil {
			QueueAsyncCall(func(id int) {
				browserWinInfo.Window.SetCaption(fmt.Sprintf("%s - %s", view_source_name, browser.MainFrame().Url))
			})
		}
	}
}

func viewSourceAfterCreate(browser *ICefBrowser) bool {
	if winInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); winInfo != nil {
		if winInfo.Window.windowType == WT_VIEW_SOURCE && winInfo.auxTools.viewSourceWindow != nil {
			winInfo.auxTools.viewSourceWindow.chromium.LoadUrl(winInfo.auxTools.viewSourceUrl)
			return true
		}
	}
	return false
}

func createBrowserViewSource(browser *ICefBrowser, frame *ICefFrame) {
	BrowserWindow.uiLock.Lock()
	defer BrowserWindow.uiLock.Unlock()
	var viewSourceUrl = fmt.Sprintf("view-source:%s", frame.Url)
	QueueAsyncCall(func(id int) {
		var m = BrowserWindow.popupWindow
		BrowserWindow.popupWindow.SetWindowType(WT_VIEW_SOURCE)
		BrowserWindow.popupWindow.ChromiumCreate(nil, viewSourceUrl)
		BrowserWindow.popupWindow.putChromiumWindowInfo()
		BrowserWindow.popupWindow.defaultChromiumEvent()
		if winInfo := BrowserWindow.GetWindowInfo(BrowserWindow.popupWindow.windowId); winInfo != nil {
			winInfo.auxTools.viewSourceUrl = viewSourceUrl
			winInfo.auxTools.viewSourceWindow = BrowserWindow.popupWindow
		}
		m.chromium.SetOnBeforeBrowser(func(sender lcl.IObject, browser *ICefBrowser, frame *ICefFrame) bool { return false })
		m.chromium.SetOnClose(func(sender lcl.IObject, browser *ICefBrowser, aAction *TCefCloseBrowsesAction) {})
		m.chromium.SetOnBeforeClose(func(sender lcl.IObject, browser *ICefBrowser) {})
		m.chromium.SetOnTitleChange(func(sender lcl.IObject, browser *ICefBrowser, title string) {})
		m.chromium.SetOnAfterCreated(func(sender lcl.IObject, browser *ICefBrowser) {})
		BrowserWindow.popupWindow.Show()
	})
}