Advertisement
usamimi2323

JDownloader2 EventScript - Import context menu test code

Nov 11th, 2023 (edited)
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 5.56 KB | Source Code | 0 0
  1. //
  2. // JDownloader2 EventScript - Import context menu test code
  3. //
  4.  
  5. function rebuildMenu(x)
  6. {
  7.     function r(m)
  8.     {
  9.         //-----------------------------------------
  10.         // Set default value
  11.         if (! ('visible' in m)) m['visible'] = true;
  12.         if (! ('shortcut'in m)) m['shortcut'] = null;
  13.         if (! ('mnemonic'in m)) m['mnemonic'] = null;
  14.         if (! ('iconKey' in m)) m['iconKey'] = null;
  15.         //-----------------------------------------
  16.        
  17.         if (('items' in m) && m['items'].length)
  18.         {
  19.             m['type'] = 'CONTAINER';
  20.             m['className'] = 'org.jdownloader.controlling.contextmenu.MenuContainer';
  21.             m['actionData'] = {};
  22.            
  23.             m['items'].forEach(function(val,idx,list){
  24.                 r(list[idx]);
  25.             });
  26.         }
  27.         else if (m['name']=='セパレータ')
  28.         {
  29.             m['type'] = 'ACTION';
  30.             m['className'] = 'org.jdownloader.controlling.contextmenu.SeparatorData';
  31.             m['actionData'] = {};
  32.             m['items'] = [];
  33.         }
  34.         else
  35.         {
  36.             m['type'] = 'ACTION';
  37.             m['className'] = null;
  38.             m['actionData'] = {'clazzName':'org.jdownloader.extensions.eventscripter.GenericEventScriptTriggerContextMenuAction'};
  39.             m['items'] = [];
  40.         }
  41.     }
  42.     if (Array.isArray(x))
  43.         x.forEach(function(val,idx,list){r(list[idx]);});
  44.     else
  45.         (r)(x);
  46. }
  47.  
  48. var menu_items =
  49. [
  50.     {"name" : "セパレータ"},
  51.     {
  52.         "name" : "リネーム - ファイル名を揃える",
  53.         "iconKey" : "edit",
  54.         "items" : [
  55.             {"name" : "パッケージ名でファイル名を揃える"},
  56.             {"name" : "このファイル名でパッケージ内を全て揃える"},
  57.             {"name" : "セパレータ"},
  58.             {"name" : "ファイル名を揃える"},
  59.             {"name" : "ファイル名(作者名)を揃える"},
  60.             {"name" : "ファイル名(タイトル)を揃える"},
  61.             {"name" : "ファイル名(カテゴリ+作者名+タイトル)を揃える"},
  62.             {"name" : "セパレータ"},
  63.             {"name" : "[]内のスワップ"},
  64.             {"name" : "[]内の末尾切り捨て"},
  65.             {"name" : "[]内のxを×に変換"},
  66.             {"name" : "セパレータ"},
  67.             {"name" : "先頭括弧を後方送り"},
  68.             {"name" : "末尾の括弧削除"},
  69.             {"name" : "第○○巻化"}
  70.         ]
  71.     },
  72.     {
  73.         "name" : "リネーム - 修正/追加/置換",
  74.         "iconKey" : "edit",
  75.         "items" : [
  76.             {"name" : "(一般コミック) >>"},
  77.             {"name" : "(一般コミック・少女) >>"},
  78.             {"name" : "(一般コミック) [雑誌] >>"},
  79.             {"name" : "(一般小説) >>"},
  80.             {"name" : "(成年コミック) >>"},
  81.             {"name" : "(成年コミック) [雑誌] >>"},
  82.             {"name" : "(同人誌) >>"},
  83.             {"name" : "(18禁アニメ) >>"},
  84.             {"name" : "セパレータ"},
  85.             {"name" : "<< 別スキャン"},
  86.             {"name" : "<< 透かし有り"},
  87.             {"name" : "<< 寄せ集め"}
  88.         ]
  89.     },
  90.     {
  91.         "name" : "移動/ファイル/再登録",
  92.         "iconKey" : "folder_add",
  93.         "items" : [
  94.             {
  95.                 "name" : "この名前を使用して新しいパッケージに移動",
  96.                 "iconKey" : "folder_add"
  97.             },
  98.             {
  99.                 "name" : "同じ名前のパッケージをまとめる"
  100.             },
  101.             {"name" : "セパレータ"},
  102.             {
  103.                 "name" : "リンクグラバーへ再登録",
  104.                 "iconKey" : "linkgrabber"
  105.             },
  106.             {"name" : "セパレータ"},
  107.             {
  108.                 "name" : "RAR5をZipに変換",
  109.                 "iconKey" : "extract"
  110.             }
  111.         ]
  112.     },
  113.     {
  114.         "name" : "EveryThingで検索(作者名)",
  115.         "iconKey" : "search",
  116.         "shortcut"   : "pressed F1"
  117.     },
  118.     {
  119.         "name" : "EveryThingで検索(タイトル)",
  120.         "iconKey" : "search"
  121.     },
  122.     {
  123.         "name" : "WEBで検索",
  124.         "iconKey" : "url",
  125.         "items" : [
  126.             {"name" : "********nfo"},
  127.             {"name" : "********om"},
  128.             {"name" : "********org"},
  129.             {"name" : "********net"},
  130.             {"name" : "********"},
  131.             {"name" : "セパレータ"},
  132.             {"name" : "google.com (作者)"},
  133.             {"name" : "google.com (タイトル)"},
  134.            
  135.         ]
  136.     }
  137. ];
  138.  
  139.  
  140. rebuildMenu(menu_items);
  141.  
  142. var root_container = getRootContextMenu("DownloadTableContext");
  143. if (root_container && root_container.type == 'CONTAINER' && Array.isArray(root_container.items))
  144. {
  145.     if (Array.isArray(menu_items))
  146.         menu_items.forEach(function(menu_item){root_container.items.push(menu_item);});
  147.     else
  148.         root_container.items.push(menu_items);
  149.  
  150.     setRootContextMenu(root_container, "DownloadTableContext");
  151.    
  152.     callAPI("system","restartJD");
  153. }
  154.  
  155. function getRootContextMenu(context) {
  156.     var storage = "cfg/menus_v2/" + context;
  157.     var interface = "org.jdownloader.controlling.contextmenu.ContextMenuConfigInterface";
  158.     var root_menu = callAPI(
  159.         "config", "get",
  160.         interface,
  161.         storage,
  162.         "menu"
  163.     );
  164.    
  165.     return root_menu;
  166. }
  167.  
  168. function setRootContextMenu(root_menu, context) {
  169.     var storage = "cfg/menus_v2/"+context;
  170.     var interface = "org.jdownloader.controlling.contextmenu.ContextMenuConfigInterface";
  171.     return callAPI(
  172.         "config", "set",
  173.         interface,
  174.         storage,
  175.         "menu",
  176.         root_menu
  177.     );
  178. }
  179.  
  180. //
  181. // [appendix]
  182. //
  183. // test code for export menu, *.jdDLMenu/*.jdLGMenu/...
  184. //
  185. // context: <DownloadTableContext|LinkgrabberContext|DownloadTabBottomBar|LinkgrabberTabBottomBar|MYJDDownloadTableContext|MainMenu|MainToolbar|TrayIcon>
  186. //
  187. function getExportedMenu(context) {
  188.     var storage = "cfg/menus_v2/"+context;
  189.     var interface = "org.jdownloader.controlling.contextmenu.ContextMenuConfigInterface";
  190.     var exported_menu = {};
  191.     // object
  192.     exported_menu['root'] = callAPI(
  193.         "config", "get",
  194.         interface,
  195.         storage,
  196.         "menu"
  197.     );
  198.    
  199.     // array
  200.     exported_menu['unused'] = callAPI(
  201.         "config", "get",
  202.         interface,
  203.         storage,
  204.         "unuseditems"
  205.     );
  206.    
  207.     return (exported_menu['root']) ? exported_menu : null;
  208. }
  209.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement