Skip to content

Instantly share code, notes, and snippets.

@hi5
Created January 8, 2019 21:47
Show Gist options
  • Save hi5/d3821149e3a1f50efdef2d367b99cfdd to your computer and use it in GitHub Desktop.
Save hi5/d3821149e3a1f50efdef2d367b99cfdd to your computer and use it in GitHub Desktop.
TFMENU
/*
Name : TF Menu/Toolbar - making TF available in your favourite editor and/or filemanager
Requirements : TF Lib https://github.com/hi5/TF or
http://www.autohotkey.com/forum/viewtopic.php?t=46195 or
http://www.autohotkey.net/~hugov/tf.ahk
Version : 0.2
Updated : 31 December 2009
Documentation : http://www.autohotkey.com/forum/viewtopic.php?p=319645
AHK Forum : http://www.autohotkey.com/forum/viewtopic.php?p=319645
Credits : HugoV
History : http://www.autohotkey.com/forum/viewtopic.php?p=319645
*/
; ini
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetBatchLines, -1
SplitPath, A_AhkPath, , _AHK_LIBDIR
_AHK_LIBDIR .= "\lib\tf.ahk"
_FileManagers=TTOTAL_CMD,ExploreWClass,CabinetWClass
_TFMVer=TFMenu v0.1
; pre-build menu
Menu, Submenu1, Add, TF_Find, MenuHandler
Menu, Submenu1, Add, TF_Replace, MenuHandler
Menu, Submenu1, Add, TF_ReplaceInLines, MenuHandler
Menu, Submenu1, Add, TF_ReplaceLine, MenuHandler
Menu, Submenu1, Add, TF_RegExReplace, MenuHandler
Menu, Submenu1, Add, TF_RegExReplaceInLines, MenuHandler
Menu, Submenu1, Add, TF_InsertPrefix, MenuHandler
Menu, Submenu1, Add, TF_InsertSuffix, MenuHandler
Menu, Submenu1, Add, TF_InsertLine, MenuHandler
Menu, Submenu1, Add, TF_Tab2Spaces, MenuHandler
Menu, Submenu1, Add, TF_Spaces2Tab, MenuHandler
Menu, Submenu1, Add, TF_CountLines, MenuHandler
Menu, Submenu2, Add, TF_RemoveLines, MenuHandler
Menu, Submenu2, Add, TF_RemoveBlankLines, MenuHandler
Menu, Submenu2, Add, TF_RemoveDuplicateLines, MenuHandler
Menu, Submenu2, Add, TF_TrimLeft, MenuHandler
Menu, Submenu2, Add, TF_TrimRight, MenuHandler
Menu, Submenu2, Add, TF_RangeReplace, MenuHandler
Menu, Submenu3, Add, TF_AlignLeft, MenuHandler
Menu, Submenu3, Add, TF_AlignCenter, MenuHandler
Menu, Submenu3, Add, TF_AlignRight, MenuHandler
Menu, Submenu3, Add, TF_Wrap, MenuHandler
Menu, Submenu3, Add, TF_WhiteSpace, MenuHandler
Menu, Submenu4, Add, TF_ColGet, MenuHandler
Menu, Submenu4, Add, TF_ColPut, MenuHandler
Menu, Submenu4, Add, TF_ColCut, MenuHandler
Menu, Submenu5, Add, TF_Sort, MenuHandler
Menu, Submenu5, Add, TF_ReadLines, MenuHandler
Menu, Submenu5, Add, TF_Count, MenuHandler
Menu, Submenu5, Add, TF_Tail, MenuHandler
Menu, Submenu5, Add, TF_SplitFileByLines, MenuHandler
Menu, Submenu5, Add, TF_SplitFileByText, MenuHandler
Menu, Submenu5, Add, TF_LineNumber, MenuHandler
Menu, Submenu5, Add, TF_ReverseLines, MenuHandler
Menu, MyMenu, Add, Find && Replace, :Submenu1
Menu, MyMenu, Add, Delete, :Submenu2
Menu, MyMenu, Add, Format (Align`, Wrap), :Submenu3
Menu, MyMenu, Add, Columns, :Submenu4
Menu, MyMenu, Add, Misc., :Submenu5
Return
#z::
WorkWithSelection=1
WinGet, Active_Window_ID, ID, A
WinGetClass, Active_Window_Class, A
ControlGetFocus, ActiveControl_Class, A
ClipSaved := ClipboardAll ; Save the entire clipboard to a variable of your choice.
Clipboard=
ClipWait, 0
Send ^c ; copy selection to clipboard, if any
ClipWait, 0
If (Clipboard = "") ; clipboard is empty so no selected text, reset clipboard to content
{
Clipboard:=ClipSaved
ClipWait, 0
ClipSaved =
WorkWithSelection=0
}
Menu, MyMenu, Show
Return
MenuHandler:
TFCmd:=TF_Find(_AHK_LIBDIR, 1, 0, A_ThisMenuItem , 1, 1)
TFVersion:=TF_Find(_AHK_LIBDIR, 1, 0, "Version :" , 1, 1)
Gui, +ToolWindow
; Start building GUI
TFCmd=%TFCmd% ; autotrim
y=10
ParaCount=0
TFText=
Loop, Parse, TFCmd, CSV
{
If (A_Index = 1)
Continue
StringReplace,TFFunc,A_LoopField,%A_Space%,,All
StringReplace,TFFunc,TFFunc,(,,All
StringReplace,TFFunc,TFFunc,),,All
StringReplace,TFFunc,TFFunc,`r`n,,All
StringReplace,TFFunc,TFFunc,`r,,All
StringReplace,TFFunc,TFFunc,`n,,All
StringReplace,TFFunc,TFFunc,",,All ; "
StringSplit, Para, TFFunc, =
Para1 = %Para1% ; AutoTrim
Gui, Add, Text, X10 Y%y% w150, %Para1%
Gui, Add, Edit, X100 Y%y% w150 v_Para%A_Index%, %Para2%
Y:=Y+30
ParaCount++
}
Gui ,Add, Checkbox, 0x8000 x260 y15 vReplace, Replace input (files)
Gui, Add, Button, w100 x260 y40 0x8000 default, &OK
Gui, Add, Button, w100 x260 y70 0x8000 , &Cancel
Gui, Add, Button, w100 x260 y100 0x8000 gButtonHelp, &Help (online)
Gui, Add, StatusBar,,
SB_SetParts(200)
SB_SetText("TF Lib " . TFVersion,1)
SB_SetText(_TFMVer,2)
Gui, Show, w400 h200, %A_ThisMenuItem%
Return
ButtonOK:
Gui, Submit
Gui, Destroy
If Active_Window_Class in %_FileManagers%
{
If (Replace = 1)
Replace := "!"
Else
Replace=
}
Else
Replace=
If (ParaCount = 2)
TFText:=%A_ThisMenuItem%(Replace . Clipboard, _Para2, _Para3)
If (ParaCount = 3)
Clipboard:=%A_ThisMenuItem%(Replace . Clipboard, _Para2, _Para3, _Para4)
If (ParaCount = 4)
Clipboard:=%A_ThisMenuItem%(Replace . Clipboard, _Para2, _Para3, _Para4, _Para5)
If (ParaCount = 5)
Clipboard:=%A_ThisMenuItem%(Replace . Clipboard, _Para2, _Para3, _Para4, _Para5, _Para6)
If (ParaCount = 6)
Clipboard:=%A_ThisMenuItem%(Replace . Clipboard, _Para2, _Para3, _Para4, _Para5, _Para6, _Para7)
If (WorkWithSelection = 1)
{
WinActivate, ahk_id %Active_Window_ID%
ControlFocus, ahk_class %ActiveControl_Class%, ahk_id %Active_Window_ID%
Sleep 100
StringReplace, Clipboard, Clipboard,`n,`r`n, all ; just to be sure
Send, ^v ; paste text
Clipboard := ClipSaved ; Restore the original clipboard. Note the use of Clipboard (not ClipboardAll).
ClipSaved = ; Free the memory in case the clipboard was very large.
}
Return
ButtonHelp:
MsgBox, 36, Help, Would you like to visit:`nhttps://github.com/hi5/TF#%A_ThisMenuItem%
IfMsgBox, No
Return
Run https://github.com/hi5/TF#%A_ThisMenuItem%
Return
ButtonCancel:
Gui, destroy
Return
Esc::
GuiEscape:
GuiClose:
ExitApp
Return
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment