예제 #1
0
            protected DeletableRow(T source, ObservableCollection <T> sourceCollection)
            {
                Source           = source;
                SourceCollection = sourceCollection;
                Padding          = new Thickness(AttachmentMetrics.Spacing);
                Header           = new Widget {
                    Layout = new HBoxLayout {
                        Spacing = AttachmentMetrics.Spacing
                    },
                };
                var headerWrapper = new Widget {
                    Layout = new HBoxLayout {
                        Spacing = AttachmentMetrics.Spacing
                    },
                };

                deleteButton = new ThemedDeleteButton {
                    Anchors    = Anchors.Right,
                    LayoutCell = new LayoutCell(Alignment.LeftTop),
                };
                deleteButton.Clicked += () =>
                                        history.DoTransaction(() => Core.Operations.RemoveFromList.Perform(sourceCollection, sourceCollection.IndexOf(Source)));
                headerWrapper.Nodes.Add(Header);
                headerWrapper.Nodes.Add(new Widget());
                headerWrapper.Nodes.Add(deleteButton);
                MinMaxHeight = AttachmentMetrics.RowHeight;
                Nodes.Add(headerWrapper);
                Presenter = Presenters.StripePresenter;
            }
예제 #2
0
            public RulerRowView(Ruler ruler, Action onDelete, Action onEdit)
            {
                ThemedDeleteButton deleteButton;
                ThemedSimpleText   label;

                Layout          = new HBoxLayout();
                Nodes.Add(label = new ThemedSimpleText {
                    Padding = new Thickness {
                        Left = 10
                    },
                });
                this.AddChangeWatcher(() => ruler.Name, (name) => label.Text = name);
                Nodes.Add(new Widget());
                Nodes.Add(editButton = new ToolbarButton()
                {
                    Anchors       = Anchors.Right,
                    LayoutCell    = new LayoutCell(Alignment.LeftTop),
                    Texture       = IconPool.GetTexture("Tools.Edit"),
                    Highlightable = false,
                });
                Nodes.Add(deleteButton = new ThemedDeleteButton {
                    Anchors    = Anchors.Right,
                    LayoutCell = new LayoutCell(Alignment.LeftTop)
                });
                deleteButton.Clicked = onDelete;
                editButton.Clicked   = onEdit;
                MinMaxHeight         = RowHeight;
            }
        private Widget CreateDefaultKeyValueEditor(string key, TValue value)
        {
            var keyValue = new KeyValuePair {
                Key = key, Value = value,
            };

            pairs.Add(keyValue);
            Widget keyEditorContainer;
            var    deleteButton = new ThemedDeleteButton();
            var    container    = new Widget {
                Layout = new VBoxLayout(),
                Nodes  =
                {
                    (keyEditorContainer = CreateKeyEditor(EditorParams, keyValue, s => SetKey(keyValue, s), deleteButton)),
                    (CreateValueEditor(EditorParams, keyValue, populateEditors, (o, name, v) => SetValue(keyValue, (TValue)v))),
                }
            };

            keyEditorContainer.Tasks.AddLoop(() => {
                if (dictionary.TryGetValue(keyValue.Key, out value))
                {
                    keyValue.Value = value;
                }
                else
                {
                    Rebuild();
                }
            });
            deleteButton.Clicked += () => {
                pairs.Remove(keyValue);
                using (Document.Current.History.BeginTransaction()) {
                    RemoveFromDictionary <TDictionary, string, TValue> .Perform(dictionary, keyValue.Key);

                    Document.Current.History.CommitTransaction();
                }
                container.UnlinkAndDispose();
            };
            container.CompoundPresenter.Add(new WidgetFlatFillPresenter(
                                                pairs.Count % 2 == 0 ?
                                                ColorTheme.Current.Inspector.StripeBackground1 :
                                                ColorTheme.Current.Inspector.StripeBackground2
                                                )
            {
                IgnorePadding = true
            });
            return(container);
        }
예제 #4
0
 public RulerRowView(RulerData overlay, IList <RulerData> overlays) : base()
 {
     Layout          = new HBoxLayout();
     Nodes.Add(Label = new ThemedSimpleText {
         Padding = new Thickness {
             Left = 10
         },
     });
     this.AddChangeWatcher(() => overlay.Name, (name) => Label.Text = name);
     Nodes.Add(new Widget());
     Nodes.Add(deleteButton = new ThemedDeleteButton {
         Anchors    = Anchors.Right,
         LayoutCell = new LayoutCell(Alignment.LeftTop)
     });
     CompoundPresenter.Add(StripePresenter);
     deleteButton.Clicked = () => overlays.Remove(overlay);
     MinMaxHeight         = 20;
 }