function OnInit(initData) { initData.name = 'CycleListers'; initData.version = '2024-07-05'; initData.url = 'https://resource.dopus.com/t/cyclelisters-cycle-through-listers/51247'; initData.desc = 'Cycle through Listers'; initData.default_enable = true; initData.min_version = '12.0'; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = 'CycleListers'; cmd.method = 'OnCycleListers'; cmd.desc = 'Cycle through Listers'; cmd.label = 'CycleListers'; cmd.template = '' + 'lastactive/s,' + 'reverse/s,' + 'onlycurrentdesktop/s'; cmd.hide = false; cmd.icon = 'script'; } function OnCycleListers(scriptCmdData) { if (DOpus.listers.count < 2) return; var cmd = scriptCmdData.func.command; var args = scriptCmdData.func.args; var vec = DOpus.Create().Vector(); var listerToActivate; cmd.deselect = false; if (args.lastactive && DOpus.vars.Exists('lastLister') && DOpus.vars.Get('lastLister') != String(DOpus.listers.lastactive) && ListerExists(DOpus.vars.Get('lastLister'))) { listerToActivate = DOpus.vars.Get('lastLister'); } else { for (var i = 0; i < DOpus.listers.count; i++) { var item = DOpus.listers(i); if (args.onlycurrentdesktop && item.desktop != DOpus.listers.lastactive.desktop) continue; var listerID = Number(String(item)); // the lister's HWND vec.push_back(listerID); if (item.lastactive) var lastActiveListerID = listerID; } if (vec.count < 2) return; vec.sort(); var k = 0; while (vec(k) != lastActiveListerID) k++; if (args.reverse) { k--; if (k < 0) k = vec.count - 1; } else { k++; if (k == vec.count) k = 0; } listerToActivate = vec(k); } cmd.SetSourceTab(DOpus.listers(listerToActivate).activetab); cmd.RunCommand('Set LISTERCMD=tofront'); } function OnActivateLister(activateListerData) { DOpus.vars.Set('listerCount', DOpus.listers.count); // reference as {$glob:listerCount} or Val("$glob:listerCount") if (!activateListerData.active) { DOpus.vars.Set('lastLister', String(activateListerData.lister)); } var cmd = DOpus.Create().Command(); cmd.UpdateToggle(); } function ListerExists(listerID) { for (var i = 0; i < DOpus.listers.count; i++) { if (String(DOpus.listers(i)) == String(listerID)) return true; } return false; }