コード例 #1
0
        private void ItemIndexChanged(PaletteEditorTreeViewItem <T> item, int index)
        {
            var oldIndex = _palette.GetEntryOrder(item.EntryId);

            _editService.Edit($"Change {typeof(T).Name} Entry Index {item.EntryId}",
                              () => _palette.SetEntryOrder(item.EntryId, index),
                              () =>
            {
                _palette.SetEntryOrder(item.EntryId, oldIndex);
                _view.TreeView.SetItemIndex(item, oldIndex, false);
                _view.TreeView.Reload();
            },
                              markAsIdOrNameDirty: true);
        }
コード例 #2
0
        private void OnItemAdded(PaletteEditorTreeViewItem <T> item)
        {
            var disposables = new CompositeDisposable();

            disposables.DisposeWith(_disposables);

            // Observe item name.
            var entry = _palette.Entries[item.EntryId];

            item.Name.Skip(1).Subscribe(x =>
            {
                var oldValue = entry.Name.Value;
                _editService.Edit($"Set {typeof(T).Name} Entry Name {entry.Id}",
                                  () => entry.Name.Value = x,
                                  () => entry.Name.Value = oldValue,
                                  markAsIdOrNameDirty: true);
            }).DisposeWith(disposables);

            // Observe item values.
            void ObserveItemValue(KeyValuePair <string, ObservableProperty <T> > value)
            {
                var themeId = value.Key;

                value.Value.Skip(1).Subscribe(x =>
                {
                    var oldValue = entry.Values[themeId].Value;
                    _editService.Edit($"Set {typeof(T).Name} Entry Value {entry.Id}",
                                      () => { entry.Values[themeId].Value = x; },
                                      () => { entry.Values[themeId].Value = oldValue; });
                }).DisposeWith(disposables);
            }

            foreach (var value in item.Values)
            {
                ObserveItemValue(value);
            }

            item.Values.ObservableAdd
            .Subscribe(value =>
            {
                ObserveItemValue(new KeyValuePair <string, ObservableProperty <T> >(value.Key, value.Value));
            }).DisposeWith(disposables);

            // Observe apply button clicks.
            item.ApplyButtonClickedAsObservable.Subscribe(_ => { OpenRegisterEntryIdMenu(item.EntryId); })
            .DisposeWith(disposables);

            _perItemDisposables.Add(item.id, disposables);
        }