NotePad Demo Source Code – Fyne Golang GUI tutorial 71
NotePad Demo Source Code – Fyne Golang GUI tutorial 71
Here is a simple note pad coded in fyne Gui and golang.
Features of Noted Pad
You can create new file
Save Files
Save Existing Files
Modify text files
Source Code
<div>
<div>package main</div>
<div>import (</div>
<div> "fmt"</div>
<div> "io/ioutil"</div>
<div> "os"</div>
<div> "strconv"</div>
<div> "fyne.io/fyne/v2"</div>
<div> "fyne.io/fyne/v2/app"</div>
<div> "fyne.io/fyne/v2/container"</div>
<div> "fyne.io/fyne/v2/dialog"</div>
<div> "fyne.io/fyne/v2/storage"</div>
<div> "fyne.io/fyne/v2/widget"</div>
<div>)</div>
<div>var count int = 1</div>
<div>var filepath string</div>
<div>func main() {</div>
<div> a := app.New()</div>
<div> w := a.NewWindow("Fyne Note Pad")</div>
<div> input := widget.NewMultiLineEntry()</div>
<div> input.SetPlaceHolder("Enter text...")</div>
<div> input.Move(fyne.NewPos(0, 0))</div>
<div> input.Resize(fyne.NewSize(500, 500))</div>
<div> new1 := fyne.NewMenuItem("New", func() {</div>
<div> filepath = ""</div>
<div> w.SetTitle("Fyne Note Pad")</div>
<div> input.Text = ""</div>
<div> input.Refresh()</div>
<div> })</div>
<div> save1 := fyne.NewMenuItem("Save", func() {</div>
<div> if filepath != "" {</div>
<div> f, err := os.OpenFile(filepath, os.O_WRONLY|os.O_CREATE, 0666)</div>
<div> if err != nil {</div>
<div> //handle error</div>
<div> }</div>
<div> defer f.Close()</div>
<div> //f.Write([]byte(input.Text))</div>
<div> f.WriteString(input.Text)</div>
<div> } else {</div>
<div> saveFileDialog := dialog.NewFileSave(</div>
<div> func(r fyne.URIWriteCloser, _ error) {</div>
<div> textData := []byte(input.Text)</div>
<div> r.Write(textData)</div>
<div> filepath = r.URI().Path()</div>
<div> w.SetTitle(filepath)</div>
<div> }, w)</div>
<div> saveFileDialog.SetFileName("New File" + strconv.Itoa(count-1) + ".txt")</div>
<div> saveFileDialog.Show()</div>
<div> }</div>
<div> })</div>
<div> saveAs1 := fyne.NewMenuItem("Save as..", func() {</div>
<div> saveFileDialog := dialog.NewFileSave(</div>
<div> func(r fyne.URIWriteCloser, _ error) {</div>
<div> textData := []byte(input.Text)</div>
<div> r.Write(textData)</div>
<div> filepath = r.URI().Path()</div>
<div> w.SetTitle(filepath)</div>
<div> }, w)</div>
<div> saveFileDialog.SetFileName("New File" + strconv.Itoa(count-1) + ".txt")</div>
<div> saveFileDialog.Show()</div>
<div> })</div>
<div> open1 := fyne.NewMenuItem("Open", func() {</div>
<div> openfileDialog := dialog.NewFileOpen(</div>
<div> func(r fyne.URIReadCloser, _ error) {</div>
<div> data, _ := ioutil.ReadAll(r)</div>
<div> result := fyne.NewStaticResource("name", data)</div>
<div> input.SetText(string(result.StaticContent))</div>
<div> fmt.Println(result.StaticName + r.URI().Path())</div>
<div> filepath = r.URI().Path()</div>
<div> w.SetTitle(filepath)</div>
<div> }, w)</div>
<div> openfileDialog.SetFilter(</div>
<div> storage.NewExtensionFileFilter([]string{".txt"}))</div>
<div> openfileDialog.Show()</div>
<div> })</div>
<div> menuItem := fyne.NewMenu("File", new1, save1, saveAs1, open1)</div>
<div> menux1 := fyne.NewMainMenu(menuItem)</div>
<div> w.SetMainMenu(menux1)</div>
<div> w.SetContent(</div>
<div> container.NewWithoutLayout(</div>
<div> input,</div>
<div> ),</div>
<div> )</div>
<div> w.Resize(fyne.NewSize(500, 500))</div>
<div> w.ShowAndRun()</div>
<div>}</div>
</div>
[easy_media_download url=”http://blogvali.com/wp-content/uploads/fyne-golang-downloads/main56.go” text=”Download Code” color=”red_darker”]
Fyne Golang GUI Course