Merge pull request +15814 from c9/default-settings

fix "reset to default settings" button
pull/467/head
Matthijs van Henten 2017-11-15 11:44:39 +01:00 zatwierdzone przez GitHub
commit ec23a68041
17 zmienionych plików z 111 dodań i 107 usunięć

Wyświetl plik

@ -50,6 +50,7 @@ define(function(require, exports, module) {
var KEYS = Object.keys(PATH);
var saveToCloud = {};
var defaults = {};
var model = {};
var cache = {};
var diff = 0; // TODO should we allow this to be undefined and get NaN in timestamps?
@ -67,7 +68,7 @@ define(function(require, exports, module) {
if (!json) {
// Load from TEMPLATE
if (options.settings == "defaults" || testing)
json = TEMPLATE;
json = util.cloneObject(TEMPLATE);
// Load from parsed settings in the index file
else if (options.settings) {
json = options.settings;
@ -80,7 +81,7 @@ define(function(require, exports, module) {
try {
json[type] = JSON.parse(json[type]);
} catch (e) {
json[type] = TEMPLATE[type];
json[type] = util.cloneObject(TEMPLATE[type]);
}
}
}
@ -91,8 +92,13 @@ define(function(require, exports, module) {
KEYS.forEach(function(type) {
if (!skipCloud[type] && json)
return --count;
fs.readFile(PATH[type], function(err, data) {
if (!json) json = {};
if (!json)
json = {};
if (type == "state" && debugMode)
return done(null, localStorage["debugState" + c9.projectName]);
fs.readFile(PATH[type], done);
function done(err, data) {
try {
json[type] = err ? {} : JSON.parse(data);
} catch (e) {
@ -103,7 +109,7 @@ define(function(require, exports, module) {
if (--count === 0)
loadSettings(json);
});
}
});
if (count > 0)
return;
@ -214,59 +220,31 @@ define(function(require, exports, module) {
}
function read(json, isReset) {
try {
if (testing) throw "testing";
KEYS.forEach(function(type) {
if (json[type])
model[type] = json[type];
});
if (resetSettings) {
var query = (resetSettings == 1
? "user|state" : resetSettings).split("|");
resetSettings = false;
query.forEach(function(type) {
model[type] = util.cloneObject(TEMPLATE[type]);
});
}
if (testing) {
KEYS.forEach(function(type) {
if (json[type])
model[type] = json[type];
});
if (resetSettings) {
var query = (resetSettings == 1
? "user|state" : resetSettings).split("|");
query.forEach(function(type) {
model[type] = TEMPLATE[type];
});
}
} catch (e) {
KEYS.forEach(function(type) {
model[type] = TEMPLATE[type];
model[type] = util.cloneObject(TEMPLATE[type]);
});
}
if (!c9.debug && !testing) {
try {
emit("read", {
model: model,
ext: plugin,
reset: isReset
});
} catch (e) {
console.error("Error loading settings, reseting to defaults");
console.error(e);
fs.writeFile(PATH.project
+ ".broken", JSON.stringify(json), function() {});
KEYS.forEach(function(type) {
model[type] = TEMPLATE[type];
});
emit("read", {
model: model,
ext: plugin,
reset: isReset
});
}
}
else {
emit("read", {
model: model,
ext: plugin,
reset: isReset
});
}
emit("read", {
model: model,
ext: plugin,
reset: isReset
});
if (inited)
return;
@ -328,7 +306,7 @@ define(function(require, exports, module) {
}
function setDefaults(path, attr) {
var node = getNode(path) || set(path, {}, true, true) && getNode(path);
var node = getNode(path, true) || set(path, {}, true, true) && getNode(path, true);
var changed;
attr.forEach(function(a) {
@ -405,7 +383,7 @@ define(function(require, exports, module) {
key = "json()";
}
var hash = model;
var hash = isDefault ? defaults : model;
if (!parts.every(function(part) {
if (!hash[part] && checkDefined) return false;
hash = hash[part] || (hash[part] = {});
@ -474,31 +452,37 @@ define(function(require, exports, module) {
return parseFloat(double);
}
function getNode(query) {
return get(query, true);
function getNode(query, isDefault) {
return get(query, true, isDefault);
}
function get(query, isNode) {
function getUnsafe(query, isNode, isDefault) {
var parts = query.split("/");
if (!isNode && parts[parts.length - 1].charAt(0) !== "@")
parts.push("json()");
var hash = model;
var hash = isDefault == true ? {} : model;
parts.every(function(part) {
hash = hash[part];
return hash;
});
if (hash === undefined) {
hash = isDefault == false ? {} : defaults;
parts.every(function(part) {
hash = hash[part];
return hash;
});
}
return hash;
}
function get(query, isNode, isDefault) {
var hash = getUnsafe(query, isNode, isDefault);
return hash === undefined ? "" : hash;
}
function exist(query) {
var parts = query.split("/");
var hash = model;
return parts.every(function(part) {
hash = hash[part];
return hash;
});
return getUnsafe(query, true) != undefined;
}
function reset(query) {
@ -506,10 +490,10 @@ define(function(require, exports, module) {
var info = {};
query.split("|").forEach(function(type) {
info[type] = TEMPLATE[type];
info[type] = util.cloneObject(TEMPLATE[type]);
});
read(model, true);
read(info, true);
saveToFile();
}

Wyświetl plik

@ -246,7 +246,7 @@ define(function(require, exports, module) {
["wrapToView", true, BOOL, "wrapmodeViewport"],
// Ace
["fontSize", "12", NUMBER, "fontsize"],
["fontSize", 12, NUMBER, "fontsize"],
["fontFamily", font, STRING, "fontfamily"],
["antialiasedfonts", false, BOOL],
["overwrite", false, BOOL, "overwrite"],
@ -257,17 +257,17 @@ define(function(require, exports, module) {
["showInvisibles", false, BOOL, "showinvisibles"],
["showPrintMargin", true, BOOL, "showprintmargin"],
["displayIndentGuides", true, BOOL, "showindentguides"],
["printMarginColumn", "80", NUMBER, "printmargincolumn"],
["printMarginColumn", 80, NUMBER, "printmargincolumn"],
["behavioursEnabled", true, BOOL, "behaviors"],
["wrapBehavioursEnabled", false, BOOL, "wrapbehaviors"],
["scrollSpeed", "2", NUMBER, "scrollspeed"],
["scrollSpeed", 2, NUMBER, "scrollspeed"],
["showGutter", true, BOOL, "gutter"],
["showLineNumbers", true, STRING],
["showFoldWidgets", true, BOOL, "folding"],
["fadeFoldWidgets", true, BOOL, "fadefoldwidgets"],
["highlightSelectedWord", true, BOOL, "highlightselectedword"],
["animatedScroll", true, BOOL, "animatedscroll"],
["scrollPastEnd", "0.5", NUMBER],
["scrollPastEnd", 0.5, NUMBER],
["mergeUndoDeltas", "off", STRING],
["theme", defaultThemes[skin], STRING, "theme"]
];

Wyświetl plik

@ -29,7 +29,7 @@ define(function(require, exports, module) {
loaded = true;
settings.on("read", function() {
settings.setDefaults("user/collab", [["showbubbles", "true"]]);
settings.setDefaults("user/collab", [["showbubbles", true]]);
});
prefs.add({

Wyświetl plik

@ -302,16 +302,36 @@ define(function(require, exports, module) {
openTab("~/.c9/styles.css", css, "css");
}
function stringifySettings(query) {
var model = settings.get(query, true);
var defaults = settings.get(query, true, true);
var merged = merge({}, defaults, model);
function merge(result) {
var args = arguments;
for (var i = 1; i < args.length; i++) {
var o = args[i];
for (var key in o) {
if (!o[key] || typeof o[key] !== "object") {
result[key] = o[key];
} else {
if (!result[key] || typeof result[key] != "object")
result[key] = {};
merge(result[key], o[key]);
}
}
}
return result;
}
return util.stableStringify(merged, null, 4)
.replace(/ "(true|false)"/g, " $1");
}
function editProjectSettings() {
var value = JSON.stringify(settings.model.project, 0, " ")
.replace(/"true"/g, "true")
.replace(/"false"/g, "false");
var value = stringifySettings("project");
openTab(settings.paths.project, value, "javascript");
}
function editUserSettings() {
var value = JSON.stringify(settings.model.user, 0, " ")
.replace(/"true"/g, "true")
.replace(/"false"/g, "false");
var value = stringifySettings("user");
openTab(settings.paths.user, value, "javascript");
}

Wyświetl plik

@ -75,9 +75,9 @@ define(function(require, module, exports) {
settings.on("read", function(e) {
// Defaults
settings.setDefaults("state/console", [
["expanded", "true"],
["maximized", "false"],
["height", "153"]
["expanded", true],
["maximized", false],
["height", 153]
]);
// Height

Wyświetl plik

@ -112,8 +112,8 @@ define(function(require, exports, module) {
settings.on("read", function(e) {
settings.setDefaults("user/metadata", [
// ["enabled", "true"],
["undolimit", "100"],
// ["enabled", true],
["undolimit", 100],
]);
}, plugin);

Wyświetl plik

@ -73,7 +73,7 @@ define(function(require, module, exports) {
settings.on("read", function() {
settings.setDefaults(xpath, [
["name", plugin.name],
["enabled", "true"]
["enabled", true]
]);
// Start disabled

Wyświetl plik

@ -61,13 +61,13 @@ define(function(require, exports, module) {
caption: "Reset to Defaults",
width: 140,
onclick: function() {
confirm("Reset Settings",
confirm("Reset User Settings",
"Are you sure you want to reset your settings?",
"By resetting your settings to their "
+ "defaults you will lose all custom settings. "
+ "Cloud9 will return to it's original configuration",
function() {
settings.reset();
settings.reset("user");
}, function() {},
{ yes: "Reset settings", no: "Cancel" });
}

Wyświetl plik

@ -61,7 +61,7 @@ define(function(require, module, exports) {
// Settings
settings.on("read", function() {
settings.setDefaults("project/build", [
["saveall", "true"],
["saveall", true],
["builder", "auto"]
]);
settings.setDefaults("user/build", [

Wyświetl plik

@ -201,7 +201,7 @@ define(function(require, exports, module) {
// restore the breakpoints from the IDE settings
settings.on("read", function (e) {
settings.setDefaults("user/breakpoints", [
["active", "true"]
["active", true]
]);
var bps = settings.getJson("state/breakpoints");
@ -483,7 +483,7 @@ define(function(require, exports, module) {
codebox = new apf.codebox({
skin: "simplebox",
"class": "dark",
focusselect: "true",
focusselect: true,
htmlNode: hInput,
"initial-message": "Your Expression"
});

Wyświetl plik

@ -58,8 +58,8 @@ define(function(require, exports, module) {
settings.on("read", function() {
settings.setDefaults("user/debug", [
["pause", "0"],
["autoshow", "true"]
["pause", 0],
["autoshow", true]
]);
pauseOnBreaks = settings.getNumber("user/debug/@pause");

Wyświetl plik

@ -58,7 +58,7 @@ define(function(require, exports, module) {
settings.on("read", function() {
settings.setDefaults("user/debug", [
["autoshow", "true"]
["autoshow", true]
]);
});

Wyświetl plik

@ -536,9 +536,9 @@ define(function(require, module, exports) {
// settings
settings.on("read", function(e) {
settings.setDefaults("user/runconfig", [
["saveallbeforerun", "true"],
["debug", "true"],
["showruncfglist", "false"]
["saveallbeforerun", true],
["debug", true],
["showruncfglist", false]
]);
if (!settings.getBool("project/run/configs/@inited")) {

Wyświetl plik

@ -129,8 +129,8 @@ define(function(require, exports, module) {
["backgroundColor", colors[0]],
["foregroundColor", colors[1]],
["selectionColor", colors[2]],
["nosavequestion", "false"],
["keepOutput", "false"]
["nosavequestion", false],
["keepOutput", false]
]);
setSettings();
@ -1037,13 +1037,13 @@ define(function(require, exports, module) {
tab.close();
if (question.dontAsk)
settings.set("user/output/nosavequestion", "true");
settings.set("user/output/nosavequestion", true);
},
function() { // No
// do nothing; allow user to set a name
if (question.dontAsk)
settings.set("user/output/nosavequestion", "true");
settings.set("user/output/nosavequestion", true);
},
{ showDontAsk: true, yes: "Close", no: "Cancel" });
return false;

Wyświetl plik

@ -249,8 +249,8 @@ define(function(require, exports, module) {
["selectionColor", colors[2]],
["antialiasedfonts", colors[3]],
["fontfamily", "Ubuntu Mono, Menlo, Consolas, monospace"], // Monaco,
["fontsize", "12"],
["blinking", "false"],
["fontsize", 12],
["blinking", false],
["scrollback", 1000]
]);

Wyświetl plik

@ -481,10 +481,10 @@ define(function(require, exports, module) {
var init = false;
settings.on("read", function() {
settings.setDefaults("state/projecttree", [
["showfs", startEmpty ? "false" : "true"]
["showfs", startEmpty ? false : true]
]);
settings.setDefaults("user/projecttree", [
["scope", "false"]
["scope", false]
]);
if (settings.getBool("state/projecttree/@showfs"))

Wyświetl plik

@ -47,8 +47,8 @@ define(function(require, exports, module) {
settings.on("read", function(e) {
settings.setDefaults("user/general", [
["automerge", "false"],
["confirmmerge", "true"]
["automerge", false],
["confirmmerge", true]
]);
});