// "Search" // This macro searches for text in files contained in a directory. // TF, 2011.02 Added support for scripts; Recordable. str = ""; contents = true; ignore = false; search = "Macros"; firstLine = true; arg = getArgument; if (arg!="") { args = split(arg, "|"); if (args.length==4) { str = args[0]; contents = parseInt(args[1]); ignore = parseInt(args[2]); search = args[3]; } } extensions = newArray(".java", ".txt", ".ijm", ".js", ".py", ".rb", ".clj", ".bsh", ".html"); IJdir = getDirectory("imagej"); Dialog.create("Search"); Dialog.addString("_", str, 20); items = newArray("Macros", "Scripts", "Java", "ImageJ folder", "Choose..."); Dialog.setInsets(2,20,0); Dialog.addRadioButtonGroup("Search:", items, 5, 1, search); Dialog.setInsets(0, 20, 0); Dialog.addCheckbox("Search_contents", contents); Dialog.addCheckbox("Ignore case", ignore); Dialog.setInsets(10, 0, 0); Dialog.addMessage("In the Log window, to open a file,\ndouble-click on its file path."); Dialog.show(); str = Dialog.getString(); contents = Dialog.getCheckbox(); ignore = Dialog.getCheckbox(); search = Dialog.getRadioButton(); if (str=="") exit("Search string is empty"); sourceExists = File.exists(IJdir+"source"); searchNames = false; dir1=""; dir2=""; dir3=""; if (search=="Scripts") { dir1 = getDirectory("macros"); dir2 = getDirectory("plugins"); dir3 = IJdir+"scripts/"; extensions = newArray(".js", ".py", ".rb", ".clj", ".bsh"); } else if (search=="Java") { dir1 = getDirectory("plugins"); if (sourceExists) dir2 = IJdir+"source"+"/"; extensions = newArray(".java"); } else if (search=="ImageJ folder") { dir1 = getDirectory("imagej"); searchNames = true; } else if (search=="Choose...") { dir1 = getDirectory("Choose a Directory"); searchNames = true; } else { dir1 = getDirectory("macros"); dir2 = getDirectory("plugins"); extensions = newArray(".txt", ".ijm"); } if (ignore) str = toLowerCase(str); count = 0; if (dir1!="") find(dir1); if (dir2!="") find(dir2); if (dir3!="") find(dir3); if (indexOf(str, "|")==-1) return ""+str+"|"+contents+"|"+ignore+"|"+search; exit; function find(dir) { list = getFileList(dir); for (i=0; i