예제 #1
0
            private void OnColorChanged(object sender, ModelPropertyChangedEventArgs e)
            {
                var brush = new SolidColorBrush((Color)e.NewValue);

                brush.Freeze();
                SetValue(BrushProperty, brush);
            }
예제 #2
0
        internal virtual void HandleBoundPropertyChanged(ModelBinding binding, ModelPropertyChangedEventArgs e, bool pushToSource)
        {
            object convertedValue = e.NewValue;

            if (binding.Converter != null && binding.Converter.ConvertBack(ref convertedValue) != null)
            {
                return;
            }

            if (pushToSource)
            {
                SynchronizeValue(binding.Source, binding.SourceProperty, convertedValue);
            }

            if (binding.Converter != null && binding.Converter.Convert(ref convertedValue) == null && !Equals(convertedValue, e.NewValue) && !ArrayEquals(convertedValue, e.NewValue))
            {
                SynchronizeValue(this, e.Property, convertedValue);

                if (!String.IsNullOrEmpty(e.Property.PropertyName))
                {
                    var action = new Action(() => OnPropertyChanged(new PropertyChangedEventArgs(e.Property.PropertyName)));
                    if (System.Windows.Application.Current != null && System.Windows.Application.Current.Dispatcher != null)
                    {
                        System.Windows.Application.Current.Dispatcher.BeginInvoke(action);
                    }
                    else
                    {
                        action();
                    }
                }
            }
        }
예제 #3
0
 private void OnIsToolWindowVisibleChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if ((bool)e.NewValue == false)
     {
         Focus();
     }
 }
예제 #4
0
        internal void HandleModelPropertyChanged(ModelPropertyChangedEventArgs e)
        {
            ModelBinding binding;

            if (_bindings.TryGetValue(e.Property.Key, out binding) ||
                _selfBindings.TryGetValue(e.Property.Key, out binding))
            {
                if (binding.Mode != ModelBindingMode.OneWay)
                {
                    HandleBoundPropertyChanged(binding, e, binding.Mode == ModelBindingMode.TwoWay);
                }
            }
            else
            {
                HandleUnboundPropertyChanged(e);
            }

            // if any self bindings are dependant on the modified field, update them now
            foreach (var kvp in _selfBindings)
            {
                if (kvp.Value.SourceProperty == e.Property)
                {
                    RefreshBinding(kvp.Key, kvp.Value);
                }
            }
        }
예제 #5
0
        private static void OnFilenameChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            var vm       = (ScriptViewModel)sender;
            var filename = (string)e.NewValue;

            vm.Title = String.IsNullOrEmpty(filename) ? "Script" : Path.GetFileName(filename);
        }
예제 #6
0
        public void TestModelPropertyChanged()
        {
            ModelPropertyChangedEventArgs args = null;

            _model.AddPropertyChangedHandler(TestClass.StrProperty, (o, e) => args = e);

            _model.Str = "Default";
            Assert.That(args, Is.Null);

            _model.Str = "Test";
            Assert.That(args, Is.Not.Null);
            Assert.That(args.Property, Is.EqualTo(TestClass.StrProperty));
            Assert.That(args.OldValue, Is.EqualTo("Default"));
            Assert.That(args.NewValue, Is.EqualTo("Test"));

            args       = null;
            _model.Str = "Test";
            Assert.That(args, Is.Null);

            _model.Str = "Test2";
            Assert.That(args, Is.Not.Null);
            Assert.That(args.Property, Is.EqualTo(TestClass.StrProperty));
            Assert.That(args.OldValue, Is.EqualTo("Test"));
            Assert.That(args.NewValue, Is.EqualTo("Test2"));

            _model.Str = "Default";
            Assert.That(args, Is.Not.Null);
            Assert.That(args.Property, Is.EqualTo(TestClass.StrProperty));
            Assert.That(args.OldValue, Is.EqualTo("Test2"));
            Assert.That(args.NewValue, Is.EqualTo("Default"));
        }
예제 #7
0
 internal virtual void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
 {
     if (Requirement != null)
     {
         UpdateDefinition((bool)e.NewValue ? NumberFormat.Hexadecimal : NumberFormat.Decimal);
     }
 }
예제 #8
0
        private static void OnValueChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            var viewModel = (DecimalFieldViewModel)sender;
            var format    = "{0:F" + viewModel.Precision + "}";

            viewModel.SetText((e.NewValue == null) ? String.Empty : String.Format(format, e.NewValue));
        }
