Compare commits
38 Commits
Author | SHA1 | Date | |
---|---|---|---|
5a4d36ff44 | |||
d434dc3f1e | |||
2a4cf2dbda | |||
0d596fd2d4 | |||
c7d3567790 | |||
b4637072a2 | |||
cc3863b0d2 | |||
dcb2e97426 | |||
9c1b4c85f4 | |||
|
4efd802be3 | ||
5bbbbad247 | |||
bcfad04ecb | |||
6204f7f803 | |||
|
21b9715abe | ||
|
5fa6935537 | ||
ba0b26b768 | |||
487cd91888 | |||
f4d9a35e51 | |||
4c8942ce48 | |||
|
f936b26c98 | ||
|
a2dcf8387e | ||
cf7dc49533 | |||
|
9802fc7af0 | ||
c3c2da7120 | |||
|
2bf4b8e8a9 | ||
|
e89b64463f | ||
|
6f2dc0d44e | ||
|
7adfefb670 | ||
|
03cfca5549 | ||
|
6acd69fd87 | ||
|
a90f2077b6 | ||
|
e6bd22263e | ||
|
67dd119939 | ||
|
98ec36cd5c | ||
|
f0f149e1c9 | ||
|
c9fced6b6d | ||
|
f6d0981b3b | ||
|
ba54476683 |
@ -1,4 +1,4 @@
|
||||
#Include, func.ahk
|
||||
#Include, func.ahk
|
||||
|
||||
SetTitleMatchMode, 2
|
||||
|
||||
@ -6,7 +6,9 @@ SetTitleMatchMode, 2
|
||||
Gui,+AlwaysOnTop
|
||||
Gui, +ToolWindow
|
||||
|
||||
docfile := ini_getValue(ini, "USpec", "DocFile")
|
||||
docfile := ini_get(ini, "USpec", "DocFile")
|
||||
cfmail := ini_get(ini, "Main", "CFmail")
|
||||
Contact := 2
|
||||
|
||||
CurrTimeEN := GetDateTime("en")
|
||||
CurrTimeDE := GetDateTime("de")
|
||||
@ -16,22 +18,24 @@ CurrTimeDE := GetDateTime("de")
|
||||
;------------------------------------------------------------------------------
|
||||
; The & in front of the letters lets you hold alt and press the first letter instead of having to click on it. That is why its "Mail", not "E-Mail"
|
||||
|
||||
|
||||
Gui, Add, Text, x75 y46 w150 h20 gTime, %CurrTimeEN%
|
||||
|
||||
Gui, Add, Radio, x12 y3 w60 h20 Group vLang Checked, &English ; First group of Radio buttons
|
||||
Gui, Add, Radio, x12 y23 w60 h20, &German
|
||||
|
||||
Gui, Add, Radio, x82 y3 w60 h20 Group vContact Checked, E-&Mail ; Second group of Radio buttons
|
||||
Gui, Add, Radio, x82 y23 w60 h20, &Call
|
||||
|
||||
|
||||
Gui, Add, Radio, x142 y3 w80 h20 Group vAct, &Warrant
|
||||
Gui, Add, Radio, x142 y23 w80 h20 , &Demo
|
||||
Gui, Add, Radio, x82 y3 w60 h20 Group vAct, &Warrant
|
||||
Gui, Add, Radio, x82 y23 w60 h20, &Demo
|
||||
|
||||
Gui, Add, Button, x12 y43 w55 h20 Default vHidden, Go ; That way you don't have to have an actual button, it just happens when you press enter.
|
||||
Gui, Show, h70 w210, Contact
|
||||
;GuiControl, Hide, Hidden ; Hide the button to be hidden
|
||||
|
||||
if (cfmail)
|
||||
{
|
||||
Gui, Add, Radio, x142 y3 w80 h20 Group vContact Checked, E-&Mail ; Second group of Radio buttons
|
||||
Gui, Add, Radio, x142 y23 w80 h20 , &Call
|
||||
Gui, Add, Text, x75 y46 w150 h20 gTime, %CurrTimeEN%
|
||||
Gui, Show, h70 w210, Contact
|
||||
} Else {
|
||||
Gui, Show, h70 w145, Contact
|
||||
}
|
||||
|
||||
Return
|
||||
|
||||
Time:
|
||||
@ -154,12 +158,12 @@ Write:
|
||||
|
||||
Else If (Act = "1") ; Warrant
|
||||
{
|
||||
FileAppend,Händler rief an für Garantieübertragung`nAlte SN: `nNeue SN: `nAuthentisierungscode: `n`n, %docfile%
|
||||
FileAppend,Händler rief an für eine Garantieübertragung`nAlte SN: `nNeue SN: `nAuthentisierungscode: `n`n, %docfile%
|
||||
}
|
||||
|
||||
Else If (Act = "2") ; Demo
|
||||
{
|
||||
FileAppend,Händler rief an für Demo`nSN: `nAuthentisierungscode: `n`n, %docfile%
|
||||
FileAppend,Händler rief an für eine Demo`nSN: `nAuthentisierungscode: `n`n, %docfile%
|
||||
}
|
||||
}
|
||||
}
|
||||
|
464
D3K.ahk
464
D3K.ahk
@ -1,8 +1,7 @@
|
||||
#Include, func.ahk
|
||||
#Include, func.ahk
|
||||
|
||||
Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard
|
||||
|
||||
ini_writeValue(ini, "Version", d3k_version)
|
||||
Menu, Tray, Add, MouseMover ; Add item to tray icon right click for mouse mover
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Make sure the settings file exists, if not, create it
|
||||
@ -16,18 +15,18 @@ FileAppend,
|
||||
[USpec]
|
||||
RACF=LF01234
|
||||
Email=LastnameFirstname@JohnDeere.com
|
||||
Name=Firstname
|
||||
DocFile=Select File
|
||||
[Main]
|
||||
Mansol=1
|
||||
MJDPaste=1
|
||||
CaseFormatter=1
|
||||
CFmail=0
|
||||
[Replacement]
|
||||
JDProductNames=1
|
||||
GloVar=0
|
||||
[Language]
|
||||
German=0
|
||||
[Info]
|
||||
Version=0
|
||||
), %ini%
|
||||
Run Settings.ahk ; Runs the GUI for changing the settings, also accessible with Alt+Shift+\ (also easy way to restart this script)
|
||||
}
|
||||
@ -38,22 +37,23 @@ Run Settings.ahk ; Runs the GUI for changing the settings, also accessible with
|
||||
; This is the part that reads the file to see what your settings are. Variables in the ini file are in all lowercase, variables here are CamelCase for more distinction
|
||||
|
||||
; User Specific things:
|
||||
racf := ini_getValue(ini, "USpec", "RACF")
|
||||
email := ini_getValue(ini, "USpec", "Email")
|
||||
docfile := ini_getValue(ini, "USpec", "DocFile")
|
||||
racf := ini_get(ini, "USpec", "RACF")
|
||||
email := ini_get(ini, "USpec", "Email")
|
||||
name := ini_get(ini, "USpec", "Name")
|
||||
docfile := ini_get(ini, "USpec", "DocFile")
|
||||
|
||||
; General Settings
|
||||
mansol := ini_getValue(ini, "Main", "Mansol")
|
||||
supadmin := ini_getValue(ini, "Main", "Supadmin")
|
||||
mjdpaste := ini_getValue(ini, "Main", "MJDPaste")
|
||||
caseformatter := ini_getValue(ini, "Main", "CaseFormatter")
|
||||
mansol := ini_get(ini, "Main", "Mansol")
|
||||
supadmin := ini_get(ini, "Main", "Supadmin")
|
||||
mjdpaste := ini_get(ini, "Main", "MJDPaste")
|
||||
caseformatter := ini_get(ini, "Main", "CaseFormatter")
|
||||
|
||||
; Replacement
|
||||
jdpn := ini_getValue(ini, "Replacement", "JDProductNames")
|
||||
glovar := ini_getValue(ini, "Replacement", "GloVar")
|
||||
jdpn := ini_get(ini, "Replacement", "JDProductNames")
|
||||
glovar := ini_get(ini, "Replacement", "GloVar")
|
||||
|
||||
; Language
|
||||
ger := ini_getValue(ini, "Language", "German")
|
||||
ger := ini_get(ini, "Language", "German")
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Global Variables
|
||||
@ -61,145 +61,135 @@ ger := ini_getValue(ini, "Language", "German")
|
||||
|
||||
If (glovar = 1)
|
||||
{
|
||||
glovarini = %A_MyDocuments%\GloVar.ini ; Location of the ini that the user modifies
|
||||
|
||||
glovarstart := "#SingleInstance force`n`n:*:$dus::`n:*:$dnm::`n:*:$dem::`n:*:$xid::`n"
|
||||
|
||||
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, "^(?<Key>.*)=(?<Value>.*)", RE) ; Key = REKey, Value = REValue
|
||||
|
||||
RESection := "" ; Make sure that its clear
|
||||
Loop, Read, %glovarini% ; Read one line at a time
|
||||
If (RESection && InStr(StoredSection := RESection, "clear")) ; Found a clear section
|
||||
{
|
||||
RegExMatch(A_LoopReadLine, "(?<=\[).*(?=\])", RESection) ; explained above
|
||||
RegExMatch(A_LoopReadLine, "^(?<Key>.*)=(?<Value>.*)", 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
|
||||
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 ; Just to make sure
|
||||
{
|
||||
ini_writeValue(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_writeValue(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_writeValue(glovarini, REKey, REMatch) ; Writes the properly formatted case number to glovar.ini
|
||||
FileGetTime, gvMod, %glovarini%
|
||||
}
|
||||
REValue := REMatch
|
||||
} Else {
|
||||
WinWaitNotActive, GloVar.ini
|
||||
{
|
||||
ini_writeValue(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_writeValue(glovarini, "xID", REValue) ; Writes the xID entered, but uppercase
|
||||
ini_writeValue(glovarini, "dem", dealinfo.email) ; Writes email address (incredibly useful)
|
||||
ini_writeValue(glovarini, "dnm", dealinfo.name) ; Writes Name (useful for when referring to that person)
|
||||
ini_writeValue(glovarini, "dus", dealinfo.user) ; Writes demo account name (somewhat useful)
|
||||
}
|
||||
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
|
||||
ini_write(glovarini, REKey, REValue) ; Writes the properly formatted case number to glovar.ini
|
||||
FileGetTime, gvMod, %glovarini%
|
||||
}
|
||||
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
|
||||
}
|
||||
If (RESection) ; If we have a section
|
||||
If InStr(REKey, "case") ; If a key contains "case". Case numbers are all in the format "LETTERS-NUMBERS".
|
||||
{
|
||||
StoredSection := RESection
|
||||
If InStr(RESection, "clear") ; Will clear the ini and save its and the documentation file's contents to a log
|
||||
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
|
||||
{
|
||||
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
|
||||
FileCopy, glovarsource, %glovarini%, 1 ; Copies and replaces any text in glovar.ini with the template
|
||||
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
|
||||
}
|
||||
Break
|
||||
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
|
||||
}
|
||||
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
|
||||
}
|
||||
} 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
|
||||
@ -212,6 +202,9 @@ If (glovar = 1)
|
||||
|
||||
!+\::Run Settings.ahk ; Alt+Shift+\
|
||||
|
||||
MouseMover:
|
||||
Run, msmv.ahk
|
||||
Return
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; DTAC Solution Opener
|
||||
@ -415,47 +408,28 @@ SetTitleMatchMode, 2
|
||||
|
||||
; Regular
|
||||
:*:]email::
|
||||
Send Hello,{Enter 2} {Shift down}{Enter}{Shift up}Please contact us if you have any questions.{Up}{End}
|
||||
Send Hello,{Enter 2}{Space 3}
|
||||
Return
|
||||
|
||||
; DTAC Problem
|
||||
:*:]97010::
|
||||
Send Hello,{Enter 2} As this is a hardware/compatibility related inquiry, we here at the GSC cannot assist you properly. Please contact DTAC and they will be able to assist you further.
|
||||
Return
|
||||
|
||||
; 2 Year old COMAR
|
||||
:*:]2yc::
|
||||
Send Hello,{Enter 2} You are unable to activate this product as the COMAR is over 2 years old. There is a form in the Dealer Corner that you can fill out to have it replaced as long as it falls within the criteria outlined in solution 108357.{Enter}Please contact your TCSM if you have any questions about this process.
|
||||
Return
|
||||
|
||||
; CCMS
|
||||
; Cases
|
||||
:*:]cms::
|
||||
Send Hello,{Enter 2} {Enter}{Home down}{Shift up}{Home up}Please contact us if you have any questions.{Enter 2}Thank you,{Enter}David{Up 4}{End}
|
||||
Send Hello,{Enter 2}{Space 3}{Enter}{Home down}{Shift up}{Home up}{Enter}Thank you,{Enter}%name%{Up 3}{End}
|
||||
Return
|
||||
|
||||
#If
|
||||
|
||||
|
||||
; German
|
||||
#If, ger = "1"
|
||||
|
||||
; Regular
|
||||
:*:[email::
|
||||
Send Hallo,{Enter 2} {Shift down}{Enter}{Shift up}Für Rückfragen stehen wir gerne zur Verfügung.{Up}{End}
|
||||
Send Hallo,{Enter 2}{Space 3}
|
||||
Return
|
||||
|
||||
; DTAC Problem
|
||||
:*:[97010::
|
||||
Send Hallo,{Enter 2} Da dies eine Hardware/Kompatibilität-bezogene Anfrage ist, können wir hier im GSC leider ihre Frage nicht sehr gut beantworten. Bitte wenden Sie sich an DTAC, dort können Sie bessere unterstützung für diesen typ von fragen bekommen.
|
||||
Return
|
||||
|
||||
; 2 Year old COMAR
|
||||
:*:[2yc::
|
||||
Send Hallo,{Enter 2} Sie können dieses Produkt nicht aktivieren weil die COMAR-Nummer über 2 Yahre alt ist. Es gibt in Vertriebspartnerinformation ein Formular das Sie ausfüllen können, und Ihre Aktivierungen werden ersetzt so lange es innerhalb der Regeln in DTAC Lösung 108357 ist.{Enter}Bitte melden Sie sich bei Ihrem Technischen Bezirksleiter wenn Sie Fragen über diesen Prozess haben.
|
||||
Return
|
||||
|
||||
; CCMS case
|
||||
; Case
|
||||
:*:[cms::
|
||||
Send Hallo,{Enter 2} {Enter}{Home down}{Shift up}{Home up}Für Rückfragen stehen wir gerne zur Verfügung.{Enter 2}Mit freundlichen Grüßen,{Enter}David{Up 4}{End}
|
||||
Send Hallo,{Enter 2}{Space 3}{Enter}{Home down}{Shift down}{Home up}{Shift up}{Enter}Mit freundlichen Grüßen,{Enter}%name%{Up 3}{End}
|
||||
Return
|
||||
|
||||
#If
|
||||
@ -506,105 +480,107 @@ SetTitleMatchMode, 2
|
||||
|
||||
; English
|
||||
:*:]at::AutoTrac
|
||||
:*:]sf::StarFire
|
||||
:*:]jdlw::JDLink Web
|
||||
:*:]jdld::JDLink Dashboard
|
||||
:*:]jdl2::JDLink Dashboard 2.0
|
||||
:*:]jdlc::JDLink Connect
|
||||
:*:]jdla::JDLink Access
|
||||
:*:]jdls::JDLink Subscription
|
||||
:*:]jdll::JDLink
|
||||
:*:]jdp::JDParts
|
||||
:*:]mjd::MyJohnDeere
|
||||
:*:]opsc::Operations Center
|
||||
:*:]seccon::Section Control
|
||||
:*:]gs::GreenStar
|
||||
:*:]cc::CommandCenter
|
||||
:*:]fc::Field Connect
|
||||
:*:]rs::RowSense
|
||||
:*:]sub::subscription
|
||||
:*:]ss::Stellar Support
|
||||
:*:]tman::Technical Manual
|
||||
:*:]operm::Operator's Manual
|
||||
:*:]hl3::HarvestLab 3000
|
||||
:*:]hlo::Original HarvestLab
|
||||
:*:]bin::Virtual Inventory
|
||||
:*:]warrep::Warranty Reports
|
||||
:*:]tp::TouchPoint
|
||||
:*:]tcsm::Territory Customer Support Manager
|
||||
:*:]macrep::Machine Reports
|
||||
:*:]jdsm::John Deere Software Manager
|
||||
:*:]jddm::John Deere Data Manager
|
||||
:*:]serva::Service Advisor
|
||||
:*:]muc::Master Unlock Code
|
||||
:*:]cc::CommandCenter
|
||||
:*:]deg::{ASC 248}
|
||||
:*:]eq::{ASC 247}
|
||||
:*:]fc::Field Connect
|
||||
:*:]gs::GreenStar
|
||||
:*:]gp::GSC-Prepared
|
||||
:*:]hl3::HarvestLab 3000
|
||||
:*:]hlo::Original HarvestLab
|
||||
:*:]jddm::John Deere Data Manager
|
||||
:*:]jdl2::JDLink Dashboard 2.0
|
||||
:*:]jdla::JDLink Access
|
||||
:*:]jdlc::JDLink Connect
|
||||
:*:]jdld::JDLink Dashboard
|
||||
:*:]jdll::JDLink
|
||||
:*:]jdls::JDLink Subscription
|
||||
:*:]jdlw::JDLink Web
|
||||
:*:]jdp::JDParts
|
||||
:*:]jdsm::John Deere Software Manager
|
||||
:*:]macrep::Machine Reports
|
||||
:*:]mjd::MyJohnDeere
|
||||
:*:]muc::Master Unlock Code
|
||||
:*:]oman::Operator's Manual
|
||||
:*:]opsc::Operations Center
|
||||
:*:]rs::RowSense
|
||||
:*:]seccon::Section Control
|
||||
:*:]serva::Service Advisor
|
||||
:*:]sf::StarFire
|
||||
:*:]ss::Stellar Support
|
||||
:*:]sub::subscription
|
||||
:*:]tcsm::Territory Customer Support Manager
|
||||
:*:]tman::Technical Manual
|
||||
:*:]tp::TouchPoint
|
||||
:*:]warrep::Warranty Reports
|
||||
|
||||
::rowsense::RowSense
|
||||
::comar::COMAR
|
||||
::mrtk::mRTK
|
||||
::rda::RDA
|
||||
::rtk::RTK
|
||||
:*:mtg::MTG
|
||||
:*:racf::RACF
|
||||
:*:vin::VIN
|
||||
::atu::ATU
|
||||
::autotrac::AutoTrac
|
||||
::ccms::CCMS
|
||||
::comar::COMAR
|
||||
::dtac::DTAC
|
||||
::tcsm::TCSM
|
||||
::itec::iTEC Pro
|
||||
::ssu::SSU
|
||||
::atu::ATU
|
||||
:*:mtg::MTG
|
||||
::wdt::WDT
|
||||
::itc::iTC
|
||||
::vin::VIN
|
||||
::gs2::GS2
|
||||
::gs3::GS3
|
||||
::igrade::iGrade
|
||||
::itc::iTC
|
||||
::itec::iTEC Pro
|
||||
::mrtk::mRTK
|
||||
::pmcalc::PMCalc
|
||||
::rda::RDA
|
||||
::rowsense::RowSense
|
||||
::rtk::RTK
|
||||
::sf1::SF1
|
||||
::sf2::SF2
|
||||
::sf3::SF3
|
||||
::sf4::SF4
|
||||
::xid::xID
|
||||
::pmcalc::PMCalc
|
||||
::ssu::SSU
|
||||
::tcsm::TCSM
|
||||
::vat::VAT
|
||||
:*:racf::RACF
|
||||
::igrade::iGrade
|
||||
::wdt::WDT
|
||||
::xid::xID
|
||||
|
||||
|
||||
; German
|
||||
#If, ger = "1"
|
||||
:*:[at::AutoTrac
|
||||
:*:[sf::StarFire
|
||||
:*:[jdlw::JDLink Web
|
||||
:*:[jdld::JDLink Dashboard
|
||||
:*:[jdl2::JDLink Dashboard 2.0
|
||||
:*:[jdlc::JDLink Connect
|
||||
:*:[jdla::JDLink Access
|
||||
:*:[jdls::JDLink Abonnement
|
||||
:*:[jdll::JDLink
|
||||
:*:[jdp::JDParts
|
||||
:*:[mjd::MyJohnDeere
|
||||
:*:[opsc::Einsatzzentrale
|
||||
:*:[seccon::Teilbreitensteuerung
|
||||
:*:[gs::GreenStar
|
||||
:*:[cc::CommandCenter
|
||||
:*:[fc::Field Connect
|
||||
:*:[rs::RowSense
|
||||
:*:[sub::Abonnement
|
||||
:*:[ss::Stellar Support
|
||||
:*:[tman::Technische Betriebsanleitung
|
||||
:*:[oman::Betriebsanleitung
|
||||
:*:[hl3::HarvestLab 3000
|
||||
:*:[hlo::Originales HarvestLab
|
||||
:*:[bin::Virtuellen Bestand
|
||||
:*:[warrep::Warranty Reports
|
||||
:*:[tp::TouchPoint
|
||||
:*:[tcsm::Technischer Bezirksleiter
|
||||
:*:[macrep::Machine Reports
|
||||
:*:[jdsm::John Deere Software Manager
|
||||
:*:[jddm::John Deere Data Manager
|
||||
:*:[serva::Service Advisor
|
||||
:*:[muc::Master Unlock Code
|
||||
:*:[cc::CommandCenter
|
||||
:*:[deg::{ASC 248}
|
||||
:*:[eq::{ASC 247}
|
||||
:*:[fc::Field Connect
|
||||
:*:[gs::GreenStar
|
||||
:*:[gp::GSC-Prepared
|
||||
:*:[hl3::HarvestLab 3000
|
||||
:*:[hlo::Originales HarvestLab
|
||||
:*:[jddm::John Deere Data Manager
|
||||
:*:[jdl2::JDLink Dashboard 2.0
|
||||
:*:[jdla::JDLink Access
|
||||
:*:[jdlc::JDLink Connect
|
||||
:*:[jdld::JDLink Dashboard
|
||||
:*:[jdll::JDLink
|
||||
:*:[jdls::JDLink Abonnement
|
||||
:*:[jdlw::JDLink Web
|
||||
:*:[jdp::JDParts
|
||||
:*:[jdsm::John Deere Software Manager
|
||||
:*:[macrep::Machine Reports
|
||||
:*:[mjd::MyJohnDeere
|
||||
:*:[muc::Master Unlock Code
|
||||
:*:[oman::Betriebsanleitung
|
||||
:*:[opsc::Einsatzzentrale
|
||||
:*:[rs::RowSense
|
||||
:*:[seccon::Teilbreitensteuerung
|
||||
:*:[serva::Service Advisor
|
||||
:*:[sf::StarFire
|
||||
:*:[ss::Stellar Support
|
||||
:*:[sub::Abonnement
|
||||
:*:[tcsm::Technischer Bezirksleiter
|
||||
:*:[tman::Technische Betriebsanleitung
|
||||
:*:[tp::TouchPoint
|
||||
:*:[warrep::Warranty Reports
|
||||
#If
|
||||
|
||||
|
||||
@ -615,19 +591,19 @@ SetTitleMatchMode, 2
|
||||
; QoL Improvements
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
#j::
|
||||
Run, C:\Users\%racf%\Downloads ; Open the downloads folder on Win+J
|
||||
#j:: ; Open the downloads folder on Win+J
|
||||
Run, C:\Users\%racf%\Downloads
|
||||
Return
|
||||
|
||||
|
||||
|
||||
#w::
|
||||
#w:: ; Open My Documents folder on Win+W
|
||||
if WinActive("ahk_exe Explorer.EXE") ; If windows explorer is focused
|
||||
{
|
||||
Send !d ; Focus the address bar
|
||||
Send C:\Users\%racf%\Documents\Work_Docs\Cases\2020-01 - 06 ; current folder, would love to use a var instead, but Run doesn't like it
|
||||
Send C:\Users\%racf%\Documents
|
||||
Send {Enter}
|
||||
Return
|
||||
}
|
||||
Run, C:\Users\%racf%\Documents\Work_Docs\Cases\2020-01 - 06 ; Open the documentation folder on Win+W
|
||||
Return
|
||||
Run, C:\Users\%racf%\Documents
|
||||
Return
|
||||
|
33
Mansol_Opener.ahk
Normal file
33
Mansol_Opener.ahk
Normal file
@ -0,0 +1,33 @@
|
||||
#SingleInstance force ; Only one instance at a time
|
||||
SendMode, Input
|
||||
FileEncoding, UTF-8 ; Makes sure the special characters don't break stuff
|
||||
|
||||
Menu, Tray, Icon, %A_MyDocuments%\D3K\icons\manual.ico
|
||||
|
||||
Gui, +AlwaysOnTop +ToolWindow
|
||||
|
||||
Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
|
||||
Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok
|
||||
Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ?
|
||||
Gui, Show, h28 w100, ManSol
|
||||
GuiControl, Hide, Hidden
|
||||
|
||||
Return
|
||||
|
||||
ButtonOk:
|
||||
Gui, submit ; I have no idea what the regex means any more...
|
||||
If RegExMatch(Number, "[[:alpha:]]+")
|
||||
run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number
|
||||
Else If RegExMatch(Number, "[[:digit:]]+")
|
||||
run, % "https://serviceadvisor.deere.com/WebSA/solutions/en/" . Number
|
||||
ExitApp
|
||||
Return
|
||||
|
||||
|
||||
Help:
|
||||
MsgBox, 262176, Maual & Solution opener, Input the TM/OM SKU (easily ofund on TechPubs) or the DTAC solution number to open it in your default browser.`nTMs & OMs open in Service Advisor.
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
GuiEscape:
|
||||
ExitApp
|
96
Settings.ahk
96
Settings.ahk
@ -9,25 +9,23 @@ This is the part that reads the file to see what your settings are. Variables in
|
||||
*/
|
||||
|
||||
; User Specific things:
|
||||
racf := ini_getValue(ini, "USpec", "RACF")
|
||||
email := ini_getValue(ini, "USpec", "Email")
|
||||
docfile := ini_getValue(ini, "USpec", "DocFile")
|
||||
racf := ini_get(ini, "USpec", "RACF")
|
||||
email := ini_get(ini, "USpec", "Email")
|
||||
name := ini_get(ini, "USpec", "Name")
|
||||
docfile := ini_get(ini, "USpec", "DocFile")
|
||||
|
||||
; General Settings
|
||||
mansol := ini_getValue(ini, "Main", "Mansol")
|
||||
mjdpaste := ini_getValue(ini, "Main", "MJDPaste")
|
||||
caseformatter := ini_getValue(ini, "Main", "CaseFormatter")
|
||||
mansol := ini_get(ini, "Main", "Mansol")
|
||||
mjdpaste := ini_get(ini, "Main", "MJDPaste")
|
||||
caseformatter := ini_get(ini, "Main", "CaseFormatter")
|
||||
cfmail := ini_get(ini, "Main", "CFmail")
|
||||
|
||||
; Replacement
|
||||
jdpn := ini_getValue(ini, "Replacement", "JDProductNames")
|
||||
glovar := ini_getValue(ini, "Replacement", "GloVar")
|
||||
jdpn := ini_get(ini, "Replacement", "JDProductNames")
|
||||
glovar := ini_get(ini, "Replacement", "GloVar")
|
||||
|
||||
; Language
|
||||
ger := ini_getValue(ini, "Language", "German")
|
||||
|
||||
; Info
|
||||
d3k_version := ini_getValue(ini, "Info", "Version")
|
||||
d3k_version := RTrim(d3k_version, "0") ; it was returning the value with appended zeroes, that's not neccesary.
|
||||
ger := ini_get(ini, "Language", "German")
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Create GUI
|
||||
@ -37,64 +35,73 @@ Gui, -MaximizeBox -MinimizeBox ; Remove the max+min buttons
|
||||
Gui, Add, GroupBox, x8 y2 w67 h37, RACF
|
||||
Gui, Add, Edit, x12 y15 w60 h20 vformRACF gRACF, %RACF%
|
||||
|
||||
Gui, Add, GroupBox, x85 y2 w200 h37, First Name
|
||||
Gui, Add, Edit, x89 y15 w193 h20 vformName gName, %Name%
|
||||
|
||||
Gui, Add, GroupBox, x8 y40 w207 h37, Email Address
|
||||
Gui, Add, Edit, x12 y53 w200 h20 vformEmail gEmail, %Email%
|
||||
|
||||
Gui, Add, GroupBox, x77 y2 w207 h37, Documentation File
|
||||
Gui, Add, Text, x81 y19 w200 h20 gDocFile, %docfile%
|
||||
|
||||
Gui, Add, GroupBox, x8 y83 w107 h105, Main
|
||||
Gui, Add, GroupBox, x8 y83 w107 h130, Main
|
||||
Gui, Add, CheckBox, x12 y95 w100 h30 vformMansol Checked%mansol% gMansol, ManSol
|
||||
Gui, Add, CheckBox, x12 y125 w100 h30 vformMJDPaste Checked%mjdpaste% gMJDPaste, MJDPaste
|
||||
Gui, Add, CheckBox, x12 y155 w100 h30 vformCaseFormatter Checked%caseformatter% gCaseFormatter, Case Formatter
|
||||
Gui, Add, CheckBox, x25 y178 w75 h30 vformCFmail Checked%cfmail% gCFmail, Email option
|
||||
GuiControl, show%caseformatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked
|
||||
Gui, Add, GroupBox, x8 y215 w277 h40 vformDocFile, Documentation File
|
||||
Gui, Add, Text, x15 y231 w260 h20 vformDocFile2 gDocFile, %docfile%
|
||||
GuiControl, show%caseformatter%, formDocFile ; only shows the documentation file field if the Case Formatter box is checked
|
||||
GuiControl, show%caseformatter%, formDocFile2
|
||||
|
||||
Gui, Add, GroupBox, x128 y83 w157 h75, Text Replacement
|
||||
Gui, Add, CheckBox, x132 y95 w150 h30 vformJdpn Checked%jdpn% gJdpn, JD Product Names
|
||||
Gui, Add, CheckBox, x132 y125 w150 h30 vformGlovar Checked%glovar% gGlovar, Global Variables
|
||||
Gui, Add, CheckBox, x132 y155 w100 h30 vformGer Checked%ger% gGer, DE ([ as prefix)
|
||||
|
||||
Gui, Add, CheckBox, x12 y187 w100 h30 vformGer Checked%ger% gGer, DE ([ as prefix)
|
||||
Gui, Add, Button, x132 y190 w150 h23 gHelp, Click here for help (v%d3k_version%)
|
||||
Gui, Add, Link, x132 y190 w150 h23 gHelp, <a href="https://daviddaily.dev/david/d3k/wiki">Click here for help</a> (v%d3k_version%)
|
||||
|
||||
Gui, Show, h225 w295, David 3000 Settings
|
||||
Gui, Show, h263 w295, David 3000 Settings
|
||||
Return
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Edit ini
|
||||
;------------------------------------------------------------------------------
|
||||
/*
|
||||
Default ini, sections are in []:
|
||||
|
||||
Default ini, sections are in []: (0 is off, 1 is on)
|
||||
[USpec]
|
||||
RACF=LF01234
|
||||
Email=LastnameFirstname@JohnDeere.com
|
||||
DocFile=
|
||||
Name=Firstname
|
||||
DocFile=Select File
|
||||
[Main]
|
||||
Mansol=1
|
||||
MJDPaste=1
|
||||
CaseFormatter=1
|
||||
CFmail=0
|
||||
[Replacement]
|
||||
JDProductNames=1
|
||||
GloVar=0
|
||||
[Language]
|
||||
German=0
|
||||
[Info]
|
||||
Version=2.5
|
||||
|
||||
format for below:
|
||||
|
||||
Button G-label (executes when clicked):
|
||||
Submit the gui so that it can change and don't hide it
|
||||
write the state of the check box (a 0 for unchecked, 1 for checked), to the file at %ini%, section with this name, line with this name
|
||||
Submit the gui so that it can change and don't hide it
|
||||
write the state of the check box (a 0 for unchecked, 1 for checked), to the file at %ini%, section with this name, line with this name
|
||||
*/
|
||||
|
||||
RACF:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "RACF", formRACF)
|
||||
ini_write(ini, "RACF", formRACF)
|
||||
Return
|
||||
|
||||
Name:
|
||||
Gui, Submit, NoHide
|
||||
ini_write(ini, "Name", formName)
|
||||
Return
|
||||
|
||||
Email:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "Email", formEmail)
|
||||
ini_write(ini, "Email", formEmail)
|
||||
Return
|
||||
|
||||
DocFile:
|
||||
@ -103,47 +110,56 @@ DocFile:
|
||||
if SelectedFile =
|
||||
MsgBox, You have not selected a file, this will break some things.
|
||||
else
|
||||
ini_writeValue(ini, "DocFile", SelectedFile)
|
||||
docfile := ini_getValue(ini, "USpec", "DocFile")
|
||||
ini_write(ini, "DocFile", SelectedFile)
|
||||
docfile := ini_get(ini, "USpec", "DocFile")
|
||||
Gui, Show, h225 w295, David 3000 Settings
|
||||
Return
|
||||
|
||||
Mansol:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "Mansol", formMansol)
|
||||
ini_write(ini, "Mansol", formMansol)
|
||||
Return
|
||||
|
||||
MJDPaste:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "MJDPaste", formMJDPaste)
|
||||
ini_write(ini, "MJDPaste", formMJDPaste)
|
||||
Return
|
||||
|
||||
CaseFormatter:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "CaseFormatter", formCaseFormatter)
|
||||
GuiControl, show%formCaseFormatter%, formCFmail ; only shows the check box for emails if the Case Formatter box is checked
|
||||
GuiControl, show%formCaseFormatter%, formDocFile
|
||||
GuiControl, show%formCaseFormatter%, formDocFile2
|
||||
GuiControl,, formCFmail, 0
|
||||
ini_write(ini, "CaseFormatter", formCaseFormatter)
|
||||
ini_write(ini, "CFmail", "0") ; if you're toggling this, its either on or off, doesn't hurt to set it here
|
||||
Return
|
||||
|
||||
CFmail:
|
||||
Gui, Submit, NoHide
|
||||
ini_write(ini, "CFmail", formCFmail)
|
||||
Return
|
||||
|
||||
Jdpn:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "JDProductNames", formJdpn)
|
||||
ini_write(ini, "JDProductNames", formJdpn)
|
||||
Return
|
||||
|
||||
Glovar:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "GloVar", formGlovar)
|
||||
ini_write(ini, "GloVar", formGlovar)
|
||||
Return
|
||||
|
||||
Ger:
|
||||
Gui, Submit, NoHide
|
||||
ini_writeValue(ini, "German", formGer)
|
||||
ini_write(ini, "German", formGer)
|
||||
Return
|
||||
|
||||
Help:
|
||||
Gui, Submit
|
||||
Run, https://daviddaily.dev/david/d3k/wiki
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
GuiEscape:
|
||||
Run D3K.ahk
|
||||
ExitApp ; Closes the app when escape or the exit button is pressed
|
||||
ExitApp ; Closes the app when escape or the exit button is pressed
|
||||
|
18
addemail.ahk
18
addemail.ahk
@ -1,17 +1,19 @@
|
||||
#Include, func.ahk
|
||||
Menu, Tray, Icon, shell32.dll, 283 ; Set the tray icon to a keyboard
|
||||
|
||||
csv = %A_MyDocuments%\Work_Docs\emails.csv ; Where the email CSV is
|
||||
csv = %A_MyDocuments%\emails.csv ; Where the email CSV is
|
||||
|
||||
glovarini := A_MyDocuments "\GloVar.ini"
|
||||
Xid := ini_get(glovarini, "Info", "xID")
|
||||
|
||||
Gui, +AlwaysOnTop +ToolWindow
|
||||
|
||||
Gui, Add, Text, x2 y2 w60 h17 +Center, xID
|
||||
Gui, Add, Text, x65 y2 w120 h17 +Center, Name
|
||||
Gui, Add, Text, x190 y2 w100 h17 +Center, Email
|
||||
Gui, Add, Text, x65 y2 w120 h17 +Center, Email
|
||||
Gui, Add, Text, x190 y2 w100 h17 +Center, Name
|
||||
|
||||
Gui, Add, Edit, x2 y17 w60 h20 vXid
|
||||
Gui, Add, Edit, x65 y17 w120 h20 vName
|
||||
Gui, Add, Edit, x190 y17 w100 h20 vEmail
|
||||
Gui, Add, Edit, x2 y17 w60 h20 vXid, %Xid%
|
||||
Gui, Add, Edit, x65 y17 w120 h20 vEmail
|
||||
Gui, Add, Edit, x190 y17 w100 h20 vName
|
||||
|
||||
Gui, Add, Button, x172 y89 w70 h30 Default, OK
|
||||
|
||||
@ -22,7 +24,7 @@ ButtonOK:
|
||||
Gui, Submit
|
||||
writethis := Xid . "," . Email . "," . Name
|
||||
FileAppend, % "`n" writethis, %csv%
|
||||
Clipboard := Xid
|
||||
ini_write(A_MyDocuments "\GloVar.ini", "dem", Email)
|
||||
Return
|
||||
|
||||
|
||||
|
51
func.ahk
51
func.ahk
@ -3,14 +3,14 @@ SendMode, Input
|
||||
FileEncoding, UTF-8 ; Makes sure the special characters dont break stuff
|
||||
SetWorkingDir, %A_MyDocuments%\D3K ; Make sure we can find the .ahks linked below
|
||||
|
||||
d3k_version = 2.7 ; The current version
|
||||
d3k_version = 2.9 ; The current version
|
||||
|
||||
ini = %A_MyDocuments%\D3Ksettings.ini ; Where the settings ini is
|
||||
|
||||
GetDateTime(lang)
|
||||
{
|
||||
UTCTimestamp := A_NowUTC ; Grab the current time and date
|
||||
UTCFormatStr := "yyyy-MM-dd" ; This is what we want it to look like
|
||||
UTCFormatStr := "yyyy-MM-dd" ; The Date
|
||||
FormatTime, DateStr, %UTCTimestamp%, %UTCFormatStr% ; format it to make it look like the Date we want
|
||||
UTCFormatStr := "H:mm' GMT'" ; The time
|
||||
FormatTime, TimeStr, %UTCTimestamp%, %UTCFormatStr% ; Format the string to be better
|
||||
@ -25,37 +25,44 @@ GetDateTime(lang)
|
||||
}
|
||||
}
|
||||
|
||||
GetInfo(xID) ; Accept what is passed here as the variable "xID" in the script
|
||||
GetInfo(xID)
|
||||
{
|
||||
if (xID)
|
||||
{
|
||||
Loop, Read, %A_MyDocuments%\Work_Docs\emails.csv ; read every line of "emails.csv"
|
||||
File := FileOpen(A_MyDocuments "\emails.csv", "r")
|
||||
Loop
|
||||
{
|
||||
Line := File.ReadLine()
|
||||
Array := StrSplit(Line,",") ; split the line at its separating commas to get separate "columns" AKA elements
|
||||
if InStr(Array[1], xID) ; if at the specified element (1) the specified content (dealers xID) has been found
|
||||
{
|
||||
Array := StrSplit(A_LoopReadLine,",") ; split the line at its separating commas to get separate "columns" AKA elements
|
||||
if InStr(Array[1],xID) ; if at the specified element (1) the specified content (dealers xID) has been found,
|
||||
Break ; stop searching
|
||||
Test := {xid: Array[1], email: Array[2], name: Array[3], user: Array[4], org: Array[5]} ; Return the array so we can do {variable}.email and so on
|
||||
File.Close() ; Close the file
|
||||
Return Test ; Return the array with the deets that we found
|
||||
}
|
||||
Test:= {xid: Array[1], email: Array[2], name: Array[3], user: Array[4], org: Array[5]} ; Return the array so we can do {variable}.email and so on
|
||||
Return Test
|
||||
} Until (File.AtEOF)
|
||||
File.Close()
|
||||
Return false
|
||||
}
|
||||
if !(xID)
|
||||
{
|
||||
Return
|
||||
Return false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; INI Manipulation that supports UTF-8
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
ini_load(location)
|
||||
{
|
||||
File := FileOpen(location, "r")
|
||||
out := {}
|
||||
Loop, Read, %location%
|
||||
Loop
|
||||
{
|
||||
RegExMatch(A_LoopReadLine, "(?<=\[).*(?=\])", _RESection) ; Matches section name
|
||||
RegExMatch(A_LoopReadLine, "(?<Key>.*)=(?<Value>.*)", _) ; Key = _Key, Value = _Value
|
||||
Line := File.ReadLine()
|
||||
RegExMatch(Line, "(?<=\[).*(?=\])", _RESection) ; Matches section name
|
||||
RegExMatch(Line, "(?<Key>.*)=(?<Value>.*)", _) ; Key = _Key, Value = _Value
|
||||
|
||||
If (_RESection)
|
||||
{
|
||||
@ -69,11 +76,12 @@ ini_load(location)
|
||||
out[currentSection][_Key] := _Value
|
||||
}
|
||||
}
|
||||
}
|
||||
} Until (File.AtEOF)
|
||||
File.Close()
|
||||
Return out
|
||||
}
|
||||
|
||||
ini_getValue(location, inSec, inKey)
|
||||
ini_get(location, inSec, inKey)
|
||||
{
|
||||
ini_loaded := {}
|
||||
ini_loaded := ini_load(location)
|
||||
@ -81,10 +89,15 @@ ini_getValue(location, inSec, inKey)
|
||||
inSec := StrReplace(inSec, " ", "_")
|
||||
inKey := StrReplace(inKey, " ", "_")
|
||||
|
||||
Return ini_loaded[inSec][inKey]
|
||||
needed := ini_loaded[inSec][inKey]
|
||||
|
||||
if (needed) ; Without this it doesn't know what to return and gets stuck
|
||||
{
|
||||
Return needed
|
||||
} Else Return false
|
||||
}
|
||||
|
||||
ini_writeValue(location, inKey, inValue)
|
||||
ini_write(location, inKey, inValue)
|
||||
{
|
||||
FileRead, tempini, %location%
|
||||
needle := inKey . "=.*"
|
||||
@ -95,4 +108,4 @@ ini_writeValue(location, inKey, inValue)
|
||||
FileAppend, %tempini%, tempini ; Append the fixed ini to a new file
|
||||
FileCopy, tempini, %location%, 1 ; Copy the file over, overwriting existing contents
|
||||
FileDelete, tempini ; Delete the fixed temporary ini
|
||||
}
|
||||
}
|
||||
|
@ -7,9 +7,9 @@ VIN=
|
||||
[Operations Center]
|
||||
usr=
|
||||
org=
|
||||
dorg=
|
||||
[Info]
|
||||
case=
|
||||
dorg=
|
||||
dus=
|
||||
dnm=
|
||||
dem=
|
||||
|
63
msmv.ahk
Normal file
63
msmv.ahk
Normal file
@ -0,0 +1,63 @@
|
||||
#SingleInstance, force
|
||||
CoordMode, Mouse, Screen
|
||||
|
||||
waittime := 180000
|
||||
|
||||
Switch A_Args[1]
|
||||
{
|
||||
Case "on":
|
||||
Menu, Tray, NoIcon
|
||||
Goto, Start
|
||||
Case "off":
|
||||
ExitApp
|
||||
}
|
||||
|
||||
Menu, Tray, Add, Hide GUI, GuiToggle ; Adds a button to toggle the gui
|
||||
Menu, Tray, Add, Exit, GuiClose ; Exit button
|
||||
Menu, Tray, NoStandard ; None of the standard tray buttons
|
||||
Gui, +AlwaysOnTop +ToolWindow
|
||||
Gui, Add, Button, x3 y3 w55 h20 gStart +Center, Start
|
||||
Gui, Add, Button, x3 y3 w55 h20 gStop +Center, Stop
|
||||
Gui, Show, h28 w60, msmv
|
||||
GuiControl, Hide, Stop ; Since we want the Start button to show first
|
||||
Return
|
||||
|
||||
Start:
|
||||
GuiControl, Hide, Start
|
||||
SetTimer, Msmv, %waittime% ; Checks if the has been input in the last 2 minutes every 30 secs, easier to stop a loop with SetTimer
|
||||
GuiControl, Show, Stop
|
||||
Return
|
||||
|
||||
Stop:
|
||||
GuiControl, Hide, Stop
|
||||
SetTimer, Msmv, off
|
||||
GuiControl, Show, Start
|
||||
Return
|
||||
|
||||
Msmv:
|
||||
If (A_TimeIdle > waittime) ; https://www.autohotkey.com/docs/Variables.htm#User_Idle_Time
|
||||
{
|
||||
Random, x,, %A_ScreenWidth%
|
||||
Random, y,, %A_ScreenHeight%
|
||||
MouseMove %x%, %y%
|
||||
}
|
||||
Return
|
||||
|
||||
GuiToggle:
|
||||
If !nogui
|
||||
{
|
||||
Gui, Hide
|
||||
Menu, Tray, Check, Hide GUI
|
||||
nogui := True
|
||||
}
|
||||
Else
|
||||
{
|
||||
Menu, Tray, uncheck, Hide GUI
|
||||
nogui := False
|
||||
Gui, Show
|
||||
}
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
GuiEscape:
|
||||
ExitApp ; Closes the app when escape or the exit button is pressed
|
306
old_versions/Break (broken, not being fixed).ahk
Normal file
306
old_versions/Break (broken, not being fixed).ahk
Normal file
@ -0,0 +1,306 @@
|
||||
#SingleInstance force ; We only want one of these running at a time...
|
||||
FileEncoding, UTF-8
|
||||
Menu, Tray, Icon, %A_MyDocuments%\D3K\icons\coffeecup.ico
|
||||
DetectHiddenWindows, On ; This is so that it can identIfy that the window exists since we have it not show up in the taskbar
|
||||
|
||||
Total := 60 ; Total break time in minutes
|
||||
KeepThis := 1 ; Just a variable to save things
|
||||
winx := 1 ; When these two are set to 1, it puts the window at the center
|
||||
winy := 1
|
||||
ugly := False
|
||||
|
||||
If FileExist("T_Msg.ahk")
|
||||
{
|
||||
#Include T_Msg.ahk
|
||||
}
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Main GUI creation
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
ShowGUI: ; Easy way to recreate the window for the pretty color
|
||||
Gui, main:+AlwaysOnTop
|
||||
Gui, main:+ToolWindow ; Removes the minimize and maximize buttons, removes it from the taskbar
|
||||
|
||||
Gui, main:Add, Progress, x2 y1 w110 h14 Range0-60 -Smooth vProgress, %Total% ; Slider at the top, a nice visual
|
||||
Gui, main:Add, Text, x43 y23 w27 h20 vTotal +Center, %Total% ; The total time left
|
||||
Gui, main:Add, Edit, x72 y20 w30 h20 +Number vInput +Center, ; Input box for the length of your break
|
||||
Gui, main:Add, Button, x2 y20 w40 h20 gLock, Lock ; Button to lock PC
|
||||
Gui, main:Add, Text, x2 y23 w40 h20 vLocked, Locked ; Text that confirmes that your PC is locked
|
||||
Gui, main:Add, Button, x2 y20 w40 h20 gBreakButton vBrek, Break ; Button to start break
|
||||
Gui, main:Add, Button, x2 y20 w40 h20 gEnd, End ; Button to end break
|
||||
Gui, main:Add, Button, x21 y83 w70 h30 Default gLength, Length ; Button that is default so that when you press enter on the input field it puts you on that long of a break and also locks the PC
|
||||
|
||||
; Hide the things we don't want to see when it starts up
|
||||
GuiControl, Hide, Subtract
|
||||
GuiControl, Hide, Lock
|
||||
GuiControl, Hide, Locked
|
||||
GuiControl, Hide, End
|
||||
|
||||
If (ugly = True){
|
||||
GuiControl, -cGreen, Progress
|
||||
}
|
||||
|
||||
; AI to make it show the window where it was before (explained later)
|
||||
If (winx="1" And winy="1"){ ; The default values assigned at the beginning of the script
|
||||
WinLoc := "Center" ; Shows the window in the center of the screen (basically only on startup)
|
||||
}
|
||||
Else{
|
||||
WinLoc = x%winx% y%winy% ; Saved further down in the script when clicking on End
|
||||
}
|
||||
|
||||
Gui, main:Show, h45 w115 %WinLoc%, Break time ; Show the GUI
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
ExitApp ; Make sure that it doesn't keep running when the close button is clicked
|
||||
Return
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Main GUI buttons
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
Length:
|
||||
LWD := True
|
||||
Goto, GuiContextMenu
|
||||
Return
|
||||
|
||||
BreakButton: ; Starts your break for the length you entered in the field
|
||||
GuiControl, Hide, Brek ; Hide the Break button
|
||||
Send, #+B ; Hotkey for default Break Time (10 mins)
|
||||
Gui, main:submit, NoHide
|
||||
GuiControl, Show, Lock ; Show the Lock button
|
||||
uploop := True ; Set this to true so that it doesn't exit after one run
|
||||
BreakLength = 10 ; Default break length
|
||||
BegWarned = False
|
||||
HalfBreakLength := BreakLength // 2
|
||||
HBWarned = False
|
||||
WarnLength := BreakLength - 2
|
||||
EBWarned = False
|
||||
SetTimer, UpTimer, 1000 ; Function for updating the graphics
|
||||
StartTime := A_TickCount ; Saves the time that we started at in Milliseconds
|
||||
KeepThis := Total ; Saves the current total to a dIfferent variable so that If there are errors while it is updating, it doesn't mess with anything else
|
||||
GuiControl, +cRed, Progress ; Changes the color of the progress bar to red. It is the entire reason that the GUI needs to be destroyed and then recreated
|
||||
Sleep, 3000 ; Show the lock button for 2 seconds
|
||||
GuiControl, Hide, Lock ; Remove the lock button
|
||||
GuiControl, Show, End ; Show the end button
|
||||
Return
|
||||
|
||||
Lock: ; Locks the PC
|
||||
Gui, main:submit, NoHide
|
||||
GuiControl, Hide, Lock ; If you can't figure this one out by now, you might need to RTFM
|
||||
GuiControl, Show, Locked
|
||||
Run rundll32.exe user32.dll`,LockWorkStation ; Locks PC by calling the DLL. just sending Win+L sadly doesn't work
|
||||
Sleep, 1000
|
||||
GuiControl, Hide, Locked
|
||||
GuiControl, Show, End
|
||||
uploop := True ; No real reason to do this, but it can't hurt
|
||||
Return
|
||||
|
||||
End: ; Ends your break
|
||||
Send, #+B ; Break hotkey
|
||||
GuiControl, Hide, End
|
||||
SetTimer, UpTimer, Off ; Stop the live updating loop
|
||||
ElapsedTime := A_TickCount - StartTime ; grabs the current time in MS, and subtracts it from the TickCount that we recorded earlier
|
||||
ELSeconds := ElapsedTime/1000 ; Convert to seconds
|
||||
ELMins := ELSeconds/60 ; Convert to minutes
|
||||
ELMins := Round(ELMins, 2) ; Round it off to 2 places
|
||||
Total := (KeepThis-ELMins) ; Subtract the elapsed minutes (in ##.##0000) from the total
|
||||
Total := SubStr(Total, 1, 2) ; Trim off the total cause it now has a bunch of useless zeros at the end, and we don't want to see those
|
||||
WinGetActiveStats, Title, Width, Height, winx, winy ; Save the current position to variables, first three are there cause it is required
|
||||
SetTimer, UpTimer, Off ; Make sure the dang thing turns off
|
||||
Gui, main:Destroy ; I couldn't find a way to get the default Win10 green with the flashing part back, so we're just gonna destroy it and make a new one at the exact same place
|
||||
Goto, ShowGUI ; Just goes to the top to create the GUI again, but this time at the locations saved from earlier.
|
||||
GuiControl,, Total, %Total% ; ModIfy the time at the bottom and progress bar to be accurate
|
||||
GuiControl,, Progress, %Total%
|
||||
If (ugly = True)
|
||||
{
|
||||
GuiControl, -cGreen, Progress
|
||||
}
|
||||
Sleep, 1000 ; A little bit of break time so that you don't immediatley go back into break accidentially
|
||||
GuiControl, Show, Brek
|
||||
uploop := False ; Make sure the dang thing turns off
|
||||
; Delete previous message
|
||||
Return
|
||||
|
||||
GuiContextMenu:
|
||||
mousegetpos,,,, name
|
||||
If InStr(name, "Button")
|
||||
{
|
||||
Return
|
||||
}
|
||||
|
||||
;Since there isn't a return here, right clicking anywhere other than the button will show the second GUI, as well as pressing Escape
|
||||
;------------------------------------------------------------------------------
|
||||
; Second GUI
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
GuiEscape:
|
||||
Gui, 2: Destroy ; Just in case there is one open already
|
||||
WinGetActiveStats, Title, Width, Height, winx, winy ; Save the current position to variables, other ones are there cause it was required
|
||||
|
||||
|
||||
|
||||
Gui, 2: +AlwaysOnTop
|
||||
Gui, 2: +ToolWindow
|
||||
|
||||
Gui, 2: Add, Edit, x2 y2 w40 h20 +Number vSubInput +Center, ; Input box for when you manually do a break
|
||||
Gui, 2: Add, Button, x21 y83 w70 h30 Default gSubtract, Subtract
|
||||
|
||||
|
||||
winy += 75
|
||||
winx += 35
|
||||
Win2Loc = x%winx% y%winy% ; Makes the little popup show up centered below the break window
|
||||
|
||||
|
||||
Gui, 2: Show, w45 h25 %Win2Loc%, Subtract from Total time ; Show the GUI
|
||||
Return
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Second GUI buttons
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
Subtract: ; The default button, subtracts the time you entered into the field from the total
|
||||
gui, 2:submit, Hide ; Makes sure the GUI doesn't dissapear when you submit it
|
||||
Total := (Total - SubInput) ; Subtracts what you entered from the total time
|
||||
GuiControl,, Total, %Total% ; ModIfy the time at the bottom and progress bar to be accurate
|
||||
GuiControl,, Progress, %Total%
|
||||
Gui, 2:Destroy
|
||||
WinActivate, Break Time
|
||||
WinGetActiveStats, Title, Width, Height, winx, winy ; Save the current position to variables, first three are there cause it is required
|
||||
Gui, main:Destroy
|
||||
Goto, ShowGUI ; Just goes to the top to create the GUI again, but this time at the locations saved from earlier.
|
||||
Return
|
||||
|
||||
2GuiClose: ; From the close button
|
||||
2GuiEscape: ; From pressing escape
|
||||
Gui, 2: Destroy
|
||||
Return
|
||||
|
||||
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; GUI to remove green color
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
2GuiContextMenu: ; Because one nested GUI isn't enough
|
||||
MsgBox, 4148, Color Change, Remove the flashing green?
|
||||
|
||||
IfMsgBox, Yes
|
||||
{
|
||||
GuiControl, -cGreen, Progress
|
||||
ugly := True
|
||||
}
|
||||
Return
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
UpTimer:
|
||||
ElapsedTime := A_TickCount - StartTime ; grabs the current time in MS, and subtracts it from the time that we recorded earlier
|
||||
ELSeconds := ElapsedTime // 1000 ; Convert to seconds
|
||||
ELMins := ELSeconds // 60 ; Convert to minutes
|
||||
ELMins := Round(ELMins) ; Round it off to nearest Intreger
|
||||
Update := (Total-ELMins) ; Subtract the elapsed minutes from the total
|
||||
GuiControl,, Progress, %Update% ; Update the time left at the bottom and progress bar
|
||||
GuiControl,, Total, %Update%
|
||||
|
||||
If FileExist("T_Msg.ahk")
|
||||
{
|
||||
If (BegWarned = "False")
|
||||
{
|
||||
If (HalfBreakLength >= WarnLength)
|
||||
{
|
||||
BegWarned = True
|
||||
HBWarned = True
|
||||
T_SendMsg("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins left.`n<code>" Total " mins of break time left</code>")
|
||||
}
|
||||
|
||||
If (HalfBreakLength < WarnLength)
|
||||
{
|
||||
BegWarned = True
|
||||
T_SendMsg("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins and " WarnLength " mins elapsed.`n<code>" Total " mins of break time left</code>")
|
||||
}
|
||||
|
||||
Temp := Update
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
If FileExist("T_Msg.ahk")
|
||||
{
|
||||
If !(Temp > Update)
|
||||
{
|
||||
Temp := Update
|
||||
If (HBWarned = "False")
|
||||
{
|
||||
If (ELMins = HalfBreakLength)
|
||||
{
|
||||
; Delete previous message
|
||||
T_SendMsg("alert", 1, "Break is half over, " HalfBreakLength " mins left.`n<code>" Update " mins of break time left</code>")
|
||||
HBWarned = True
|
||||
}
|
||||
|
||||
If (HalfBreakLength >= WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins left.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
|
||||
If (HalfBreakLength < WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins and " WarnLength " mins elapsed.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
}
|
||||
|
||||
If (HBWarned = "True")
|
||||
{
|
||||
If (HalfBreakLength >= WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, warned on " HalfBreakLength " mins left.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
|
||||
If (HalfBreakLength < WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, warned on " HalfBreakLength " mins, will warn again on " WarnLength " mins elapsed.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
}
|
||||
|
||||
If (EBWarned = "False")
|
||||
{
|
||||
If (ELMins = WarnLength)
|
||||
{
|
||||
T_SendMsg("hand", 3, "<b>Break is almost over, 2 mins left of your " BreakLength " minute break!</b>`n<code>" Update " mins of break time left</code>")
|
||||
EBWarned = True
|
||||
}
|
||||
Else
|
||||
{
|
||||
If (HalfBreakLength >= WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins left.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
|
||||
If (HalfBreakLength < WarnLength)
|
||||
{
|
||||
T_Edit("info",1,BreakLength " Minute break started, will warn on " HalfBreakLength " mins and " WarnLength " mins elapsed.`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
If (EBWarned = "True")
|
||||
{
|
||||
If (HalfBreakLength >= WarnLength)
|
||||
{
|
||||
T_Edit("hand", 3, "<b>Break is almost over, 2 mins left of your " BreakLength " minute break!</b>`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
|
||||
If (HalfBreakLength < WarnLength)
|
||||
{
|
||||
T_Edit("hand", 3, "<b>Break is almost over, 2 mins left of your " BreakLength " minute break!</b>`n<code>" Update " mins of total break time left</code>")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Return
|
145
old_versions/T_Msg.ahk
Normal file
145
old_versions/T_Msg.ahk
Normal file
@ -0,0 +1,145 @@
|
||||
; Sauce: https://www.autohotkey.com/boards/viewtopic.php?t=24919
|
||||
|
||||
T_SendMsg(Option,EmojiPosition,Text)
|
||||
{
|
||||
ini = %A_MyDocuments%\D3Ksettings.ini ; Where the ini is
|
||||
|
||||
IniRead, TelegramBotToken, %ini%, Info, TBToken, 0
|
||||
IniRead, TelegramBotChatID, %ini%, Info, TBChatID, 0
|
||||
|
||||
if !(TelegramBotToken)
|
||||
{
|
||||
Return
|
||||
}
|
||||
|
||||
if (Option = "hand")
|
||||
{
|
||||
TelegramIconString := "%E2%9D%8C"
|
||||
}
|
||||
if (Option = "question")
|
||||
{
|
||||
TelegramIconString := "%E2%9D%94"
|
||||
}
|
||||
if (Option = "alert")
|
||||
{
|
||||
TelegramIconString := "%E2%9A%A0%EF%B8%8F"
|
||||
}
|
||||
if (Option = "info")
|
||||
{
|
||||
TelegramIconString := "%E2%84%B9%EF%B8%8F"
|
||||
}
|
||||
|
||||
IfInString, Option, `%
|
||||
TelegramIconString := Option
|
||||
|
||||
Text := StrReplace(Text, "`n", "%0A")
|
||||
|
||||
If (EmojiPosition = 1)
|
||||
{
|
||||
Text = %TelegramIconString% %Text%
|
||||
}
|
||||
|
||||
If (EmojiPosition = 2)
|
||||
{
|
||||
Text = %Text% %TelegramIconString%
|
||||
}
|
||||
|
||||
If (EmojiPosition = 3)
|
||||
{
|
||||
Text = %TelegramIconString% %Text% %TelegramIconString%
|
||||
}
|
||||
|
||||
loop 3
|
||||
{
|
||||
UrlDownloadToFile https://api.telegram.org/bot%TelegramBotToken%/sendmessage?chat_id=%TelegramBotChatID%&parse_mode=HTML&text=%Text%, %A_ScriptDir%\Tlog
|
||||
sleep 1000
|
||||
ifexist %A_ScriptDir%\Tlog
|
||||
{
|
||||
break
|
||||
}
|
||||
if A_index = 3
|
||||
{
|
||||
MsgBox, 16,, Something went wrong with sending the Telegram message.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
T_Edit(Option,EmojiPosition,Text)
|
||||
{
|
||||
ini = %A_MyDocuments%\D3Ksettings.ini ; Where the ini is
|
||||
|
||||
IniRead, TelegramBotToken, %ini%, Info, TBToken, 0
|
||||
IniRead, TelegramBotChatID, %ini%, Info, TBChatID, 0
|
||||
|
||||
if !(TelegramBotToken)
|
||||
{
|
||||
Return
|
||||
}
|
||||
|
||||
if (Option = "hand")
|
||||
{
|
||||
TelegramIconString := "%E2%9D%8C"
|
||||
}
|
||||
if (Option = "question")
|
||||
{
|
||||
TelegramIconString := "%E2%9D%94"
|
||||
}
|
||||
if (Option = "alert")
|
||||
{
|
||||
TelegramIconString := "%E2%9A%A0%EF%B8%8F"
|
||||
}
|
||||
if (Option = "info")
|
||||
{
|
||||
TelegramIconString := "%E2%84%B9%EF%B8%8F"
|
||||
}
|
||||
|
||||
IfInString, Option, `%
|
||||
TelegramIconString := Option
|
||||
|
||||
Text := StrReplace(Text, "`n", "%0A")
|
||||
|
||||
If (EmojiPosition = 1)
|
||||
{
|
||||
Text = %TelegramIconString% %Text%
|
||||
}
|
||||
|
||||
If (EmojiPosition = 2)
|
||||
{
|
||||
Text = %Text% %TelegramIconString%
|
||||
}
|
||||
|
||||
If (EmojiPosition = 3)
|
||||
{
|
||||
Text = %TelegramIconString% %Text% %TelegramIconString%
|
||||
}
|
||||
|
||||
FileRead, Tlog, %A_ScriptDir%/Tlog
|
||||
|
||||
RegExMatch(Tlog, "(?<=""ok"":).", success)
|
||||
|
||||
If (success = "t") ; Check to see if message editing succeeded
|
||||
{
|
||||
RegExMatch(Tlog, "(?<=""message_id"":)...", message_id)
|
||||
}
|
||||
|
||||
If (success = "f") ; Check to see if message editing succeeded
|
||||
{
|
||||
RegExMatch(Tlog, "(?<=""description"":"").+(?="")", error_msg)
|
||||
MsgBox, %error_msg%
|
||||
Return
|
||||
}
|
||||
|
||||
loop 3
|
||||
{
|
||||
UrlDownloadToFile https://api.telegram.org/bot%TelegramBotToken%/editMessageText?chat_id=%TelegramBotChatID%&message_id=%message_id%&parse_mode=HTML&text=%Text%, %A_ScriptDir%\Tlog
|
||||
sleep 1000
|
||||
ifexist %A_ScriptDir%\Tlog
|
||||
{
|
||||
break
|
||||
}
|
||||
if A_index = 3
|
||||
{
|
||||
MsgBox, 16,, Something went wrong with updating the Telegram message.
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
@ -1,40 +1,41 @@
|
||||
#SingleInstance force
|
||||
|
||||
; The exe this is compiled into has manual.ico set as its icon.
|
||||
|
||||
!+S::gui()
|
||||
|
||||
gui()
|
||||
{
|
||||
static Number
|
||||
static Hidden
|
||||
|
||||
Gui, +AlwaysOnTop +ToolWindow
|
||||
|
||||
Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
|
||||
Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok
|
||||
Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ?
|
||||
Gui, Show, h28 w100, ManSol
|
||||
GuiControl, Hide, Hidden
|
||||
|
||||
Return
|
||||
|
||||
ButtonOk:
|
||||
Gui, submit ; I have no idea what the regex means any more...
|
||||
If RegExMatch(Number, "[[:alpha:]]+")
|
||||
run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number
|
||||
Else If RegExMatch(Number, "[[:digit:]]+")
|
||||
run, % "https://ccms.deere.com/prweb/PRServletCustomAuth/ZDate_MgiNPn1ccL6O6pyBurDs0hjFQ8*/!STANDARD?pyActivity=SolutionsSnapStart&Action=showHarness&className=Deere-Int-Solr-Docs&Purpose=SolutionDescriptionNew&SolutionID=" . Number . "&Language=Default"
|
||||
ExitApp
|
||||
Return
|
||||
|
||||
|
||||
Help:
|
||||
MsgBox, 262176, Manual & Solution opener, Press Alt+Shift+S to open the window.`nInput the TM/OM SKU (easily found on TechPubs) or the DTAC solution number to open it in your default browser.`nTMs & OMs open in Service Advisor.
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
GuiEscape:
|
||||
Gui, Destroy
|
||||
Return
|
||||
}
|
||||
#SingleInstance force
|
||||
Menu, Tray, Add, Open Manual/Solution, gui
|
||||
|
||||
; The exe this is compiled into has manual.ico set as its icon.
|
||||
|
||||
!+S::gui()
|
||||
|
||||
gui()
|
||||
{
|
||||
static Number
|
||||
static Hidden
|
||||
|
||||
Gui, +AlwaysOnTop +ToolWindow
|
||||
|
||||
Gui, Add, Edit, x2 y3 w78 h20 vNumber +Left,
|
||||
Gui, Add, Button, x22 y43 w70 h20 Default vHidden, Ok
|
||||
Gui, Add, Button, x81 y3 w17 h20 gHelp +Center, ?
|
||||
Gui, Show, h28 w100, ManSol
|
||||
GuiControl, Hide, Hidden
|
||||
|
||||
Return
|
||||
|
||||
ButtonOk:
|
||||
Gui, submit ; I have no idea what the regex means any more...
|
||||
If RegExMatch(Number, "[[:alpha:]]+")
|
||||
run, % "http://serviceadvisor.deere.com/WebSA/manuals/" . Number
|
||||
Else If RegExMatch(Number, "[[:digit:]]+")
|
||||
run, % "https://serviceadvisor.deere.com/WebSA/solutions/en/" . Number
|
||||
ExitApp
|
||||
Return
|
||||
|
||||
|
||||
Help:
|
||||
Run, https://daviddaily.dev/david/d3k/wiki/ManSol-Opener-Standalone
|
||||
Return
|
||||
|
||||
GuiClose:
|
||||
GuiEscape:
|
||||
Gui, Destroy
|
||||
Return
|
||||
}
|
||||
|
6
standalones/README.md
Normal file
6
standalones/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
# Standalone ManSol Opener
|
||||
|
||||
This is a standalone version, the help guide can be found [here](https://daviddaily.dev/david/d3k/wiki/ManSol)
|
||||
|
||||
## [Download the executable here](https://files.daviddaily.dev/.d3k/ManSol%20Opener.exe)
|
||||
I would recommend putting it in your startup folder (`%appdata%\Microsoft\Windows\Start Menu\Programs\Startup`) so that it starts automagically when you start your computer.
|
Loading…
x
Reference in New Issue
Block a user