From b168e8ca769b66678b807506620a393de1292186 Mon Sep 17 00:00:00 2001 From: Lee Grey Date: Mon, 16 Mar 2015 23:13:36 +1300 Subject: [PATCH] Store user selected filePath on the Piskel instance stored in pskl.app.piskelController. Getter and Setter in PublicPiskelController for filePath. --- .../piskel/PublicPiskelController.js | 8 +++++++ src/js/controller/settings/SaveController.js | 24 ++++++++++++------- src/js/model/Piskel.js | 4 ++++ 3 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/js/controller/piskel/PublicPiskelController.js b/src/js/controller/piskel/PublicPiskelController.js index e5da46bf..4d6c4fb6 100644 --- a/src/js/controller/piskel/PublicPiskelController.js +++ b/src/js/controller/piskel/PublicPiskelController.js @@ -136,6 +136,14 @@ return this.piskelController.piskel; }; + ns.PublicPiskelController.prototype.setSavePath = function (savePath) { + this.piskelController.piskel.savePath = savePath; + } + + ns.PublicPiskelController.prototype.getSavePath = function () { + return this.piskelController.piskel.savePath; + } + ns.PublicPiskelController.prototype.raiseSaveStateEvent_ = function (fn, args) { $.publish(Events.PISKEL_SAVE_STATE, { type : pskl.service.HistoryService.REPLAY_NO_SNAPSHOT, diff --git a/src/js/controller/settings/SaveController.js b/src/js/controller/settings/SaveController.js index 840c6d2e..1d5d2d42 100644 --- a/src/js/controller/settings/SaveController.js +++ b/src/js/controller/settings/SaveController.js @@ -165,15 +165,21 @@ ns.SaveController.prototype.saveFileDesktop_ = function () { this.beforeSaving_(); var serialized = pskl.app.piskelController.serialize(); - // TODO: hold on to the full path to the file: - var fullSavePath = null; - // TODO: if we already have a filename (and we are sure this is the same document!!!) - // then save over the old file without opening a save dialog (using nodejs 'fs' api) - pskl.utils.FileUtils.desktopSaveAs(serialized, null, function (filename) { - this.onSaveSuccess_(); - this.afterSaving_(); - fullSavePath = filename; - }.bind(this)); + var savePath = pskl.app.piskelController.getSavePath(); + // if we already have a filename, just save the file (using nodejs 'fs' api) + if (savePath !== null) { + pskl.utils.FileUtils.desktopSaveToFile(serialized, savePath, function () { + this.onSaveSuccess_(); + this.afterSaving_(); + }.bind(this)); + } else { + // "save as" = open a save dialog, and store the returned save path + pskl.utils.FileUtils.desktopSaveAs(serialized, null, function (selectedSavePath) { + this.onSaveSuccess_(); + this.afterSaving_(); + pskl.app.piskelController.setSavePath(selectedSavePath); + }.bind(this)); + } } ns.SaveController.prototype.getName = function () { diff --git a/src/js/model/Piskel.js b/src/js/model/Piskel.js index fcc1ebdd..bbd0637b 100644 --- a/src/js/model/Piskel.js +++ b/src/js/model/Piskel.js @@ -20,6 +20,10 @@ this.height = height; this.descriptor = descriptor; + + /** @type {String} */ + this.savePath = null; + } else { throw 'Missing arguments in Piskel constructor : ' + Array.prototype.join.call(arguments, ","); }