Пример #1
0
 private void ValidateStorableFreeToBind(JSONStorableParam v)
 {
     if (v is JSONStorableStringChooser)
     {
         if (((JSONStorableStringChooser)v).popup != null)
         {
             SuperController.LogError($"Storable {v.name} of atom {plugin.containingAtom.name} was not correctly unregistered.");
         }
     }
     else if (v is JSONStorableFloat)
     {
         if (((JSONStorableFloat)v).slider != null)
         {
             SuperController.LogError($"Storable {v.name} of atom {plugin.containingAtom.name} was not correctly unregistered.");
         }
     }
     else if (v is JSONStorableString)
     {
         if (((JSONStorableString)v).inputField != null)
         {
             SuperController.LogError($"Storable {v.name} of atom {plugin.containingAtom.name} was not correctly unregistered.");
         }
     }
     else if (v is JSONStorableBool)
     {
         if (((JSONStorableBool)v).toggle != null)
         {
             SuperController.LogError($"Storable {v.name} of atom {plugin.containingAtom.name} was not correctly unregistered.");
         }
     }
 }
Пример #2
0
        public static void Restore(this JSONNode config, JSONStorableParam storable)
        {
            if (storable == null)
            {
                return;
            }

            const string dummyNodeName = "Dummy";

            var dummyNode = new JSONClass();
            var oldName   = storable.name;

            var nodeNames = storable.name.Split(':');
            var node      = config;

            foreach (var name in nodeNames.Take(nodeNames.Length - 1))
            {
                node = node[name];
            }

            dummyNode[dummyNodeName] = node[nodeNames.Last()];

            storable.name = dummyNodeName;
            storable.RestoreFromJSON(dummyNode);
            storable.name = oldName;
        }
Пример #3
0
 static public IStorableParameter Create(JSONStorableParam p)
 {
     if (p is JSONStorableFloat)
     {
         return(new FloatStorableParameter(p as JSONStorableFloat));
     }
     else if (p is JSONStorableBool)
     {
         return(new BoolStorableParameter(p as JSONStorableBool));
     }
     else if (p is JSONStorableColor)
     {
         return(new ColorStorableParameter(p as JSONStorableColor));
     }
     else if (p is JSONStorableUrl)
     {
         return(new UrlStorableParameter(p as JSONStorableUrl));
     }
     else if (p is JSONStorableString)
     {
         return(new StringStorableParameter(p as JSONStorableString));
     }
     else if (p is JSONStorableStringChooser)
     {
         return(new StringChooserStorableParameter(p as JSONStorableStringChooser));
     }
     else
     {
         return(null);
     }
 }
Пример #4
0
        public void OnDestroy()
        {
            var clone = new JSONStorableParam[_storables.Count];

            _storables.CopyTo(clone);
            _storables.Clear();
            foreach (var component in clone)
            {
                if (component == null)
                {
                    continue;
                }

                if (component is JSONStorableStringChooser)
                {
                    RemovePopup((JSONStorableStringChooser)component);
                }
                else if (component is JSONStorableFloat)
                {
                    RemoveSlider((JSONStorableFloat)component);
                }
                else if (component is JSONStorableString)
                {
                    RemoveTextField((JSONStorableString)component);
                }
                else if (component is JSONStorableBool)
                {
                    RemoveToggle((JSONStorableBool)component);
                }
                else
                {
                    SuperController.LogError($"VamTimeline: Cannot remove component {component}");
                }
            }
        }
Пример #5
0
        public override bool TryParameter(JSONStorableParam p)
        {
            if (p is T)
            {
                param_ = (T)p;
                return(true);
            }

            return(false);
        }
