예제 #1
0
 protected void TriggerValueChange(bool propagateToBindings = true)
 {
     ValueChanged?.Invoke(value);
     if (propagateToBindings)
     {
         bindings?.ForEachAlive(b => b.Value = value);
     }
 }
예제 #2
0
        protected void TriggerValueChange(bool propagateToBindings = true)
        {
            // check a bound bindable hasn't changed the value again (it will fire its own event)
            T beforePropagation = value;

            if (propagateToBindings)
            {
                Bindings?.ForEachAlive(b => b.Value = value);
            }
            if (Equals(beforePropagation, value))
            {
                ValueChanged?.Invoke(value);
            }
        }
        private void checkLocale(string newValue)
        {
            var    locales     = SupportedLocales.ToList();
            string validLocale = null;

            if (locales.Contains(newValue))
            {
                validLocale = newValue;
            }
            else
            {
                var culture = string.IsNullOrEmpty(newValue) ?
                              CultureInfo.CurrentCulture :
                              new CultureInfo(newValue);

                for (var c = culture; !c.Equals(CultureInfo.InvariantCulture); c = c.Parent)
                {
                    if (locales.Contains(c.Name))
                    {
                        validLocale = c.Name;
                        break;
                    }
                }

                if (validLocale == null)
                {
                    validLocale = locales[0];
                }
            }

            if (validLocale != newValue)
            {
                locale.Value = validLocale;
            }
            else
            {
                var culture = new CultureInfo(validLocale);
                CultureInfo.DefaultThreadCurrentCulture   = culture;
                CultureInfo.DefaultThreadCurrentUICulture = culture;
                ChangeLocale(validLocale);

                localisedBindings.ForEachAlive(b => b.Value = GetLocalised(b.Key));
                formattableBindings.ForEachAlive(b => b.Update());
            }
        }
예제 #4
0
        protected override void AddCheckSteps()
        {
            AddUntilStep("no leaked beatmaps", () =>
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                int count = 0;

                workingWeakReferences.ForEachAlive(_ => count++);
                return(count == 1);
            });

            AddUntilStep("no leaked players", () =>
            {
                GC.Collect();
                GC.WaitForPendingFinalizers();
                int count = 0;

                playerWeakReferences.ForEachAlive(_ => count++);
                return(count == 1);
            });
        }
예제 #5
0
 protected void TriggerValueChange()
 {
     ValueChanged?.Invoke(value);
     bindings?.ForEachAlive(b => b.Value = value);
 }