' InsertMsgBox.vbs
'========================   Описание   =====================================
' В файлах скриптинга (Vbs, Js, Au3...) вставляет соответствующую функцию MsgBox...
' выводящую информацию для проверяемой выделенной переменной или вычисляемых выражений
' Если проверяемая переменная не выделена, она выделяется
' Необходимо курсор поставить либо на переменную либо справа от неё
' Для отображения MsgBox для выражения - необходимо его выделить
'========================  Параметр ========================================
' 1 - вставка после переменной
' 2 - вставка до переменной
' 3 - вставка до и после переменной
'========================    Примеры    ====================================
' -"Вставить MsgBox после переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "1")  Icon("%a\AkelPadImage.dll",627)
' -"Вставить MsgBox до переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "2")  Icon("%a\AkelPadImage.dll",626)
' -"Вставить MsgBox до и после переменной" Call("Scripts::Main", 1, "InsertMsgBox.vbs", "3")  Icon("%a\AkelPadImage.dll",625)

' используется Functions.vbs, который следует положить ...AkelFiles\Plugs\Scripts\Include\

' Автор:           Аверин Андрей
' Версия:          1.5 (11.01.2011 - 01.09.2012)
' Mail:            Averin-And@yandex.ru
' Site:            http://tc-image.3dn.ru/forum/9-382-1157-16-1333712982
' Site:            http://akelpad.sourceforge.net/forum/viewtopic.php?p=13098#13098
'===========================================================================
If AkelPad.GetEditWnd() = 0 Then WScript.Quit
N = 1 : k = Chr(34)
if WScript.Arguments.Length > 0 Then n = CInt(WScript.Arguments(0))
With AkelPad  Call .Include("Functions.vbs") : pName = .GetSelText() : Curs = .GetSelStart()
  If Len(pName) = 0 Then pName = GetWordLeft
  If Len(pName) = 0 Then WScript.Quit
  Call SetRedraw(.GetEditWnd(), False) : Call .SendMessage(.GetEditWnd(), 3185, 3, True)

  pExt = UCase(GetExtFile)
  If InStr("VBS;JS;AU3", pExt) = 0 Then Call EndRedraw
  Exx = ExtLine(pExt, pName)
  Select Case N
    Case 1 Text = vbNewLine & Exx : poz = PosEndLine
    Case 2 Text = Exx & vbNewLine : poz = PosBegLine
    Case 3 Text = vbNewLine & Exx : poz = PosEndLine : Text2 = Exx & vbNewLine : poz2 = PosBegLine
  End Select
  If N > 1 Then Curs = Curs + Len(Exx) + 1
  Call .SetSel(poz, poz)
  Call .ReplaceSel(Text)
  If Len(Text2) > 0 Then : Call .SetSel(poz2, poz2) : Call .ReplaceSel(Text2) : End If

  Call .SetSel(Curs, Curs)
  Call .SendMessage(.GetEditWnd(), 3185, 3, False)
  Call SaveEditFile : Call EndRedraw
  Call .SendMessage(.GetEditWnd(), 3376, 3, 0)
End With

' функция присваивает, расширению соответствующую функцию MsgBox ...
' есть возможность добавить своё или исправить имеющееся
Function ExtLine(Ext, Name)
  SName = Name : Slovo = "Переменная "

  if Instr(SName, """") > 0 Then
    SName = Replace(SName, k, k & " & Chr(34) & " & k) : JSName = Replace(SName, k, k & " + Chr(34) + " & k)
  End if

  Stroka = "(,&+-*^/"
  For nn = 1 To Len(Stroka)
    if Instr(SName, Mid(Stroka, nn, 1)) > 0 Then Slovo = "Выражение "
  Next
  Select Case Ext
    Case "VBS"
      Line = "MsgBox " & k & Slovo & SName & " =" & k & " & vbNewLine & " & k & "<" & k & " & " & Name & " & " & k & ">" & k
    Case "JS"
      Line = "AkelPad.MessageBox(0," & k & JSName & " =>" & k & " + " & Name & " + " & k & "<=" & k & ", " & k & Slovo & Name & k & ", 64);"
    Case "AU3"
      if Left(Name,1) <> "$" Then Name = "$" & Name
      Line = "MsgBox(4096, " & k & Slovo & k & " & " & SName & " , " & k & Name & " =>" & k & " & " & Name & " & " & k & "<=" & k & ")"
  End Select
  ExtLine = Line
End Function