Callisto
Новичок
- Сообщения
- 4
- Репутация
- 0
Версия AutoIt: 3.3.8.1
Описание: Имеется дополнение для Notepad++, которое при выборе определенного пункта, отправляет содержимое соответствующего файла .тхт в открытое окно Notepad++.
Так вот, необходимо добавить подкаталоги в существующие каталоги.
Если с добавлением новых каталогов и пунктов к ним, еще как-то разобралась, то с подкаталогами - знаний и логики не хватило (толко несколько дней, как узнала об AutoIt).
Примечания: Вот тут можно ознакомиться с этим дополнением полностью RainSend 1.0 (надеюсь это не будет считаться рекламой или еще чем-то запрещенным )
Описание: Имеется дополнение для Notepad++, которое при выборе определенного пункта, отправляет содержимое соответствующего файла .тхт в открытое окно Notepad++.
Так вот, необходимо добавить подкаталоги в существующие каталоги.
Если с добавлением новых каталогов и пунктов к ним, еще как-то разобралась, то с подкаталогами - знаний и логики не хватило (толко несколько дней, как узнала об AutoIt).
Код:
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=RainSend.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Comment=Must be executed from the 'Run' menu item in NotePad++
#AutoIt3Wrapper_Res_Description=Sends Meter / Measure / Plugin templates to NotePad++
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_LegalCopyright=(C)2011 - Jeffrey Morley - Creative Commons Attribution-Non-Commercial-Share Alike 3.0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <TreeViewConstants.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <file.au3>
#Include <Misc.au3>
Opt("SendKeyDelay", 1)
Opt("GUICloseOnESC", 0)
_Singleton("RainSend")
If $CMDLine[0] = 0 Or $CMDLine[1] <> "NP++" Then
MsgBox(16,"RainSend","RainSend должены быть выполнен из вкладки Запуск в меню Notepad++")
Exit
EndIf
$lines = 0
Dim $FilesArray
$MainForm = GUICreate("RainSend", 220, 500, @DesktopWidth - 235, -1)
$MainTree = GUICtrlCreateTreeView(10, 10, 200, 447, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)
$Skins = GUICtrlCreateTreeViewItem("Skins", $MainTree)
$Measures = GUICtrlCreateTreeViewItem("Measures", $MainTree)
$Meters = GUICtrlCreateTreeViewItem("Meters", $MainTree)
$Plugins = GUICtrlCreateTreeViewItem("Plugins", $MainTree)
$Other = GUICtrlCreateTreeViewItem("Other", $MainTree)
$Mouse = GUICtrlCreateTreeViewItem("Mouse", $MainTree)
_FileReadToArray(@ScriptDir & '\RainSend.Files', $FilesArray)
if IsArray($FilesArray) = false Then
Exit
EndIf
For $i = 1 to $FilesArray[0]
$Full = StringSplit($FilesArray[$i], ",")
$Right = $Full[2]
If StringUpper(StringLeft($Right, 5)) = "SKINS" Then
GUICtrlCreateTreeViewItem($Full[1], $Skins)
ElseIf StringUpper(StringLeft($Right, 7)) = "MEASURE" Then
GUICtrlCreateTreeViewItem($Full[1], $Measures)
ElseIf StringUpper(StringLeft($Right, 5)) = "METER" Then
GUICtrlCreateTreeViewItem($Full[1], $Meters)
ElseIf StringUpper(StringLeft($Right, 6)) = "PLUGIN" Then
GUICtrlCreateTreeViewItem($Full[1], $Plugins)
ElseIf StringUpper(StringLeft($Right, 5)) = "OTHER" Then
GUICtrlCreateTreeViewItem($Full[1], $Other)
ElseIf StringUpper(StringLeft($Right, 5)) = "MOUSE" Then
GUICtrlCreateTreeViewItem($Full[1], $Mouse)
Else
EndIf
Next
$SendButton = GUICtrlCreateButton("Send", 54, 467, 75, 23)
$CloseButton = GUICtrlCreateButton("Close", 135, 467, 75, 23)
GUISetState(@SW_SHOWNORMAL, $MainForm)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $CloseButton
Exit
Case $SendButton
if ProcessExists("Notepad++.exe") Then
$item = GUICtrlRead($MainTree)
$text = GUICtrlRead($item, 1)
if $Text <> "Skins" And $Text <> "Meters" And $Text <> "Measures" And $Text <> "Plugins" And $Text <> "Other" And $Text <> "Mouse" Then
$index = _ArraySearch($FilesArray, $text,0,0,0,1)
$FileName = StringSplit($FilesArray[$index], ",")
$infile = FileOpen(@ScriptDir & '\' & $FileName[2], 0)
WinActivate("[CLASS:Notepad++]", "")
While 1
$line = FileReadLine($infile)
If @error = -1 Then ExitLoop
$lines = $lines + 1
Send($line & '{ESC}{ENTER}')
WEnd
For $i = 1 to $lines
Send('{UP}')
Next
FileClose($infile)
EndIf
Else
MsgBox(16,"RainSend","NotePad++ MUST be running to use RainSend")
EndIf
EndSwitch
WEnd
Примечания: Вот тут можно ознакомиться с этим дополнением полностью RainSend 1.0 (надеюсь это не будет считаться рекламой или еще чем-то запрещенным )