Add Window to kitchensink

This commit is contained in:
Lea Anthony 2020-11-15 12:01:43 +11:00
commit 255b4e103a
No known key found for this signature in database
GPG key ID: 33DAF7BB90A58405
10 changed files with 245 additions and 20 deletions

View file

@ -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": {

View file

@ -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"
},

View file

@ -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>

View 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>

View file

@ -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>

View 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")
}

View file

@ -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!");
}

View file

@ -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=

View file

@ -29,6 +29,7 @@ func main() {
app.Bind(&Browser{})
app.Bind(&System{})
app.Bind(&Dialog{})
app.Bind(&Window{})
app.Run()
}

View 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()
}