Skip to content

Commit

Permalink
also store the keyer settings in the log
Browse files Browse the repository at this point in the history
  • Loading branch information
ftl committed Jan 5, 2021
1 parent ec5e3b4 commit ada615f
Show file tree
Hide file tree
Showing 8 changed files with 274 additions and 94 deletions.
38 changes: 36 additions & 2 deletions core/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -217,10 +217,15 @@ func (c *Controller) openCurrentLog() error {
log.Printf("Cannot write contest settings to %s: %v", filepath.Base(filename), err)
return err
}
err = store.WriteKeyer(c.Keyer.KeyerSettings())
if err != nil {
log.Printf("Cannot write contest settings to %s: %v", filepath.Base(filename), err)
return err
}
}

var newLogbook *logbook.Logbook
qsos, station, contest, err := store.ReadAll()
qsos, station, contest, keyer, err := store.ReadAll()
if err != nil {
log.Printf("Cannot load %s: %v", filepath.Base(filename), err)
newLogbook = logbook.New(c.clock)
Expand All @@ -232,6 +237,10 @@ func (c *Controller) openCurrentLog() error {
if contest != nil {
c.Settings.SetContest(*contest)
}
c.Keyer.SetWriter(store)
if keyer != nil {
c.Keyer.SetKeyer(*keyer)
}
newLogbook = logbook.Load(c.clock, qsos)
}
c.changeLogbook(filename, store, newLogbook)
Expand Down Expand Up @@ -309,8 +318,24 @@ func (c *Controller) New() {
c.view.ShowErrorDialog("Cannot create %s: %v", filepath.Base(filename), err)
return
}
err = store.WriteStation(c.Settings.Station())
if err != nil {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
return
}
err = store.WriteContest(c.Settings.Contest())
if err != nil {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
return
}
err = store.WriteKeyer(c.Keyer.KeyerSettings())
if err != nil {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
return
}

c.Settings.SetWriter(store)
c.Keyer.SetWriter(store)
c.changeLogbook(filename, store, logbook.New(c.clock))
c.Refresh()

Expand All @@ -328,7 +353,7 @@ func (c *Controller) Open() {
}

store := store.NewFileStore(filename)
qsos, station, contest, err := store.ReadAll()
qsos, station, contest, keyer, err := store.ReadAll()
if err != nil {
c.view.ShowErrorDialog("Cannot open %s: %v", filepath.Base(filename), err)
return
Expand All @@ -341,6 +366,10 @@ func (c *Controller) Open() {
if contest != nil {
c.Settings.SetContest(*contest)
}
c.Keyer.SetWriter(store)
if keyer != nil {
c.Keyer.SetKeyer(*keyer)
}
log := logbook.Load(c.clock, qsos)
c.changeLogbook(filename, store, log)
c.Refresh()
Expand Down Expand Up @@ -372,6 +401,11 @@ func (c *Controller) SaveAs() {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
return
}
err = store.WriteKeyer(c.Keyer.KeyerSettings())
if err != nil {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
return
}
err = c.Logbook.WriteAll(store)
if err != nil {
c.view.ShowErrorDialog("Cannot save as %s: %v", filepath.Base(filename), err)
Expand Down
53 changes: 46 additions & 7 deletions core/keyer/keyer.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package keyer

import (
"bytes"
"fmt"
"log"
"strings"
"text/template"
Expand Down Expand Up @@ -63,10 +64,11 @@ func New(settings core.Settings, client CWClient, keyer core.Keyer, workmode cor
}

type Keyer struct {
writer Writer
view View
client CWClient
values KeyerValueProvider
writer Writer
view View
client CWClient
values KeyerValueProvider
savedKeyer core.Keyer

listeners []interface{}

Expand Down Expand Up @@ -101,6 +103,7 @@ func (k *Keyer) SetWriter(writer Writer) {
}

func (k *Keyer) SetKeyer(keyer core.Keyer) {
k.savedKeyer = keyer
k.wpm = keyer.WPM
for i, pattern := range keyer.SPMacros {
k.spPatterns[i] = pattern
Expand All @@ -110,6 +113,10 @@ func (k *Keyer) SetKeyer(keyer core.Keyer) {
k.runPatterns[i] = pattern
k.runTemplates[i], _ = template.New("").Parse(pattern)
}
k.showPatterns()
if k.view != nil {
k.view.SetSpeed(k.wpm)
}
}

func (k *Keyer) SetView(view View) {
Expand Down Expand Up @@ -141,9 +148,41 @@ func (k *Keyer) SetValues(values KeyerValueProvider) {
}

func (k *Keyer) Save() {
log.Println("TODO: persist the keyer settings")
// TODO get a core.Keyer from our internal data
// TODO err := k.writer.Write(keyer)
keyer, modified := k.getKeyerSettings()
if !modified {
return
}
k.savedKeyer = keyer
k.writer.WriteKeyer(keyer)
}

func (k *Keyer) KeyerSettings() core.Keyer {
keyer, _ := k.getKeyerSettings()
return keyer
}

func (k *Keyer) getKeyerSettings() (core.Keyer, bool) {
var keyer core.Keyer
keyer.WPM = k.wpm
keyer.SPMacros = make([]string, len(k.spPatterns))
for i := range keyer.SPMacros {
pattern, ok := k.spPatterns[i]
if !ok {
continue
}
keyer.SPMacros[i] = pattern
}
keyer.RunMacros = make([]string, len(k.runPatterns))
for i := range keyer.RunMacros {
pattern, ok := k.runPatterns[i]
if !ok {
continue
}
keyer.RunMacros[i] = pattern
}

modified := (fmt.Sprintf("%v", keyer) != fmt.Sprintf("%v", k.savedKeyer))
return keyer, modified
}

func (k *Keyer) EnterSpeed(speed int) {
Expand Down
Loading

0 comments on commit ada615f

Please sign in to comment.