var cmd = DOpus.Create().Command(); var fsu = DOpus.FSUtil(); var CRLF = '\r\n'; var re = new RegExp('(' + CRLF + ')+', 'gi'); function OnInit(initData) { initData.name = 'RenameTabItemCount'; initData.version = '2025-03-22'; initData.url = 'https://resource.dopus.com/t/item-count-in-tab-name/43276'; initData.desc = 'Show number of items in folder tab'; initData.default_enable = true; initData.min_version = '13.14'; initData.config = DOpus.Create().OrderedMap(); initData.config_desc = DOpus.Create().OrderedMap(); initData.config_groups = DOpus.Create().OrderedMap(); initData.config_desc('logLevel') = 'Set level of logging'; initData.config_groups('logLevel') = 'Misc'; initData.config.logLevel = DOpus.Create.Vector(1, 'none', 'standard', 'max'); } function OnActivateLister(activateListerData) { var logText = '*** OnActivateLister active=' + activateListerData.active; if (activateListerData.active) { logText = AppendItemCount(activateListerData.lister.activetab, logText); } Log(1, logText); } function OnActivateTab(activateTabData) { var logText = '*** OnActivateTab'; logText = AppendItemCount(activateTabData.newtab, logText); Log(1, logText); } function OnAfterFolderChange(afterFolderChangeData) { var logText = '*** OnAfterFolderChange'; logText = AppendItemCount(afterFolderChangeData.tab, logText); Log(1, logText); } function OnDisplayModeChange(displayModeChangeData) { var logText = '*** OnDisplayModeChange'; logText = AppendItemCount(displayModeChangeData.tab, logText); Log(1, logText); } function OnDoubleClick(doubleClickData) { var logText = '*** OnDoubleClick'; logText = AppendItemCount(doubleClickData.tab, logText); Log(1, logText); } function OnOpenLister(openListerData) { var logText = '*** OnOpenLister after=' + openListerData.after; if (openListerData.after) { logText = AppendItemCount(openListerData.lister.activetab, logText); } Log(1, logText); return !openListerData.after; } function OnOpenTab(openTabData) { var logText = '*** OnOpenTab'; logText = AppendItemCount(openTabData.tab, logText); Log(1, logText); } function OnSourceDestChange(sourceDestChangeData) { var logText = '*** OnSourceDestChange'; logText = AppendItemCount(sourceDestChangeData.tab, logText); Log(1, logText); } function OnTabClick(tabClickData) { var logText = '*** OnTabClick'; logText = AppendItemCount(tabClickData.tab, logText); Log(1, logText); } function AppendItemCount(tab, logText) { if (!tab) { logText += CRLF + '<#%error_text>No tab'; return logText; } if (!tab.lister) { logText += CRLF + '<#%error_text>No lister for tab'; return logText; } if (!tab.lister.tabs) { logText += CRLF + '<#%error_text>No tabs in lister'; return logText; } logText += CRLF + 'lister: ' + tab.lister + '\ttabsleft=' + tab.lister.tabsleft.count + '\ttabsright=' + tab.lister.tabsright.count; for (var e = new Enumerator(tab.lister.tabs); !e.atEnd(); e.moveNext()) { var tab = e.item(); cmd.SetSourceTab(tab); cmd.RunCommand('Go REFRESH=source'); tab.Update(); var logLine = CRLF + 'tab.path ' + (tab.right ? '(R)' : '(L)') + ':\t' + tab.path; while (logLine.length < 80) logLine += ' '; if (!String(tab.path)) { logText += logLine + '<#%error_text>No path in tab' + CRLF; continue; } // var itemCount = tab.all.count; // var itemCount = tab.dirs.count; var itemCount = tab.files.count; itemCount = itemCount > 0 ? ' (' + itemCount + ')' : ''; var cmdLine = 'Go TABNAME="%N' + itemCount + '"'; cmd.SetSourceTab(tab); cmd.RunCommand(cmdLine); logText += logLine + cmdLine + CRLF; } logText = CRLF + logText.replace(re, CRLF); return logText; } function Log(level, str, time) { var logLevel = Script.config ? Script.config.logLevel : 2; if (!logLevel) return; if (!level) return; if (level > logLevel) return; if (time) { var currTime = DOpus.Create().Date(); str = padTime(currTime + currTime.ms - time - time.ms) + ' ' + str; } if (logLevel < 2 && str.indexOf('<#%error_text>') < 0) return; DOpus.Output(str); }