function OnInit(initData) { initData.name = 'CommandShowMulti'; initData.version = '2022-05-18'; initData.url = 'https://resource.dopus.com/t/custom-command-showmulti-launch-multiple-viewers/41266'; initData.desc = 'Launch multiple viewers at once'; initData.default_enable = true; initData.min_version = '12.0'; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = 'ShowMulti'; cmd.method = 'OnShowMulti'; cmd.desc = 'ShowMulti'; cmd.label = 'ShowMulti'; cmd.template = 'MODE/K,DISPLAY/N'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'MenuBarMulti'; cmd.method = 'OnMenuBarMulti'; cmd.desc = 'Toggle Menu Bar in all open viewers'; cmd.label = 'MenuBarMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'StatusBarMulti'; cmd.method = 'OnStatusBarMulti'; cmd.desc = 'Toggle Status Bar in all open viewers'; cmd.label = 'StatusBarMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'ControlBarMulti'; cmd.method = 'OnControlBarMulti'; cmd.desc = 'Toggle Control Bar in all open viewers'; cmd.label = 'ControlBarMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'FullScreenMulti'; cmd.method = 'OnFullScreenMulti'; cmd.desc = 'Set all viewers to Full Screen'; cmd.label = 'FullScreenMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'OriginalSizeMulti'; cmd.method = 'OnOriginalSizeMulti'; cmd.desc = 'Set images in all viewers to original size'; cmd.label = 'OriginalSizeMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'FitToPageMulti'; cmd.method = 'OnFitToPageMulti'; cmd.desc = 'Zoom images in all viewers to fit'; cmd.label = 'FitToPageMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'NextImageMulti'; cmd.method = 'OnNextImageMulti'; cmd.desc = 'Jump forward by count of open viewers (Shift to jump by 1)'; cmd.label = 'NextImageMulti'; cmd.hide = false; cmd.icon = 'script'; var cmd = addCmdData.AddCommand(); cmd.name = 'PreviousImageMulti'; cmd.method = 'OnPreviousImageMulti'; cmd.desc = 'Jump backward by count of open viewers (Shift to jump by 1)'; cmd.label = 'PreviousImageMulti'; cmd.hide = false; cmd.icon = 'script'; } function OnShowMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; var tab = scriptCmdData.func.sourcetab; var args = scriptCmdData.func.args; var si = DOpus.Create().SysInfo(); cmd.deselect = false; if (tab.selected_files.count < 2) cmd.SetFiles(tab.files); var curDisp = si.MouseMonitor(); var maxDisp = si.Monitors().count; var d = args.display; if (typeof d != 'number' || d < 0 || d >= maxDisp) d = curDisp; // if display is missing or out-of-range, use current monitor var targetDisp = si.WorkAreas(d); var posX = targetDisp.left; var posY = targetDisp.top; var imgW = targetDisp.width; var imgW2 = imgW / 2; var imgH = targetDisp.height; var imgH2 = imgH / 2; var m = args.got_arg.mode ? args.mode.toLowerCase() : ((imgW > imgH) ? 'vert' : 'horiz'); cmd.Clear(); cmd.AddLine('Close ALLVIEWERS'); if (m == 'quad') { cmd.AddLine('Show POS=' + (posX + 0 * imgW2) + ',' + (posY + 0 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH2 + ' NOUSEEXISTING'); cmd.AddLine('Show POS=' + (posX + 1 * imgW2) + ',' + (posY + 0 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH2 + ' NOUSEEXISTING'); cmd.AddLine('Show POS=' + (posX + 0 * imgW2) + ',' + (posY + 1 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH2 + ' NOUSEEXISTING'); cmd.AddLine('Show POS=' + (posX + 1 * imgW2) + ',' + (posY + 1 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH2 + ' NOUSEEXISTING'); } else if (m == 'horiz') { cmd.AddLine('Show POS=' + (posX + 0 * imgW2) + ',' + (posY + 0 * imgH2) + ' SIZE=' + imgW + ',' + imgH2 + ' NOUSEEXISTING'); cmd.AddLine('Show POS=' + (posX + 0 * imgW2) + ',' + (posY + 1 * imgH2) + ' SIZE=' + imgW + ',' + imgH2 + ' NOUSEEXISTING'); } else { cmd.AddLine('Show POS=' + (posX + 0 * imgW2) + ',' + (posY + 0 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH + ' NOUSEEXISTING'); cmd.AddLine('Show POS=' + (posX + 1 * imgW2) + ',' + (posY + 0 * imgH2) + ' SIZE=' + imgW2 + ',' + imgH + ' NOUSEEXISTING'); } cmd.Run(); var newVwrs = cmd.results.newviewers; for (var i = 1; i < newVwrs.count; i++) { newVwrs(i).Command('goto,+' + i); } } function OnMenuBarMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('toolbar'); } } function OnStatusBarMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('statusbar'); } } function OnControlBarMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('toolbar'); } } function OnFullScreenMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('fullscreen'); } } function OnOriginalSizeMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('zoom,reset'); } } function OnFitToPageMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { e.item().Command('zoom,fit'); } } function OnNextImageMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; var jump = scriptCmdData.func.qualifiers.indexOf('shift') < 0 ? DOpus.viewers.count : 1; cmd.ClearFiles(); for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { var vwr = e.item(); var n = vwr.index + jump; if (n >= vwr.files.count) n = n - vwr.files.count; vwr.Command('goto,' + n); cmd.AddFile(vwr.current); } cmd.RunCommand('Select NONE'); cmd.RunCommand('Select FROMSCRIPT SETFOCUS'); cmd.RunCommand('Select SHOWFOCUS'); } function OnPreviousImageMulti(scriptCmdData) { var cmd = scriptCmdData.func.command; cmd.deselect = false; if (DOpus.viewers.count == 0) return; var jump = scriptCmdData.func.qualifiers.indexOf('shift') < 0 ? DOpus.viewers.count : 1; cmd.ClearFiles(); for (var e = new Enumerator(DOpus.viewers); !e.atEnd(); e.moveNext()) { var vwr = e.item(); var n = vwr.index - jump; if (n < 0) n = n + vwr.files.count; vwr.Command('goto,' + n); cmd.AddFile(vwr.current); } cmd.RunCommand('Select NONE'); cmd.RunCommand('Select FROMSCRIPT SETFOCUS'); cmd.RunCommand('Select SHOWFOCUS'); }