コード例 #1
0
ファイル: vMixControlButton.cs プロジェクト: kirahan/vMixUTC
        private bool TestCondition(vMixControlButtonCommand cmd)
        {
            if (cmd.AdditionalParameters == null || cmd.AdditionalParameters.Count == 0)
            {
                return(false);
            }
            object part1 = null;
            object part2 = null;

            part1 = string.Format(cmd.AdditionalParameters[1].A, cmd.InputKey, cmd.AdditionalParameters[0].A);
            part2 = string.Format(cmd.AdditionalParameters[3].A, cmd.InputKey, cmd.AdditionalParameters[0].A);

            Thread.CurrentThread.CurrentCulture   = _culture;
            Thread.CurrentThread.CurrentUICulture = _culture;
            return(Calculate(string.Format("{0}{1}{2}", part1?.ToString() ?? "", cmd.AdditionalParameters[2].A, part2?.ToString() ?? "")));
        }
コード例 #2
0
        public static vMixControlButtonCommand FromString(string s)
        {
            var result = new vMixControlButtonCommand();

            result.UseInActiveState = false;

            for (int i = 0; i < 10; i++)
            {
                result.AdditionalParameters.Add(new One <string>()
                {
                    A = ""
                });
            }

            var functions = SimpleIoc.Default.GetInstance <MainViewModel>().Functions;

            result.Action = functions.Where(x => x.Function == "None").FirstOrDefault();


            var bracketIndex = s.IndexOf('(');

            if (bracketIndex <= 0)
            {
                var action = functions.Where(x => x.Function == s.Substring(0, s.Length).Trim().TrimStart('>', '*', '!')).FirstOrDefault();
                if (action != null)
                {
                    result.Action = action;
                }
                return(result);
            }
            var act = functions.Where(x => x.Function == s.Substring(0, bracketIndex).Trim().TrimStart('>', '*', '!')).FirstOrDefault();

            if (act == null)
            {
                return(result);
            }
            else
            {
                result.Action = act;
            }

            int ident = 0;

            for (int i = 0; i < s.Length; i++)
            {
                bool brk = false;
                switch (s[i])
                {
                case '\t':
                    ident += 8;
                    break;

                case '>':
                    result.Collapsed = true;
                    break;

                case '!':
                    result.IsExecutable = false;
                    break;

                case '*':
                    result.UseInActiveState = true;
                    break;

                default:
                    brk = true;
                    break;
                }
                if (brk)
                {
                    break;
                }
            }
            result.Ident = new Thickness(ident, 0, 0, 0);
            if (s.Length - bracketIndex - 2 > 0)
            {
                s = s.Substring(bracketIndex + 1, s.Length - bracketIndex - 2);
            }
            else
            {
                return(result);
            }

            List <string> arguments = new List <string>();

            var arg = "";
            var br  = 0;
            var bc  = 0;
            var str = 0;

            for (int i = 0; i < s.Length; i++)
            {
                switch (s[i])
                {
                case '\"':
                    str++;
                    break;

                case '(':
                    br++;
                    break;

                case ')':
                    br--;
                    break;

                case '[':
                    bc++;
                    break;

                case ']':
                    bc--;
                    break;

                case ',':
                    if (str % 2 == 0)
                    {
                        arguments.Add(arg.Trim().Trim('"'));
                        arg = "";
                        continue;
                    }
                    break;

                default:
                    break;
                }
                arg += s[i];
            }
            arguments.Add(arg.Trim().Trim('"'));

            if (act.HasInputProperty)
            {
                result.InputKey = arguments[0];
                arguments.RemoveAt(0);
            }
            if (act.HasIntProperty)
            {
                result.Parameter = arguments[0];
                arguments.RemoveAt(0);
            }
            if (act.HasStringProperty)
            {
                result.StringParameter = arguments[0];
                arguments.RemoveAt(0);
            }
            var parameter = 0;

            while (arguments.Count > 0)
            {
                result.AdditionalParameters[parameter++].A = arguments[0];
                arguments.RemoveAt(0);
            }
            return(result);
        }
コード例 #3
0
ファイル: vMixControlButton.cs プロジェクト: kirahan/vMixUTC
 private object CalculateObjectParameter(vMixControlButtonCommand cmd)
 {
     return(CalculateExpression(string.Format(cmd.StringParameter, cmd.InputKey)?.ToString() ?? ""));
 }