This script/button enables you to add the current displayed file in viewer to the selection in the tab that shows the containing folder. You can compare this to flagging/marking files but just with selecting those files. So you can create for example a best of selecion of your images.
<?xml version="1.0"?>
<button backcol="none" display="both" hotkey="alt+S" label_pos="right" textcol="none">
<label>Add to selection in lister</label>
<icon1>#default:reselect</icon1>
<function type="script">
<instruction>@script JScript</instruction>
<instruction>function OnClick(clickData)</instruction>
<instruction>{</instruction>
<instruction> var currentViewer = DOpus.viewers.lastactive;</instruction>
<instruction> var currentDisplayedFile = currentViewer.current;</instruction>
<instruction> var containingTab = FindTabForPath(currentDisplayedFile.path);</instruction>
<instruction> var selectedFiles = containingTab.selected_files;</instruction>
<instruction> </instruction>
<instruction> var cmd = DOpus.Create.Command();</instruction>
<instruction> cmd.SetSourceTab(containingTab);</instruction>
<instruction />
<instruction> cmd.ClearFiles();</instruction>
<instruction> cmd.AddFile(currentDisplayedFile);</instruction>
<instruction> cmd.AddFiles(selectedFiles);</instruction>
<instruction> cmd.RunCommand("Select FROMSCRIPT EXACT MAKEVISIBLE");</instruction>
<instruction>}</instruction>
<instruction />
<instruction />
<instruction>//return tab that shows path otherwise open new</instruction>
<instruction>function FindTabForPath(path)</instruction>
<instruction>{</instruction>
<instruction> DOpus.NewCommand.RunCommand("Go \"" + path + "\" NEWTAB=findexisting");</instruction>
<instruction> DOpus.listers.update();</instruction>
<instruction> var listers = DOpus.listers;</instruction>
<instruction> var l;</instruction>
<instruction> for(l = 0; l < listers.count; l++)</instruction>
<instruction> {</instruction>
<instruction> var lister = listers(l);</instruction>
<instruction> var tabs = lister.tabs;</instruction>
<instruction> var t;</instruction>
<instruction> for(var t = 0; t < tabs.count;t++)</instruction>
<instruction> {</instruction>
<instruction> var tab = tabs(t);</instruction>
<instruction> if(tab.path + "" == path + "") //WTF, but didnt find another working approach</instruction>
<instruction> {</instruction>
<instruction> return tab;</instruction>
<instruction> }</instruction>
<instruction> }</instruction>
<instruction> }</instruction>
<instruction>}</instruction>
</function>
</button>
Add to selection in lister.dcf (2.4 KB)
If someone has a better solution for this bad line of code please let me know.
if(tab.path + "" == path + "")
I tried several approaches but this was the only one that worked🙄