mirror of
https://github.com/wailsapp/wails.git
synced 2026-03-14 22:55:48 +01:00
Add Window to kitchensink
This commit is contained in:
parent
bd8771849b
commit
255b4e103a
10 changed files with 245 additions and 20 deletions
32
v2/test/kitchensink/frontend/package-lock.json
generated
32
v2/test/kitchensink/frontend/package-lock.json
generated
|
|
@ -135,9 +135,9 @@
|
|||
}
|
||||
},
|
||||
"@wails/runtime": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@wails/runtime/-/runtime-1.1.0.tgz",
|
||||
"integrity": "sha512-9YmFyIYgu5R1eaodusTYVQV/p+jSygnofr2ezAqI7/oDBHHWraS7hEePM1hbego+2podkzSQ+f48bfXtSPyHFQ==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@wails/runtime/-/runtime-1.2.0.tgz",
|
||||
"integrity": "sha512-tIyQdjM+/zZyFNB2dgeUA7ln2T3F8skyv6w2oa3ONRcRF5JvDWto8vh+4B2yrkVNLBAQYO0xRHL+4G9wVQHYQQ==",
|
||||
"dev": true
|
||||
},
|
||||
"alphanum-sort": {
|
||||
|
|
@ -1470,9 +1470,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"nanoid": {
|
||||
"version": "3.1.15",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.15.tgz",
|
||||
"integrity": "sha512-n8rXUZ8UU3lV6+43atPrSizqzh25n1/f00Wx1sCiE7R1sSHytZLTTiQl8DjC4IDLOnEZDlgJhy0yO4VsIpMxow==",
|
||||
"version": "3.1.16",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.16.tgz",
|
||||
"integrity": "sha512-+AK8MN0WHji40lj8AEuwLOvLSbWYApQpre/aFJZD71r43wVRLrOYS4FmJOPQYon1TqB462RzrrxlfA74XRES8w==",
|
||||
"dev": true
|
||||
},
|
||||
"neo-async": {
|
||||
|
|
@ -1651,14 +1651,14 @@
|
|||
"dev": true
|
||||
},
|
||||
"postcss": {
|
||||
"version": "8.1.3",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.1.3.tgz",
|
||||
"integrity": "sha512-AKsHGqd7HmXmL/EgyAjI4Gx719A5yQdt9HzyXrI8M/hzxfumecYS95kfvIt40UZqPVNoEt0Va1M3PG54XtNPbg==",
|
||||
"version": "8.1.7",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.1.7.tgz",
|
||||
"integrity": "sha512-llCQW1Pz4MOPwbZLmOddGM9eIJ8Bh7SZ2Oj5sxZva77uVaotYDsYTch1WBTNu7fUY0fpWp0fdt7uW40D4sRiiQ==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"colorette": "^1.2.1",
|
||||
"line-column": "^1.0.2",
|
||||
"nanoid": "^3.1.15",
|
||||
"nanoid": "^3.1.16",
|
||||
"source-map": "^0.6.1"
|
||||
}
|
||||
},
|
||||
|
|
@ -2976,9 +2976,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"rollup": {
|
||||
"version": "2.32.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz",
|
||||
"integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==",
|
||||
"version": "2.33.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-2.33.2.tgz",
|
||||
"integrity": "sha512-QPQ6/fWCrzHtSXkI269rhKaC7qXGghYBwXU04b1JsDZ6ibZa3DJ9D1SFAYRMgx1inDg0DaTbb3N4Z1NK/r3fhw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"fsevents": "~2.1.2"
|
||||
|
|
@ -3413,9 +3413,9 @@
|
|||
}
|
||||
},
|
||||
"svelte": {
|
||||
"version": "3.29.4",
|
||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.29.4.tgz",
|
||||
"integrity": "sha512-oW0fGHlyFFMvzRtIvOs84b0fOc0gmZNQcL5Is3hxuTpvaYX3pfd8oHy4KnOvbq4Ca6SG6AHdRMk7OhApTo0NqA==",
|
||||
"version": "3.29.7",
|
||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-3.29.7.tgz",
|
||||
"integrity": "sha512-rx0g311kBODvEWUU01DFBUl3MJuJven04bvTVFUG/w0On/wuj0PajQY/QlXcJndFxG+W1s8iXKaB418tdHWc3A==",
|
||||
"dev": true
|
||||
},
|
||||
"svelte-highlight": {
|
||||
|
|
|
|||
|
|
@ -11,19 +11,19 @@
|
|||
"@rollup/plugin-commonjs": "^11.0.0",
|
||||
"@rollup/plugin-node-resolve": "^7.0.0",
|
||||
"@rollup/plugin-url": "^5.0.1",
|
||||
"@wails/runtime": "^1.1.0",
|
||||
"@wails/runtime": "^1.2.0",
|
||||
"focus-visible": "^5.2.0",
|
||||
"halfmoon": "^1.1.1",
|
||||
"postcss": "^8.1.3",
|
||||
"postcss": "^8.1.7",
|
||||
"postcss-import": "^12.0.1",
|
||||
"rollup": "^2.32.1",
|
||||
"rollup": "^2.33.2",
|
||||
"rollup-plugin-livereload": "^1.0.0",
|
||||
"rollup-plugin-postcss": "^3.1.8",
|
||||
"rollup-plugin-string": "^3.0.0",
|
||||
"rollup-plugin-svelte": "^5.0.3",
|
||||
"rollup-plugin-terser": "^5.1.2",
|
||||
"sirv-cli": "^0.4.4",
|
||||
"svelte": "^3.29.4",
|
||||
"svelte": "^3.29.7",
|
||||
"svelte-highlight": "^0.6.2",
|
||||
"svelte-preprocess": "^4.5.2"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
import Browser from './pages/Browser/Browser.svelte';
|
||||
import Dialog from './pages/Dialog/Dialog.svelte';
|
||||
import System from './pages/System/System.svelte';
|
||||
import Window from './pages/Window/Window.svelte';
|
||||
|
||||
</script>
|
||||
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
{#if $selectedPage == "Browser"} <Browser></Browser> {/if}
|
||||
{#if $selectedPage == "Dialog"} <Dialog></Dialog> {/if}
|
||||
{#if $selectedPage == "System"} <System></System> {/if}
|
||||
{#if $selectedPage == "Window"} <Window></Window> {/if}
|
||||
</div>
|
||||
|
||||
<style>
|
||||
|
|
|
|||
11
v2/test/kitchensink/frontend/src/pages/Window/Window.svelte
Normal file
11
v2/test/kitchensink/frontend/src/pages/Window/Window.svelte
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<script>
|
||||
import Window from './Window/Window.svelte';
|
||||
</script>
|
||||
<div>
|
||||
The Wails runtime offers extensive control over the appliation window. This is available through the <code>runtime.Window</code> component.
|
||||
|
||||
<br/><br/>
|
||||
|
||||
<Window></Window>
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,132 @@
|
|||
<script>
|
||||
import { Window } from '@wails/runtime';
|
||||
import CodeBlock from '../../../components/CodeBlock.svelte';
|
||||
import CodeSnippet from '../../../components/CodeSnippet.svelte';
|
||||
import jsCode from './code.jsx';
|
||||
import goCode from './code.go';
|
||||
|
||||
var message = '';
|
||||
var isJs = false;
|
||||
|
||||
let windowActions = ["Maximise", "Unmaximise", "Minimise", "Unminimise", "Center", "Show", "Hide", "SetSize", "SetPosition", "Close"]
|
||||
|
||||
var windowAction = windowActions[0];
|
||||
|
||||
$: lang = isJs ? 'Javascript' : 'Go';
|
||||
|
||||
var id = "Window";
|
||||
|
||||
function processAction() {
|
||||
if ( lang == 'Javascript' ) {
|
||||
switch( windowAction ) {
|
||||
case 'SetSize':
|
||||
Window.SetSize(sizeWidth, sizeHeight);
|
||||
break;
|
||||
case 'SetPosition':
|
||||
Window.SetPosition(positionX, positionY);
|
||||
break;
|
||||
case 'Hide':
|
||||
Window.Hide();
|
||||
setTimeout( Window.Show, 3000 );
|
||||
case 'Minimise':
|
||||
Window.Hide();
|
||||
setTimeout( Window.Unminimise, 3000 );
|
||||
default:
|
||||
Window[windowAction]();
|
||||
}
|
||||
} else {
|
||||
switch( windowAction ) {
|
||||
case 'SetSize':
|
||||
backend.main.Window.SetSize(sizeWidth, sizeHeight);
|
||||
break;
|
||||
case 'SetPosition':
|
||||
backend.main.Window.SetPosition(positionX, positionY);
|
||||
break;
|
||||
case 'Hide':
|
||||
backend.main.Window.Hide();
|
||||
setTimeout( backend.main.Window.Show, 3000 );
|
||||
case 'Minimise':
|
||||
backend.main.Window.Minimise();
|
||||
setTimeout( backend.main.Window.Unminimise, 3000 );
|
||||
default:
|
||||
backend.main.Window[windowAction]();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var params = "";
|
||||
var sizeWidth = 1024;
|
||||
var sizeHeight = 768;
|
||||
var positionX = 100;
|
||||
var positionY = 100;
|
||||
|
||||
$: {
|
||||
switch (windowAction) {
|
||||
case 'SetSize':
|
||||
params = sizeWidth + ", " + sizeHeight;
|
||||
break;
|
||||
case 'SetPosition':
|
||||
params = positionX + ", " + positionY;
|
||||
break;
|
||||
default:
|
||||
params = '';
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
$: testcodeJs = "import { Window } from '@wails/runtime';\Window." + windowAction + "(" + params + ");";
|
||||
$: testcodeGo = '// runtime is given through WailsInit()\nruntime.Window.' + windowAction + '(' + params + ')';
|
||||
|
||||
</script>
|
||||
|
||||
<CodeBlock bind:isJs={isJs} {jsCode} {goCode} title="Window" {id} showRun=true>
|
||||
<div class="logging-form">
|
||||
<form data-wails-no-drag class="mw-full">
|
||||
<div class="form-group">
|
||||
<div>Select Window Method</div>
|
||||
{#each windowActions as option, index}
|
||||
<div class="custom-radio">
|
||||
<input type="radio" name="window" bind:group="{windowAction}" id="{id}-{option}" value="{option}" disabled={['Show', 'Unminimise'].includes(option)}>
|
||||
<label for="{id}-{option}">{option}
|
||||
{#if option == 'Hide' } - Show() will be called after 3 seconds {/if}
|
||||
{#if option == 'Minimise' } - Unminimise() will be called after 3 seconds {/if}
|
||||
</label>
|
||||
|
||||
{#if option == "SetSize"}
|
||||
{#if windowAction == "SetSize" }
|
||||
<div class="form-inline form-group numberInputGroup">Width: <input type="number" class="form-control numberInput" bind:value={sizeWidth}> Height: <input type="number" class="form-control numberInput" bind:value={sizeHeight}></div>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
{#if option == "SetPosition"}
|
||||
{#if windowAction == "SetPosition" }
|
||||
<div class="form-inline form-group numberInputGroup">X: <input type="number" class="form-control numberInput" bind:value={positionX}> Y: <input type="number" class="form-control numberInput" bind:value={positionY}></div>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
<input class="btn btn-primary" type="button" on:click="{processAction}" value="Call using {lang} runtime">
|
||||
|
||||
<CodeSnippet bind:isJs={isJs} jsCode={testcodeJs} goCode={testcodeGo}></CodeSnippet>
|
||||
|
||||
</form>
|
||||
</div>
|
||||
</CodeBlock>
|
||||
|
||||
<style>
|
||||
.numberInputGroup {
|
||||
margin: 10px 25px 10px;
|
||||
width: 40%;
|
||||
min-width: 350px;
|
||||
}
|
||||
|
||||
.numberInput {
|
||||
margin-left: 10px;
|
||||
width: 80px;
|
||||
}
|
||||
</style>
|
||||
11
v2/test/kitchensink/frontend/src/pages/Window/Window/code.go
Normal file
11
v2/test/kitchensink/frontend/src/pages/Window/Window/code.go
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package main
|
||||
|
||||
import wails "github.com/wailsapp/wails/v2"
|
||||
|
||||
type MyStruct struct {
|
||||
runtime *wails.Runtime
|
||||
}
|
||||
|
||||
func (l *MyStruct) ShowHelp() {
|
||||
l.runtime.Browser.Open("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
|
||||
}
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
import { Log } from '@wails/runtime';
|
||||
|
||||
function doSomeOperation() {
|
||||
// Do things
|
||||
let value = doSomething();
|
||||
Log.Print("A raw message");
|
||||
Log.Trace("I got: " + value);
|
||||
Log.Debug("A debug message");
|
||||
Log.Info("An Info message");
|
||||
Log.Warning("A Warning message");
|
||||
Log.Error("An Error message");
|
||||
}
|
||||
|
||||
function abort() {
|
||||
// Do some things
|
||||
Log.Fatal("I accidentally the whole application!");
|
||||
}
|
||||
|
|
@ -7,6 +7,7 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
|
|||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI=
|
||||
github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M=
|
||||
|
|
@ -41,6 +42,7 @@ github.com/leaanthony/gosod v0.0.4/go.mod h1:nGMCb1PJfXwBDbOAike78jEYlpqge+xUKFf
|
|||
github.com/leaanthony/mewn v0.10.7/go.mod h1:CRkTx8unLiSSilu/Sd7i1LwrdaAL+3eQ3ses99qGMEQ=
|
||||
github.com/leaanthony/slicer v1.4.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
||||
github.com/leaanthony/slicer v1.4.1/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
||||
github.com/leaanthony/slicer v1.5.0/go.mod h1:FwrApmf8gOrpzEWM2J/9Lh79tyq8KTX5AzRtwV7m4AY=
|
||||
github.com/leaanthony/spinner v0.5.3/go.mod h1:oHlrvWicr++CVV7ALWYi+qHk/XNA91D9IJ48IqmpVUo=
|
||||
github.com/leaanthony/synx v0.1.0/go.mod h1:Iz7eybeeG8bdq640iR+CwYb8p+9EOsgMWghkSRyZcqs=
|
||||
github.com/leaanthony/wincursor v0.1.0/go.mod h1:7TVwwrzSH/2Y9gLOGH+VhA+bZhoWXBRgbGNTMk+yimE=
|
||||
|
|
@ -64,6 +66,7 @@ github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FW
|
|||
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4 h1:49lOXmGaUpV9Fz3gd7TFZY106KVlPVa5jcYD1gaQf98=
|
||||
github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/sirupsen/logrus v1.4.1 h1:GL2rEmy6nsikmW0r8opw9JIRScdMF5hA8cOYLH7In1k=
|
||||
github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@ func main() {
|
|||
app.Bind(&Browser{})
|
||||
app.Bind(&System{})
|
||||
app.Bind(&Dialog{})
|
||||
app.Bind(&Window{})
|
||||
|
||||
app.Run()
|
||||
}
|
||||
|
|
|
|||
48
v2/test/kitchensink/window.go
Normal file
48
v2/test/kitchensink/window.go
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
wails "github.com/wailsapp/wails/v2"
|
||||
)
|
||||
|
||||
// Window struct
|
||||
type Window struct {
|
||||
runtime *wails.Runtime
|
||||
}
|
||||
|
||||
// WailsInit is called at application startup
|
||||
func (w *Window) WailsInit(runtime *wails.Runtime) error {
|
||||
// Perform your setup here
|
||||
w.runtime = runtime
|
||||
return nil
|
||||
}
|
||||
|
||||
func (w *Window) Maximise() {
|
||||
w.runtime.Window.Maximise()
|
||||
}
|
||||
func (w *Window) Unmaximise() {
|
||||
w.runtime.Window.Unmaximise()
|
||||
}
|
||||
func (w *Window) Minimise() {
|
||||
w.runtime.Window.Minimise()
|
||||
}
|
||||
func (w *Window) Unminimise() {
|
||||
w.runtime.Window.Unminimise()
|
||||
}
|
||||
func (w *Window) Center() {
|
||||
w.runtime.Window.Center()
|
||||
}
|
||||
func (w *Window) Show() {
|
||||
w.runtime.Window.Show()
|
||||
}
|
||||
func (w *Window) Hide() {
|
||||
w.runtime.Window.Hide()
|
||||
}
|
||||
func (w *Window) SetSize(width int, height int) {
|
||||
w.runtime.Window.SetSize(width, height)
|
||||
}
|
||||
func (w *Window) SetPosition(x int, y int) {
|
||||
w.runtime.Window.SetPosition(x, y)
|
||||
}
|
||||
func (w *Window) Close() {
|
||||
w.runtime.Window.Close()
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue