/////////////////////////////////////////////////////////////////////////////// function OnInit(data){ data.name = "Command.Generic: SetVar"; data.desc = "Set, toggle, delete variables from buttons, scripts or external applications."; data.copyright = "tbone in o9/2o14"; data.version = "0.1a"; data.min_version = "11.7.1"; data.default_enable = true; var cmd = data.AddCommand(); cmd.name = "SetVar"; cmd.method = "Command_SetVar"; cmd.desc = data.desc; cmd.label = "Set Var"; cmd.template = "SET/S,DELETE/S,TOGGLE/S,EXISTS/S,NAME/K,PERSIST/S,DEPERSIST/S,NOCREATE/S,NOSET/S,TOGGLEHIGH/K,TOGGLELOW/K,TOGGLEDEL/S,GLOBAL/S,LISTER/S,SOURCE/S,DEST/S,VALUE/R,"; data.config["DebugOutput"] = false; } /////////////////////////////////////////////////////////////////////////////// var COMMAND_ABORTED = true; //==0 var COMMAND_SUCCEEDED = false; //!=0 /////////////////////////////////////////////////////////////////////////////// function Command_SetVar(data) { Debug("SetVar(): "); var commandResult = COMMAND_SUCCEEDED; var operation = "SET"; var params = { opSet : GetParameter(data, "SET", null, true), opDelete : GetParameter(data, "DELETE", null, false), opToggle : GetParameter(data, "TOGGLE", null, false), opExists : GetParameter(data, "EXISTS", null, false), varName : GetParameter(data, "NAME", null, ""), varValue : GetParameter(data, "VALUE", null, ""), varPers : GetParameter(data, "PERSIST", null, false), varDePers : GetParameter(data, "DEPERSIST", null, false), varNoCreate : GetParameter(data, "NOCREATE", null, false), varNoSet : GetParameter(data, "NOSET", null, false), varTogLow : GetParameter(data, "TOGGLELOW", null, 0), varTogDel : GetParameter(data, "TOGGLEDEL", null, false), varTogHigh : GetParameter(data, "TOGGLEHIGH", null, 1), varGlobal : GetParameter(data, "GLOBAL", null, true), varLister : GetParameter(data, "LISTER", null, false), varSource : GetParameter(data, "SOURCE", null, false), varDest : GetParameter(data, "DEST", null, false) } if (params.opDelete) operation = "DELETE"; if (params.opToggle) operation = "TOGGLE"; if (params.opExists) operation = "EXISTS"; var vars = DOpus.vars; var scope = "GLOBAL"; if (params.varLister){ vars = data.func.sourcetab.lister.vars; scope = "LISTER";} if (params.varSource){ vars = data.func.sourcetab.vars; scope = "SOURCE";} if (params.varDest){ vars = data.func.desttab.lister.vars; scope = "DEST";} Debug(" Operation : " + operation); Debug(" NAME : " + params.varName); Debug(" VALUE : " + params.varValue); Debug(" PERSIST : " + params.varPers); Debug(" DEPERSIST : " + params.varDePers); Debug(" NOCREATE : " + params.varNoCreate); Debug(" NOSET : " + params.varNoSet); Debug(" TOGGLEHIGH: " + params.varTogHigh); Debug(" TOGGLELOW : " + params.varTogLow); Debug(" TOGGLEDEL : " + params.varTogDel); Debug(" SCOPE : " + scope); if (params.varName==""){ Debug("E No variable name given."); operation = "NONE"; commandResult = COMMAND_ABORTED; } switch(operation){ case "SET": commandResult = Set(vars, params); break; case "TOGGLE": commandResult = Toggle(vars, params); break; case "DELETE": commandResult = Delete(vars, params); break; case "EXISTS": if(!vars.Exists(params.varName)){ Debug(" Not exists, abort."); commandResult = COMMAND_ABORTED; } else { Debug(" Exists, success."); commandResult = COMMAND_SUCCEEDED; } break; case "NONE": default: Debug(" Do nothing.."); break; } DOpus.Create.Command.UpdateToggle(); return commandResult; } /////////////////////////////////////////////////////////////////////////////// function Set(vars, params){ Debug(" Set variable ["+params.varName+"]"); var proceed = true; if (params.varValue==="") Debug("W No value given ["+params.varValue+"]."); if(!vars.Exists(params.varName)){ Debug("I Variable ["+params.varName+"] did not exist yet."); if (!params.varNoCreate){ Debug(" Creating variable"); vars.Set(params.varName,""); } else { Debug(" Creation skipped (NOCREATE)"); proceed = false; } } if (proceed){ var variable = vars(params.varName); if (!params.varNoSet){ Debug(" Setting value ["+params.varValue+"]"); variable.value = params.varValue; } else { Debug(" Setting value skipped (NOSET)"); } if(params.varPers){ Debug(" Persisting variable"); variable.persist = true; } if(params.varDePers){ Debug(" DePersisting variable"); variable.persist = false; } } return COMMAND_SUCCEEDED; } /////////////////////////////////////////////////////////////////////////////// function Toggle(vars, params){ Debug(" Toggle variable ["+params.varName+"]"); if(!vars.Exists(params.varName)){ params.varValue=params.varTogHigh; Set(params); } else { var variable = vars(params.varName); Debug(" Current toggle value ["+variable.value+"]"); if ( variable.value=="" || variable.value=="0" || !variable.value || variable.value=="false" || variable.value==params.varTogLow){ Debug(" Toggling to ["+params.varTogHigh+"]"); params.varValue=params.varTogHigh; Set(params); } else { if (params.varTogDel){ Debug(" Toggling to "); Delete(params); } else { Debug(" Toggling to ["+params.varTogLow+"]"); params.varValue=params.varTogLow; Set(params); } } } return COMMAND_SUCCEEDED; } /////////////////////////////////////////////////////////////////////////////// function Delete(vars, params){ Debug(" Delete variable ["+params.varName+"]"); if(!vars.Exists(params.varName)){ Debug("I Variable ["+params.varName+"] did not exist"); return COMMAND_SUCCEEDED; } else { vars.Delete(params.varName); } return COMMAND_SUCCEEDED; } /////////////////////////////////////////////////////////////////////////////// function Debug(text) { try{ if(Script); if (0 || Script.config.DebugOutput) DOpus.Output(text); } catch(e){ DOpus.Output(text); } } /////////////////////////////////////////////////////////////////////////////// function GetParameter( data, templateName, configName, defaultValue){ // v0.8 function VectorToArray(vector){ var a = new Array(); for(var v=0;v