Simple Hotstrings and Hotkeys personal database GUI

Post your working scripts, libraries and tools for AHK v1.1 and older
vamzicool
Posts: 12
Joined: 27 Aug 2017, 23:42

Simple Hotstrings and Hotkeys personal database GUI

22 May 2018, 02:26

The following set of functions and hotkeys, will help to add, edit , update and delete hotstrings and hotkeys defined inside "hotstrings.ini" and "hotkeys.ini" . The generic function guiIni is used to populate key-value pairs from an ini file with the specified section in it. Gui lists these pairs inside a list, when an item is selected will populate two text fields for key and value to be saved or deleted. This function also needs functions to be passed to it that will be invoked when a save or delete operation is done for that ini file. Thus this generic function is called to update personal hotstrings as well as hotkeys(which run a file/folder/program) from ini files. Code is given below:

Code: Select all

IniFileName := ""
IniSectionName := ""
IniList := ""
IniSaveFunc := ""
IniDeleteFunc := ""
eIniKey := ""
eIniValue := ""
IniKey := ""
IniValue := ""

loadHotStringIni()
loadHotkeys()

loadHotStringIni() ; load hotstrings from hotstrings.ini file
{
    IniRead,value,%A_ScriptDir%\hotstrings.ini,hotstring
    Loop, Parse,value,`n
    {
        keyval := StrSplit(A_LoopField,"=")
        hotString := keyval[1]
        replacement := keyval[2]
        HotString("::" . hotString,replacement)
    }
    ttip("Hotstrings updated")
}

loadHotkeys() ; load hotkeys from hotkeys.ini file
{
    IniRead,hotkeys,%A_ScriptDir%\hotkeys.ini,hotkey
    
    Loop, Parse, hotkeys,`n
    {
        if(A_LoopField = "")
            continue
        line_array := StrSplit(A_LoopField,"=") 
        hkey := line_array[1]
        program := line_array[2]
        fn := Func("runProgram").Bind(program)
        hotkey, %hkey%, % fn    
    }
    ttip("Hotkeys Updated")
}

GuiIniGuiClose:
GuiIniGuiEscape:
{
    gui, GuiIni:Destroy
    return
}

guiIni(fileName,section,title,saveFunc,deleteFunc)
{
    global IniFileName, IniSectionName, IniSaveFunc, IniDeleteFunc
    IniFileName := fileName
    IniSectionName := section
    IniSaveFunc := saveFunc
    IniDeleteFunc := deleteFunc
    
    lists := readIniSectionList(fileName,section)
    
    Gui,GuiIni:Destroy
    gui,GuiIni:font, s8 bold, Verdana

    Gui, GuiIni:Add, ListBox, sort w400 h400 gIniListSubmit vIniList, %lists% ; specifying sort options makes this list searchable
    Gui, GuiIni:Add, Edit, veIniKey
    Gui, GuiIni:Add, Edit, r2 w400 veIniValue
    Gui, GuiIni:Add, Button, gIniSaveButton section , &Save
    Gui, GuiIni:Add, Button, ys gIniDeleteButton, &Delete
    Gui, GuiIni:Add, Button, ys default gIniExitButton, &Exit
    Gui, GuiIni:+AlwaysOnTop
    gui, GuiIni:+Lastfound
    Gui, GuiIni:Show, AutoSize xCenter yCenter, % title
    WinWaitClose
    
    return   
}

IniListSubmit:
{
    gui, GuiIni:submit, NoHide
    arr := StrSplit(IniList,"=")
    IniKey := arr[1]
    IniValue := arr[2]
    GuiControl,,eIniKey,%IniKey%
    GuiControl,,eIniValue,%IniValue%
    return
}

IniSaveButton:
{
    GuiControlGet,IniKey,,eIniKey
    GuiControlGet,IniValue,,eIniValue       

    IniWrite,%IniValue%,%IniFileName%,%IniSectionName%,%IniKey%
    lists := readIniSectionList(IniFileName,IniSectionName)
    GuiControl, , IniList, % "|" lists
    IniSaveFunc.Call()
    return
}

IniDeleteButton:
{
    GuiControlGet,IniKey,,eIniKey
    GuiControlGet,IniValue,,eIniValue       

    IniDelete,%IniFileName%,%IniSectionName%,%IniKey%
    lists := readIniSectionList(IniFileName,IniSectionName)
    GuiControl, , IniList, % "|" lists
    IniDeleteFunc.Call()
    return
}

IniExitButton:
{
    Gui, GuiIni:Destroy
    return
}

readIniSectionList(fileName,section)
{
    IniRead,lists,%fileName%,%section%
    lists := StrReplace(lists,"`n","|")
    return lists
}

saveIniHotstring() ; function to run after ini key and value are written to ini file
{
    global IniKey, IniValue
    
    HotString("::" . IniKey,IniValue,"On")
    ttip("Hotstring updated successfully !")
}

deleteIniHotstring() ; function to run after ini key and value are deleted from ini file
{
    global IniKey, IniValue
    
    HotString("::" . IniKey,,"Off")
    ttip("Hotstring deleted successfully !")
}

saveIniHotkey()
{
    global IniKey, IniValue

    fn := Func("runProgram").Bind(IniValue)
    Hotkey,%IniKey%,% fn,On
    ttip("Hotkey updated successfully !")
}

deleteIniHotkey()
{
    global IniKey, IniValue

    Hotkey,%IniKey%,,Off
    ttip("Hotkey deleted successfully !")
}

CapsLock & h:: ; hotstrings CRUD Gui
{
    saveFn := Func("saveIniHotstring")
    deleteFn := Func("deleteIniHotstring")
    guiIni(A_ScriptDir . "\hotstrings.ini","hotstring","HotStrings",saveFn,deleteFn)
    return
}

CapsLock & k:: ; hotkeys CRUD Gui
{
    saveFn := Func("saveIniHotkey").Bind()
    deleteFn := Func("deleteIniHotkey").Bind()
    guiIni(A_ScriptDir . "\hotkeys.ini","hotkey","Hotkeys",saveFn,deleteFn)
    return
}

ttip(text)
{
    ToolTip, %text%
    Sleep, 1000
    ToolTip
}

runProgram(program)
{
    Run, %program%,,max
    WinActivate, %win_title%
    WinMaximize
}

Return to “Scripts and Functions (v1)”

Who is online

Users browsing this forum: gongnl, jiming0516 and 79 guests