private void ParseXaml() { Dispatcher.Invoke( () => { XamlLayout.ParseLayout(NewLayout.Xaml, out var parsingEx); switch (parsingEx) { case AggregateException aggEx: var messages = aggEx.InnerExceptions.Select(e => e.Message); Errors = string.Join("\r\n", messages); break; case Exception ex: Errors = ex.Message; break; case null: Errors = string.Empty; break; } } ); }
public bool SetXamlLayout(XamlLayout xamlLayout) { Reset(); var rootObject = xamlLayout.ParseLayout(out var ex); if (ex != null || !(rootObject is UIElement rootUIElement)) { return(IsValid = false); } Content = rootUIElement; CalculateLayout(); FindContentContainers(); ComputeContentPanelMap(); ValidateAcceptedContents(); SetupContentColors(); ComputeAcceptedContent(); GenerateDemoContent(); return(IsValid); }
public bool SetXamlLayout(XamlLayout xamlLayout) { Reset(); var rootObject = xamlLayout.ParseLayout(out var ex); if (ex != null || !(rootObject is UIElement rootUIElement)) { LogTo.Warning(ex, "Xaml layout {Name} is invalid", xamlLayout.Name); return(IsValid = false); } SetCurrentValue(ContentProperty, rootUIElement); CalculateLayout(); FindContentContainers(); ComputeContentPanelMap(); ValidateAcceptedContents(); SetupContentColors(); ComputeAcceptedContent(); GenerateDemoContent(); return(IsValid); }
/// <param name="xamlLayout"></param> /// <param name="displayMode"></param> /// <inheritdoc /> public XamlControlGroup(XamlLayout xamlLayout, bool displayMode = false) { _displayMode = displayMode; InitializeComponent(); SetXamlLayout(xamlLayout); }
private void Edit(XamlLayout layout) { var editor = new LayoutEditorWindow(layout); if (editor.ShowDialog() ?? false) { LayoutManager.SaveConfig(); } }
public LayoutEditorWindow(XamlLayout xamlLayout) { OriginalLayout = xamlLayout; NewLayout = new XamlLayout(xamlLayout, autoValidationSuspended: true); NewLayout.XamlChanged += OnXamlChanged; IsDefault = OriginalLayout.IsDefault; _parseXamlTask = new DelayedTask(ParseXaml); InitializeComponent(); }
public static string ToElementString(this ElementBuilder elemBuilder) { DateTime now = DateTime.Now; string collectionPath = Core.SM.Collection.Path; int parentId = elemBuilder.Parent?.Id ?? 1; string lastRepDate1 = DateTime.Today.ToString("dd.MM.yy", CultureInfo.InvariantCulture); string lastRepDate2 = DateTime.Today.ToString("dd.MM.yyyy", CultureInfo.InvariantCulture); double lastRepTime = now.Hour + (now.Minute * 60 + now.Second) / 3600.0; string type; switch (elemBuilder.Type) { case ElementType.Topic: type = "Topic"; break; case ElementType.Item: type = "Item"; break; case ElementType.ConceptGroup: case ElementType.Task: case ElementType.Template: default: throw new NotImplementedException(); } string title = (elemBuilder.GuessTitle() ?? string.Empty).Replace("\n", "").Replace("\r", ""); XamlLayout layout = LayoutManager.Instance.GetLayout(elemBuilder.Layout) ?? LayoutManager.DefaultOrGenericLayout; var ret = string.Format(CultureInfo.InvariantCulture, ElementFmt, collectionPath, parentId, elemBuilder.Priority, title, type, lastRepDate1, elemBuilder.Reference?.ToString() ?? string.Empty, layout.Build(elemBuilder.Contents), lastRepDate2, lastRepTime, elemBuilder.Status); ret = EncodeForSupermemo(ret); return(ret); }
public void DeleteLayout(XamlLayout layout) { if (_layoutMap.ContainsKey(layout.Name) == false) { return; } _layoutMap.Remove(layout.Name); _layouts.Remove(layout); layout.NameChanged -= OnLayoutNameChanged; SetDefault(Default.Name); }
private void Clone(XamlLayout layout) { string layoutName = layout.Name; int i = 1; for (; LayoutManager.LayoutExists(layoutName + i); i++) { } var newLayout = new XamlLayout(layout, layoutName + i); LayoutManager.AddLayout(newLayout); LayoutManager.SaveConfig(); }
private void OnLayoutNameChanged(XamlLayout xamlLayout, string before, string after) { if (_layoutMap.ContainsKey(before) == false) { throw new ArgumentException($"Layout name changed event called, but layout can't be found: {before}"); } if (_layoutMap.ContainsKey(after)) { throw new ArgumentException($"A layout already exists with that name: {after}"); } _layoutMap.Remove(before); _layoutMap[after] = xamlLayout; }
public void AddLayout(XamlLayout layout, bool replace = false) { if (_layoutMap.ContainsKey(layout.Name)) { if (replace == false) { throw new ArgumentException("A layout already exists with that name"); } _layouts.Remove(_layoutMap[layout.Name]); } _layoutMap[layout.Name] = layout; _layouts.Add(layout); layout.NameChanged += OnLayoutNameChanged; }
public void SetDefault(string layoutName) { var prevDefault = Default; try { if (layoutName == null || _layoutMap.ContainsKey(layoutName) == false) { Default = GenericLayout; return; } Default = _layoutMap[layoutName]; } finally { if (prevDefault != null) { prevDefault.IsDefault = false; } Default.IsDefault = true; } }
private bool CanDelete(XamlLayout layout) { return(layout.IsBuiltIn == false); }
private void Delete(XamlLayout layout) { LayoutManager.DeleteLayout(layout); LayoutManager.SaveConfig(); }
private bool CanEdit(XamlLayout layout) { return(layout.IsBuiltIn == false); }
private void OnXamlChanged(XamlLayout xamlLayout, string before, string after) { _parseXamlTask.Trigger(500); }