// Global Variables // (c) 2020 Steve Banham scriptName = "Global Variables"; scriptVersion = "1.0.5"; scriptDate = "6/2/2022"; scriptCopyright = "(c) 2020 Steve Banham"; scriptMinVersion = "12.21"; scriptDesc = "Display and modify global variables."; scriptUrl = "https://resource.dopus.com/t/global-variables-tool/35389"; function OnInit(initData) { initData.name = scriptName; initData.version = scriptVersion; initData.copyright = scriptCopyright; initData.desc = scriptDesc; initData.default_enable = true; initData.min_version = scriptMinVersion; initData.config_desc = DOpus.Create.Map(); var configName = ""; configName = "remember_position"; initData.Config[configName] = true; initData.config_desc(configName) = "The dialog remembers it's last size and position."; var cmd = initData.AddCommand(); cmd.name = "GlobalVariables"; cmd.method = "onGlobalVariables"; cmd.desc = scriptDesc; cmd.label = "GlobalVariables"; cmd.template = ""; } function onGlobalVariables(scriptCmdData) { var strValue, strNewValue; var strName; var intEnable = false; var dlg = DOpus.Dlg; dlg.title = scriptName + " " + scriptVersion+ " - Directory Opus"; dlg.template = "dlgVariables"; if (Script.Config["remember_position"] == true) { dlg.LoadPosition("Steve_GlobalVars"); } dlg.detach = true; dlg.Create(); updateList(dlg, strName, strValue); dlg.Show(); while (true) { var msg = dlg.GetMsg(); if (!msg.result) break; if (msg.event == "click" && dlg.Control("btnNew").focus == true) { editVariables(dlg, false, true); checkListState(dlg, intEnable); } if (msg.event == "checked" && dlg.Control("listVariables").focus == true) { checkListState(dlg, intEnable); } if (msg.event == "dblclk" && dlg.Control("listVariables").focus == true) { if (dlg.Control("listVariables").value.index < 0) { editVariables(dlg, false, true); checkListState(dlg, intEnable); } else { editVariables(dlg, true, false); } } if (msg.event == "rclick" && dlg.Control("listVariables").focus == true) { var dlgMenu = DOpus.Dlg; if (dlg.Control("listVariables").value.index > -1) { dlgMenu.choices = DOpus.Create.Vector("Edit...", "Delete", "-", "Select Variable", "Deselect Variable", "-", "Select All", "Select None", "-", "Copy Name", "Copy Value", "-", "Clear Filter", "Refresh"); dlgMenu.menu = DOpus.Create.Vector(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } else { dlgMenu.choices = DOpus.Create.Vector("New...", "Delete", "-", "Select Variable", "Deselect Variable", "-", "Select All", "Select None", "-", "Copy Name", "Copy Value", "-", "Clear Filter", "Refresh"); dlgMenu.menu = DOpus.Create.Vector(1, 8, 0, 8, 8, 0, 0, 0, 0, 8, 8, 0, 0, 0); } var menuReturn = dlgMenu.Show; if (menuReturn == 1) { if (dlg.Control("listVariables").value.index < 0) { editVariables(dlg, false, true); checkListState(dlg, intEnable); } else { editVariables(dlg, true, false); } } if (menuReturn == 2) { DOpus.Vars.Delete(dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).name); updateList(dlg, strName, strValue); checkListState(dlg, intEnable); } if (menuReturn == 4) { var intSelItem = dlg.Control("listVariables").value.index; dlg.Control("listVariables").GetItemAt(intSelItem).checked = 1; checkListState(dlg, intEnable); } if (menuReturn == 5) { var intSelItem = dlg.Control("listVariables").value.index; dlg.Control("listVariables").GetItemAt(intSelItem).checked = 0; checkListState(dlg, intEnable); } if (menuReturn == 7) { for (i=0; i < dlg.Control("listVariables").count; i ++) { dlg.Control("listVariables").GetItemAt(i).checked = 1; } checkListState(dlg, intEnable); } if(menuReturn == 8) { for (i=0; i < dlg.Control("listVariables").count; i ++) { dlg.Control("listVariables").GetItemAt(i).checked = 0; } checkListState(dlg, intEnable); } if (menuReturn == 10) { DOpus.SetClip(dlg.Control("listVariables").value.name); } if (menuReturn == 11) { DOpus.SetClip(dlg.Control("listVariables").value.subitems(0)); } if (menuReturn == 13) { dlg.Control("editFilter").value = ""; updateList(dlg, strName, strValue); } if (menuReturn == 14) { updateList(dlg, strName, strValue); checkListState(dlg, intEnable); } } if (msg.event == "click" && dlg.Control("btnDelete").focus == true) { for (i=0; i < dlg.Control("listVariables").count; i ++) { if (dlg.Control("listVariables").GetItemAt(i).checked == 1) { DOpus.Vars.Delete(dlg.Control("listVariables").GetItemAt(i).name); } } updateList(dlg, strName, strValue); checkListState(dlg, intEnable); } if (msg.event == "click" && msg.control == "btnAbout") { OnAboutScript(null, dlg); } if (msg.event == "click" && dlg.Control("btnRefresh").focus == true) { updateList(dlg, strName, strValue); checkListState(dlg, intEnable); } if (msg.event == "click" && dlg.Control("btnClear").focus == true) { dlg.Control("editFilter").value = ""; updateList(dlg, strName, strValue); } if (msg.event == "click" && dlg.Control("btnEdit").focus == true) { editVariables(dlg, false, false); updateList(dlg, strName, strValue); checkListState(dlg, intEnable); } if (msg.event == "editchange" || msg.event == "click" & dlg.Control("btnEdit").focus == true) { updateList(dlg, strName, strValue); } } if (Script.Config["remember_position"] == true) { dlg.SavePosition("Steve_GlobalVars"); } } function updateList(dlg, strName, strValue) { dlg.Control("listVariables").RemoveItem(-1); for (var eVars = new Enumerator(DOpus.Vars); !eVars.atEnd(); eVars.moveNext()) { strName = eVars.item(); strValue = DOpus.Vars.Get(eVars.item()); strType = DOpus.TypeOf(DOpus.Vars.Get(eVars.item())); var strRealName = eVars.item().name; strRealName = strRealName.toLowerCase(); var strFilter = dlg.Control("editFilter").value; strFilter = strFilter.toLowerCase(); if (strRealName.search(strFilter) == -1) { continue; } if (typeof(strValue) == "boolean") { if (strValue == true) { strValue = "true"; } else strValue = "false"; } dlg.Control("listVariables").AddItem(strName); if (0); else if (strType == "unknown") { dlg.Control("listVariables").GetItemByName(strName).subitems(0) = "?"; dlg.Control("listVariables").GetItemByName(strName).subitems(1) = "UNKNOWN"; dlg.Control("listVariables").GetItemByName(strName).disabled = true; } else if (strType == "object.Vector") { dlg.Control("listVariables").GetItemByName(strName).subitems(0) = "[...]"; dlg.Control("listVariables").GetItemByName(strName).subitems(1) = "vector"; dlg.Control("listVariables").GetItemByName(strName).disabled = true; dlg.Control("listVariables").GetItemByName(strName).checked = 3; } else if (strType == "object.Map") { dlg.Control("listVariables").GetItemByName(strName).subitems(0) = "{...}"; dlg.Control("listVariables").GetItemByName(strName).subitems(1) = "map"; dlg.Control("listVariables").GetItemByName(strName).disabled = true; dlg.Control("listVariables").GetItemByName(strName).checked = 3; } else if (strType != "object.Map" && strType != "object.Vector") { dlg.Control("listVariables").GetItemByName(strName).subitems(0) = strValue; dlg.Control("listVariables").GetItemByName(strName).subitems(1) = strType; } if (strName.persist == true) { dlg.Control("listVariables").GetItemByName(strName).subitems(2) = "yes"; } else dlg.Control("listVariables").GetItemByName(strName).subitems(2) = "no"; strRealName = ""; strFilter = ""; } dlg.Control("listVariables").columns.AutoSize(); dlg.Control("staticNotify").label = "Total: " + dlg.Control("listVariables").count; } function checkListState(dlg, intEnable) { intEnable = false; for (i=0; i < dlg.Control("listVariables").count; i ++) { if (dlg.Control("listVariables").GetItemAt(i).checked == 1) { intEnable = true; } } if (intEnable == true) { dlg.Control("btnDelete").enabled = true; dlg.Control("btnEdit").enabled = true; } else { dlg.Control("btnDelete").enabled = false; dlg.Control("btnEdit").enabled = false; } } function editVariables(dlg, boolEditCurrent, boolIsNew) { var intMultipleChecks = 0; var dlgEdit = DOpus.Dlg; dlgEdit.window = dlg; dlgEdit.disable_window = dlg; dlgEdit.title = "Edit Variables"; dlgEdit.template = "dlgEditVar"; dlgEdit.detach = true; dlgEdit.Create(); dlgEdit.Control("radioString").value = true; dlgEdit.Control("staticNotify").style = "b"; toggleEditFields(dlgEdit); populateEditDlg(dlg, dlgEdit, intMultipleChecks, boolEditCurrent, boolIsNew); dlgEdit.Show(); while (true) { var msg = dlgEdit.GetMsg(); if (!msg.result) break; if (msg.event == "editchange" && dlgEdit.Control("editName").focus == true) { dlgEdit.Control("staticNotify").label = ""; } if (msg.event == "click" && dlgEdit.Control("radioNumber").focus == true) { toggleEditFields(dlgEdit); } if (msg.event == "click" && dlgEdit.Control("radioString").focus == true) { toggleEditFields(dlgEdit); } if (msg.event == "click" && dlgEdit.Control("radioBoolTrue").focus == true || dlgEdit.Control("radioBoolFalse").focus == true) { toggleEditFields(dlgEdit); } if (msg.event == "click" && dlgEdit.Control("btnApply").focus == true) { if (dlgEdit.Control("radioString").value == true) { var strSetName = dlgEdit.Control("editName").value; var strSetValue = dlgEdit.Control("editValueString").value; } if (dlgEdit.Control("radioNumber").value == true) { var strSetName = dlgEdit.Control("editName").value; var strSetValue = dlgEdit.Control("editValueNum").value; strSetValue = Number(strSetValue); } if (dlgEdit.Control("radioBoolTrue").value == true) { var strSetName = dlgEdit.Control("editName").value; var strSetValue = true; } if (dlgEdit.Control("radioBoolFalse").value == true) { var strSetName = dlgEdit.Control("editName").value; var strSetValue = false; } if (strSetName == "\[Multiple Variables\]") { for (i=0; i < dlg.Control("listVariables").count; i ++) { if (dlg.Control("listVariables").GetItemAt(i).checked == 1) { strSetName = dlg.Control("listVariables").GetItemAt(i).name; DOpus.Vars.Set(strSetName) = strSetValue; if (dlgEdit.Control("checkPersist").value == true) { DOpus.Vars(strSetName).persist = true; } else { DOpus.Vars(strSetName).persist = false; } } } dlgEdit.EndDlg(); } else { if (strSetName != "") { DOpus.Vars.Set(strSetName) = strSetValue; if (dlgEdit.Control("checkPersist").value == true) { DOpus.Vars(strSetName).persist = true; } else { DOpus.Vars(strSetName).persist = false; } dlgEdit.EndDlg(); } else { dlgEdit.Control("staticNotify").label = "No name defined."; } } updateList(dlg); checkListState(dlg); } } } function toggleEditFields(dlgEdit) { if (dlgEdit.Control("radioString").value == true) { dlgEdit.Control("editValueNum").visible = false; dlgEdit.Control("editValueNum").enabled = false; dlgEdit.Control("editValueString").visible = true; dlgEdit.Control("editValueString").enabled = true; dlgEdit.Control("staticValue").visible = true; } if (dlgEdit.Control("radioNumber").value == true) { dlgEdit.Control("editValueNum").visible = true; dlgEdit.Control("editValueNum").enabled = true; dlgEdit.Control("editValueString").visible = false; dlgEdit.Control("editValueString").enabled = false; dlgEdit.Control("staticValue").visible = true; } if (dlgEdit.Control("radioBoolTrue").value == true || dlgEdit.Control("radioBoolFalse").value == true) { dlgEdit.Control("editValueNum").visible = false; dlgEdit.Control("editValueNum").enabled = false; dlgEdit.Control("editValueString").visible = false; dlgEdit.Control("editValueString").enabled = false; dlgEdit.Control("staticValue").visible = false; } } function populateEditDlg(dlg, dlgEdit, intMultipleChecks, boolEditCurrent, boolIsNew) { if (boolIsNew == true) { return; } if (boolEditCurrent == false) { for (i=0; i < dlg.Control("listVariables").count; i ++) { if (dlg.Control("listVariables").GetItemAt(i).checked == 1) { intMultipleChecks++; } } if (intMultipleChecks == 1) { for (i=0; i < dlg.Control("listVariables").count; i ++) { if (dlg.Control("listVariables").GetItemAt(i).checked == 1) { dlgEdit.Control("editName").value = dlg.Control("listVariables").GetItemAt(i).name; if (dlg.Control("listVariables").GetItemAt(i).subitems(1) == "string") { dlgEdit.Control("editValueString").value = dlg.Control("listVariables").GetItemAt(i).subitems(0); if (dlg.Control("listVariables").GetItemAt(i).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(i).subitems(1) == "int") { dlgEdit.Control("radioNumber").value = true; toggleEditFields(dlgEdit); dlgEdit.Control("editValueNum").value = dlg.Control("listVariables").GetItemAt(i).subitems(0); if (dlg.Control("listVariables").GetItemAt(i).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(i).subitems(1) == "bool") { if (dlg.Control("listVariables").GetItemAt(i).subitems(0) == "true") { dlgEdit.Control("radioBoolTrue").value = true; toggleEditFields(dlgEdit); if (dlg.Control("listVariables").GetItemAt(i).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(i).subitems(0) == "false") { dlgEdit.Control("radioBoolFalse").value = true; toggleEditFields(dlgEdit); if (dlg.Control("listVariables").GetItemAt(i).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } } } } } else { dlgEdit.Control("editName").value = "\[Multiple Variables\]"; dlgEdit.Control("editName").enabled = false; dlgEdit.Control("staticNotify").label = "Multiple variables selected."; } } else { dlgEdit.Control("editName").value = dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).name; if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(1) == "string") { dlgEdit.Control("editValueString").value = dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(0); if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(1) == "int") { dlgEdit.Control("radioNumber").value = true; toggleEditFields(dlgEdit); dlgEdit.Control("editValueNum").value = dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(0); if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(1) == "bool") { if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(0) == "true") { dlgEdit.Control("radioBoolTrue").value = true; toggleEditFields(dlgEdit); if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(0) == "false") { dlgEdit.Control("radioBoolFalse").value = true; toggleEditFields(dlgEdit); if (dlg.Control("listVariables").GetItemAt(dlg.Control("listVariables").value.index).subitems(2) == "yes") { dlgEdit.Control("checkPersist").value = true; } } } } } function OnAboutScript(aboutData, dlg){ dlgA = DOpus.Dlg; if (dlg) { dlgA.window = dlg; dlgA.disable_window = dlg; } else { dlgA.window = aboutData.window; } dlgA.title = scriptName + " - Directory Opus"; dlgA.message = scriptName + " v" + scriptVersion + "\t\t\t\t" + scriptDate + "\n\n" + scriptDesc + "\n\n" + scriptCopyright; dlgA.buttons = "Forum...|Close"; dlgA.icon = "info"; var result = dlgA.show; if (result == 1) { var factory = DOpus.Create(); var cmd = factory.Command(); cmd.RunCommand(scriptUrl); } } ==SCRIPT RESOURCES