cef-aux-view-source-window.go 2.0 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
//
//----------------------------------------

package cef

import (
	"fmt"
yanghye's avatar
yanghye 已提交
13
	. "github.com/energye/energy/consts"
yanghye's avatar
yanghye 已提交
14
	"github.com/energye/energy/logger"
yanghye's avatar
yanghye 已提交
15 16 17 18 19 20 21
)

const (
	view_source_name = "ViewSource"
)

func updateBrowserViewSource(browser *ICefBrowser, title string) {
yanghye's avatar
yanghye 已提交
22
	if browserWinInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); browserWinInfo != nil && browserWinInfo.Window != nil && browserWinInfo.Window.WindowType() == WT_VIEW_SOURCE {
yanghye's avatar
yanghye 已提交
23 24
		if browserWinInfo.Window != nil {
			QueueAsyncCall(func(id int) {
yanghye's avatar
yanghye 已提交
25 26 27 28 29
				if mainFrame := browser.MainFrame(); mainFrame != nil {
					browserWinInfo.Window.SetCaption(fmt.Sprintf("%s - %s", view_source_name, mainFrame.Url))
				} else {
					logger.Error("failed to get main frame")
				}
yanghye's avatar
yanghye 已提交
30 31 32 33 34 35 36
			})
		}
	}
}

func viewSourceAfterCreate(browser *ICefBrowser) bool {
	if winInfo := BrowserWindow.GetWindowInfo(browser.Identifier()); winInfo != nil {
yanghye's avatar
yanghye 已提交
37
		if winInfo.Window.WindowType() == WT_VIEW_SOURCE && winInfo.auxTools.viewSourceWindow != nil {
yanghye's avatar
yanghye 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50
			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
yanghye's avatar
yanghye 已提交
51
		if m != nil {
52
			m.SetShowInTaskBar()
yanghye's avatar
yanghye 已提交
53 54
			m.SetWindowType(WT_VIEW_SOURCE)
			m.ChromiumCreate(nil, viewSourceUrl)
55
			m.chromium.EnableIndependentEvent()
yanghye's avatar
yanghye 已提交
56 57 58 59 60 61 62 63 64 65 66
			m.putChromiumWindowInfo()
			m.defaultChromiumEvent()
			m.SetWidth(1024)
			m.SetHeight(768)
			if winInfo := BrowserWindow.GetWindowInfo(m.windowId); winInfo != nil {
				winInfo.auxTools.viewSourceUrl = viewSourceUrl
				winInfo.auxTools.viewSourceWindow = m
			}
			m.Show()
		} else {
			logger.Fatal("Window not initialized successfully")
yanghye's avatar
yanghye 已提交
67 68 69
		}
	})
}