// EventUpdateVar-ADS // (c) 2022 Ken // This is a script for Directory Opus. // See https://www.gpsoft.com.au/DScripts/redirect.asp?page=scripts for development information. // Called by Directory Opus to initialize the script function OnInit(initData) { initData.name = "EventUpdateVar-ADS"; initData.version = "1.2(24.06.28)"; initData.copyright = "(c) 2022 Ken"; initData.url = "https://resource.dopus.com/t/set-tags-add-tags-by-list-beta/43269/2"; initData.desc = "Display ADS in the Status Bar. \r\nFor Preferences / Display / Status Bar: ADS={var:lst:ADS}"; initData.default_enable = true; initData.min_version = "12.0"; } function OnAddCommands(addCmdData) { var cmd = addCmdData.AddCommand(); cmd.name = "UpdateVarADS"; cmd.method = "OnUpdateVarADS"; cmd.desc = "EventUpdateVar-ADS"; cmd.label = "UpdateVarADS"; cmd.template = ""; cmd.hide = false; cmd.icon = 'script'; } function OnUpdateVarADS(scriptCmdData) { var tab = scriptCmdData.func.sourcetab; var lister = tab.lister; //var lister = DOpus.Listers(0); try { if (!lister || lister.Vars.Exists("UpdateVarADS")) return } catch (err) {return} lister.Vars.Set("UpdateVarADS") = 1; var dlg = scriptCmdData.func.Dlg(); if (!DOpus.version.AtLeast("13.7.1")) { dlg.request("EventUpdate Var ADS\rThis script requires version 13.7.1 and above!", "OK"); return } dlg.msgonly = true; dlg.create(); try { dlg.watchtab(tab, "select,activate,srcdst"); // Watch events } catch (err) {return dlg.EndDlg} var fsu = DOpus.fsutil; var cmd = scriptCmdData.func.command, msg; do { msg = dlg.GetMsg(); if (!msg.result) break; var value = msg.value; /* var event = msg.event; var ctrl = msg.control; var dt = msg.data; DOpus.Output("Event: " + event + ", Value: " + value + " ctrl: " + ctrl + " data:" + dt); */ if (value == "select") // If there is a select event { tab.Update(); if (tab.Selected.count > 0) { var ADSfile = tab.Selected(0).realpath + ":Tags"; // ADSfile // If ADSfile exists if (fsu.Exists(ADSfile)) { var ST = DOpus.Create.StringTools(); var openText = fsu.OpenFile(ADSfile, "r"); // Read ADSfile var text = openText.Read(); openText.Close; var textbom = ST.Decode(text, "utf-8 bom"); // Decode as UTF-8 with BOM var myArray = textbom.split("\r\n"); // The separator is \r\n var ADS = myArray[0]; // Get the first line } else {var ADS = "";} lister.Vars.Set('ADS', ADS); } else { lister.Vars.Set('ADS') = ""; } cmd.UpdateToggle(); // Refresh } else if (value == "activate" || value == "srcdst") { lister.Update(); var tab = lister.activetab; if (!tab) var tab = DOpus.listers.lastactive.activetab; try { dlg.watchtab(tab, "select,activate,srcdst"); } catch (error) {break} } else if (value == "close") { lister.Update(); if (!lister.lastactive) break } } while (msg); // msg loop if (lister.Vars) lister.Vars.Delete("UpdateVarADS"); } var cmd = DOpus.Create().Command(); // Called when a tab is activated function OnActivateTab(activateTabData) { cmd.RunCommand('UpdateVarADS'); } // Called when a Lister is activated function OnActivateLister(activateListerData) { cmd.RunCommand('UpdateVarADS'); }