mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2024-11-11 07:38:58 +01:00
First steps.
This commit is contained in:
parent
07b052520a
commit
eb0f936cb0
146
lib/settings.js
Normal file
146
lib/settings.js
Normal file
@ -0,0 +1,146 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
(function(){
|
||||
"use strict";
|
||||
|
||||
var scope;
|
||||
if ((typeof exports) !== "undefined"){
|
||||
scope = exports;
|
||||
}
|
||||
else {
|
||||
window.scope.settings = {};
|
||||
scope = window.scope.settings;
|
||||
}
|
||||
|
||||
var settingDefinitions = [
|
||||
{
|
||||
name: "logLevel",
|
||||
defaultValue: 1
|
||||
},
|
||||
{
|
||||
name: "whiteList",
|
||||
defaultValue: ""
|
||||
},
|
||||
{
|
||||
name: "blackList",
|
||||
defaultValue: ""
|
||||
},
|
||||
{
|
||||
name: "blockMode",
|
||||
defaultValue: "fakeReadout",
|
||||
options: ["blockReadout", "fakeReadout", "fakeInput", "askReadout", "blockEverything", "block", "ask", "allow", "allowEverything"]
|
||||
},
|
||||
{
|
||||
name: "minFakeSize",
|
||||
defaultValue: 1
|
||||
},
|
||||
{
|
||||
name: "maxFakeSize",
|
||||
defaultValue: 0
|
||||
},
|
||||
{
|
||||
name: "rng",
|
||||
defaultValue: "nonPersistent",
|
||||
options: ["nonPersistent", "constant", "persistent"]
|
||||
},
|
||||
{
|
||||
name: "useCanvasCache",
|
||||
defaultValue: true
|
||||
},
|
||||
{
|
||||
name: "ignoreFrequentColors",
|
||||
defaultValue: 0
|
||||
},
|
||||
{
|
||||
name: "fakeAlphaChannel",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "persistentRndStorage",
|
||||
defaultValue: ""
|
||||
},
|
||||
{
|
||||
name: "storePersistentRnd",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "askOnlyOnce",
|
||||
defaultValue: true
|
||||
},
|
||||
{
|
||||
name: "showNotifications",
|
||||
defaultValue: true
|
||||
},
|
||||
{
|
||||
name: "storeImageForInspection",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "notificationDisplayTime",
|
||||
defaultValue: 30
|
||||
},
|
||||
{
|
||||
name: "ignoreList",
|
||||
defaultValue: ""
|
||||
},
|
||||
{
|
||||
name: "showCallingFile",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "showCompleteCallingStack",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "enableStackList",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "stackList",
|
||||
defaultValue: ""
|
||||
},
|
||||
{
|
||||
name: "displayAdvancedSettings",
|
||||
defaultValue: false
|
||||
},
|
||||
{
|
||||
name: "isStillDefault",
|
||||
defaultValue: true
|
||||
}
|
||||
];
|
||||
|
||||
var settings = {};
|
||||
window.settings = {};
|
||||
|
||||
settingDefinitions.forEach(function(settingDefinition){
|
||||
var name = settingDefinition.name;
|
||||
settings[name] = settingDefinition.defaultValue;
|
||||
Object.defineProperty(
|
||||
window.settings,
|
||||
{
|
||||
name: name,
|
||||
get: function(){
|
||||
return settings[name]
|
||||
},
|
||||
set: function(newValue){
|
||||
if ((typeof newValue) === (typeof settingDefinition.defaultValue)){
|
||||
if (
|
||||
!settingDefinition.options ||
|
||||
settingDefinition.options.includes(newValue)
|
||||
){
|
||||
settings[name] = newValue;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
scope.forEach = function forEachSetting(...args){
|
||||
settingDefinitions.map(function(settingDefinition){
|
||||
return Object.create(settingDefinition);
|
||||
}).forEach(...args);
|
||||
}
|
||||
}());
|
Loading…
Reference in New Issue
Block a user