diff --git a/D3K.ahk b/D3K.ahk index 06c635a..847c259 100644 --- a/D3K.ahk +++ b/D3K.ahk @@ -62,153 +62,134 @@ ger := ini_get(ini, "Language", "German") If (glovar = 1) { glovarini := A_MyDocuments "\GloVar.ini" ; Location of the ini that the user modifies - glovarstart := "#SingleInstance force`n`n:*:$dorg::`n:*:$dus::`n:*:$dnm::`n:*:$dem::`n:*:$xid::`n" - SetTimer, GloVar, 2000 ; Check every 2 seconds GloVar: WinWaitNotActive, GloVar.ini ; So that we don't get any problems with the file on disk being out of date. I use VSCode with the "Save on lose focus" option on, YMMV + FileGetTime, gvModNew, %glovarini% + if !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini. { - FileGetTime, gvModNew, %glovarini% - if !(gvModNew = gvMod) ; Those two lines mean the rest of this only executes if there were changes to the ini. + gvMod := gvModNew + FileDelete, glovar.ahk ; Start with a clean slate + FileAppend, %glovarstart%, glovar.ahk ; makes sure we only have one instance of the script running at a time + RESection := "" ; Make sure that its clear + file := FileOpen(glovarini, "r") + Loop ; Read one line at a time { - gvMod := gvModNew - FileDelete, glovar.ahk ; Start with a clean slate - FileAppend, %glovarstart%, glovar.ahk ; makes sure we only have one instance of the script running at a time + Line := file.ReadLine() + RegExMatch(Line, "(?<=\[).*(?=\])", RESection) ; explained above + RegExMatch(Line, "^(?.*)=(?.*)", RE) ; Key = REKey, Value = REValue - RESection := "" ; Make sure that its clear - file := FileOpen(glovarini, "r") - Loop ; Read one line at a time + If (RESection && InStr(StoredSection := RESection, "clear")) ; Found a clear section { - Line := file.ReadLine() - RegExMatch(Line, "(?<=\[).*(?=\])", RESection) ; explained above - RegExMatch(Line, "^(?.*)=(?.*)", RE) ; Key = REKey, Value = REValue - - If !(RESection) ; If the RegEx doesn't find antything, its empty + ; Will clear the ini and save its and the documentation file's contents to a log + FileRead, doctemp, %docfile% ; Read documentation file, set in settings + FileRead, initemp, %glovarini% ; Read the ini + initemp := RegExReplace(initemp, "(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info + CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT" + writethis := "Case on " . CurrTime . "`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable + FileAppend, % "`n`n`n`n" writethis "`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", %A_MyDocuments%/D3KLog.txt ; Write a few new lines , the content, and a line underneath + FileAppend,, temptemp + FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template + FileCopy, temptemp, %docfile%, 1 ; These two this close together makes it look like they get cleared at the same time + FileDelete, temptemp + fileread, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + FileDelete, glovar.ahk ; THE CLEAN SLATE + FileAppend, %glovarstart%, glovar.ahk + Sleep, 500 + FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + If FileExist("glovar.ahk") { - If !(REValue) ; If there is no value for the key, skip it (Continue the loop at the next line) - { - Continue - } - If InStr(StoredSection, "Serial Numbers") ; If the section is "Serial Numbers", make everything uppercase - { - StringUpper, REValue, REValue ; Makes it uppercase - WinWaitNotActive, GloVar.ini ; Just to make sure - { - ini_write(glovarini, REKey, REValue) - FileGetTime, gvMod, %glovarini% - } - } - If InStr(StoredSection, "Operations Center") ; If the section is "Operations Center" and the Key "un", make it uppercase - { - If InStr(REKey, "usr") - { - StringUpper, REValue, REValue ; Makes it uppercase - WinWaitNotActive, GloVar.ini - { - ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini - FileGetTime, gvMod, %glovarini% - } - } - } - If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS". - { - StringUpper, REValue, REValue ; Makes it uppercase - RegExMatch(REValue, "(?<=\().*(?=\))", REMatch) ; Match everything but the parenthesis. When the case numbers are shown they have parenthesis, and those are annoying. - If (REMatch) ; If there's anything there - { - WinWaitNotActive, GloVar.ini - { - ini_write(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini - FileGetTime, gvMod, %glovarini% - } - REValue := REMatch - } Else { - WinWaitNotActive, GloVar.ini - { - ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini - FileGetTime, gvMod, %glovarini% - } - } - } - If InStr(REKey, "xid") ; If an xID is entered. Unique identifier for people - { - dealinfo := GetInfo(REValue) ; Gets information, see function for details - StringUpper, REValue, REValue ; Makes xID uppercase - - if !(REValue = dealinfo.xid) - { - run addemail.ahk - Continue - } - - ; Replace the data in glovar.ahk with the data from the ini - FileRead, tempglovar, glovar.ahk - tempglovar := RegExReplace(tempglovar, "(?<=\$xid::).*", dealinfo.xid) - tempglovar := RegExReplace(tempglovar, "(?<=\$dem::).*", dealinfo.email) - tempglovar := RegExReplace(tempglovar, "(?<=\$dnm::).*", dealinfo.name) - tempglovar := RegExReplace(tempglovar, "(?<=\$dus::).*", dealinfo.user) - tempglovar := RegExReplace(tempglovar, "(?<=\$dorg::).*", dealinfo.org) - FileAppend, %tempglovar%, tempglovar - FileCopy, tempglovar, glovar.ahk,1 - FileDelete, tempglovar - - WinWaitNotActive, GloVar.ini - { - ini_write(glovarini, "xID", dealinfo.xid) ; Writes the xID - ini_write(glovarini, "dem", dealinfo.email) ; Writes email address (incredibly useful) - ini_write(glovarini, "dnm", dealinfo.name) ; Writes Name (useful for when referring to that person) - ini_write(glovarini, "dus", dealinfo.user) ; Writes demo account name (somewhat useful) - ini_write(glovarini, "dorg", dealinfo.org) - } - FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code - Continue - } - If (InStr(REKey, "dem") or InStr(REKey, "dnm") or InStr(REKey, "dus")) - { - ; Do not process xID related info, that is done above - Continue - } - writethis := ":*:$" REKey "::" REValue "`n" ; Save the hotstring to a variable - FileAppend, %writethis%, glovar.ahk ; Write the variable to glovar.ahk + Run glovar.ahk } - If (RESection) ; If we have a section - { - StoredSection := RESection - If InStr(RESection, "clear") ; Will clear the ini and save its and the documentation file's contents to a log - { - FileRead, doctemp, %docfile% ; Read documentation file, set in settings - FileRead, initemp, %glovarini% ; Read the ini - initemp := RegExReplace(initemp, "(?<=\[)clear(?=\])", "Info") ; Replace the "clear" section we set with Info - CurrTime := GetDateTime("en") ; get the current date and time as "YYYY-MM-DD at HH:MM GMT" - - writethis := "Case on " . CurrTime . "`n" . doctemp . "`n`n" . initemp ; Save the current time, what was in the doc file, and glovarini to a variable - FileAppend, % "`n`n`n`n" writethis "`n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~", %A_MyDocuments%/D3KLog.txt ; Write a few new lines , the content, and a line underneath - FileAppend,, temptemp - FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template - FileCopy, temptemp, %docfile%, 1 ; These two this close together makes it look like they get cleared at the same time - FileDelete, temptemp - fileread, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code - FileDelete, glovar.ahk ; THE CLEAN SLATE - FileAppend, %glovarstart%, glovar.ahk - - Sleep, 500 - FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code - If FileExist("glovar.ahk") - { - Run glovar.ahk - } - Return - } - } - } Until (file.AtEOF) - file.Close() - FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code - If FileExist("glovar.ahk") - { - Run glovar.ahk + Return + } else if (RESection) { ; found a different section + StoredSection := RESection + continue } + If !(RESection) ; If the RegEx doesn't find antything, its empty + { + If !(REValue) ; If there is no value for the key, skip it (Continue the loop at the next line) + { + Continue + } + If InStr(StoredSection, "Serial Numbers") ; If the section is "Serial Numbers", make everything uppercase + { + StringUpper, REValue, REValue ; Makes it uppercase + WinWaitNotActive, GloVar.ini ; Just to make sure + ini_write(glovarini, REKey, REValue) + FileGetTime, gvMod, %glovarini% + MsgBox, test + } + If InStr(StoredSection, "Operations Center") ; If the section is "Operations Center" and the Key "un", make it uppercase + { + If InStr(REKey, "usr") + { + StringUpper, REValue, REValue ; Makes it uppercase + WinWaitNotActive, GloVar.ini + ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini + FileGetTime, gvMod, %glovarini% + } + } + If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS". + { + StringUpper, REValue, REValue ; Makes it uppercase + RegExMatch(REValue, "(?<=\().*(?=\))", REMatch) ; Match everything but the parenthesis. When the case numbers are shown they have parenthesis, and those are annoying. + If (REMatch) ; If there's anything there + { + WinWaitNotActive, GloVar.ini + ini_write(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini + FileGetTime, gvMod, %glovarini% + REValue := REMatch + } Else { + WinWaitNotActive, GloVar.ini + ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini + FileGetTime, gvMod, %glovarini% + } + } + If InStr(REKey, "xid") ; If an xID is entered. Unique identifier for people + { + dealinfo := GetInfo(REValue) ; Gets information, see function for details + StringUpper, REValue, REValue ; Makes xID uppercase + if !(REValue = dealinfo.xid) + { + run addemail.ahk + Continue + } + ; Replace the data in glovar.ahk with the data from the ini + FileRead, tempglovar, glovar.ahk + tempglovar := RegExReplace(tempglovar, "(?<=\$xid::).*", dealinfo.xid) + tempglovar := RegExReplace(tempglovar, "(?<=\$dem::).*", dealinfo.email) + tempglovar := RegExReplace(tempglovar, "(?<=\$dnm::).*", dealinfo.name) + tempglovar := RegExReplace(tempglovar, "(?<=\$dus::).*", dealinfo.user) + tempglovar := RegExReplace(tempglovar, "(?<=\$dorg::).*", dealinfo.org) + FileAppend, %tempglovar%, tempglovar + FileCopy, tempglovar, glovar.ahk,1 + FileDelete, tempglovar + WinWaitNotActive, GloVar.ini + ini_write(glovarini, "xID", dealinfo.xid) ; Writes the xID + ini_write(glovarini, "dem", dealinfo.email) ; Writes email address (incredibly useful) + ini_write(glovarini, "dnm", dealinfo.name) ; Writes Name (useful for when referring to that person) + ini_write(glovarini, "dus", dealinfo.user) ; Writes demo account name (somewhat useful) + ini_write(glovarini, "dorg", dealinfo.org) + FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + Continue + } + If (InStr(REKey, "dem") or InStr(REKey, "dnm") or InStr(REKey, "dus")) + { + ; Do not process xID related info, that is done above + Continue + } + writethis := ":*:$" REKey "::" REValue "`n" ; Save the hotstring to a variable + FileAppend, %writethis%, glovar.ahk ; Write the variable to glovar.ahk + } + } Until (file.AtEOF) + file.Close() + FileGetTime, gvMod, %glovarini% ; Make sure that this script knows what the ini was changed to so it doesn't constantly run through the above code + If FileExist("glovar.ahk") + { + Run glovar.ahk } } Return