add: shortcut examples for toolkit 0.1.6
This commit is contained in:
parent
d42abcbfcc
commit
a95515fc47
@ -30,6 +30,13 @@ Search `@example` in `src/examples.ts`. The examples are called in `src/hooks.ts
|
|||||||
- registerNotifier
|
- registerNotifier
|
||||||
- registerPrefs, unregisterPrefs
|
- registerPrefs, unregisterPrefs
|
||||||
|
|
||||||
|
### Shortcut Keys Examples
|
||||||
|
|
||||||
|
- registerShortcuts
|
||||||
|
- exampleShortcutLargerCallback
|
||||||
|
- exampleShortcutSmallerCallback
|
||||||
|
- exampleShortcutConflictionCallback
|
||||||
|
|
||||||
### UI Examples
|
### UI Examples
|
||||||
|
|
||||||

|

|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/windingwind/zotero-addon-template#readme",
|
"homepage": "https://github.com/windingwind/zotero-addon-template#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"zotero-plugin-toolkit": "^0.1.3"
|
"zotero-plugin-toolkit": "^0.1.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^18.11.17",
|
"@types/node": "^18.11.17",
|
||||||
|
25
src/hooks.ts
25
src/hooks.ts
@ -1,4 +1,8 @@
|
|||||||
import { BasicExampleFactory, UIExampleFactory } from "./modules/examples";
|
import {
|
||||||
|
BasicExampleFactory,
|
||||||
|
KeyExampleFactory,
|
||||||
|
UIExampleFactory,
|
||||||
|
} from "./modules/examples";
|
||||||
import { config } from "../package.json";
|
import { config } from "../package.json";
|
||||||
import { getString, initLocale } from "./modules/locale";
|
import { getString, initLocale } from "./modules/locale";
|
||||||
import { registerPrefsScripts } from "./modules/preferenceScript";
|
import { registerPrefsScripts } from "./modules/preferenceScript";
|
||||||
@ -30,6 +34,8 @@ async function onStartup() {
|
|||||||
|
|
||||||
BasicExampleFactory.registerNotifier();
|
BasicExampleFactory.registerNotifier();
|
||||||
|
|
||||||
|
KeyExampleFactory.registerShortcuts();
|
||||||
|
|
||||||
await Zotero.Promise.delay(1000);
|
await Zotero.Promise.delay(1000);
|
||||||
popupWin.changeLine({
|
popupWin.changeLine({
|
||||||
progress: 30,
|
progress: 30,
|
||||||
@ -110,6 +116,22 @@ async function onPrefsEvent(type: string, data: { [key: string]: any }) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onShortcuts(type: string) {
|
||||||
|
switch (type) {
|
||||||
|
case "larger":
|
||||||
|
KeyExampleFactory.exampleShortcutLargerCallback();
|
||||||
|
break;
|
||||||
|
case "smaller":
|
||||||
|
KeyExampleFactory.exampleShortcutSmallerCallback();
|
||||||
|
break;
|
||||||
|
case "confliction":
|
||||||
|
KeyExampleFactory.exampleShortcutConflictionCallback();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Add your hooks here. For element click, etc.
|
// Add your hooks here. For element click, etc.
|
||||||
// Keep in mind hooks only do dispatch. Don't add code that does real jobs in hooks.
|
// Keep in mind hooks only do dispatch. Don't add code that does real jobs in hooks.
|
||||||
// Otherwise the code would be hard to read and maintian.
|
// Otherwise the code would be hard to read and maintian.
|
||||||
@ -119,4 +141,5 @@ export default {
|
|||||||
onShutdown,
|
onShutdown,
|
||||||
onNotify,
|
onNotify,
|
||||||
onPrefsEvent,
|
onPrefsEvent,
|
||||||
|
onShortcuts,
|
||||||
};
|
};
|
||||||
|
@ -100,6 +100,103 @@ export class BasicExampleFactory {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export class KeyExampleFactory {
|
||||||
|
@example
|
||||||
|
static registerShortcuts() {
|
||||||
|
const keysetId = `${config.addonRef}-keyset`;
|
||||||
|
const cmdsetId = `${config.addonRef}-cmdset`;
|
||||||
|
const cmdSmallerId = `${config.addonRef}-cmd-smaller`;
|
||||||
|
// Register an event key for Alt+L
|
||||||
|
ztoolkit.KeyTool.registerKey("event", {
|
||||||
|
id: `${config.addonRef}-key-larger`,
|
||||||
|
key: "L",
|
||||||
|
modifiers: "alt",
|
||||||
|
callback: (keyOptions) => {
|
||||||
|
addon.hooks.onShortcuts("larger");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
// Register an element key using <key> for Alt+S
|
||||||
|
ztoolkit.KeyTool.registerKey("element", {
|
||||||
|
id: `${config.addonRef}-key-smaller`,
|
||||||
|
key: "S",
|
||||||
|
modifiers: "alt",
|
||||||
|
xulData: {
|
||||||
|
document,
|
||||||
|
command: cmdSmallerId,
|
||||||
|
_parentId: keysetId,
|
||||||
|
_commandOptions: {
|
||||||
|
id: cmdSmallerId,
|
||||||
|
document,
|
||||||
|
_parentId: cmdsetId,
|
||||||
|
oncommand: "Zotero.AddonTemplate.hooks.onShortcuts('smaller')",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
// Here we register an conflict key for Alt+S
|
||||||
|
// just to show how the confliction check works.
|
||||||
|
// This is something you should avoid in your plugin.
|
||||||
|
ztoolkit.KeyTool.registerKey("event", {
|
||||||
|
id: `${config.addonRef}-key-smaller-conflict`,
|
||||||
|
key: "S",
|
||||||
|
modifiers: "alt",
|
||||||
|
callback: (keyOptions) => {
|
||||||
|
ztoolkit.Compat.getGlobal("alert")("Smaller! This is a conflict key.");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
// Register an event key to check confliction
|
||||||
|
ztoolkit.KeyTool.registerKey("event", {
|
||||||
|
id: `${config.addonRef}-key-check-conflict`,
|
||||||
|
key: "C",
|
||||||
|
modifiers: "alt",
|
||||||
|
callback: (keyOptions) => {
|
||||||
|
addon.hooks.onShortcuts("confliction");
|
||||||
|
},
|
||||||
|
});
|
||||||
|
ztoolkit.Tool.createProgressWindow(config.addonName)
|
||||||
|
.createLine({
|
||||||
|
text: "Example Shortcuts: Alt+L/S/C",
|
||||||
|
type: "success",
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@example
|
||||||
|
static exampleShortcutLargerCallback() {
|
||||||
|
ztoolkit.Tool.createProgressWindow(config.addonName)
|
||||||
|
.createLine({
|
||||||
|
text: "Larger!",
|
||||||
|
type: "default",
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@example
|
||||||
|
static exampleShortcutSmallerCallback() {
|
||||||
|
ztoolkit.Tool.createProgressWindow(config.addonName)
|
||||||
|
.createLine({
|
||||||
|
text: "Smaller!",
|
||||||
|
type: "default",
|
||||||
|
})
|
||||||
|
.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
@example
|
||||||
|
static exampleShortcutConflictionCallback() {
|
||||||
|
const conflictionGroups = ztoolkit.KeyTool.checkAllKeyConfliction();
|
||||||
|
ztoolkit.Tool.createProgressWindow("Check Key Confliction")
|
||||||
|
.createLine({
|
||||||
|
text: `${conflictionGroups.length} groups of confliction keys found. Details are in the debug output/console.`,
|
||||||
|
})
|
||||||
|
.show(-1);
|
||||||
|
ztoolkit.Tool.log(
|
||||||
|
"Conflictions:",
|
||||||
|
conflictionGroups,
|
||||||
|
"All keys:",
|
||||||
|
ztoolkit.KeyTool.getAllKeys()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export class UIExampleFactory {
|
export class UIExampleFactory {
|
||||||
@example
|
@example
|
||||||
static registerStyleSheet() {
|
static registerStyleSheet() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user