예제 #9
0
 internal void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
 {
     foreach (var requirement in Requirements)
     {
         requirement.OnShowHexValuesChanged(e);
     }
 }
예제 #10
0
 internal void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
 {
     foreach (var condition in Conditions)
     {
         condition.OnShowHexValuesChanged(e);
     }
 }
예제 #11
0
 private static void OnIsTextBindingDelayedChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if (!(bool)e.NewValue)
     {
         TextFieldViewModelBase.StopWaitingForTyping();
     }
 }
예제 #12
0
 /// <summary>
 /// Notifies any subscribers that the value of a <see cref="ModelProperty" /> has changed.
 /// </summary>
 protected override void OnModelPropertyChanged(ModelPropertyChangedEventArgs e)
 {
     // call HandleModelPropertyChanged and NotifyPropertyChangedHandlers instead of
     // base.OnModelPropertyChanged to avoid raising the ModelProperty.PropertyChangeHandlers
     // since we're just serving as a passthrough.
     HandleModelPropertyChanged(e);
     OnPropertyChanged(e);
 }
예제 #13
0
 private void OnTextChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if (_searchPending)
     {
         _searchPending = false;
         PerformSearch();
     }
 }
예제 #14
0
 internal override void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
 {
     foreach (var group in Groups)
     {
         group.OnShowHexValuesChanged(e);
     }
     base.OnShowHexValuesChanged(e);
 }
예제 #15
0
        internal override void HandleUnboundPropertyChanged(ModelPropertyChangedEventArgs e)
        {
            var error = Validate(e.Property, e.NewValue);

            SetError(e.Property, error);

            base.HandleUnboundPropertyChanged(e);
        }
예제 #16
0
        /// <summary>
        /// Notifies any subscribers that the value of a <see cref="ModelProperty" /> has changed.
        /// </summary>
        /// <param name="e"></param>
        protected override void OnModelPropertyChanged(ModelPropertyChangedEventArgs e)
        {
            if (e.Property == IsRequiredProperty)
            {
                Validate(SelectedIdProperty);
            }

            base.OnModelPropertyChanged(e);
        }
예제 #17
0
        internal override void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
        {
            base.OnShowHexValuesChanged(e);

            if (CompareRequirement != null)
            {
                UpdateOtherDefinition((bool)e.NewValue ? NumberFormat.Hexadecimal : NumberFormat.Decimal);
            }
        }
예제 #18
0
            private static void OnIsDeletedChanged(object sender, ModelPropertyChangedEventArgs e)
            {
                var vm = (UpdateAchievementViewModel)sender;

                if (vm.IsDeleted)
                {
                    vm.IsUpdated = false;
                }
            }
예제 #19
0
 internal void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
 {
     if (_requirementGroups != null)
     {
         foreach (var group in _requirementGroups)
         {
             group.OnShowHexValuesChanged(e);
         }
     }
 }
예제 #20
0
        private static void OnIsFixedSelectionChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            var vm = (AutoCompleteFieldViewModel)sender;

            if ((bool)e.NewValue)
            {
                vm.RemovePropertyChangedHandler(TextProperty, vm.OnTextChanged);
            }
            else
            {
                vm.AddPropertyChangedHandler(TextProperty, vm.OnTextChanged);
            }
        }
예제 #21
0
 private void OnSourcePropertyChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if (e.Property.Key != _propertyBeingSynchronized)
     {
         foreach (var kvp in _bindings)
         {
             if (kvp.Value.SourceProperty == e.Property)
             {
                 RefreshBinding(kvp.Key, kvp.Value);
             }
         }
     }
 }
예제 #22
0
 private void OnIsCenterOnLineRequestedChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if ((bool)e.NewValue == true)
     {
         Dispatcher.BeginInvoke(new Action(() =>
         {
             if (IsLoaded)
             {
                 CenterOnLine();
             }
         }));
     }
 }
예제 #23
0
 private void OnSummaryPropertyChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     Dispatcher.Invoke(new Action(() =>
     {
         var rowViewModels = RowViewModels;
         foreach (var column in Columns)
         {
             if (column.SourceProperty == e.Property)
             {
                 column.Summarize(rowViewModels);
             }
         }
     }));
 }
