// Searcher // (c) 2020 Steve Banham scriptName = "Searcher"; scriptVersion = "1.2.1"; scriptDate = "28/4/2020"; scriptCopyright = "(c) 2020 Steve Banham"; scriptMinVersion = "12.20"; scriptDesc = "Find selected filename, or clipboard content in various search engines."; function OnInit(initData) { initData.name = scriptName; initData.version = scriptVersion; initData.copyright = scriptCopyright; initData.desc = scriptDesc; initData.default_enable = true; initData.min_version = scriptMinVersion; var vecSearchEngines = DOpus.NewVector(); vecSearchEngines.push_back = "[Google]https://www.google.com/search?q=%S"; vecSearchEngines.push_back = "[Google Images]https://www.google.com/search?tbm=isch&q=%S"; vecSearchEngines.push_back = "[Bing]https://www.bing.com/search?q=%S"; vecSearchEngines.push_back = "[Bing Images]https://www.bing.com/images/search?q=%S"; vecSearchEngines.push_back = "[DuckDuckGo]https://duckduckgo.com/?q=%S"; vecSearchEngines.push_back = "[DuckDuckGo Images]https://duckduckgo.com/?q=%S&ia=images&iax=images"; vecSearchEngines.push_back = "[Wikipedia]https://en.wikipedia.org/wiki/%S"; vecSearchEngines.push_back = "[Opus Resource Centre]https://resource.dopus.com/search?q=%S"; vecSearchEngines.push_back = "[YouTube]https://www.youtube.com/results?search_query=%S"; vecSearchEngines.push_back = "[Amazon]https://www.amazon.com/s?k=%S"; vecSearchEngines.push_back = "[Amazon Australia]https://www.amazon.com.au/s?k=%S"; vecSearchEngines.push_back = "[Ebay]https://www.ebay.com/sch/i.html?_nkw=%S"; vecSearchEngines.push_back = "[Ebay Australia]https://www.ebay.com.au/sch/i.html?_nkw=%S"; initData.config.search_engines = vecSearchEngines; initData.config_desc = DOpus.Create.Map("search_engines", "List of search engines available to select."); var cmd = initData.AddCommand(); cmd.name = "Searcher"; cmd.method = "onSearcher"; cmd.desc = "Find selected filename, or clipboard content in various search engines."; cmd.label = "Searcher"; cmd.template = "CLIP/S,FULLNAME/S"; } function onSearcher(scriptCmdData) { var srcTab = scriptCmdData.func.sourcetab; var strEngineName; var strEngineUrl; var dlg = DOpus.Dlg; dlg.title = scriptName + " " + scriptVersion+ " - Directory Opus"; dlg.template = "dlgSearch"; dlg.LoadPosition("Steve_Searcher"); dlg.detach = true; dlg.Create(); dlg.Control("listEngines").columns.AddColumn("Search Engine"); dlg.Control("listEngines").columns.AddColumn("Active"); for (var eEngines = new Enumerator(Script.Config["search_engines"]); !eEngines.atEnd(); eEngines.moveNext()) { strEngineName = eEngines.item(); if (strEngineName.search("]") > -1) { strEngineName = strEngineName.substring(1,strEngineName.search("]")); strEngineNameSafe = strEngineName.replace(/ /g, "_"); dlg.Control("listEngines").AddItem(strEngineName); if (!DOpus.Vars.Exists("Searcher_" + strEngineNameSafe) || DOpus.Vars.Get("Searcher_" + strEngineNameSafe) == undefined) { DOpus.Vars.Set("Searcher_" + strEngineNameSafe) = "Yes"; dlg.Control("listEngines").GetItemByName(strEngineName).subitems(0) = "Yes"; } else { dlg.Control("listEngines").GetItemByName(strEngineName).subitems(0) = DOpus.Vars.Get("Searcher_" + strEngineNameSafe); } DOpus.Vars("Searcher_" + strEngineNameSafe).persist = true; } else { DOpus.Output("Error in search_engines configuration."); return; } } if (scriptCmdData.func.args.got_arg.clip) { dlg.Control("editSearch").value = DOpus.GetClip(); } else { if (srcTab.stats.selitems > 0) { if (scriptCmdData.func.args.got_arg.fullname) { dlg.Control("editSearch").value = srcTab.selected(0).name; } else { dlg.Control("editSearch").value = srcTab.selected(0).name_stem; } } else { dlg.Control("editSearch").value = DOpus.GetClip(); } } if (srcTab.stats.selitems < 1) { dlg.Control("btnFile").enabled = false; } dlg.Control("listEngines").columns.AutoSize(); dlg.Show(); while (true) { var msg = dlg.GetMsg(); if (!msg.result) break; if (msg.event == "click" && dlg.Control("btnFile").focus == true) { if (srcTab.stats.selitems > 0) { if (scriptCmdData.func.args.got_arg.fullname) { dlg.Control("editSearch").value = srcTab.selected(0).name; } else { dlg.Control("editSearch").value = srcTab.selected(0).name_stem; } } } if (msg.event == "click" && dlg.Control("btnClip").focus == true) { if (DOpus.GetClipFormat() == "text") { dlg.Control("editSearch").value = DOpus.GetClip(); } } if (msg.event == "click" && dlg.Control("btnClear").focus == true) { dlg.Control("editSearch").value = ""; } if (msg.event == "dblclk" && dlg.Control("listEngines").focus == true) { var intSelItem = dlg.Control("listEngines").value.index; var strEngineNameSafe = dlg.Control("listEngines").GetItemAt(intSelItem).name; strEngineNameSafe = strEngineNameSafe.replace(/ /g, "_"); if(dlg.Control("listEngines").GetItemAt(intSelItem).subitems(0) == "Yes") { DOpus.Vars.Set("Searcher_" + strEngineNameSafe) = "No"; dlg.Control("listEngines").GetItemAt(intSelItem).subitems(0) = "No"; } else { DOpus.Vars.Set("Searcher_" + strEngineNameSafe) = "Yes"; dlg.Control("listEngines").GetItemAt(intSelItem).subitems(0) = "Yes"; } } if (msg.event == "click" && dlg.Control("btnSearch").focus == true || msg.event == "click" && dlg.Control("editSearch").focus == true) { var intSearch = 0; if (dlg.Control("editSearch").value == "") { DOpus.Output("No text to search."); } else { for (var eEngines = new Enumerator(Script.Config["search_engines"]); !eEngines.atEnd(); eEngines.moveNext()) { var cmd = scriptCmdData.func.command; strEngineUrl = eEngines.item(); strEngineName = eEngines.item(); strEngineName = strEngineName.substring(1,strEngineName.search("]")); strEngineNameSafe = strEngineName.replace(/ /g, "_"); if (dlg.Control("listEngines").GetItemByName(strEngineName).subitems(0) == "Yes") { intSearch = 1; var strSearch = dlg.Control("editSearch").value; strSearch = strSearch.replace(/ /g, "+"); strEngineUrl = strEngineUrl.substring(strEngineUrl.search("]")); strEngineUrl = strEngineUrl.replace("]",""); strEngineUrl = strEngineUrl.replace("%S", strSearch); if (strEngineNameSafe == "Wikipedia") { strEngineUrl = strEngineUrl.replace(/\+/g, "_"); } cmd.AddLine(strEngineUrl); } } if (intSearch == 1) { cmd.Run(); cmd.Clear(); } else DOpus.Output("No Search Engines Selected."); } } } dlg.SavePosition("Steve_Searcher"); } function OnAboutScript(aboutData){ dlg = DOpus.Dlg; dlg.window = aboutData.window; dlg.title = scriptName + scriptVersion + " - Directory Opus"; dlg.message = scriptName + " v" + scriptVersion + "\t\t\t\t\t" + scriptDate + "\n\n" + scriptDesc + "\n\n" + scriptCopyright; dlg.buttons = "Close"; dlg.icon = "info"; dlg.show; } ==SCRIPT RESOURCES