now all folder are showed first and navigation is more intuitive
use WIN+SPACE to call the menu
/* Author: Salvatore Agostino Romeo E-Mail: [email protected] Description: This script is usefull to navigate between folders in a very fast way. Functions: 1)browse rapidely your folders and open files from here 2)favourites folders submenu 3)option to browse for folders and open this folders in dialogs such as Open Dialog box 4)root submenu wich contains drives, cdrom drives and removable media 5)submenu "back to" to quickly switch up 1,2,3,.... levels 6)other minor functions Version: 0.5 License: GPL Note: subproject of AHKxplorer */ SetKeyDelay, -1 myFavouritesFolders=E:\Programmi|E:\ahk ; prepare open menu Menu, open, add, here, openLab Menu, open, add, in xplorer2, openLab Menu, open, add, in Dialogs Windows, openLab return #Space:: dir=%A_Desktop% navigate(dir) return navigate(folder) { global ; get favourites folder menu Menu, myFavFolders, add Menu, myFavFolders, deleteall StringSplit, mff, myFavouritesFolders, | Loop, %mff0% { currentFolder := mff%A_Index% Menu, myFavFolders, add, %currentFolder%, gotoFolder } ; get drives for "root" menu DriveGet, drvFixed, List, Fixed DriveGet, drvRemovable, List, REMOVABLE DriveGet, drvCD, List, CDROM drv=%drvFixed%%drvRemovable%%drvCD% StringSplit, d, drv item_num=0 Loop,%d0% { tem:=d%A_Index% ":\" Menu, roots, add, %tem%, gotoFolder } StringRight, LastChar, Folder, 1 if LastChar = \ StringTrimRight, Folder, Folder, 1 ; Remove the trailing backslash. currentFolder = until := 0 Menu, folderNavigator, add Menu, folderNavigator, deleteall Menu, backTo, add Menu, backTo, deleteall ; get folders for "back to" menu StringSplit, backToFolder, folder, \ Loop, % backToFolder0-1 ;% { tempFold := backToFolder%A_Index% currentFolder = %currentFolder%%tempFold%\ Menu, backTo, add, %currentFolder%, gotoFolder } Menu, folderNavigator , add , open ...,:open Menu, folderNavigator , add , favourites ...,:myFavFolders Menu, folderNavigator , add , root ...,:roots Menu, folderNavigator , add , Menu, folderNavigator , add , back to ...,:backTo Loop, %folder%\* ,2 { Menu, folderNavigator, add , %A_LoopFileName%%A_Tab% -> ,gotoFolder dir%A_Index% = %A_LoopFileFullPath% until := A_Index } Loop, %folder%\* { Menu, folderNavigator, add , %A_LoopFileName% ,gotoFolder num := A_Index + until dir%num% = %A_LoopFileFullPath% } MouseGetPos, x, y in_x := x-20 in_y := y-20 currentFolder=%folder% Menu, folderNavigator, show, %in_x%, %in_y% return } openLab: if ( A_ThisMenuItemPos = 1) Run, %currentFolder% else if ( A_ThisMenuItemPos = 2) { ControlFocus, Edit1 , ahk_class ATL:ExplorerFrame ControlSend , Edit1, {BS}%currentFolder%\{Enter}, ahk_class ATL:ExplorerFrame } else if ( A_ThisMenuItemPos = 3) { ControlFocus, Edit1 , ahk_class #32770 ControlSend , Edit1, {BS}%currentFolder%\{Enter}{BS}, ahk_class #32770 } return gotoFolder: itemNum := A_ThisMenuItemPos - 5 ;msgbox, % dir%itemNum% ;msgbox, until %until% itn %itemNum% if ( A_ThisMenu = "folderNavigator" and itemNum<=until) navigate(dir%itemNum%) else if ( A_ThisMenu = "folderNavigator" and itemNum>until) run, % dir%itemNum% else navigate(A_ThisMenuItem) return
tell me what you think and as always sen comments or suggestions