~joten/cubit
| Stable release |
0.1.0 / 18.06.2011 |
| Status |
Inactive development / not supported |
| Written in |
AutoHotkey script |
| Runtime environment |
AutoHotkey |
| Available in |
English |
| Type |
Application Launcher |
| License |
GNU General Public License |
| Distribution |
AutoHotkey script source |
| Download from |
AutoHotkey.net (AHK, 8 KB) |
Description
cubit is an application launcher or link lister, which is configured by
using LNK files. It lists the content of the LNK files in a given
directory with a prepending alphanumeric character, which is used as a
hotkey to run or open the associated application or file.
Source view
NAME := "cubit"
VERSION := "0.1.0"
Config_columnWidthArguments := "AutoHdr"
Config_columnWidthRunState := 0
Config_columnWidthTarget := 0
Config_columnWidthWorkingDirectory := "AutoHdr"
Config_listViewWidth := 700
Config_runOnSelection := True
Config_removeSortingFromLinkName := True
Config_useLinkNameInitial := True
SetBatchLines, -1
SetTitleMatchMode, 3
SetTitleMatchMode, fast
#NoEnv
#NoTrayIcon
#SingleInstance force
Suspend, On
If 0 > 0
{
Config_linkDirectory = %1%
If Not InStr(Config_linkDirectory, ":")
Config_linkDirectory := A_WorkingDir "\" Config_linkDirectory
} Else
Config_linkDirectory := A_WorkingDir
IfExist %A_ScriptDir%\images\%NAME%.ico
Menu, Tray, Icon, %A_ScriptDir%\images\%NAME%.ico
Gui, 1: Default
IfWinExist, %NAME%
Gui, Destroy
Gui, +LastFound +0xCF0000
Config_listViewRows := 0
Loop, %Config_linkDirectory%\*.lnk, 0, 1
Config_listViewRows += 1
Gui, Add, ListView, AltSubmit Count36 -Multi R%Config_listViewRows% W%Config_listViewWidth% gGui_listViewEvent vGui_listView, #|Name|Target|Arguments|Working Directory|Run State
Gui, Add, Button, Hidden Default gGui_listViewEnter,
GuiControl, -Redraw, Gui_listView
Gui_#String := "1;2;3;4;5;6;7;8;9;0;A;B;C;D;E;F;G;H;I;J;K;L;M;N;O;P;Q;R;S;T;U;V;W;X;Y;Z;"
Loop, %Config_linkDirectory%\*.lnk, 0, 1
{
FileGetShortcut, %A_LoopFileLongPath%, Gui_linkTarget, Gui_linkDir, Gui_linkArgs, , , , Gui_linkRunState
Gui_linkName := A_LoopFileLongPath
StringReplace, Gui_linkName, Gui_linkName, %Config_linkDirectory%\,
StringTrimRight, Gui_linkName, Gui_linkName, 4
StringReplace, Gui_linkTarget, Gui_linkTarget, `%WinDir`%, %A_WinDir%
StringReplace, Gui_linkDir, Gui_linkDir, `%WinDir`%, %A_WinDir%
If Gui_linkRunState = 7
Gui_linkRunState := "Min"
Else If Gui_linkRunState = 3
Gui_linkRunState := "Max"
Else
Gui_linkRunState := ""
If Config_useLinkNameInitial {
Gui_i := InStr(Gui_linkName, "\", False, 0)
Gui_# := SubStr(Gui_linkName, Gui_i + 1, 1)
StringUpper, Gui_#, Gui_#
}
If Not InStr(Gui_#String, Gui_# ";") Or (Gui_# = "")
StringLeft, Gui_#, Gui_#String, 1
StringReplace, Gui_#String, Gui_#String, %Gui_#%`;,
If Config_removeSortingFromLinkName And RegExMatch(Gui_linkName, "^[0-9]+ ")
Gui_linkName := RegExReplace(Gui_linkName, "^[0-9]+ ")
LV_Add("", Gui_#%i%, Gui_linkName, Gui_linkTarget, Gui_linkArgs, Gui_linkDir, Gui_linkRunState)
}
LV_ModifyCol(1, "AutoHdr")
LV_ModifyCol(2, "AutoHdr")
LV_ModifyCol(3, Config_columnWidthTarget)
LV_ModifyCol(4, Config_columnWidthArguments)
LV_ModifyCol(5, Config_columnWidthWorkingDirectory)
LV_ModifyCol(6, Config_columnWidthRunState)
GuiControl, +Redraw, Gui_listView
Gui, Show, AutoSize, %NAME%
Suspend, Off
Return
GuiClose:
ExitApp
Return
GuiEscape:
ExitApp
Return
GuiSize:
Config_listViewWidth := A_GuiWidth - 0
Gui_listViewHeight := A_GuiHeight - 12
GuiControl, Move, Gui_listView, X0 Y0 W%Config_listViewWidth% H%Gui_listViewHeight%
Return
Gui_listViewEvent:
GuiControlGet, Gui_focusedControl, FocusV
If (Gui_focusedControl = "Gui_listView") And (A_GuiEvent = "DoubleClick" Or (A_GuiEvent = "I" And Config_runOnSelection))
Gui_processSelection()
return
Gui_listViewEnter:
GuiControlGet, Gui_focusedControl, FocusV
If (Gui_focusedControl = "Gui_listView")
Gui_processSelection()
return
Gui_processSelection() {
If LV_GetNext(0, "Focused") {
LV_GetText(selectedTarget, LV_GetNext(0, "Focused"), 3)
LV_GetText(selectedDir, LV_GetNext(0, "Focused"), 5)
LV_GetText(selectedArgs, LV_GetNext(0, "Focused"), 4)
LV_GetText(selectedRunState, LV_GetNext(0, "Focused"), 6)
If selectedArgs
selectedTarget .= " " selectedArgs
Run, %selectedTarget%, %selectedDir%, %selectedRunState%
} Else
Loop, % LV_GetCount() {
LV_GetText(selectedTarget, A_Index, 3)
LV_GetText(selectedDir, A_Index, 5)
LV_GetText(selectedArgs, A_Index, 4)
LV_GetText(selectedRunState, A_Index, 6)
If selectedArgs
selectedTarget .= " " selectedArgs
Run, %selectedTarget%, %selectedDir%, %selectedRunState%
}
ExitApp
}
| © 2010-2012 joten, last modified 08.01.2012 |
 |