Advertisement
AZJIO

Menu_by_type.js (AkelPad)

Jun 27th, 2019
750
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // var oSys     = AkelPad.SystemFunction();
  2. var hEditWnd = AkelPad.GetEditWnd();
  3. var hMainWnd=AkelPad.GetMainWnd();
  4. if (!AkelPad.Include("ShowMenu.js")) WScript.Quit();
  5.  
  6. var sEditFile = AkelPad.GetEditFile(0);
  7. var sFileExt  = AkelPad.GetFilePath(sEditFile, 4 /*CPF_FILEEXT*/);
  8. var sSelText  = AkelPad.GetSelText();
  9.  
  10. var lpItems; // массив пунктов меню
  11. var nItem; // число пунктов меню
  12.  
  13. // Получение координат меню
  14. var nX, nY;
  15. var lpRECT = AkelPad.MemAlloc(16 /*sizeof(RECT)*/);
  16.  
  17. AkelPad.SystemFunction().Call("User32::GetWindowRect", AkelPad.GetEditWnd(), lpRECT);
  18.  
  19. nX = AkelPad.MemRead(_PtrAdd(lpRECT, 0), 3 /*DT_DWORD*/);
  20. nY = AkelPad.MemRead(_PtrAdd(lpRECT, 4), 3 /*DT_DWORD*/);
  21. nX += (AkelPad.MemRead(_PtrAdd(lpRECT,  8), 3 /*DT_DWORD*/) - nX) / 2;
  22. nY += (AkelPad.MemRead(_PtrAdd(lpRECT, 12), 3 /*DT_DWORD*/) - nY) / 2;
  23.  
  24. AkelPad.MemFree(lpRECT);
  25. // Конец: Получение координат меню
  26.  
  27. switch (sFileExt.toLowerCase())
  28. {
  29.  
  30.  
  31.  
  32.   case "reg":
  33.     // Название пункта учитывать что при появлении меню можно нажать первую букву пункта, чтобы вызвать пункт (текущая раскладка клавиатуры учитывается)
  34.     lpItems=[["Открыть выделенный раздел реестра", MF_NORMAL, 101],
  35.              ["Запуск JumpReg", MF_NORMAL, 102],
  36.              ["Поиск в реестре", MF_NORMAL, 103]];
  37.     nItem=ShowMenu(lpItems, nX-250, nY-100);
  38.     if (nItem == -1)
  39.       break;
  40.     else
  41.       switch (lpItems[nItem][2])
  42.       {
  43.         case 101:
  44.           var sAutoitPath = "C:\\AutoIt3\\";
  45.           // добавьте #RequireAdmin в начало скрипта JumpRegCMD.au3
  46.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\JumpRegCMD.au3" "' + sSelText + '"');
  47.           break;
  48.         case 102:
  49.           var wsh         = new ActiveXObject("WScript.Shell");
  50.           var APPDATA = wsh.ExpandEnvironmentStrings("%APPDATA%")
  51.           // AkelPad.Exec('"' + APPDATA + '\\AZJIO_Soft\\JumpReg\\JumpReg.exe" "' + sSelText + '"'); // прыжок в реестр
  52.           AkelPad.Exec('"' + APPDATA + '\\AZJIO_Soft\\JumpReg\\JumpReg.exe"');
  53.           break;
  54.         case 103:
  55.           var wsh         = new ActiveXObject("WScript.Shell");
  56.           var APPDATA = wsh.ExpandEnvironmentStrings("%APPDATA%")
  57.           AkelPad.Exec('"' + APPDATA + '\\AZJIO_Soft\\JumpReg\\RegScanner\\RegScanner.exe"');
  58.           break;
  59.       };
  60.     break;
  61.  
  62.  
  63.  
  64.   case "htm":
  65.   case "html":
  66.     // Название пункта учитывать что при появлении меню можно нажать первую букву пункта, чтобы вызвать пункт (текущая раскладка клавиатуры учитывается)
  67.     lpItems=[["Генерировать ссылку на этот файл", MF_NORMAL, 101],
  68.              ["Tidy", MF_NORMAL, 102]];
  69.     nItem=ShowMenu(lpItems, nX-250, nY-100);
  70.     if (nItem == -1)
  71.       break;
  72.     else
  73.       switch (lpItems[nItem][2])
  74.       {
  75.         case 101:
  76.           var sText = AkelPad.ReadFile(sEditFile);
  77.           if(/<title>(.+?)<\/title>/.test(sText)) {
  78.             sText = RegExp.$1;
  79.             var sFileName  = AkelPad.GetFilePath(sEditFile, 3);
  80.             AkelPad.SetClipboardText('<a href="' + sFileName + '.htm">' + sText + '</a>');
  81.           }
  82.           break;
  83.         case 102:
  84.           AkelPad.Call("Scripts::Main", 1, "tidy.js", "")
  85.           break;
  86.       };
  87.     break;
  88.  
  89.  
  90.  
  91.   case "pb":
  92.     var sPBPath = "C:\\D\\PureBasic\\Purebasic 5.62 x86\\";
  93.     // Название пункта учитывать что при появлении меню можно нажать первую букву пункта, чтобы вызвать пункт (текущая раскладка клавиатуры учитывается)
  94.     lpItems=[["Запуск", MF_NORMAL, 101],
  95.              ["Компилировать", MF_NORMAL, 102],
  96.              ["Check", MF_NORMAL, 103],
  97.              ["Debugger", MF_NORMAL, 104],
  98.              ["Справка (RU)", MF_NORMAL, 105],
  99.              ["Прыжок к процедуре", MF_NORMAL, 106]];
  100.     nItem=ShowMenu(lpItems, nX-250, nY-100);
  101.     if (nItem == -1)
  102.       break;
  103.     else
  104.       switch (lpItems[nItem][2])
  105.       {
  106.         case 101:
  107.           AkelPad.Call("Log::Output", 1, '"' + sPBPath + 'Compilers\\pbcompiler.exe" "' + sEditFile + '"', "%temp%", '^Error: Line (\d+)', '/GOTOLINE=\1:1', 866, 1251);
  108.           break;
  109.         case 102:
  110.           AkelPad.Call("Log::Output", 1, '"' + sPBPath + 'Compilers\\pbcompiler.exe" "' + sEditFile + '" /EXE  "' + sEditFile + '.exe"', "", '^Error: Line (\d+)', '/GOTOLINE=\1:1', 866, 1251);
  111.           break;
  112.         case 103:
  113.           AkelPad.Call("Log::Output", 1, '"' + sPBPath + 'Compilers\\pbcompiler.exe" "' + sEditFile + '" -k', "", '^Error: Line (\d+)', '/GOTOLINE=\1:1', 866, 1251);
  114.           break;
  115.         case 104:
  116.           AkelPad.Call("Log::Output", 1, '"' + sPBPath + 'Compilers\\pbcompiler.exe" "' + sEditFile + '" --debugger', "%temp%", '^Error: Line (\d+)', '/GOTOLINE=\1:1', 866, 1251);
  117.           break;
  118.         case 105:
  119.           var sAutoitPath = "C:\\AutoIt3\\";
  120.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sPBPath + 'Instrument_azjio\\Help\\Help.au3" ' + sSelText + ' 1');
  121.           break;
  122.         case 106:
  123.           AkelPad.TextFind(hEditWnd, 'Procedure ' + sSelText, 0x00000001|0x00200000 /*FRF_DOWN|FRF_BEGINNING*/);
  124.           break;
  125.       };
  126.     break;
  127.  
  128.  
  129.  
  130.   case "au3":
  131.     var sAutoitPath = "C:\\AutoIt3\\";
  132.     // Название пункта учитывать что при появлении меню можно нажать первую букву пункта, чтобы вызвать пункт (текущая раскладка клавиатуры учитывается)
  133.     lpItems=[["Запуск", MF_NORMAL, 101],
  134.              ["Запуск + Консоль", MF_NORMAL, 104],
  135.              ["Tidy", MF_NORMAL, 102],
  136.              ["Компилировать", MF_NORMAL, 103],
  137.              // ["", MF_SEPARATOR],
  138.              ["Include Helper", MF_NORMAL, 105],
  139.              // ["", MF_SEPARATOR],
  140.              ["Прыжок к функции", MF_NORMAL, 106],
  141.              ["Справка (RU)", MF_NORMAL, 107],
  142.              ["Выделенный текст в AU3", MF_NORMAL, 108],
  143.              ["Список переменных и функций", MF_NORMAL, 110],
  144.              ["Переименование переменных", MF_NORMAL, 111],
  145.              ["Выделенные переменные в отладчик", MF_NORMAL|MF_LAST, 109]];
  146.     nItem=ShowMenu(lpItems, nX-250, nY-100);
  147.     if (nItem == -1)
  148.       break;
  149.     else
  150.       switch (lpItems[nItem][2])
  151.       {
  152.         case 101:
  153.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sEditFile + '"');
  154.           break;
  155.         case 102:
  156.           AkelPad.Exec('"' + sAutoitPath + 'SciTE\\Tidy\\Tidy.exe" "' + sEditFile + '" /reel /bdir=' + sAutoitPath + 'BackUp');
  157.           break;
  158.         case 103:
  159.           AkelPad.Exec('"' + sAutoitPath + 'SciTE\\AutoIt3Wrapper\\AutoIt3Wrapper.exe /in " "' + sEditFile + '"');
  160.           break;
  161.         case 104:
  162.           AkelPad.Call("Log::Output", 1, '"' + sAutoitPath + 'AutoIt3.exe" "' + sEditFile + '"', '', '', '', 866, 1251)
  163.           break;
  164.         case 105:
  165.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\Include_Helper.au3" "' + sEditFile + '"');
  166.           break;
  167.         case 106:
  168.           AkelPad.TextFind(hEditWnd, 'Func ' + sSelText, 0x00000001|0x00200000 /*FRF_DOWN|FRF_BEGINNING*/);
  169.           break;
  170.         case 107:
  171.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'HELP_AutoIt3.au3" ' + sSelText + ' 1');
  172.           break;
  173.         case 108:
  174.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\txt2au3.au3" "' + sSelText + '"');
  175.           break;
  176.         case 109:
  177.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\debugger.au3" "' + sSelText + '"');
  178.           break;
  179.         case 110:
  180.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\list_var_funk.au3" "' + sEditFile + '"');
  181.           break;
  182.         case 111:
  183.           AkelPad.Exec('"' + sAutoitPath + 'AutoIt3.exe" "' + sAutoitPath + 'Tools\\Renaming_variables.au3" "' + sEditFile + '"');
  184.           break;
  185.       };
  186.     break;
  187.  
  188.  
  189.  
  190.   default:
  191.     AkelPad.MessageBox(hMainWnd, "Этот тип файлов не поддерживается (существующие:reg, html, au3, pb).", "Скрипт Старт F6", 64 /*MB_ICONINFORMATION*/);
  192.     break;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement