11import { config } from "../../package.json" ;
2- import { getString } from "../utils/locale" ;
32import { getPref } from "../utils/prefs" ;
43import {
54 addTranslateAbstractTask ,
@@ -9,45 +8,58 @@ import {
98
109export function registerMenu ( ) {
1110 const menuIcon = `chrome://${ config . addonRef } /content/icons/favicon.png` ;
12- if (
13- getPref ( "showItemMenuTitleTranslation" ) ||
14- getPref ( "showItemMenuAbstractTranslation" )
15- ) {
16- ztoolkit . Menu . register ( "item" , {
17- tag : "menuseparator" ,
18- } ) ;
19- }
20- if ( getPref ( "showItemMenuTitleTranslation" ) ) {
21- ztoolkit . Menu . register ( "item" , {
22- tag : "menuitem" ,
23- label : getString ( "itemmenu-translateTitle-label" ) ,
24- commandListener : ( ev ) => {
25- addon . hooks . onTranslateInBatch (
26- Zotero . getActiveZoteroPane ( )
27- . getSelectedItems ( true )
28- . map ( ( id ) => addTranslateTitleTask ( id , true ) )
29- . filter ( ( task ) => task ) as TranslateTask [ ] ,
30- { noDisplay : true , noCache : true } ,
31- ) ;
32- } ,
33- icon : menuIcon ,
34- } ) ;
35- }
3611
37- if ( getPref ( "showItemMenuAbstractTranslation" ) ) {
38- ztoolkit . Menu . register ( "item" , {
39- tag : "menuitem" ,
40- label : getString ( "itemmenu-translateAbstract-label" ) ,
41- commandListener : ( ev ) => {
42- addon . hooks . onTranslateInBatch (
43- Zotero . getActiveZoteroPane ( )
44- . getSelectedItems ( true )
45- . map ( ( id ) => addTranslateAbstractTask ( id , true ) )
46- . filter ( ( task ) => task ) as TranslateTask [ ] ,
47- { noDisplay : true , noCache : true } ,
48- ) ;
12+ Zotero . MenuManager . registerMenu ( {
13+ menuID : `${ config . addonRef } -translate-title` ,
14+ pluginID : config . addonID ,
15+ target : "main/library/item" ,
16+ menus : [
17+ {
18+ menuType : "menuitem" ,
19+ l10nID : `${ config . addonRef } -itemmenu-translateTitle` ,
20+ icon : menuIcon ,
21+ onCommand : ( event , context ) => {
22+ addon . hooks . onTranslateInBatch (
23+ (
24+ context . menuElem . ownerGlobal
25+ ?. ZoteroPane as _ZoteroTypes . ZoteroPane
26+ )
27+ ?. getSelectedItems ( true )
28+ . map ( ( id ) => addTranslateTitleTask ( id , true ) )
29+ . filter ( ( task ) => task ) as TranslateTask [ ] ,
30+ { noDisplay : true , noCache : true } ,
31+ ) ;
32+ } ,
33+ onShowing : ( event , context ) => {
34+ const enabled =
35+ getPref ( "showItemMenuTitleTranslation" ) &&
36+ context . items ?. every ( ( item ) => item . isRegularItem ( ) ) ;
37+ context . menuElem . hidden = ! enabled ;
38+ } ,
39+ } ,
40+ {
41+ menuType : "menuitem" ,
42+ l10nID : `${ config . addonRef } -itemmenu-translateAbstract` ,
43+ icon : menuIcon ,
44+ onCommand : ( event , context ) => {
45+ addon . hooks . onTranslateInBatch (
46+ (
47+ context . menuElem . ownerGlobal
48+ ?. ZoteroPane as _ZoteroTypes . ZoteroPane
49+ )
50+ ?. getSelectedItems ( true )
51+ . map ( ( id ) => addTranslateAbstractTask ( id , true ) )
52+ . filter ( ( task ) => task ) as TranslateTask [ ] ,
53+ { noDisplay : true , noCache : true } ,
54+ ) ;
55+ } ,
56+ onShowing : ( event , context ) => {
57+ const enabled =
58+ getPref ( "showItemMenuTitleTranslation" ) &&
59+ context . items ?. every ( ( item ) => item . isRegularItem ( ) ) ;
60+ context . menuElem . hidden = ! enabled ;
61+ } ,
4962 } ,
50- icon : menuIcon ,
51- } ) ;
52- }
63+ ] ,
64+ } ) ;
5365}
0 commit comments