tests/nsis3/share/doc/nsis/Examples/TextFunc.nsi
;_____________________________________________________________________________
;
; Text Functions
;_____________________________________________________________________________
;
; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
Name "Text Functions"
OutFile "TextFunc.exe"
Caption "$(^Name)"
XPStyle on
RequestExecutionLevel user
!include "WinMessages.nsh"
!include "TextFunc.nsh"
Var HWND
Var INI
Var LOG
Var PROJECT
Var CALLBACK
Var VIEW
Var FUNCTION
Var LINEFIND1
Var LINEFIND2
Var LINEFIND3
Var LINEREAD1
Var LINEREAD2
Var FILEREADFROMEND1
Var LINESUM1
Var FILEJOIN1
Var FILEJOIN2
Var FILEJOIN3
Var TEXTCOMPARE1
Var TEXTCOMPARE2
Var TEXTCOMPARE3
Var CONFIGREAD1
Var CONFIGREAD2
Var CONFIGWRITE1
Var CONFIGWRITE2
Var CONFIGWRITE3
Var FILERECODE1
Var FILERECODE2
Page Custom ShowCustom LeaveCustom
Function ShowCustom
InstallOptions::initDialog "$INI"
Pop $hwnd
GetDlgItem $0 $HWND 1206
ShowWindow $0 0
GetDlgItem $0 $HWND 1208
ShowWindow $0 0
GetDlgItem $0 $HWND 1209
ShowWindow $0 0
StrCpy $FUNCTION LineFind
StrCpy $LINEREAD2 10
StrCpy $TEXTCOMPARE3 FastDiff
StrCpy $CONFIGREAD1 "$WINDIR\system.ini"
StrCpy $CONFIGREAD2 "shell="
StrCpy $FILERECODE2 CharToOem
InstallOptions::show
Pop $0
FunctionEnd
Function LeaveCustom
ReadINIStr $0 $INI "Settings" "State"
ReadINIStr $R0 $INI "Field 1" "State"
ReadINIStr $R1 $INI "Field 2" "State"
ReadINIStr $R2 $INI "Field 3" "State"
ReadINIStr $R3 $INI "Field 4" "State"
ReadINIStr $R4 $INI "Field 5" "State"
ReadINIStr $R5 $INI "Field 6" "State"
StrCpy $R4 $R4 8
StrCpy $R5 $R5 8
StrCpy $6 0
StrCpy $7 '$${'
StrCpy $8 'r'
StrCpy $9 'n'
StrCmp $0 10 Log
StrCmp $0 9 ViewOrEdit
StrCmp $0 0 Enter
goto MainSend
Log:
Exec 'notepad.exe $LOG'
Abort
ViewOrEdit:
StrCmp $FUNCTION FileReadFromEnd 0 Edit
StrCmp $VIEW '' 0 ViewFileReadFromEndCallback
GetTempFileName $VIEW $PLUGINSDIR
StrCpy $7 '$$'
FileOpen $0 $VIEW w
FileWrite $0 `Function FileReadFromEndCallback$\r$\n`
FileWrite $0 ` MessageBox MB_OKCANCEL '$7$$9 "Line"=[$$9]$7\$9$7$$8 "#"=[$$8]$7\$9$7$$7 "-#"=[$$7]' IDOK +2$\r$\n`
FileWrite $0 ` StrCpy $$R0 StopFileReadFromEnd$\r$\n$\r$\n`
FileWrite $0 ` Push $$R0$\r$\n`
FileWrite $0 `FunctionEnd$\r$\n`
FileClose $0
StrCpy $7 '$${'
SetFileAttributes $VIEW READONLY
ViewFileReadFromEndCallback:
Exec 'notepad.exe $VIEW'
Abort
Edit:
StrCmp $CALLBACK '' +5
StrCmp $6$R6 '0$R0$R4$R5' showproject
StrCmp $R6 '$R0$R4$R5' +3
Delete $CALLBACK
StrCpy $CALLBACK ''
StrCpy $R6 '$R0$R4$R5'
#Project#
StrCmp $6$R0 "01. LineFind" 0 +5
IfFileExists $CALLBACK +2
GetTempFileName $CALLBACK $PLUGINSDIR
FileOpen $0 $CALLBACK w
goto function
IfFileExists $PROJECT +2
GetTempFileName $PROJECT $PLUGINSDIR
FileOpen $0 $PROJECT w
#Name#
FileWrite $0 'Name "$FUNCTION"$\r$\n'
FileWrite $0 'OutFile "$PROJECT.exe"$\r$\n$\r$\n'
#!include#
StrCmp $R0$R4 '1. LineFindExample5' 0 TextFuncInclude
IfFileExists '$EXEDIR\WordFunc.nsh' 0 +3
FileWrite $0 '!include "$EXEDIR\WordFunc.nsh"$\r$\n'
goto +2
FileWrite $0 '!include "WordFunc.nsh"$\r$\n'
FileWrite $0 '!insertmacro WordFind$\r$\n'
FileWrite $0 '!insertmacro WordFindS$\r$\n'
FileWrite $0 '!insertmacro WordFind2X$\r$\n'
FileWrite $0 '!insertmacro WordFind2XS$\r$\n'
FileWrite $0 '!insertmacro WordFind3X$\r$\n'
FileWrite $0 '!insertmacro WordFind3XS$\r$\n'
FileWrite $0 '!insertmacro WordReplace$\r$\n'
FileWrite $0 '!insertmacro WordReplaceS$\r$\n'
FileWrite $0 '!insertmacro WordAdd$\r$\n'
FileWrite $0 '!insertmacro WordAddS$\r$\n'
FileWrite $0 '!insertmacro WordInsert$\r$\n'
FileWrite $0 '!insertmacro WordInsertS$\r$\n'
FileWrite $0 '!insertmacro StrFilter$\r$\n'
FileWrite $0 '!insertmacro StrFilterS$\r$\n'
TextFuncInclude:
IfFileExists '$EXEDIR\TextFunc.nsh' 0 +3
FileWrite $0 '!include "$EXEDIR\TextFunc.nsh"$\r$\n'
goto +2
FileWrite $0 '!include "TextFunc.nsh"$\r$\n'
FileWrite $0 '!insertmacro $FUNCTION$\r$\n'
StrCmp $FUNCTION TextCompare +2
FileWrite $0 '!insertmacro TrimNewLines$\r$\n'
#Section#
FileWrite $0 '$\r$\nSection -empty$\r$\n'
FileWrite $0 'SectionEnd$\r$\n$\r$\n'
#Function .onInit#
FileWrite $0 'Function .onInit$\r$\n'
StrCmp $R0$R5 "6. TextCompareExample1" 0 TextCompareExample235
FileWrite $0 ' StrCpy $$R0 ""$\r$\n'
FileWrite $0 ' $7TextCompare} "$R1" "$R2" "$R3" "$R5"$\r$\n'
FileWrite $0 ' IfErrors error$\r$\n'
FileWrite $0 ' StrCmp $$R0 NotEqual 0 +2$\r$\n'
FileWrite $0 ' MessageBox MB_OK " Files differ" IDOK +2$\r$\n'
FileWrite $0 ' MessageBox MB_OK " Files identical"$\r$\n'
FileWrite $0 ' goto end$\r$\n$\r$\n'
goto endoninit
TextCompareExample235:
StrCmp $R0$R5 "6. TextCompareExample2" +3
StrCmp $R0$R5 "6. TextCompareExample3" +2
StrCmp $R0$R5 "6. TextCompareExample5" 0 TextCompareExample4
FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n'
FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n'
FileWrite $0 ' GetTempFileName $$R2$\r$\n'
FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n'
FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
FileWrite $0 ' IfErrors error$\r$\n'
FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n'
FileWrite $0 ' goto end$\r$\n$\r$\n'
goto endoninit
TextCompareExample4:
StrCmp $R0$R5 "6. TextCompareExample4" 0 LineFindExample123456
FileWrite $0 ' StrCpy $$R0 "$R1"$\r$\n'
FileWrite $0 ' StrCpy $$R1 "$R2"$\r$\n$\r$\n'
FileWrite $0 ' GetTempFileName $$R2$\r$\n'
FileWrite $0 ' FileOpen $$R3 $$R2 w$\r$\n'
FileWrite $0 ' FileWrite $$R3 "$$R0 | $$R1$$\$8$$\$9"$\r$\n'
FileWrite $0 ' $7TextCompare} "$$R0" "$$R1" "$R3" "$R5"$\r$\n'
FileWrite $0 ' IfErrors error$\r$\n'
FileWrite $0 ' FileWrite $$R3 "$$\$8$$\$9$$R1 | $$R0$$\$8$$\$9"$\r$\n'
FileWrite $0 ' $7TextCompare} "$$R1" "$$R0" "$R3" "$R5"$\r$\n'
FileWrite $0 ' FileClose $$R3$\r$\n'
FileWrite $0 ' IfErrors error$\r$\n'
FileWrite $0 ' Exec "notepad.exe $$R2"$\r$\n$\r$\n'
FileWrite $0 ' goto end$\r$\n$\r$\n'
goto endoninit
LineFindExample123456:
FileWrite $0 ' $7$FUNCTION} "$R1" "$R2" "$R3" "$R4"$\r$\n'
FileWrite $0 ' IfErrors error$\r$\n'
FileWrite $0 ' MessageBox MB_YESNO " Open output file?" IDNO end$\r$\n'
FileWrite $0 ' StrCmp "$R2" "" 0 +3$\r$\n'
FileWrite $0 ` Exec 'notepad.exe "$R1"'$\r$\n`
FileWrite $0 ' goto end$\r$\n'
FileWrite $0 ' SearchPath $$R2 "$R2"$\r$\n'
FileWrite $0 ` Exec 'notepad.exe "$$R2"'$\r$\n`
FileWrite $0 ' goto end$\r$\n$\r$\n'
endoninit:
FileWrite $0 ' error:$\r$\n'
FileWrite $0 ' MessageBox MB_OK "Error"$\r$\n$\r$\n'
FileWrite $0 ' end:$\r$\n'
FileWrite $0 ' Quit$\r$\n'
FileWrite $0 'FunctionEnd$\r$\n$\r$\n'
#FunctionEnd#
#Function CallBack#
StrCmp $CALLBACK '' 0 close
function:
StrCmp $R0 '1. LineFind' 0 +8
FileWrite $0 'Function $R4$\r$\n'
StrCmp $R4 "Example1" Example1LF
StrCmp $R4 "Example2" Example2LF
StrCmp $R4 "Example3" Example3LF
StrCmp $R4 "Example4" Example4LF
StrCmp $R4 "Example5" Example5LF
StrCmp $R4 "Example6" Example6LF
FileWrite $0 'Function $R5$\r$\n'
StrCmp $R5 "Example1" Example1TC
StrCmp $R5 "Example2" Example2TC
StrCmp $R5 "Example3" Example3TC
StrCmp $R5 "Example4" Example4TC
StrCmp $R5 "Example5" Example3TC
Example1LF:
FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n"
FileWrite $0 " StrCpy $$R9 $$R9 '' 2 ;delete first two symbols$\r$\n"
FileWrite $0 " StrCpy $$R9 '$$R9$$\$8$$\$9'$\r$\n$\r$\n"
goto endwrite
Example2LF:
FileWrite $0 " $7TrimNewLines} '$$R9' $$R9$\r$\n"
FileWrite $0 " StrCpy $$R9 '$$R9 ~Changed line ($$R8)~$$\$8$$\$9'$\r$\n$\r$\n"
goto endwrite
Example3LF:
FileWrite $0 " StrCpy $$0 SkipWrite$\r$\n$\r$\n"
goto endwrite
Example4LF:
FileWrite $0 " FileWrite $$R4 '---First Line---$$\$8$$\$9'$\r$\n"
FileWrite $0 " FileWrite $$R4 '---Second Line ...---$$\$8$$\$9'$\r$\n$\r$\n"
goto endwrite
Example5LF:
FileWrite $0 " ; You can use:$\r$\n"
FileWrite $0 " ; $7WordFind}|$7WordFindS}|$7WordFind2X}|$7WordFind2XS}|$\r$\n"
FileWrite $0 " ; $7WordFind3X}|$7WordFind3XS}|$7WordReplace}|$7WordReplaceS}|$\r$\n"
FileWrite $0 " ; $7WordAdd}|$7WordAddS}|$7WordInsert}|$7WordInsertS}|$\r$\n"
FileWrite $0 " ; $7StrFilter}|$7StrFilterS}$\r$\n$\r$\n"
FileWrite $0 " $7WordReplace} '$$R9' ' ' '_' '+*' $$R9$\r$\n$\r$\n"
goto endwrite
Example6LF:
FileWrite $0 ' ;(Cut lines from a line to another line (also including that line))$\r$\n'
FileWrite $0 ' StrCmp $$R0 finish stop$\r$\n'
FileWrite $0 ' StrCmp $$R0 start finish$\r$\n'
FileWrite $0 ' StrCmp $$R9 "Start Line$$\$8$$\$9" 0 skip$\r$\n'
FileWrite $0 ' StrCpy $$R0 start$\r$\n'
FileWrite $0 ' StrCpy $$R1 $$R9$\r$\n'
FileWrite $0 ' goto code$\r$\n'
FileWrite $0 ' finish:$\r$\n'
FileWrite $0 ' StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 code$\r$\n'
FileWrite $0 ' StrCpy $$R0 finish$\r$\n'
FileWrite $0 ' StrCpy $$R2 $$R8$\r$\n'
FileWrite $0 ' goto code$\r$\n'
FileWrite $0 ' skip:$\r$\n'
FileWrite $0 ' StrCpy $$0 SkipWrite$\r$\n'
FileWrite $0 ' goto output$\r$\n'
FileWrite $0 ' stop:$\r$\n'
FileWrite $0 ' StrCpy $$0 StopLineFind$\r$\n'
FileWrite $0 ' goto output$\r$\n$\r$\n'
FileWrite $0 ' ;;(Delete lines from a line to another line (also including that line))$\r$\n'
FileWrite $0 ' ; StrCmp $$R0 finish code$\r$\n'
FileWrite $0 ' ; StrCmp $$R0 start finish$\r$\n'
FileWrite $0 ' ; StrCmp $$R9 "Start Line$$\$8$$\$9" 0 code$\r$\n'
FileWrite $0 ' ; StrCpy $$R0 start$\r$\n'
FileWrite $0 ' ; StrCpy $$R1 $$R8$\r$\n'
FileWrite $0 ' ; goto skip$\r$\n'
FileWrite $0 ' ; finish:$\r$\n'
FileWrite $0 ' ; StrCmp $$R9 "Finish Line$$\$8$$\$9" 0 skip$\r$\n'
FileWrite $0 ' ; StrCpy $$R0 finish$\r$\n'
FileWrite $0 ' ; StrCpy $$R2 $$R8$\r$\n'
FileWrite $0 ' ; skip:$\r$\n'
FileWrite $0 ' ; StrCpy $$0 SkipWrite$\r$\n'
FileWrite $0 ' ; goto output$\r$\n$\r$\n'
FileWrite $0 ' code:$\r$\n'
FileWrite $0 ' ;...$\r$\n$\r$\n'
FileWrite $0 ' output:$\r$\n'
goto endwrite
Example1TC:
FileWrite $0 " StrCpy $$R0 NotEqual$\r$\n"
FileWrite $0 " StrCpy $$0 StopTextCompare$\r$\n$\r$\n"
goto endwrite
Example2TC:
FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n"
FileWrite $0 " FileWrite $$R3 '$$6=$$7$$\$8$$\$9'$\r$\n$\r$\n"
goto endwrite
Example3TC:
FileWrite $0 " FileWrite $$R3 '$$8|$$6=$$9'$\r$\n$\r$\n"
goto endwrite
Example4TC:
FileWrite $0 " FileWrite $$R3 '$$8=$$9'$\r$\n$\r$\n"
goto endwrite
endwrite:
FileWrite $0 ' Push $$0$\r$\n'
FileWrite $0 'FunctionEnd$\r$\n'
close:
FileClose $0
goto $6
#FunctionEnd#
showproject:
StrCmp $R0 '1. LineFind' 0 +3
ExecWait 'notepad.exe $CALLBACK'
goto +4
SetFileAttributes $PROJECT READONLY
ExecWait 'notepad.exe $PROJECT'
SetFileAttributes $PROJECT NORMAL
Abort
MainSend:
GetDlgItem $0 $HWND 1210
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
EnableWindow $0 1
GetDlgItem $0 $HWND 1204
ShowWindow $0 1
EnableWindow $0 1
GetDlgItem $0 $HWND 1205
EnableWindow $0 1
GetDlgItem $0 $HWND 1206
ShowWindow $0 0
GetDlgItem $0 $HWND 1207
ShowWindow $0 0
GetDlgItem $0 $HWND 1208
ShowWindow $0 0
GetDlgItem $0 $HWND 1209
ShowWindow $0 0
GetDlgItem $0 $HWND 1211
EnableWindow $0 1
StrCmp $FUNCTION LineFind 0 +5
StrCpy $LINEFIND1 $R1
StrCpy $LINEFIND2 $R2
StrCpy $LINEFIND3 $R3
goto LineFindSend
StrCmp $FUNCTION LineRead 0 +4
StrCpy $LINEREAD1 $R1
StrCpy $LINEREAD2 $R2
goto LineFindSend
StrCmp $FUNCTION FileReadFromEnd 0 +3
StrCpy $FILEREADFROMEND1 $R1
goto LineFindSend
StrCmp $FUNCTION LineSum 0 +3
StrCpy $LINESUM1 $R1
goto LineFindSend
StrCmp $FUNCTION FileJoin 0 +5
StrCpy $FILEJOIN1 $R1
StrCpy $FILEJOIN2 $R2
StrCpy $FILEJOIN3 $R3
goto LineFindSend
StrCmp $FUNCTION TextCompare 0 +5
StrCpy $TEXTCOMPARE1 $R1
StrCpy $TEXTCOMPARE2 $R2
StrCpy $TEXTCOMPARE3 $R3
goto LineFindSend
StrCmp $FUNCTION ConfigRead 0 +4
StrCpy $CONFIGREAD1 $R1
StrCpy $CONFIGREAD2 $R2
goto LineFindSend
StrCmp $FUNCTION ConfigWrite 0 +5
StrCpy $CONFIGWRITE1 $R1
StrCpy $CONFIGWRITE2 $R2
StrCpy $CONFIGWRITE3 $R3
goto LineFindSend
StrCmp $FUNCTION FileRecode 0 +3
StrCpy $FILERECODE1 $R1
StrCpy $FILERECODE2 $R2
LineFindSend:
StrCmp $R0 "1. LineFind" 0 LineReadSend
StrCmp $FUNCTION LineFind 0 LineFindSend2
StrCmp $R4 "Example1" 0 +3
StrCpy $LINEFIND3 "3:-1"
goto LineFindSend2
StrCmp $R4 "Example2" 0 +3
StrCpy $LINEFIND3 "{5:12 15 -6:-5 -1}"
goto LineFindSend2
StrCmp $R4 "Example3" 0 +3
StrCpy $LINEFIND3 "2:3 10:-5 -3:-2"
goto LineFindSend2
StrCmp $R4 "Example4" 0 +3
StrCpy $LINEFIND3 "10"
goto LineFindSend2
StrCmp $R4 "Example5" 0 +3
StrCpy $LINEFIND3 "1:-1"
goto LineFindSend2
StrCmp $R4 "Example6" 0 +3
StrCpy $LINEFIND3 ""
goto LineFindSend2
StrCmp $R4 "Example7" 0 +2
StrCpy $LINEFIND3 "1:-1"
LineFindSend2:
StrCpy $FUNCTION LineFind
StrCmp $LINEFIND2 '/NUL' 0 +2
StrCpy $LINEFIND2 ''
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND1"
GetDlgItem $0 $HWND 1203
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND2"
GetDlgItem $0 $HWND 1205
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEFIND3"
GetDlgItem $0 $HWND 1207
ShowWindow $0 1
GetDlgItem $0 $HWND 1211
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:Edit"
GetDlgItem $0 $HWND 1212
ShowWindow $0 1
StrCmp $LOG '' +2
EnableWindow $0 1
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:Range"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
StrCmp $R4 "Example7" 0 +9
GetDlgItem $0 $HWND 1203
EnableWindow $0 0
SendMessage $0 ${WM_ENABLE} 1 0
SendMessage $0 ${WM_SETTEXT} 1 "STR:/NUL"
GetDlgItem $0 $HWND 1204
EnableWindow $0 0
GetDlgItem $0 $HWND 1211
EnableWindow $0 0
abort
LineReadSend:
StrCmp $R0 "2. LineRead" 0 FileReadFromEndSend
StrCpy $FUNCTION LineRead
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINEREAD2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 0
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:Line #"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
FileReadFromEndSend:
StrCmp $R0 "3. FileReadFromEnd" 0 LineSumSend
StrCpy $FUNCTION FileReadFromEnd
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEREADFROMEND1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 0
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 0
GetDlgItem $0 $HWND 1209
ShowWindow $0 1
GetDlgItem $0 $HWND 1211
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
Abort
LineSumSend:
StrCmp $R0 "4. LineSum" 0 FileJoinSend
StrCpy $FUNCTION LineSum
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$LINESUM1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 0
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 0
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
FileJoinSend:
StrCmp $R0 "5. FileJoin" 0 TextCompareSend
StrCpy $FUNCTION FileJoin
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 1
GetDlgItem $0 $HWND 1205
ShowWindow $0 1
EnableWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILEJOIN3"
GetDlgItem $0 $HWND 1206
ShowWindow $0 1
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile1"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile2"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:OutputFile"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
TextCompareSend:
StrCmp $R0 "6. TextCompare" 0 ConfigReadSend
StrCmp $FUNCTION TextCompare 0 TextCompareSend2
StrCmp $R5 "Example1" 0 +3
StrCpy $TEXTCOMPARE3 "FastDiff"
goto TextCompareSend2
StrCmp $R5 "Example2" 0 +3
StrCpy $TEXTCOMPARE3 "FastDiff"
goto TextCompareSend2
StrCmp $R5 "Example3" 0 +3
StrCpy $TEXTCOMPARE3 "FastEqual"
goto TextCompareSend2
StrCmp $R5 "Example4" 0 +3
StrCpy $TEXTCOMPARE3 "SlowDiff"
goto TextCompareSend2
StrCmp $R5 "Example5" 0 +2
StrCpy $TEXTCOMPARE3 "SlowEqual"
TextCompareSend2:
StrCpy $FUNCTION TextCompare
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE1"
GetDlgItem $0 $HWND 1203
SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 1
GetDlgItem $0 $HWND 1205
ShowWindow $0 1
EnableWindow $0 0
SendMessage $0 ${WM_ENABLE} 1 0
SendMessage $0 ${WM_SETTEXT} 1 "STR:$TEXTCOMPARE3"
GetDlgItem $0 $HWND 1208
ShowWindow $0 1
GetDlgItem $0 $HWND 1211
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:View"
GetDlgItem $0 $HWND 1212
ShowWindow $0 1
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile1"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:TextFile2"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:Option"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:Function"
abort
ConfigReadSend:
StrCmp $R0 "7. ConfigRead" 0 ConfigWriteSend
StrCpy $FUNCTION ConfigRead
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGREAD2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 0
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
ConfigWriteSend:
StrCmp $R0 "8. ConfigWrite" 0 FileRecodeSend
StrCpy $FUNCTION ConfigWrite
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$CONFIGWRITE3"
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:Entry"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:Value"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
FileRecodeSend:
StrCmp $R0 "9. FileRecode" 0 Abort
StrCpy $FUNCTION FileRecode
GetDlgItem $0 $HWND 1201
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE1"
GetDlgItem $0 $HWND 1203
ShowWindow $0 1
SendMessage $0 ${WM_SETTEXT} 1 "STR:$FILERECODE2"
GetDlgItem $0 $HWND 1204
ShowWindow $0 0
GetDlgItem $0 $HWND 1205
ShowWindow $0 0
GetDlgItem $0 $HWND 1211
ShowWindow $0 0
GetDlgItem $0 $HWND 1212
ShowWindow $0 0
GetDlgItem $0 $HWND 1213
SendMessage $0 ${WM_SETTEXT} 1 "STR:InputFile"
GetDlgItem $0 $HWND 1214
SendMessage $0 ${WM_SETTEXT} 1 "STR:Format"
GetDlgItem $0 $HWND 1215
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
GetDlgItem $0 $HWND 1216
SendMessage $0 ${WM_SETTEXT} 1 "STR:"
Abort
;=Enter=
Enter:
StrCmp $R1 '' 0 +3
StrCpy $0 'Choose InputFile'
goto send
IfFileExists $R1 +3
StrCpy $0 'InputFile is not exist'
goto send
StrCmp $R0 "1. LineFind" LineFindRead
StrCmp $R0 "2. LineRead" LineRead
StrCmp $R0 "3. FileReadFromEnd" FileReadFromEnd
StrCmp $R0 "4. LineSum" LineSum
StrCmp $R0 "5. FileJoin" FileJoin
StrCmp $R0 "6. TextCompare" LineFind-TextCompare
StrCmp $R0 "7. ConfigRead" ConfigRead
StrCmp $R0 "8. ConfigWrite" ConfigWrite
StrCmp $R0 "9. FileRecode" FileRecode
Abort
LineFindRead:
StrCmp $R4 "Example7" 0 LineFind-TextCompare
${LineFind} '$R1' '/NUL' '$R3' LineFindCallback
IfErrors error
StrCmp $R0 StopLineFind 0 done
StrCpy $0 'stopped'
goto send
LineFind-TextCompare:
GetLabelAddress $6 LineFindBack
goto Edit
LineFindBack:
FileClose $0
StrCmp $R0 "6. TextCompare" Compile
StrCmp $CALLBACK '' Compile
${FileJoin} "$PROJECT" "$CALLBACK" ""
Compile:
StrCmp $LOG '' 0 +4
GetTempFileName $LOG $PLUGINSDIR
GetDlgItem $0 $HWND 1212
EnableWindow $0 1
ReadRegStr $0 HKLM "SOFTWARE\NSIS" ""
IfErrors 0 +2
StrCpy $0 "${NSISDIR}"
nsExec::Exec '"$0\makensis.exe" /O$LOG $PROJECT'
Pop $0
StrCmp $0 0 0 +6
ExecWait '$PROJECT.exe' $0
Delete $PROJECT
Delete $PROJECT.exe
StrCpy $PROJECT ''
goto done
MessageBox MB_YESNO|MB_ICONEXCLAMATION "Compile error. Open log?" IDNO +2
Exec 'notepad.exe $LOG'
StrCpy $0 "Compile Error"
goto send
LineRead:
${LineRead} "$R1" "$R2" $0
IfErrors error send
FileReadFromEnd:
${FileReadFromEnd} "$R1" "FileReadFromEndCallback"
IfErrors error
StrCmp $R0 StopFileReadFromEnd 0 done
StrCpy $0 'stopped'
goto send
LineSum:
${LineSum} "$R1" $0
IfErrors error send
FileJoin:
${FileJoin} "$R1" "$R2" "$R3"
IfErrors error
MessageBox MB_YESNO " Open output file?" IDNO done
StrCmp $R3 '' 0 +3
Exec '"notepad.exe" "$R1"'
goto done
Exec '"notepad.exe" "$R3"'
goto done
ConfigRead:
${ConfigRead} "$R1" "$R2" $0
IfErrors error send
ConfigWrite:
${ConfigWrite} "$R1" "$R2" "$R3" $0
IfErrors error
MessageBox MB_YESNO " Open output file?" IDNO send
Exec '"notepad.exe" "$R1"'
goto send
FileRecode:
${FileRecode} "$R1" "$R2"
IfErrors error
MessageBox MB_YESNO " Open output file?" IDNO done
Exec '"notepad.exe" "$R1"'
goto done
error:
StrCpy $0 'error'
goto send
done:
StrCpy $0 'Done'
send:
GetDlgItem $1 $HWND 1210
SendMessage $1 ${WM_SETTEXT} 1 "STR:$0"
abort:
Abort
FunctionEnd
Function LineFindCallback
MessageBox MB_OKCANCEL '$$R9 "Line"=[$R9]$\n$$R8 "#"=[$R8]$\n$$R7 "-#"=[$R7]$\n$$R6 "Range"=[$R6]$\n$$R5 "Read"=[$R5]$\n$$R4 "Write"=[$R4]' IDOK +2
StrCpy $R0 StopLineFind
Push $R0
FunctionEnd
Function FileReadFromEndCallback
MessageBox MB_OKCANCEL '$$9 "Line"=[$9]$\n$$8 "#"=[$8]$\n$$7 "-#"=[$7]' IDOK +2
StrCpy $R0 StopFileReadFromEnd
Push $R0
FunctionEnd
Function .onInit
InitPluginsDir
GetTempFileName $INI $PLUGINSDIR
File /oname=$INI "TextFunc.ini"
FunctionEnd
Page instfiles
Section -Empty
SectionEnd