From 5ba03937c36f70f61b74b2199452fad706060cad Mon Sep 17 00:00:00 2001 From: Lea Anthony Date: Thu, 19 Nov 2020 08:56:57 +1100 Subject: [PATCH] Updated Dialog Examples --- .../frontend/src/pages/Dialog/Open/code.go | 37 ++++++++++++++++-- .../frontend/src/pages/Dialog/Open/code.jsx | 38 +++++++++++------- .../frontend/src/pages/Dialog/Save/code.go | 39 +++++++++++++++++-- .../frontend/src/pages/Dialog/Save/code.jsx | 36 ++++++++++------- 4 files changed, 112 insertions(+), 38 deletions(-) diff --git a/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.go b/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.go index 055ed2ef5..6829bb922 100644 --- a/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.go +++ b/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.go @@ -1,11 +1,40 @@ package main -import wails "github.com/wailsapp/wails/v2" +import ( + "io/ioutil" -type MyStruct struct { + wails "github.com/wailsapp/wails/v2" + "github.com/wailsapp/wails/v2/pkg/options" +) + +type Notepad struct { runtime *wails.Runtime } -func (l *MyStruct) ShowHelp() { - l.runtime.Browser.Open("https://www.youtube.com/watch?v=dQw4w9WgXcQ") +func (n *Notepad) WailsInit(runtime *wails.Runtime) error { + n.runtime = runtime + return nil +} + +func (n *Notepad) LoadNotes() (string, error) { + + selectedFiles := n.runtime.Dialog.Open(&options.OpenDialog{ + DefaultFilename: "notes.md", + Filters: "*.md", + AllowFiles: true, + }) + + // selectedFiles is a string slice. Get the first selection + if len(selectedFiles) == 0 { + // Cancelled + return "", nil + } + + // Load notes + noteData, err := ioutil.ReadFile(selectedFiles[0]) + if err != nil { + return "", err + } + + return string(noteData), nil } diff --git a/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.jsx b/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.jsx index 652c2823c..5ce171f84 100644 --- a/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.jsx +++ b/v2/test/kitchensink/frontend/src/pages/Dialog/Open/code.jsx @@ -1,17 +1,25 @@ -import { Log } from '@wails/runtime'; +import { Dialog } 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"); +let notes = ""; + +function loadNotes() { + // Prompt the user to select a single file + let filename = Dialog.Open({ + "DefaultFilename": "notes.md", + "Filters": "*.md", + "AllowFiles": true, + }); + + // Do something with the file + backend.main.LoadNotes(filename).then( (result) => { + if (result.length == 0) { + // Cancelled + return + } + // We only prompted for a single file + notes = result[0]; + }).catch( (err) => { + // Show an alert + showAlert(err); + }) } - -function abort() { - // Do some things - Log.Fatal("I accidentally the whole application!"); -} \ No newline at end of file diff --git a/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.go b/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.go index 055ed2ef5..8a55a5602 100644 --- a/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.go +++ b/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.go @@ -1,11 +1,42 @@ package main -import wails "github.com/wailsapp/wails/v2" +import ( + "io/ioutil" -type MyStruct struct { + wails "github.com/wailsapp/wails/v2" + "github.com/wailsapp/wails/v2/pkg/options" +) + +type Notepad struct { runtime *wails.Runtime } -func (l *MyStruct) ShowHelp() { - l.runtime.Browser.Open("https://www.youtube.com/watch?v=dQw4w9WgXcQ") +func (n *Notepad) WailsInit(runtime *wails.Runtime) error { + n.runtime = runtime + return nil +} + +// SaveNotes attempts to save the given notes to disk. +// Returns false if the user cancelled the save, true on +// successful save. +func (n *Notepad) SaveNotes(notes string) (bool, error) { + + selectedFile := n.runtime.Dialog.Save(&options.SaveDialog{ + DefaultFilename: "notes.md", + Filters: "*.md", + }) + + // Check if the user pressed cancel + if selectedFile == "" { + // Cancelled + return false, nil + } + + // Save notes + err := ioutil.WriteFile(selectedFile, []byte(notes), 0700) + if err != nil { + return false, err + } + + return true, nil } diff --git a/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.jsx b/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.jsx index 652c2823c..265954fc1 100644 --- a/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.jsx +++ b/v2/test/kitchensink/frontend/src/pages/Dialog/Save/code.jsx @@ -1,17 +1,23 @@ -import { Log } from '@wails/runtime'; +import { Dialog } 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"); +let notes = ""; + +function saveNotes() { + // Prompt the user to select a single file + let filename = Dialog.Save({ + "DefaultFilename": "notes.md", + "Filters": "*.md", + }); + + // Do something with the file + backend.main.SaveNotes(filename, notes).then( (result) => { + if ( !result ) { + // Cancelled + return + } + showMessage('Notes saved!'); + }).catch( (err) => { + // Show an alert + showAlert(err); + }) } - -function abort() { - // Do some things - Log.Fatal("I accidentally the whole application!"); -} \ No newline at end of file