예제 #24
0
        /// <summary>
        /// Notifies any subscribers that the value of a <see cref="ModelProperty" /> has changed.
        /// </summary>
        protected override void OnModelPropertyChanged(ModelPropertyChangedEventArgs e)
        {
            if (e.Property == TextFieldViewModel.TextProperty && IsTextBindingDelayed)
            {
                WaitForTyping(() => base.OnModelPropertyChanged(e));
                return;
            }
            else if (e.Property == IsRequiredProperty)
            {
                Validate(TextProperty);
            }

            base.OnModelPropertyChanged(e);
        }
예제 #25
0
        internal override void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
        {
            foreach (var group in RequirementGroups)
            {
                group.OnShowHexValuesChanged(e);
            }

            Generated.OnShowHexValuesChanged(e);
            Local.OnShowHexValuesChanged(e);
            Unofficial.OnShowHexValuesChanged(e);
            Core.OnShowHexValuesChanged(e);

            base.OnShowHexValuesChanged(e);
        }
예제 #26
0
        private void OnTextChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            _matches.Clear();

            var searchText = (string)e.NewValue;

            if (String.IsNullOrEmpty(searchText))
            {
                Index      = 0;
                MatchCount = 0;
                return;
            }

            var nextIndex    = -1;
            var cursorLine   = Owner.CursorLine;
            var cursorColumn = Owner.CursorColumn;

            foreach (var line in Owner.Lines)
            {
                var lineText = line.PendingText ?? line.Text;
                int start    = 0;
                do
                {
                    var index = lineText.IndexOf(searchText, start, StringComparison.OrdinalIgnoreCase);
                    if (index == -1)
                    {
                        break;
                    }

                    if (nextIndex == -1)
                    {
                        if (line.Line > cursorLine || (line.Line == cursorLine && index + 1 + searchText.Length >= cursorColumn))
                        {
                            nextIndex = _matches.Count;
                        }
                    }

                    _matches.Add(new MatchLocation {
                        Line = line.Line, Column = index + 1
                    });
                    start = index + searchText.Length;
                } while (true);
            }

            MatchCount = _matches.Count;

            // force OnIndexChanged by toggling to 0 briefly before setting the actual new value
            Index = 0;
            Index = nextIndex + 1;
        }
예제 #27
0
        internal virtual void OnShowHexValuesChanged(ModelPropertyChangedEventArgs e)
        {
            foreach (var trigger in Triggers)
            {
                foreach (var group in trigger.Groups)
                {
                    group.OnShowHexValuesChanged(e);
                }
            }

            Generated.OnShowHexValuesChanged(e);
            Local.OnShowHexValuesChanged(e);
            Published.OnShowHexValuesChanged(e);
        }
예제 #28
0
        private static void OnShowHexValuesChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            ServiceRepository.Instance.FindService <ISettings>().HexValues = (bool)e.NewValue;
            var vm   = (MainWindowViewModel)sender;
            var game = vm.Game;

            if (game != null)
            {
                foreach (var achievement in game.Editors.OfType <AssetViewModelBase>())
                {
                    achievement.OnShowHexValuesChanged(e);
                }
            }
        }
예제 #29
0
        public void TestDependantPropertyUnitializedSubScription()
        {
            ModelPropertyChangedEventArgs args = null;

            _model.Suffix = "suffix";
            _model.Str    = "One";

            _model.AddPropertyChangedHandler(TestClass.LazyProperty, (o, e) => args = e);
            Assert.That(args, Is.Null);

            _model.Str = "Two";
            Assert.That(args, Is.Not.Null);
            Assert.That(args.OldValue, Is.EqualTo("Onesuffix"));
            Assert.That(args.NewValue, Is.EqualTo("Twosuffix"));
        }
예제 #30
0
 private static void OnGameChanged(object sender, ModelPropertyChangedEventArgs e)
 {
     if (e.OldValue == null)
     {
         var vm = (MainWindowViewModel)sender;
         vm.SaveScriptCommand    = new DelegateCommand(() => vm.SaveScript());
         vm.SaveScriptAsCommand  = new DelegateCommand(() => vm.SaveScriptAs());
         vm.RefreshScriptCommand = new DelegateCommand(vm.RefreshScript);
         vm.UpdateLocalCommand   = new DelegateCommand(vm.UpdateLocal);
         vm.OnPropertyChanged(() => vm.SaveScriptCommand);
         vm.OnPropertyChanged(() => vm.SaveScriptAsCommand);
         vm.OnPropertyChanged(() => vm.RefreshScriptCommand);
         vm.OnPropertyChanged(() => vm.UpdateLocalCommand);
     }
 }