private void LoadRenderingGallery([NotNull] LayoutDesigner layoutDesigner, [NotNull] InRibbonGallery gallery) { Debug.ArgumentNotNull(layoutDesigner, nameof(layoutDesigner)); Debug.ArgumentNotNull(gallery, nameof(gallery)); Site.RequestCompleted completed = delegate(string response) { var root = response.ToXElement(); if (root == null) { return; } var items = root.Elements().Select(element => ItemHeader.Parse(layoutDesigner.DatabaseUri, element)).Where(e => MatchesSpeakCoreVersion(e, layoutDesigner)).ToList(); var renderings = new List <RenderingButton>(); foreach (var item in items.OrderBy(i => i.ParentName).ThenBy(i => i.Name)) { var button = new RenderingButton { Label = item.Name, Icon = item.Icon, Tag = item, ToolTip = ToolTipBuilder.BuildToolTip(item) }; button.PreviewMouseUp += (sender, args) => { AddRenderingFromRibbon(layoutDesigner, sender, button); }; renderings.Add(button); } renderings = renderings.OrderBy(i => i.Label).ToList(); gallery.ItemsSource = renderings; }; layoutDesigner.DatabaseUri.Site.Execute("Layouts.GetRenderings", completed, layoutDesigner.DatabaseUri.DatabaseName.ToString()); }
private void AddRenderingFromRibbon([NotNull] LayoutDesigner layoutDesigner, [NotNull] object sender, [NotNull] RenderingButton button) { Debug.ArgumentNotNull(layoutDesigner, nameof(layoutDesigner)); Debug.ArgumentNotNull(sender, nameof(sender)); var itemHeader = button.Tag as ItemHeader; if (itemHeader == null) { return; } var renderingContainer = layoutDesigner.GetView().GetRenderingContainer(); var rendering = new RenderingItem(renderingContainer, itemHeader); layoutDesigner.LayoutDesignerView.AddRendering(rendering); }