*****************************************************************
***                  Log AkelPad plugin v5.2                  ***
*****************************************************************

2012-2016   aka Instructor (Shengalts@mail.ru)


***  ***

        .


***  ***

Log::Watch
 .

Log::Output
 .

Log::Settings
  .


***   Log::Output ***

Call("Log::Output", 1, "PROGRAM", "WORKDIR", "REPATTERN", "RETAGS", INPUTCODEPAGE, OUTPUTCODEPAGE, FLAGS, "ALIAS")
  :
    1
          .
    "PROGRAM"
       .   "",    "REPATTERN"  "RETAGS".
    "WORKDIR"
       .
    "REPATTERN"
        .           .
    "RETAGS"
        .
        /FILE=\1           .
        /GOTOLINE=\2:\3      .
        /GOTOBYTE=\2         .
        /GOTOCHAR=\2         .
        /FRAME=\1            .
    INPUTCODEPAGE
             .
       -1,    .
       -2   ,      .
    OUTPUTCODEPAGE
            .
       -1,    .
       -2   ,      .
    FLAGS ( ):
         1     .
         2      .
         4      .
         8     .
        16     .
        32   .
        64  ,     .    Call("Log::Output", 6).
       128    ,      .

      4096     - ,   ,   .
      8192     -  .
     16384     - .
             :     .

   1048576     - ,   ,   .
   2097152     -  .
   4194304     -   .
   8388608     -  .
             :    -  .
    "ALIAS"
         Coder , : ".html".    .

   (   ):
    Call("Log::Output", 1, `tracert akelpad.sourceforge.net`)
   (     ):
    Call("Log::Output", 1, `ipconfig`, "", "", "", -1, -1, 1048577)
   (    ):
    Call("Log::Output", 1, `"%d\Build.cmd" /S`, "%d", "^\s*(.*)[(:](\d+)([,:](\d+))?[):]", "/FILE=\1 /GOTOLINE=\2:\4", -2, -2, 4)

Call("Log::Output", 2, *WINDOW, *DOCK)
  :
    2
          .    Scripts .
    *WINDOW
        ,      .
    *DOCK
        ,      DOCK.
  :
    WScript.Echo(GetOutputWindow());

    function GetOutputWindow()
    {
      var lpWnd;
      var hWnd=0;

      if (lpWnd=AkelPad.MemAlloc(_X64?8:4 /*sizeof(HWND)*/))
      {
        AkelPad.Call("Log::Output", 2, lpWnd);
        hWnd=AkelPad.MemRead(lpWnd, 2 /*DT_QWORD*/);
        AkelPad.MemFree(lpWnd);
      }
      return hWnd;
    }

Call("Log::Output", 3, *EXECSTATE, *PLUGINTHREAD, *PROCESSHANDLE, *PROCESSID, *EXITCODE)
  :
    3
           .    Scripts .
    *EXECSTATE
        ,     .   NULL.
       :
        0   .
        1     .
        2   ,     , .
        4     .
    *PLUGINTHREAD
        ,     ,    .   NULL.
    *PROCESSHANDLE
        ,      .   NULL.
    *PROCESSID
        ,      .   NULL.
    *EXITCODE
        ,      .   NULL.
  :
    WScript.Echo(GetExecState());

    function GetExecState()
    {
      var lpState;
      var nState=0;

      if (lpState=AkelPad.MemAlloc(4 /*sizeof(DWORD)*/))
      {
        AkelPad.Call("Log::Output", 3, lpState);
        nState=AkelPad.MemRead(lpState, 3 /*DT_DWORD*/);
        AkelPad.MemFree(lpState);
      }
      return nState;
    }

Call("Log::Output", 4, "TEXT", TEXTLEN, APPEND, CODEPAGE, "ALIAS")
  :
    4
      /    .    Scripts .
    "TEXT"
        .
    TEXTLEN
        (  -1).  -1,    NULL .
    APPEND (  ):
      0   ,    .
      1   ,     ( ).
      2   ,    ,  .
    CODEPAGE
        ANSI .    -   ANSI .  ,     Unicode.
    "ALIAS"
         Coder , : ".html".    .

Call("Log::Output", 5, "TEXT", TEXTLEN, APPEND)
   ,   4.   .

Call("Log::Output", 6)
  :
    6
        .
   (  GetOutputWindow  GetExecState):
    WScript.Echo(GetStdOut("ipconfig"));

    function GetStdOut(pCmd)
    {
      var hWndOutput=GetOutputWindow();
      var pStdOut="";
      var bClose=true;

      AkelPad.Call("Log::Output", 1, pCmd, "", "", "", -1, -1, 64);
      while (GetExecState())
        WScript.Sleep(100);

      if (hWndOutput)
        bClose=false;
      else
        hWndOutput=GetOutputWindow();

      if (hWndOutput)
      {
        AkelPad.SetEditWnd(hWndOutput);
        pStdOut=AkelPad.GetTextRange(0, -1);
        AkelPad.SetEditWnd(0);
        if (bClose) AkelPad.Call("Log::Output", 6);
      }
      return pStdOut;
    }


***   Log::Settings ***

Call("Log::Settings", 1, PAGE)
  :
    1
           .
    PAGE
       ,   .
