/
gsettings_bridge.js
101 lines (84 loc) · 3.17 KB
/
gsettings_bridge.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
/*!
GPII Node.js GSettings Bridge
Copyright 2012 Steven Githens
Licensed under the New BSD license. You may not use this file except in
compliance with this License.
You may obtain a copy of the License at
https://github.com/gpii/universal/LICENSE.txt
*/
(function () {
"use strict";
var fluid = require("universal");
var gpii = fluid.registerNamespace("gpii");
var exec = require("child_process").exec;
var util = require("util");
var nodeGSettings = require("./nodegsettings/build/Release/nodegsettings.node");
fluid.registerNamespace("gpii.launch");
gpii.gsettings = gpii.gsettings || {};
fluid.defaults("gpii.gsettings.setSingleKey", {
gradeNames: "fluid.function",
argumentMap: {
schemaId: 0,
key: 1,
value: 2
}
});
fluid.defaults("gpii.gsettings.getSingleKey", {
gradeNames: "fluid.function",
argumentMap: {
schemaId: 0,
key: 1
}
});
gpii.gsettings.getSingleKey = function(schemaId, key) {
return nodeGSettings.get_gsetting(schemaId,key);
};
gpii.gsettings.setSingleKey = function(schemaId, key, value) {
nodeGSettings.set_gsetting(schemaId, key, value);
};
gpii.gsettings.get = function(settingsarray) {
var app = fluid.copy(settingsarray);
for (var appId in app) {
for (var j = 0; j < app[appId].length; j++) {
var schemaId = app[appId][j].options.schema;
var settings = app[appId][j].settings;
var keys = nodeGSettings.get_gsetting_keys(schemaId);
if (settings === null) {
app[appId][j].settings = {};
for (var k = 0; k < keys.length; k++) {
var key = keys[k];
app[appId][j].settings[key] = nodeGSettings.get_gsetting(schemaId,key);
}
}
else {
for (var settingKey in settings) {
if (keys.indexOf(settingKey) == -1) continue;
settings[settingKey] = nodeGSettings.get_gsetting(schemaId,settingKey);
}
}
}
}
return app;
};
gpii.gsettings.set = function(settingsarray) {
var app = fluid.copy(settingsarray);
for (var appId in app) {
for (var j = 0; j < app[appId].length; j++) {
var schemaId = app[appId][j].options.schema;
var settings = app[appId][j].settings;
var keys = nodeGSettings.get_gsetting_keys(schemaId);
for (var settingKey in settings) {
if (keys.indexOf(settingKey) == -1) continue;
var value = settings[settingKey];
var oldValue = nodeGSettings.get_gsetting(schemaId,settingKey);
nodeGSettings.set_gsetting(schemaId,settingKey,value);
settings[settingKey] = {
"oldValue": oldValue,
"newValue": value
};
}
}
}
return app;
}
})();