function OnInit(initData) { initData.name = 'TabHighlightColor'; initData.version = '2023-02-11-01'; initData.copyright = ''; initData.url = 'https://resource.dopus.com/t/tab-color-based-on-folder-content/43305'; initData.desc = 'Change tab highight color based on selected file type group or file extension'; initData.default_enable = true; initData.min_version = '12.30'; initData.config_desc = DOpus.Create.Map(); initData.config_groups = DOpus.Create.Map(); var configName = ""; var vecType = DOpus.NewVector(); vecType.push_back(0); vecType.push_back("FileTypeGroup"); vecType.push_back("Extension"); configName = "Category"; initData.Config[configName] = vecType; initData.config_desc(configName) = "Select File Type Group or Extension"; initData.config_groups(configName) = "Choices"; var vecGroup = DOpus.NewVector(); vecGroup.push_back(0); vecGroup.push_back("Archives"); vecGroup.push_back("Databases"); vecGroup.push_back("Documents"); vecGroup.push_back("Images"); vecGroup.push_back("Movies"); vecGroup.push_back("Music"); vecGroup.push_back("Programs"); configName = "Group"; initData.Config[configName] = vecGroup; initData.config_desc(configName) = "Select File Type Group"; initData.config_groups(configName) = "Choices"; configName = "Extension"; initData.Config[configName] = "txt"; initData.config_desc(configName) = "Enter file type to highlight (e.g. doc, txt, etc.)"; initData.config_groups(configName) = "Choices"; configName = "1-Red"; initData.Config[configName] = "0"; initData.config_desc(configName) = "Enter RED color value. Number must be between 0 and 255"; initData.config_groups(configName) = "Colors"; configName = "2-Green"; initData.Config[configName] = "0"; initData.config_desc(configName) = "Enter GREEN color value. Number must be between 0 and 255"; initData.config_groups(configName) = "Colors"; configName = "3-Blue"; initData.Config[configName] = "0"; initData.config_desc(configName) = "Enter BLUE color value. Number must be between 0 and 255"; initData.config_groups(configName) = "Colors"; } function OnOpenLister(openListerData) { DOpus.Output('*** OnOpenLister'); if (!openListerData.after) return true; checkFileExtension(openListerData.lister.activetab); return false; } function OnActivateLister(activateListerData) { DOpus.Output('*** OnActivateLister'); if (!activateListerData.active) return; checkFileExtension(activateListerData.lister.activetab); } function OnOpenTab(openTabData) { DOpus.Output('*** OnOpenTab'); checkFileExtension(openTabData.tab); } function OnActivateTab(activateTabData) { DOpus.Output('*** OnActivateTab'); checkFileExtension(activateTabData.newtab); } function OnSourceDestChange(sourceDestChangeData) { DOpus.Output('*** OnSourceDestChange'); checkFileExtension(sourceDestChangeData.tab); } function OnAfterFolderChange(afterFolderChangeData) { DOpus.Output('*** OnAfterFolderChange'); checkFileExtension(afterFolderChangeData.tab); } function OnDoubleClick(doubleClickData) { DOpus.Output('*** OnDoubleClick'); checkFileExtension(doubleClickData.tab); } function OnDisplayModeChange(displayModeChangeData) { DOpus.Output('*** OnDisplayModeChange'); checkFileExtension(displayModeChangeData.tab); } function OnTabClick(tabClickData) { DOpus.Output('*** OnTabClick'); checkFileExtension(tabClickData.tab); } var cmd = DOpus.Create().Command(); var fsu = DOpus.FSUtil(); function checkFileExtension(tab) { for (var e = new Enumerator(tab.lister.tabs); !e.atEnd(); e.moveNext()) { var tabItem = e.item(); var extFound = false; var iCategory = Number(Script.Config["Category"]); var iGroup = Number(Script.Config["Group"]); var iExtension = Script.Config["Extension"]; if (iExtension.substring(-1,1) != '.') { iExtension = '.' + iExtension; DOpus.Output("Extension = " + iExtension); } DOpus.Output("Category number is " + iCategory); DOpus.Output("Group is " + iGroup); DOpus.Output("Extension is " + iExtension); for (var ee = new Enumerator(tabItem.files); !ee.atEnd(); ee.moveNext()) { var fileItem = ee.item(); if (iCategory == 0) { switch (iGroup) { case 0: if (!fileItem.InGroup('Archives')) continue; DOpus.Output("File Type Group Archives Selected"); extFound = true; break; case 1: if (!fileItem.InGroup('Databases')) continue; DOpus.Output("File Type Group Databases Selected"); extFound = true; break; case 2: if (!fileItem.InGroup('Documents')) continue; DOpus.Output("File Type Group Documents Selected"); extFound = true; break; case 3: if (!fileItem.InGroup('Images')) continue; DOpus.Output("File Type Group Images Selected"); extFound = true; break; case 4: if (!fileItem.InGroup('Movies')) continue; DOpus.Output("File Type Group Movies Selected"); extFound = true; break; case 5: if (!fileItem.InGroup('Music')) continue; DOpus.Output("File Type Group Music Selected"); extFound = true; break; case 6: if (!fileItem.InGroup('Programs')) continue; DOpus.Output("File Type Group Programs Selected"); extFound = true; break; } } else { if (fileItem.ext != iExtension) continue; DOpus.Output(iExtension + " selected"); extFound = true; break; } } cmd.SetSourceTab(tabItem); if (extFound) { var iRed = Number(Script.Config["1-Red"]); if (isNaN(iRed) || iRed < 0 || iRed > 255) { DOpus.Output(iRed + " is an invalid RED value"); } var iGreen = Number(Script.Config["2-Green"]); if (isNaN(iGreen) || iGreen < 0 || iGreen > 255) { DOpus.Output(iGreen + " is an invalid GREEN value"); } var iBlue = Number(Script.Config["3-Blue"]); if (isNaN(iBlue) || iBlue < 0 || iBlue > 255) { DOpus.Output(iBlue + " is an invalid BLUE value"); } DOpus.Output('Tab Highlight Color = ' + iRed + ', ' + iGreen + ', ' + iBlue); cmd.RunCommand('Go TABCOLOR=' + iRed + ',' + iGreen + ',' + iBlue); } else { cmd.RunCommand('Go TABCOLOR=reset'); } } }