|
@@ -6,19 +6,67 @@ import (
|
|
|
"fyne.io/fyne/v2"
|
|
|
"fyne.io/fyne/v2/app"
|
|
|
"fyne.io/fyne/v2/container"
|
|
|
+ "fyne.io/fyne/v2/data/binding"
|
|
|
"fyne.io/fyne/v2/dialog"
|
|
|
"fyne.io/fyne/v2/driver/desktop"
|
|
|
+ "fyne.io/fyne/v2/storage"
|
|
|
"fyne.io/fyne/v2/widget"
|
|
|
)
|
|
|
|
|
|
var APP fyne.App
|
|
|
var HOME fyne.Window
|
|
|
+var NEED_SAVEDIR bool
|
|
|
+var SAVEDIR string
|
|
|
+var SAVEBIND binding.String
|
|
|
|
|
|
func SetupApp() {
|
|
|
APP = app.NewWithID("apollox.endless-edit")
|
|
|
HOME = APP.NewWindow("Endless Edit")
|
|
|
HOME.CenterOnScreen()
|
|
|
- HOME.Resize(fyne.NewSize(1000, 800))
|
|
|
+ HOME.Resize(fyne.NewSize(1200, 900))
|
|
|
+
|
|
|
+ pref := APP.Preferences()
|
|
|
+ SAVEDIR = pref.StringWithFallback("save_dir", "")
|
|
|
+ SAVEBIND = binding.BindString(&SAVEDIR)
|
|
|
+ if SAVEDIR == "" {
|
|
|
+ NEED_SAVEDIR = true
|
|
|
+ SetSaveDir()
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func SetSaveDir() {
|
|
|
+ pref := APP.Preferences()
|
|
|
+ d := dialog.NewFolderOpen(func(lu fyne.ListableURI, err error) {
|
|
|
+ if err != nil {
|
|
|
+ d1 := dialog.NewError(fmt.Errorf("newfolderopen.err %v", err), HOME)
|
|
|
+ d1.Show()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if lu == nil {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ pref.SetString("save_dir", lu.Path())
|
|
|
+ SAVEBIND.Set(lu.Path())
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ NEED_SAVEDIR = false
|
|
|
+ }
|
|
|
+ }, HOME)
|
|
|
+ if !NEED_SAVEDIR {
|
|
|
+ uri, err := storage.ParseURI("file://" + pref.String("save_dir"))
|
|
|
+ if err != nil {
|
|
|
+ d1 := dialog.NewError(fmt.Errorf("parseuri.err %v", err), HOME)
|
|
|
+ d1.Show()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ dir, err := storage.ListerForURI(uri)
|
|
|
+ if err != nil {
|
|
|
+ d1 := dialog.NewError(fmt.Errorf("listerforuri.err %v", err), HOME)
|
|
|
+ d1.Show()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ d.SetLocation(dir)
|
|
|
+ }
|
|
|
+ d.Show()
|
|
|
}
|
|
|
|
|
|
func SetupHome() {
|
|
@@ -26,6 +74,7 @@ func SetupHome() {
|
|
|
return
|
|
|
}
|
|
|
meta := APP.Metadata()
|
|
|
+ pref := APP.Preferences()
|
|
|
|
|
|
// Assign short cuts
|
|
|
new_short := &desktop.CustomShortcut{
|
|
@@ -48,26 +97,51 @@ func SetupHome() {
|
|
|
fyne.KeyQ,
|
|
|
fyne.KeyModifierControl,
|
|
|
}
|
|
|
+ var about_save_btn *widget.Button
|
|
|
|
|
|
// For now most stuff just prints out into the terminal/console what we clicked (except about and quit)
|
|
|
file_new := fyne.NewMenuItem("New", func() { // CTRL + N
|
|
|
fmt.Println("File>New")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ }
|
|
|
})
|
|
|
file_new.Shortcut = new_short
|
|
|
file_open := fyne.NewMenuItem("Open", func() { // CTRL + O
|
|
|
fmt.Println("File>Open")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ }
|
|
|
})
|
|
|
file_open.Shortcut = open_short
|
|
|
file_save := fyne.NewMenuItem("Save", func() { // CTRL + S
|
|
|
fmt.Println("File>Save")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ }
|
|
|
})
|
|
|
file_save.Shortcut = save_short
|
|
|
|
|
|
+ about_save_btn = widget.NewButton(pref.StringWithFallback("save_dir", "Needs to be set"), func() {
|
|
|
+ SetSaveDir()
|
|
|
+ })
|
|
|
+ SAVEBIND.AddListener(binding.NewDataListener(func() { // Use a binding to update based on the preference change (More of a signal/slot to say hey update)
|
|
|
+ val, err := SAVEBIND.Get()
|
|
|
+ if err != nil {
|
|
|
+ d1 := dialog.NewError(fmt.Errorf("savebind.err %v", err), HOME)
|
|
|
+ d1.Show()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ about_save_btn.Text = val
|
|
|
+ about_save_btn.Refresh()
|
|
|
+ }))
|
|
|
+
|
|
|
showing_about := false
|
|
|
about := func() {
|
|
|
d := dialog.NewCustom("About - Endless Edit", "Close", container.NewVBox(
|
|
|
container.NewGridWithColumns(2,
|
|
|
widget.NewLabel("Endless Edit"), widget.NewLabel(meta.Version),
|
|
|
+ widget.NewLabel("Save Directory"), about_save_btn,
|
|
|
widget.NewLabel("Apollo"), widget.NewLabel("© 2022"),
|
|
|
),
|
|
|
), HOME)
|
|
@@ -75,6 +149,8 @@ func SetupHome() {
|
|
|
if showing_about {
|
|
|
showing_about = false
|
|
|
}
|
|
|
+ about_save_btn.Text = pref.StringWithFallback("save_dir", "Needs to be set")
|
|
|
+ about_save_btn.Refresh()
|
|
|
})
|
|
|
if !showing_about {
|
|
|
showing_about = true
|
|
@@ -99,15 +175,30 @@ func SetupHome() {
|
|
|
|
|
|
HOME.Canvas().AddShortcut(new_short, func(shortcut fyne.Shortcut) {
|
|
|
fmt.Println("File>New (Via Shortcut)")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ about_save_btn.Text = pref.StringWithFallback("save_dir", "Needs to be set")
|
|
|
+ about_save_btn.Refresh()
|
|
|
+ }
|
|
|
})
|
|
|
HOME.Canvas().AddShortcut(quit_short, func(shortcut fyne.Shortcut) {
|
|
|
APP.Quit()
|
|
|
})
|
|
|
HOME.Canvas().AddShortcut(open_short, func(shortcut fyne.Shortcut) {
|
|
|
fmt.Println("File>Open (Via Shortcut)")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ about_save_btn.Text = pref.StringWithFallback("save_dir", "Needs to be set")
|
|
|
+ about_save_btn.Refresh()
|
|
|
+ }
|
|
|
})
|
|
|
HOME.Canvas().AddShortcut(save_short, func(shortcut fyne.Shortcut) {
|
|
|
fmt.Println("File>Save (Via Shortcut)")
|
|
|
+ if NEED_SAVEDIR {
|
|
|
+ SetSaveDir()
|
|
|
+ about_save_btn.Text = pref.StringWithFallback("save_dir", "Needs to be set")
|
|
|
+ about_save_btn.Refresh()
|
|
|
+ }
|
|
|
})
|
|
|
HOME.Canvas().AddShortcut(about_short, func(shortcut fyne.Shortcut) {
|
|
|
about()
|