187 lines
5.3 KiB
TypeScript
187 lines
5.3 KiB
TypeScript
import { config } from "../../package.json";
|
|
import { itemPicker } from "../utils/itemPicker";
|
|
import { getString } from "../utils/locale";
|
|
import { getPref } from "../utils/prefs";
|
|
import { slice } from "../utils/str";
|
|
|
|
export function registerMenus(win: Window) {
|
|
// item
|
|
ztoolkit.Menu.register("item", { tag: "menuseparator" });
|
|
ztoolkit.Menu.register("item", {
|
|
tag: "menuitem",
|
|
label: getString("menuItem.exportNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onShowExportNoteOptions(
|
|
ZoteroPane.getSelectedItems().map((item) => item.id),
|
|
);
|
|
},
|
|
});
|
|
|
|
// menuEdit
|
|
const menuEditAnchor = win.document.querySelector(
|
|
"#menu_EditPreferencesItem",
|
|
) as XUL.MenuItem;
|
|
ztoolkit.Menu.register(
|
|
"menuEdit",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuEdit.insertTemplate"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onShowTemplatePicker();
|
|
},
|
|
},
|
|
"before",
|
|
menuEditAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuEdit",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuEdit.exportTemplate"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onShowTemplatePicker("export");
|
|
},
|
|
},
|
|
"before",
|
|
menuEditAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuEdit",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuEdit.templateEditor"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onShowTemplateEditor();
|
|
},
|
|
},
|
|
"before",
|
|
menuEditAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuEdit",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuEdit.importTemplate"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onImportTemplateFromClipboard();
|
|
},
|
|
},
|
|
"before",
|
|
menuEditAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuEdit",
|
|
{ tag: "menuseparator" },
|
|
"before",
|
|
menuEditAnchor,
|
|
);
|
|
|
|
// menuTools
|
|
ztoolkit.Menu.register("menuTools", { tag: "menuseparator" });
|
|
ztoolkit.Menu.register("menuTools", {
|
|
tag: "menuitem",
|
|
label: getString("menuTools.syncManager"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: (ev) => {
|
|
addon.hooks.onShowSyncManager();
|
|
},
|
|
});
|
|
|
|
// menuFile
|
|
const menuFileAnchor = win.document.querySelector(
|
|
"#menu_newCollection",
|
|
) as XUL.MenuItem;
|
|
|
|
ztoolkit.Menu.register(
|
|
"menuFile",
|
|
{ tag: "menuseparator" },
|
|
"after",
|
|
menuFileAnchor,
|
|
);
|
|
// a copy of create note menu in library
|
|
ztoolkit.Menu.register(
|
|
"menuFile",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote-importMD"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () => addon.hooks.onCreateNoteFromMD(),
|
|
},
|
|
"after",
|
|
menuFileAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuFile",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote.newTemplateItemNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () =>
|
|
addon.hooks.onCreateNoteFromTemplate("item", "library"),
|
|
},
|
|
"after",
|
|
menuFileAnchor,
|
|
);
|
|
ztoolkit.Menu.register(
|
|
"menuFile",
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote.newTemplateStandaloneNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () => addon.hooks.onCreateNoteFromTemplate("standalone"),
|
|
},
|
|
"after",
|
|
menuFileAnchor,
|
|
);
|
|
|
|
// create note menu in library
|
|
const newNoteMenu = win.document
|
|
.querySelector("#zotero-tb-note-add")
|
|
?.querySelector("menupopup") as XUL.MenuPopup;
|
|
ztoolkit.Menu.register(newNoteMenu, {
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote.newTemplateStandaloneNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () => addon.hooks.onCreateNoteFromTemplate("standalone"),
|
|
});
|
|
ztoolkit.Menu.register(newNoteMenu, {
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote.newTemplateItemNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () =>
|
|
addon.hooks.onCreateNoteFromTemplate("item", "library"),
|
|
});
|
|
ztoolkit.Menu.register(newNoteMenu, {
|
|
tag: "menuitem",
|
|
label: getString("menuAddNote-importMD"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () => addon.hooks.onCreateNoteFromMD(),
|
|
});
|
|
|
|
// create note menu in reader side panel
|
|
ztoolkit.Menu.register(
|
|
win.document.querySelector(
|
|
"#context-pane-add-child-note-button-popup",
|
|
) as XUL.MenuPopup,
|
|
{
|
|
tag: "menuitem",
|
|
label: getString("menuAddReaderNote.newTemplateNote"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () =>
|
|
addon.hooks.onCreateNoteFromTemplate("item", "reader"),
|
|
},
|
|
);
|
|
|
|
ztoolkit.Menu.register("menuHelp", {
|
|
tag: "menuitem",
|
|
label: getString("menuHelp-openUserGuide"),
|
|
icon: `chrome://${config.addonRef}/content/icons/favicon.png`,
|
|
commandListener: () => addon.hooks.onShowUserGuide(win, true),
|
|
});
|
|
}
|