From 00f0e26afb078130749b288bc67b975e94c9b7f9 Mon Sep 17 00:00:00 2001 From: Lesterpig Date: Wed, 6 Apr 2016 16:26:55 +0200 Subject: [PATCH] [d] Add import/export feature --- dfssd/gui/save.go | 41 +++++++++++++++++++++++++++++++++++++++++ dfssd/gui/window.go | 12 ++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 dfssd/gui/save.go diff --git a/dfssd/gui/save.go b/dfssd/gui/save.go new file mode 100644 index 0000000..85b0cf7 --- /dev/null +++ b/dfssd/gui/save.go @@ -0,0 +1,41 @@ +package gui + +import ( + "encoding/json" + "io/ioutil" + "strconv" +) + +func (w *Window) Save(filename string) { + data, err := json.Marshal(w.scene) + if err != nil { + w.StatusBar().ShowMessage(err.Error()) + return + } + + err = ioutil.WriteFile(filename, data, 0600) + if err != nil { + w.StatusBar().ShowMessage(err.Error()) + return + } + w.StatusBar().ShowMessage("Saved file as " + filename) +} + +func (w *Window) Open(filename string) { + data, err := ioutil.ReadFile(filename) + if err != nil { + w.StatusBar().ShowMessage(err.Error()) + return + } + + newScene := &Scene{} + err = json.Unmarshal(data, newScene) + if err != nil { + w.StatusBar().ShowMessage(err.Error()) + return + } + + w.scene = newScene + w.StatusBar().ShowMessage("Imported file from " + filename + " (" + strconv.Itoa(len(w.scene.Events)) + " events)") + w.initScene() +} diff --git a/dfssd/gui/window.go b/dfssd/gui/window.go index 4c688d5..b458f1d 100644 --- a/dfssd/gui/window.go +++ b/dfssd/gui/window.go @@ -70,10 +70,22 @@ func (w *Window) addActions() { openAct := ui.NewActionWithTextParent("&Open", w) openAct.SetShortcuts(ui.QKeySequence_Open) openAct.SetStatusTip("Open a demonstration file") + openAct.OnTriggered(func() { + filename := ui.QFileDialogGetOpenFileName() + if filename != "" { + w.Open(filename) + } + }) saveAct := ui.NewActionWithTextParent("&Save", w) saveAct.SetShortcuts(ui.QKeySequence_Save) saveAct.SetStatusTip("Save a demonstration file") + saveAct.OnTriggered(func() { + filename := ui.QFileDialogGetSaveFileName() + if filename != "" { + w.Save(filename) + } + }) w.MenuBar().AddAction(openAct) w.MenuBar().AddAction(saveAct) -- GitLab