Пример #6
0
        public void SetParameter(JSONStorableParam sp)
        {
            if (Parameter != null && Parameter.TryParameter(sp))
            {
                return;
            }

            var p = StorableParameterFactory.Create(sp);

            if (p == null)
            {
                Synergy.LogError("unknown parameter type " + sp.ToString());
                return;
            }

            Parameter = p;
        }
        private void InitControls(string freeform, Boolean side)
        {
            var lines = Regex.Split(freeform, "\r\n")
                        .Select(x => x.Trim())
                        .Where(x => x.Count() > 0);

            UIDynamic         ui = null;
            JSONStorableParam js = null;

            foreach (string line in lines)
            {
                {// a label
                    var t = Regex.Match(line, "^`(.*)$");
                    if (t.Success)
                    {
                        JSONStorableString storable = new JSONStorableString("Info", t.Groups[1].Value);
                        ui = this.CreateTextField(storable, side);
                        js = storable;
                    }
                }

                {// UIDynamic properties
                    var t = Regex.Match(line, "^\\^(.*)$");
                    if (t.Success)
                    {
                        Regex.Split(t.Groups[1].Value, ",").ToList().ForEach(s =>
                        {
                            var kv = Regex.Match(s, "^(.+)=(.*)$");
                            if (kv.Success)
                            {
                                string v = kv.Groups[2].Value;
                                switch (kv.Groups[1].Value)
                                {
                                // modifies latest UIDynamic
                                case "height":
                                    {
                                        float height           = float.Parse(v);
                                        LayoutElement layout   = ((UIDynamicTextField)ui).GetComponent <LayoutElement>();
                                        layout.preferredHeight = height;
                                        layout.minHeight       = height;
                                        ui.height = height;
                                        break;
                                    }

                                case "fontSize":
                                    {
                                        ((UIDynamicTextField)ui).UItext.fontSize = (int)(float.Parse(v));
                                        break;
                                    }

                                case "alignment":
                                    {
                                        var a = ((UIDynamicTextField)ui).UItext;
                                        switch (v)
                                        {
                                        case "MiddleCenter": a.alignment = TextAnchor.MiddleCenter; break;

                                        case "MiddleLeft": a.alignment = TextAnchor.MiddleLeft; break;

                                        case "MiddleRight": a.alignment = TextAnchor.MiddleRight; break;

                                        case "LowerLeft": a.alignment = TextAnchor.LowerLeft; break;
                                        }
                                        break;
                                    }

                                case "textColor":
                                    {
                                        int i   = int.Parse(v.Substring(1), System.Globalization.NumberStyles.HexNumber);
                                        Color c = new Color((i >> 16) & 0xff, (i >> 8) & 0xff, i & 0xff);
                                        ((UIDynamicTextField)ui).textColor = c;
                                        break;
                                    }

                                case "setBoolean":
                                    {
                                        ((JSONStorableBool)js).SetVal(Boolean.Parse(v));
                                        break;
                                    }
                                }
                            }
                        });
                    }
                }

                {
                    var t = Regex.Match(line, "^SPACER ([-e.0-9]+)$");
                    if (t.Success)
                    {
                        var spacer = CreateSpacer(side);
                        spacer.height = float.Parse(t.Groups[1].Value);
                    }
                }
                {
                    var t = Regex.Match(line, "^(.+) : ([^ ]+) *(\\[.*\\])?$");
                    if (t.Success)
                    {
                        string type      = t.Groups[2].Value;
                        string varname   = t.Groups[1].Value;
                        string titlename = t.Groups[1].Value;
                        if (titlename.Contains("/"))
                        {
                            titlename = titlename.Substring(0, titlename.IndexOf("/"));
                        }
                        switch (type)
                        {
                        case "Boolean":
                        {
                            jsBoolean[varname] = new JSONStorableBool(titlename, false, new JSONStorableBool.SetBoolCallback(v => BooleanSettingChanged(varname, v)));

                            RegisterBool(jsBoolean[varname]);
                            CreateToggle(jsBoolean[varname], side);

                            BooleanSettingChanged(varname, jsBoolean[varname].val);

                            js = jsBoolean[varname];
                            break;
                        }

                        case "Float":
                        {
                            var tt = Regex.Match(t.Groups[3].Value, "^\\[([-.0-9]+),([-.0-9]+),([-.0-9]+)\\]$");
                            jsFloat[varname] = new JSONStorableFloat(
                                titlename
                                , float.Parse(tt.Groups[1].Value)
                                , new JSONStorableFloat.SetFloatCallback(v => FloatSettingChanged(varname, v))
                                , float.Parse(tt.Groups[2].Value)
                                , float.Parse(tt.Groups[3].Value)
                                , true
                                );

                            RegisterFloat(jsFloat[varname]);
                            CreateSlider(jsFloat[varname], side);

                            FloatSettingChanged(varname, jsFloat[varname].val);

                            js = jsFloat[varname];
                            break;
                        }
                        }
                    }
                }
            }
        }
Пример #8
0
 public void SetParameter(JSONStorableParam sp)
 {
     holder_.SetParameter(sp);
 }
Пример #9
0
 protected ParamDerivedStorableParameter(JSONStorableParam p = null)
 {
     param_ = (T)p;
 }
Пример #10
0
 public virtual bool TryParameter(JSONStorableParam p)
 {
     return(false);
 }