Greasy Fork is available in English.

GM_config (eight's version)

A library to help you set up configure in greasemonkey script.

Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/7212/156587/GM_config%20%28eight%27s%20version%29.js

Autor
eight
Version
2.2.0
Erstellt am
29.12.2014
Letzte Aktualisierung
07.11.2016
Lizenz
LGPL version 3 or any later version

GM_config

A library to help you set up configure in greasemonkey script.

This project is a rewrite of sizzlemctwizzle/GM_config and use the interface similar to GM_config (JoeSimmons) (the legacy interface of sizzlemctwizzle/GM_config).

Features

  • Create a dialog to show, edit settings.
  • Reset settings to default.
  • Save setting depends on different domains.
  • Import, export settings.
    • Note: export function will only grab settings on current domain.
  • Supported input type:
    • checkbox (boolean)
    • number (number)
    • text (string)
    • textarea (string)
    • radio (string)
    • select (string or array)

Demo

API

Methods

GM_config.init(title, configDefinition)

title

The title of the config dialog.

configDefinition

The definition is a map object look like:

{
    key: {
        label: "the label of the input",

        // input type. could be text, number, checkbox, textarea, radio, or
        // select.
        type: "text",

        // could be String, Number, Boolean, or Array. See following example.
        default: "default value"
    }
}

Example:

{
    text: {
        label: "Text field",
        type: "text",
        default: "a string"
    },
    number: {
        label: "Number field",
        type: "number",
        default: 12345
    },
    checkbox: {
        label: "Checkbox field",
        type: "checkbox",
        default: true
    },
    textarea: {
        label: "Textarea field",
        type: "textarea",
        default: "multi\nline"
    },
    radio: {
        label: "Select your language",
        type: "radio",
        default: "en",
        options: {
            en: "English",
            tw: "Traditional Chinese",
            cn: "Simplified Chinese"
        }
    },
    select: {
        label: "Choose a color",
        type: "select",
        default: "orange",
        options: {
            red: "Red",
            orange: "Orange",
            yellow: "Yellow"
        }
    },
    multipleSelect: {
        label: "Multiple select",
        type: "select",
        default: ["n1", "n3"],
        options: {
            n1: "1",
            n2: "2",
            n3: "3"
        },
        multiple: true
    }
}

GM_config.open()

Open config dialog.

GM_config.get([key])

If key is not setted, return a key-value map of the config.
If key is a string, return the config value of the key.
If key is an object, copy all properties from the config to the object.

GM_config.setup(configDefinition, saveCallback)

This is a helper function to do a simple setup.

function setup(options, saveCallback) {
    GM_config.init(GM_info.script.name, options);
    GM_config.onload = loadCallback;
    GM_registerMenuCommand(GM_info.script.name + " - Configure", GM_config.open);
    saveCallback();
}
  • Note that saveCallback will be called once during the setup.

Properties

GM_config.onclose = function(saveFlag)

Called when the dialog is closed.

saveFlag

true if the user pressed "Save" button.

GM_config.onload = function

Called when the config is saved.

Build

Using NodeJS, Bower, Grunt:

npm install
bower install
grunt

Todos

  • Create dialog with htmlString?
  • Add white-space: nowrap to dialog footer.
  • Refactor
    • Pull out createInput from createInputs.
    • Pull out grabDialogSetting from close.

License

LGPL version 3 or any later version; http://www.gnu.org/copyleft/lgpl.html

Changelog

  • 2.2.0 (Nov 7, 2016)
    • Drop Grunt, use npm scripts.
    • Add API reference in readme.
    • Add .onload and .setup.
  • 2.1.0 (Aug 7, 2015)
    • Support radio.
    • Support select.
    • Update end2end.
  • 2.0.4 (Jul 3, 2015)
    • Fix dialog container style.
  • 2.0.3 (Jun 18, 2015)
    • Fix dialog footer style.
  • 2.0.2 (Jun 18, 2015)
    • Add license header to source.
  • 2.0.1 (Jun 18, 2015)
    • Update meta data.
  • 2.0.0 (Jun 18, 2015)
    • Change folder structure.
  • 1.3.0 (Jun 18, 2015)
    • Add import, export feature.
    • Add local setting feature.
    • Fix the flickering of opening, closing dialog.
  • 1.2.0 (Jun 15, 2015)
    • Add transition animation.
  • 1.1.1 (Jun 15, 2015)
    • Drop document.open, document.close.
  • 1.1.0 (Jun 15, 2015)
    • Use iframe.
    • Remove localStorage fallback.
  • 1.0.0 (Jun 13, 2015)
    • Fix license issue.
  • 0.3.1 (Apr 16, 2015)
    • Now you can pass a reference object to GM_config.get().
  • 0.3.0 (Apr 13, 2015)
    • Support textarea.
  • 0.2.2 (Dec 29, 2014)
    • Fix bugs in setValue.
  • 0.2.1 (Dec 29, 2014)
    • Add z-index to config-dialog.
  • 0.2.0 (Dec 29, 2014)
    • Return config object after init.
  • 0.1.0 (Dec 29, 2014)
    • First release.