mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-03 06:39:30 +08:00
[windows] support runtime.WindowSetRGBA
This commit is contained in:
parent
c9f93cd313
commit
3c0da9fd15
@ -21,7 +21,7 @@ require (
|
|||||||
github.com/leaanthony/debme v1.2.1
|
github.com/leaanthony/debme v1.2.1
|
||||||
github.com/leaanthony/go-ansi-parser v1.0.1
|
github.com/leaanthony/go-ansi-parser v1.0.1
|
||||||
github.com/leaanthony/go-common-file-dialog v1.0.3
|
github.com/leaanthony/go-common-file-dialog v1.0.3
|
||||||
github.com/leaanthony/go-webview2 v0.0.0-20210906112707-5ca00d49e830
|
github.com/leaanthony/go-webview2 v0.0.0-20210912034341-849718dc22d7
|
||||||
github.com/leaanthony/gosod v1.0.1
|
github.com/leaanthony/gosod v1.0.1
|
||||||
github.com/leaanthony/idgen v1.0.0
|
github.com/leaanthony/idgen v1.0.0
|
||||||
github.com/leaanthony/slicer v1.5.0
|
github.com/leaanthony/slicer v1.5.0
|
||||||
|
@ -125,8 +125,8 @@ github.com/leaanthony/go-ansi-parser v1.0.1 h1:97v6c5kYppVsbScf4r/VZdXyQ21KQIfeQ
|
|||||||
github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM=
|
github.com/leaanthony/go-ansi-parser v1.0.1/go.mod h1:7arTzgVI47srICYhvgUV4CGd063sGEeoSlych5yeSPM=
|
||||||
github.com/leaanthony/go-common-file-dialog v1.0.3 h1:O0uGjKnWtdEADGrkg+TyAAbZylykMwwx/MNEXn9fp+Y=
|
github.com/leaanthony/go-common-file-dialog v1.0.3 h1:O0uGjKnWtdEADGrkg+TyAAbZylykMwwx/MNEXn9fp+Y=
|
||||||
github.com/leaanthony/go-common-file-dialog v1.0.3/go.mod h1:TGhEc9eSJgRsupZ+iH1ZgAOnEo9zp05cRH2j08RPrF0=
|
github.com/leaanthony/go-common-file-dialog v1.0.3/go.mod h1:TGhEc9eSJgRsupZ+iH1ZgAOnEo9zp05cRH2j08RPrF0=
|
||||||
github.com/leaanthony/go-webview2 v0.0.0-20210906112707-5ca00d49e830 h1:96/BSuQHPLQHkibP8PMs/BkSTHDL/yZoq4fGinEjb2w=
|
github.com/leaanthony/go-webview2 v0.0.0-20210912034341-849718dc22d7 h1:8IvKTQk33VBpncfgezD6BKutv5kCSZbDIcCNHOT9T4w=
|
||||||
github.com/leaanthony/go-webview2 v0.0.0-20210906112707-5ca00d49e830/go.mod h1:jVGFkh5EgsmI4X5Z/XsALrCELLEqrbc4dP3EGO9UY78=
|
github.com/leaanthony/go-webview2 v0.0.0-20210912034341-849718dc22d7/go.mod h1:lS5ds4bruPk9d7lzdF/OH31Z0YCerI6MmHNFGsWoUnM=
|
||||||
github.com/leaanthony/gosod v1.0.1 h1:F+4c3DmEBfigi7oAswCV2RpQ+k4DcNbhuCZUGdBHacQ=
|
github.com/leaanthony/gosod v1.0.1 h1:F+4c3DmEBfigi7oAswCV2RpQ+k4DcNbhuCZUGdBHacQ=
|
||||||
github.com/leaanthony/gosod v1.0.1/go.mod h1:W8RyeSFBXu7RpIxPGEJfW4moSyGGEjlJMLV25wEbAdU=
|
github.com/leaanthony/gosod v1.0.1/go.mod h1:W8RyeSFBXu7RpIxPGEJfW4moSyGGEjlJMLV25wEbAdU=
|
||||||
github.com/leaanthony/idgen v1.0.0 h1:IZreR+JGEzFV4yeVuBZA25gM0keUoFy+RDUldncQ+Jw=
|
github.com/leaanthony/idgen v1.0.0 h1:IZreR+JGEzFV4yeVuBZA25gM0keUoFy+RDUldncQ+Jw=
|
||||||
|
@ -165,9 +165,37 @@ func (f *Frontend) WindowSetMaxSize(width int, height int) {
|
|||||||
f.mainWindow.SetMaxSize(width, height)
|
f.mainWindow.SetMaxSize(width, height)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Frontend) WindowSetColour(colour int) {
|
func (f *Frontend) WindowSetRGBA(col *options.RGBA) {
|
||||||
runtime.LockOSThread()
|
runtime.LockOSThread()
|
||||||
// TODO: Set webview2 background to this colour
|
if col == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
f.mainWindow.Dispatch(func() {
|
||||||
|
controller := f.chromium.GetController()
|
||||||
|
controller2 := controller.GetICoreWebView2Controller2()
|
||||||
|
|
||||||
|
backgroundCol := edge.COREWEBVIEW2_COLOR{
|
||||||
|
A: col.A,
|
||||||
|
R: col.R,
|
||||||
|
G: col.G,
|
||||||
|
B: col.B,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Webview2 only has 0 and 255 as valid values.
|
||||||
|
if backgroundCol.A > 0 && backgroundCol.A < 255 {
|
||||||
|
backgroundCol.A = 255
|
||||||
|
}
|
||||||
|
|
||||||
|
if f.frontendOptions.Windows != nil && f.frontendOptions.Windows.WebviewIsTransparent {
|
||||||
|
backgroundCol.A = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
err := controller2.PutDefaultBackgroundColor(backgroundCol)
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Frontend) Quit() {
|
func (f *Frontend) Quit() {
|
||||||
@ -176,6 +204,7 @@ func (f *Frontend) Quit() {
|
|||||||
|
|
||||||
func (f *Frontend) setupChromium() {
|
func (f *Frontend) setupChromium() {
|
||||||
chromium := edge.NewChromium()
|
chromium := edge.NewChromium()
|
||||||
|
f.chromium = chromium
|
||||||
chromium.MessageCallback = f.processMessage
|
chromium.MessageCallback = f.processMessage
|
||||||
chromium.WebResourceRequestedCallback = f.processRequest
|
chromium.WebResourceRequestedCallback = f.processRequest
|
||||||
chromium.NavigationCompletedCallback = f.navigationCompleted
|
chromium.NavigationCompletedCallback = f.navigationCompleted
|
||||||
@ -209,14 +238,11 @@ func (f *Frontend) setupChromium() {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
//c2, err := chromium.GetWebView2Controller2()
|
// Set background colour
|
||||||
//err = c2.PutDefaultBackgroundColor(edge.COREWEBVIEW2_COLOR{R: 255, G: 0, B: 0, A: 255})
|
f.WindowSetRGBA(f.frontendOptions.RGBA)
|
||||||
//if err != nil {
|
|
||||||
// log.Fatal(err)
|
|
||||||
//}
|
|
||||||
chromium.AddWebResourceRequestedFilter("*", edge.COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL)
|
chromium.AddWebResourceRequestedFilter("*", edge.COREWEBVIEW2_WEB_RESOURCE_CONTEXT_ALL)
|
||||||
chromium.Navigate("file://wails/")
|
chromium.Navigate("file://wails/")
|
||||||
f.chromium = chromium
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type EventNotify struct {
|
type EventNotify struct {
|
||||||
|
@ -226,8 +226,8 @@ func (d *DevWebServer) WindowUnFullscreen() {
|
|||||||
d.desktopFrontend.WindowUnFullscreen()
|
d.desktopFrontend.WindowUnFullscreen()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DevWebServer) WindowSetColour(colour int) {
|
func (d *DevWebServer) WindowSetRGBA(col *options.RGBA) {
|
||||||
d.desktopFrontend.WindowSetColour(colour)
|
d.desktopFrontend.WindowSetRGBA(col)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *DevWebServer) SetApplicationMenu(menu *menu.Menu) {
|
func (d *DevWebServer) SetApplicationMenu(menu *menu.Menu) {
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
package dispatcher
|
package dispatcher
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"github.com/wailsapp/wails/v2/internal/frontend"
|
"github.com/wailsapp/wails/v2/internal/frontend"
|
||||||
|
"github.com/wailsapp/wails/v2/pkg/options"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
@ -44,6 +46,13 @@ func (d *Dispatcher) processWindowMessage(message string, sender frontend.Fronte
|
|||||||
go sender.WindowHide()
|
go sender.WindowHide()
|
||||||
case 'S':
|
case 'S':
|
||||||
go sender.WindowShow()
|
go sender.WindowShow()
|
||||||
|
case 'r':
|
||||||
|
var rgba options.RGBA
|
||||||
|
err := json.Unmarshal([]byte(message[3:]), &rgba)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
go sender.WindowSetRGBA(&rgba)
|
||||||
case 'M':
|
case 'M':
|
||||||
go sender.WindowMaximise()
|
go sender.WindowMaximise()
|
||||||
case 'U':
|
case 'U':
|
||||||
|
@ -3,6 +3,7 @@ package frontend
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"github.com/wailsapp/wails/v2/pkg/menu"
|
"github.com/wailsapp/wails/v2/pkg/menu"
|
||||||
|
"github.com/wailsapp/wails/v2/pkg/options"
|
||||||
)
|
)
|
||||||
|
|
||||||
// FileFilter defines a filter for dialog boxes
|
// FileFilter defines a filter for dialog boxes
|
||||||
@ -84,7 +85,7 @@ type Frontend interface {
|
|||||||
WindowSetMaxSize(width int, height int)
|
WindowSetMaxSize(width int, height int)
|
||||||
WindowFullscreen()
|
WindowFullscreen()
|
||||||
WindowUnFullscreen()
|
WindowUnFullscreen()
|
||||||
WindowSetColour(colour int)
|
WindowSetRGBA(col *options.RGBA)
|
||||||
WindowReload()
|
WindowReload()
|
||||||
|
|
||||||
// Menus
|
// Menus
|
||||||
|
@ -173,6 +173,19 @@ export function WindowUnminimise() {
|
|||||||
window.WailsInvoke('Wu');
|
window.WailsInvoke('Wu');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the background colour of the window
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @param {RGBA} RGBA background colour
|
||||||
|
*/
|
||||||
|
export function WindowSetRGBA(RGBA) {
|
||||||
|
let rgba = JSON.stringify(RGBA);
|
||||||
|
window.WailsInvoke('Wr:' + rgba);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the Window
|
* Close the Window
|
||||||
*
|
*
|
||||||
|
File diff suppressed because one or more lines are too long
@ -1 +1 @@
|
|||||||
(()=>{var v=Object.defineProperty;var h=o=>v(o,"__esModule",{value:!0});var x=(o,n)=>{h(o);for(var e in n)v(o,e,{get:n[e],enumerable:!0})};var f={};x(f,{LogDebug:()=>R,LogError:()=>F,LogFatal:()=>J,LogInfo:()=>T,LogLevel:()=>G,LogPrint:()=>C,LogTrace:()=>b,LogWarning:()=>D,SetLogLevel:()=>z});function l(o,n){window.WailsInvoke("L"+o+n)}function b(o){l("T",o)}function C(o){l("P",o)}function R(o){l("D",o)}function T(o){l("I",o)}function D(o){l("W",o)}function F(o){l("E",o)}function J(o){l("F",o)}function z(o){l("S",o)}var G={TRACE:1,DEBUG:2,INFO:3,WARNING:4,ERROR:5};var g=class{constructor(n,e){e=e||-1,this.Callback=t=>(n.apply(null,t),e===-1?!1:(e-=1,e===0))}},s={};function a(o,n,e){s[o]=s[o]||[];let t=new g(n,e);s[o].push(t)}function E(o,n){a(o,n,-1)}function I(o,n){a(o,n,1)}function k(o){let n=o.name;if(s[n]){let e=s[n].slice();for(let t=0;t<s[n].length;t+=1){let r=s[n][t],i=o.data;r.Callback(i)&&e.splice(t,1)}s[n]=e}}function m(o){let n;try{n=JSON.parse(o)}catch(e){let t="Invalid JSON passed to Notify: "+o;throw new Error(t)}k(n)}function S(o){let n={name:o,data:[].slice.apply(arguments).slice(1)};k(n),window.WailsInvoke("EE"+JSON.stringify(n))}function y(o){s.delete(o),window.WailsInvoke("EX"+o)}var c={};function P(){var o=new Uint32Array(1);return window.crypto.getRandomValues(o)[0]}function U(){return Math.random()*9007199254740991}var W;window.crypto?W=P:W=U;function d(o,n,e){return e==null&&(e=0),new Promise(function(t,r){var i;do i=o+"-"+W();while(c[i]);var w;e>0&&(w=setTimeout(function(){r(Error("Call to "+o+" timed out. Request ID: "+i))},e)),c[i]={timeoutHandle:w,reject:r,resolve:t};try{let u={name:o,args:n,callbackID:i};window.WailsInvoke("C"+JSON.stringify(u))}catch(u){console.error(u)}})}function L(o){var n;try{n=JSON.parse(o)}catch(r){let i=`Invalid JSON passed to callback: ${r.message}. Message: ${o}`;throw wails.LogDebug(i),new Error(i)}var e=n.callbackid,t=c[e];if(!t){let r=`Callback '${e}' not registered!!!`;throw console.error(r),new Error(r)}clearTimeout(t.timeoutHandle),delete c[e],n.error?t.reject(n.error):t.resolve(n.result)}window.go={};function O(o){try{o=JSON.parse(o)}catch(n){console.error(n)}window.go=window.go||{},Object.keys(o).forEach(n=>{window.go[n]=window.go[n]||{},Object.keys(o[n]).forEach(e=>{window.go[n][e]=window.go[n][e]||{},Object.keys(o[n][e]).forEach(t=>{window.go[n][e][t]=function(){let r=0;function i(){let w=[].slice.call(arguments);return d([n,e,t].join("."),w,r)}return i.setTimeout=function(w){r=w},i.getTimeout=function(){return r},i}()})})})}var p={};x(p,{WindowCenter:()=>A,WindowClose:()=>eo,WindowFullscreen:()=>H,WindowGetPosition:()=>K,WindowGetSize:()=>V,WindowHide:()=>N,WindowMaximise:()=>Y,WindowMinimise:()=>oo,WindowReload:()=>j,WindowSetMaxSize:()=>q,WindowSetMinSize:()=>X,WindowSetPosition:()=>Z,WindowSetSize:()=>$,WindowSetTitle:()=>B,WindowShow:()=>Q,WindowUnFullscreen:()=>M,WindowUnmaximise:()=>_,WindowUnminimise:()=>no});function j(){window.location.reload()}function A(){window.WailsInvoke("Wc")}function B(o){window.WailsInvoke("WT"+o)}function H(){window.WailsInvoke("WF")}function M(){window.WailsInvoke("Wf")}function $(o,n){window.WailsInvoke("Ws:"+o+":"+n)}function V(){return d(":wails:WindowGetSize")}function q(o,n){window.WailsInvoke("WZ:"+o+":"+n)}function X(o,n){window.WailsInvoke("Wz:"+o+":"+n)}function Z(o,n){window.WailsInvoke("Wp:"+o+":"+n)}function K(){return d(":wails:WindowGetPos")}function N(){window.WailsInvoke("WH")}function Q(){window.WailsInvoke("WS")}function Y(){window.WailsInvoke("WM")}function _(){window.WailsInvoke("WU")}function oo(){window.WailsInvoke("Wm")}function no(){window.WailsInvoke("Wu")}function eo(){window.WailsInvoke("WC")}window.runtime={...f,...p,EventsOn:E,EventsOnce:I,EventsOnMultiple:a,EventsEmit:S,EventsOff:y};window.wails={Callback:L,EventsNotify:m,SetBindings:O,eventListeners:s,callbacks:c};window.wails.SetBindings(window.wailsbindings);delete window.wails.SetBindings;delete window.wailsbindings;window.addEventListener("mousedown",o=>{let n=o.target;for(;n!=null&&!n.hasAttribute("data-wails-no-drag");){if(n.hasAttribute("data-wails-drag")){window.WailsInvoke("drag");break}n=n.parentElement}});})();
|
(()=>{var v=Object.defineProperty;var h=n=>v(n,"__esModule",{value:!0});var x=(n,o)=>{h(n);for(var e in o)v(n,e,{get:o[e],enumerable:!0})};var f={};x(f,{LogDebug:()=>C,LogError:()=>D,LogFatal:()=>F,LogInfo:()=>T,LogLevel:()=>z,LogPrint:()=>R,LogTrace:()=>b,LogWarning:()=>J,SetLogLevel:()=>G});function l(n,o){window.WailsInvoke("L"+n+o)}function b(n){l("T",n)}function R(n){l("P",n)}function C(n){l("D",n)}function T(n){l("I",n)}function J(n){l("W",n)}function D(n){l("E",n)}function F(n){l("F",n)}function G(n){l("S",n)}var z={TRACE:1,DEBUG:2,INFO:3,WARNING:4,ERROR:5};var g=class{constructor(o,e){e=e||-1,this.Callback=t=>(o.apply(null,t),e===-1?!1:(e-=1,e===0))}},s={};function a(n,o,e){s[n]=s[n]||[];let t=new g(o,e);s[n].push(t)}function E(n,o){a(n,o,-1)}function I(n,o){a(n,o,1)}function k(n){let o=n.name;if(s[o]){let e=s[o].slice();for(let t=0;t<s[o].length;t+=1){let r=s[o][t],i=n.data;r.Callback(i)&&e.splice(t,1)}s[o]=e}}function S(n){let o;try{o=JSON.parse(n)}catch(e){let t="Invalid JSON passed to Notify: "+n;throw new Error(t)}k(o)}function m(n){let o={name:n,data:[].slice.apply(arguments).slice(1)};k(o),window.WailsInvoke("EE"+JSON.stringify(o))}function y(n){s.delete(n),window.WailsInvoke("EX"+n)}var c={};function A(){var n=new Uint32Array(1);return window.crypto.getRandomValues(n)[0]}function B(){return Math.random()*9007199254740991}var W;window.crypto?W=A:W=B;function d(n,o,e){return e==null&&(e=0),new Promise(function(t,r){var i;do i=n+"-"+W();while(c[i]);var w;e>0&&(w=setTimeout(function(){r(Error("Call to "+n+" timed out. Request ID: "+i))},e)),c[i]={timeoutHandle:w,reject:r,resolve:t};try{let u={name:n,args:o,callbackID:i};window.WailsInvoke("C"+JSON.stringify(u))}catch(u){console.error(u)}})}function L(n){var o;try{o=JSON.parse(n)}catch(r){let i=`Invalid JSON passed to callback: ${r.message}. Message: ${n}`;throw wails.LogDebug(i),new Error(i)}var e=o.callbackid,t=c[e];if(!t){let r=`Callback '${e}' not registered!!!`;throw console.error(r),new Error(r)}clearTimeout(t.timeoutHandle),delete c[e],o.error?t.reject(o.error):t.resolve(o.result)}window.go={};function O(n){try{n=JSON.parse(n)}catch(o){console.error(o)}window.go=window.go||{},Object.keys(n).forEach(o=>{window.go[o]=window.go[o]||{},Object.keys(n[o]).forEach(e=>{window.go[o][e]=window.go[o][e]||{},Object.keys(n[o][e]).forEach(t=>{window.go[o][e][t]=function(){let r=0;function i(){let w=[].slice.call(arguments);return d([o,e,t].join("."),w,r)}return i.setTimeout=function(w){r=w},i.getTimeout=function(){return r},i}()})})})}var p={};x(p,{WindowCenter:()=>U,WindowClose:()=>tn,WindowFullscreen:()=>H,WindowGetPosition:()=>Z,WindowGetSize:()=>V,WindowHide:()=>K,WindowMaximise:()=>Y,WindowMinimise:()=>nn,WindowReload:()=>P,WindowSetMaxSize:()=>q,WindowSetMinSize:()=>N,WindowSetPosition:()=>X,WindowSetRGBA:()=>en,WindowSetSize:()=>$,WindowSetTitle:()=>j,WindowShow:()=>Q,WindowUnFullscreen:()=>M,WindowUnmaximise:()=>_,WindowUnminimise:()=>on});function P(){window.location.reload()}function U(){window.WailsInvoke("Wc")}function j(n){window.WailsInvoke("WT"+n)}function H(){window.WailsInvoke("WF")}function M(){window.WailsInvoke("Wf")}function $(n,o){window.WailsInvoke("Ws:"+n+":"+o)}function V(){return d(":wails:WindowGetSize")}function q(n,o){window.WailsInvoke("WZ:"+n+":"+o)}function N(n,o){window.WailsInvoke("Wz:"+n+":"+o)}function X(n,o){window.WailsInvoke("Wp:"+n+":"+o)}function Z(){return d(":wails:WindowGetPos")}function K(){window.WailsInvoke("WH")}function Q(){window.WailsInvoke("WS")}function Y(){window.WailsInvoke("WM")}function _(){window.WailsInvoke("WU")}function nn(){window.WailsInvoke("Wm")}function on(){window.WailsInvoke("Wu")}function en(n){let o=JSON.stringify(n);window.WailsInvoke("Wr:"+o)}function tn(){window.WailsInvoke("WC")}window.runtime={...f,...p,EventsOn:E,EventsOnce:I,EventsOnMultiple:a,EventsEmit:m,EventsOff:y};window.wails={Callback:L,EventsNotify:S,SetBindings:O,eventListeners:s,callbacks:c};window.wails.SetBindings(window.wailsbindings);delete window.wails.SetBindings;delete window.wailsbindings;window.addEventListener("mousedown",n=>{let o=n.target;for(;o!=null&&!o.hasAttribute("data-wails-no-drag");){if(o.hasAttribute("data-wails-drag")){window.WailsInvoke("drag");break}o=o.parentElement}});})();
|
||||||
|
@ -8,6 +8,13 @@ interface Size {
|
|||||||
h: number;
|
h: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface RGBA {
|
||||||
|
r,
|
||||||
|
g,
|
||||||
|
b,
|
||||||
|
a: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
interface runtime {
|
interface runtime {
|
||||||
EventsEmit(eventName: string, data?: any): void;
|
EventsEmit(eventName: string, data?: any): void;
|
||||||
@ -64,6 +71,8 @@ interface runtime {
|
|||||||
|
|
||||||
WindowUnminimise(): void
|
WindowUnminimise(): void
|
||||||
|
|
||||||
|
WindowSetRGBA(rgba: RGBA): void;
|
||||||
|
|
||||||
WindowClose(): void
|
WindowClose(): void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1 +1 @@
|
|||||||
(()=>{var d=Object.defineProperty;var u=n=>d(n,"__esModule",{value:!0});var e=(n,i)=>{u(n);for(var o in i)d(n,o,{get:i[o],enumerable:!0})};var t={};e(t,{LogDebug:()=>W,LogError:()=>x,LogFatal:()=>f,LogInfo:()=>p,LogTrace:()=>m,LogWarning:()=>c});function m(n){window.runtime.LogTrace(n)}function W(n){window.runtime.LogDebug(n)}function p(n){window.runtime.LogInfo(n)}function c(n){window.runtime.LogWarning(n)}function x(n){window.runtime.LogError(n)}function f(n){window.runtime.LogFatal(n)}var w={};e(w,{EventsEmit:()=>g,EventsOn:()=>s,EventsOnMultiple:()=>l,EventsOnce:()=>a});function l(n,i,o){window.runtime.EventsOnMultiple(n,i,o)}function s(n,i){OnMultiple(n,i,-1)}function a(n,i){OnMultiple(n,i,1)}function g(n){let i=[n].slice.call(arguments);return window.runtime.EventsEmit.apply(null,i)}var r={};e(r,{WindowCenter:()=>L,WindowClose:()=>I,WindowFullscreen:()=>E,WindowGetPosition:()=>G,WindowGetSize:()=>z,WindowHide:()=>P,WindowMaximise:()=>b,WindowMinimise:()=>D,WindowReload:()=>S,WindowSetMaxSize:()=>O,WindowSetMinSize:()=>U,WindowSetPosition:()=>C,WindowSetSize:()=>F,WindowSetTitle:()=>M,WindowShow:()=>T,WindowUnFullscreen:()=>v,WindowUnmaximise:()=>h,WindowUnminimise:()=>H});function S(){window.runtime.WindowReload()}function L(){window.runtime.WindowCenter()}function M(n){window.runtime.WindowSetTitle(n)}function E(){window.runtime.WindowFullscreen()}function v(){window.runtime.WindowUnFullscreen()}function z(){window.runtime.WindowGetSize()}function F(n,i){window.runtime.WindowSetSize(n,i)}function O(n,i){window.runtime.WindowSetMaxSize(n,i)}function U(n,i){window.runtime.WindowSetMinSize(n,i)}function C(n,i){window.runtime.WindowSetPosition(n,i)}function G(){window.runtime.WindowGetPosition()}function P(){window.runtime.WindowHide()}function T(){window.runtime.WindowShow()}function b(){window.runtime.WindowMaximise()}function h(){window.runtime.WindowUnmaximise()}function D(){window.runtime.WindowMinimise()}function H(){window.runtime.WindowUnminimise()}function I(){window.runtime.WindowClose()}var y={...t,...w,...r};})();
|
(()=>{var d=Object.defineProperty;var u=n=>d(n,"__esModule",{value:!0});var t=(n,i)=>{u(n);for(var o in i)d(n,o,{get:i[o],enumerable:!0})};var e={};t(e,{LogDebug:()=>W,LogError:()=>x,LogFatal:()=>f,LogInfo:()=>p,LogTrace:()=>m,LogWarning:()=>c});function m(n){window.runtime.LogTrace(n)}function W(n){window.runtime.LogDebug(n)}function p(n){window.runtime.LogInfo(n)}function c(n){window.runtime.LogWarning(n)}function x(n){window.runtime.LogError(n)}function f(n){window.runtime.LogFatal(n)}var w={};t(w,{EventsEmit:()=>S,EventsOn:()=>s,EventsOnMultiple:()=>l,EventsOnce:()=>a});function l(n,i,o){window.runtime.EventsOnMultiple(n,i,o)}function s(n,i){OnMultiple(n,i,-1)}function a(n,i){OnMultiple(n,i,1)}function S(n){let i=[n].slice.call(arguments);return window.runtime.EventsEmit.apply(null,i)}var r={};t(r,{WindowCenter:()=>L,WindowClose:()=>D,WindowFullscreen:()=>E,WindowGetPosition:()=>C,WindowGetSize:()=>z,WindowHide:()=>P,WindowMaximise:()=>T,WindowMinimise:()=>h,WindowReload:()=>g,WindowSetMaxSize:()=>G,WindowSetMinSize:()=>O,WindowSetPosition:()=>U,WindowSetRGBA:()=>B,WindowSetSize:()=>F,WindowSetTitle:()=>M,WindowShow:()=>R,WindowUnFullscreen:()=>v,WindowUnmaximise:()=>b,WindowUnminimise:()=>A});function g(){window.runtime.WindowReload()}function L(){window.runtime.WindowCenter()}function M(n){window.runtime.WindowSetTitle(n)}function E(){window.runtime.WindowFullscreen()}function v(){window.runtime.WindowUnFullscreen()}function z(){window.runtime.WindowGetSize()}function F(n,i){window.runtime.WindowSetSize(n,i)}function G(n,i){window.runtime.WindowSetMaxSize(n,i)}function O(n,i){window.runtime.WindowSetMinSize(n,i)}function U(n,i){window.runtime.WindowSetPosition(n,i)}function C(){window.runtime.WindowGetPosition()}function P(){window.runtime.WindowHide()}function R(){window.runtime.WindowShow()}function T(){window.runtime.WindowMaximise()}function b(){window.runtime.WindowUnmaximise()}function h(){window.runtime.WindowMinimise()}function A(){window.runtime.WindowUnminimise()}function B(n){window.runtime.WindowSetRGBA(n)}function D(){window.runtime.WindowClose()}var I={...e,...w,...r};})();
|
||||||
|
@ -176,6 +176,16 @@ export function WindowUnminimise() {
|
|||||||
window.runtime.WindowUnminimise();
|
window.runtime.WindowUnminimise();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the background colour of the window
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @param {RGBA} RGBA background colour
|
||||||
|
*/
|
||||||
|
export function WindowSetRGBA(RGBA) {
|
||||||
|
window.runtime.WindowSetRGBA(RGBA);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Close the Window
|
* Close the Window
|
||||||
*
|
*
|
||||||
|
@ -8,7 +8,6 @@ import (
|
|||||||
var Default = &App{
|
var Default = &App{
|
||||||
Width: 1024,
|
Width: 1024,
|
||||||
Height: 768,
|
Height: 768,
|
||||||
RGBA: 0xFFFFFFFF,
|
|
||||||
Logger: logger.NewDefaultLogger(),
|
Logger: logger.NewDefaultLogger(),
|
||||||
LogLevel: logger.INFO,
|
LogLevel: logger.INFO,
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,7 @@ type App struct {
|
|||||||
MaxHeight int
|
MaxHeight int
|
||||||
StartHidden bool
|
StartHidden bool
|
||||||
HideWindowOnClose bool
|
HideWindowOnClose bool
|
||||||
RGBA int
|
RGBA *RGBA
|
||||||
Assets embed.FS
|
Assets embed.FS
|
||||||
Menu *menu.Menu
|
Menu *menu.Menu
|
||||||
Logger logger.Logger `json:"-"`
|
Logger logger.Logger `json:"-"`
|
||||||
@ -42,6 +42,13 @@ type App struct {
|
|||||||
//Mac *mac.Options
|
//Mac *mac.Options
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type RGBA struct {
|
||||||
|
R uint8 `json:"r"`
|
||||||
|
G uint8 `json:"g"`
|
||||||
|
B uint8 `json:"b"`
|
||||||
|
A uint8 `json:"a"`
|
||||||
|
}
|
||||||
|
|
||||||
// MergeDefaults will set the minimum default values for an application
|
// MergeDefaults will set the minimum default values for an application
|
||||||
func MergeDefaults(appoptions *App) {
|
func MergeDefaults(appoptions *App) {
|
||||||
err := mergo.Merge(appoptions, Default)
|
err := mergo.Merge(appoptions, Default)
|
||||||
@ -49,6 +56,16 @@ func MergeDefaults(appoptions *App) {
|
|||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DEfault colour. Doesn't work well with mergo
|
||||||
|
if appoptions.RGBA == nil {
|
||||||
|
appoptions.RGBA = &RGBA{
|
||||||
|
R: 255,
|
||||||
|
G: 255,
|
||||||
|
B: 255,
|
||||||
|
A: 255,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure max and min are valid
|
// Ensure max and min are valid
|
||||||
if appoptions.MinWidth > 0 && appoptions.MaxWidth > 0 {
|
if appoptions.MinWidth > 0 && appoptions.MaxWidth > 0 {
|
||||||
if appoptions.MinWidth > appoptions.MaxWidth {
|
if appoptions.MinWidth > appoptions.MaxWidth {
|
||||||
|
@ -2,6 +2,7 @@ package runtime
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"github.com/wailsapp/wails/v2/pkg/options"
|
||||||
)
|
)
|
||||||
|
|
||||||
// WindowSetTitle sets the title of the window
|
// WindowSetTitle sets the title of the window
|
||||||
@ -93,3 +94,8 @@ func WindowUnminimise(ctx context.Context) {
|
|||||||
appFrontend := getFrontend(ctx)
|
appFrontend := getFrontend(ctx)
|
||||||
appFrontend.WindowUnminimise()
|
appFrontend.WindowUnminimise()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func WindowSetRGBA(ctx context.Context, col *options.RGBA) {
|
||||||
|
appFrontend := getFrontend(ctx)
|
||||||
|
appFrontend.WindowSetRGBA(col)
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user