WinName = Scriptlet Library
SetWorkingDir, %A_ScriptDir%
;loading settings
IniRead, PosX, Library.ini, Settings, PosX, 100
IniRead, PosY, Library.ini, Settings, PosY, 100
IniRead, SizeW, Library.ini, Settings, SizeW, 600
IniRead, SizeH, Library.ini, Settings, SizeH, 405
IniRead, LastUsed, Library.ini, Settings, LastUsed, --
;reading scriptlets
FileRead, ScriptFile, Library.ini
Loop, Parse, ScriptFile, `n
{
IfInString, A_LoopField, <---Start_
StartFile = 1
IfNotEqual, StartFile, 1, Continue
;from here the lines which contain scripts are parsed one by one
;scriptlet started
IfInString, A_LoopField, <---Start_
{
StringReplace, ItemName, A_LoopField, <---Start_,
StringReplace, ItemName, ItemName, --->,
StringReplace, ItemName, ItemName, `n,, A
StringReplace, ItemName, ItemName, `r,, A
ItemList = %ItemList%|%ItemName%
ItemRunning = 1
Continue
}
;the current scriptlet ends here
IfInString, A_LoopField, <---End_
{
ItemRunning = 0
Continue
}
;the current scriptlet is getting parsed
IfEqual, ItemRunning, 1
{
StringReplace, NoSpaceName, ItemName, %A_Space%,_Space_, A
StringTrimRight, CurrScriptlet, %NoSpaceName%_Script, 0
%NoSpaceName%_Script = %CurrScriptlet%`n%A_LoopField%
}
}
StringTrimLeft, ItemList, ItemList, 1
Sort, ItemList, D|
;removing extra carriage returns from scriptlets
Loop, parse, ItemList, |
{
StringReplace, NoSpaceName, A_LoopField, %A_Space%,_Space_, A
StringTrimLeft, %NoSpaceName%_Script, %NoSpaceName%_Script, 1
StringRight, Test, %NoSpaceName%_Script, 2
IfEqual, Test, `r`n
StringTrimRight, %NoSpaceName%_Script, %NoSpaceName%_Script, 2
}
;creating window and controls
Gui, +Resize
Gui, Color,, 0xE9F5F0
Gui, Add, ListBox, x2 y37 w130 h342 vSelItem gSelector, %ItemList%
Gui, Add, Button, x196 y7 w50 h20, &Save
Gui, Add, Button, x136 y7 w50 h20, &Copy
Gui, Add, Button, x26 y7 w20 h20, +
Gui, Add, Button, x66 y7 w20 h20, --
Gui, Font, , Courier
Gui, Add, Edit, x132 y37 w460 h342 Multi vEditData,
Gui, Show, x%PosX% y%PosY% h0 w0, %WinName%
WinMove, %WinName%,,,, %SizeW%, %SizeH%
;last selection
Control, ChooseString, %LastUsed%, ListBox1, %WinName%
;resize settings
WinGetPos,,, WinW, WinH, %WinName%
ControlGetPos,,, C1W, C1H, ListBox1, %WinName%
ControlGetPos,,, C2W, C2H, Edit1, %WinName%
Diff2W := WinW - C2W
Return
Selector:
Gui, Submit, NoHide
StringReplace, NoSpaceName, SelItem, %A_Space%,_Space_, A
CurrData := %NoSpaceName%_Script
GuiControl,, Edit1, %CurrData%
Return
Button+:
InputBox, ItemName, Enter Scriptlet Name:,,, 200, 90
IfNotEqual, ErrorLevel, 0, Return
IfEqual, ItemName,, Return
ControlGetText, CurrData, Edit1, %WinName%
FileAppend, <---Start_%ItemName%--->`n%CurrData%`n<---End_%ItemName%--->`n, Library.ini
StringReplace, NoSpaceName, ItemName, %A_Space%,_Space_, A
%NoSpaceName%_Script = %CurrData%
ItemList = %ItemList%|%ItemName%
Sort, ItemList, D|
GuiControl,, ListBox1, |%ItemList%
Return
Button--:
MsgBox, 4, Delete Scriptlet?, Please confirm deletion of current scriptlet.
IfMsgBox, Yes
{
Gui, Submit, NoHide
ItemList = |%ItemList%|
StringReplace, ItemList, ItemList, |%SelItem%|,|, A
StringTrimLeft, ItemList, ItemList, 1
StringTrimRight, ItemList, ItemList, 1
}
GuiControl,, ListBox1, |%ItemList%
Return
ButtonSave:
Gui, Submit, NoHide
ControlGetText, CurrData, Edit1, %WinName%
StringReplace, NoSpaceName, SelItem, %A_Space%,_Space_, A
%NoSpaceName%_Script = %CurrData%
Return
ButtonCopy:
ControlGetText, Clipboard, Edit1, %WinName%
Return
~Esc::
IfWinNotActive, %WinName%,, Return
GuiClose:
FileDelete, Library.ini
WinGetPos, PosX, PosY, SizeW, SizeH, %WinName%
IniWrite, %PosX%, Library.ini, Settings, PosX
IniWrite, %PosY%, Library.ini, Settings, PosY
IniWrite, %SizeW%, Library.ini, Settings, SizeW
IniWrite, %SizeH%, Library.ini, Settings, SizeH
IniWrite, %SelItem%, Library.ini, Settings, LastUsed
FileAppend, `r`n, Library.ini
ControlGet, ItemList, List,, ListBox1, %WinName%
Loop, Parse, ItemList, `n
{
IfEqual, A_LoopField,, Continue
StringReplace, NoSpaceName, A_LoopField, %A_Space%,_Space_, A
StringTrimRight, CurrScriptlet, %NoSpaceName%_Script, 0
FileAppend, `r`n<---Start_%A_LoopField%--->`r`n%CurrScriptlet%`r`n<---End_%A_LoopField%--->`r`n, Library.ini
}
ExitApp
Return
GuiSize:
;function adapted from jonny's clip.ahk. thanx jonny!
new_w := (A_GuiWidth - 5)
new_h := (A_GuiHeight - 39)
field_y := (A_GuiHeight - 40)
new_w := (new_w / 4)
guicontrol,move,SelItem,w%new_w% h%field_y%
new_x := (new_w + 5)
new_w := (new_w * 3)
guicontrol,move,EditData,w%new_w% h%field_y% x%new_x%
Return
Tab::
WinGetTitle, ATitle, A
ControlGetFocus, ACtrl, A
OtherWin = 1
IfEqual, ATitle, %WinName%
IfEqual, ACtrl, Edit1
{
Send, ^{Tab}
OtherWin = 0
}
IfEqual, OtherWin, 1
Send, {Tab}
Return