private void CleanupEditorsLayoutCache(SILayout removedLayout) { foreach (var editorPanel in dockPanel1.Contents.OfType <ILayoutEditorPanel>()) { editorPanel.Editor.LayoutClosed(removedLayout); } }
public LayoutDocument(SILayout layout) { Layout = layout; FilePath = string.Empty; Layout.LayoutChanged += Layout_LayoutChanged; CurrentActionIndex = -1; }
private static string GetFingerboardMarginDescription(SILayout layout, string changeName, PropertyChange propChange) { string specifedSide = string.Empty; switch (changeName) { case nameof(FingerboardMargin.LastFret): return($"{Localizations.Words_Margins} ({Localizations.FingerboardMarginProperty_LastFret}): {propChange.NewValue}"); case nameof(FingerboardMargin.Bass): specifedSide = Localizations.FingerboardSide_Bass; break; case nameof(FingerboardMargin.Treble): specifedSide = Localizations.FingerboardSide_Treble; break; case nameof(FingerboardMargin.MarginAtNut): specifedSide = Localizations.FingerboardEnd_Nut; break; case nameof(FingerboardMargin.MarginAtBridge): specifedSide = Localizations.FingerboardEnd_Bridge; break; case nameof(FingerboardMargin.Edges): specifedSide = Localizations.Margins_Edges; break; } if (!string.IsNullOrEmpty(specifedSide)) { return($"{Localizations.Words_Margins} ({specifedSide}): {propChange.NewValue}"); } return($"{Localizations.Words_Margins}: {propChange.NewValue}"); }
private void SetEditorsActiveLayout(SILayout layout) { foreach (var editorPanel in dockPanel1.Contents.OfType <ILayoutEditorPanel>()) { editorPanel.CurrentLayout = layout; } }
public static void ExportLayout(string filename, SILayout layout, LayoutExportConfig options) { var exporter = new DxfLayoutExporter(layout, options); exporter.GenerateDocument(); exporter.Document.Save(filename); }
private void BindLayout(SILayout layout) { if (_CurrentLayout != layout) { if (_CurrentLayout != null) { CacheCurrentLayoutValues(); } if (_CurrentLayout != null) { _CurrentLayout.NumberOfStringsChanged -= CurrentLayout_NumberOfStringsChanged; _CurrentLayout.LayoutUpdated -= CurrentLayout_LayoutUpdated; } _CurrentLayout = layout; OnCurrentLayoutChanged(); ReloadPropertyValues(); if (_CurrentLayout != null) { _CurrentLayout.NumberOfStringsChanged += CurrentLayout_NumberOfStringsChanged; _CurrentLayout.LayoutUpdated += CurrentLayout_LayoutUpdated; } if (layout == null) { ClearLayoutCache(null); } else if (CachedLayoutData.ContainsKey(layout)) { RestoreCachedLayoutValues(); } } }
internal void LayoutClosed(SILayout layout) { if (CachedLayoutData.ContainsKey(layout)) { CachedLayoutData.Remove(layout); } }
public static string GetChangeDescription(SILayout layout, ILayoutChange change) { string changeDesc; if (change is BatchChange batchChange) { changeDesc = GetBatchDescription(layout, batchChange); if (!string.IsNullOrEmpty(changeDesc)) { return(changeDesc); } } else if (change is PropertyChange propertyChange) { changeDesc = GetPropertyDescription(layout, propertyChange); if (!string.IsNullOrEmpty(changeDesc)) { return(changeDesc); } } else if (change is CollectionChange collection) { changeDesc = GetCollectionDescription(layout, collection); if (!string.IsNullOrEmpty(changeDesc)) { return(changeDesc); } } return("Unnamed Change"); }
private void OpenDefaultLayout() { var defaultLayout = SILayout.GenerateDefaultLayout(); var layoutDoc = new LayoutDocument(defaultLayout); OpenLayoutAndActivate(layoutDoc); }
private SvgLayoutExporter(SILayout layout, LayoutExportConfig options) : base(layout, options) { Layers = new Dictionary<string, SvgGroup>(); var svgDPI = (PreciseDouble)96; PixelToCm = (PreciseDouble)2.54d / svgDPI; PointToCm = PixelToCm / 0.75; }
private static string GetCollectionDescription(SILayout layout, CollectionChange colChange) { if (colChange.ElementType == typeof(SIString)) { return($"{Localizations.LayoutProperty_NumberOfStrings}: {colChange.CollectionCount}"); } return(null); }
public virtual void ClearLayoutCache(SILayout layout) { if (layout == null) { CachedLayoutData.Clear(); } else if (CachedLayoutData.ContainsKey(layout)) { CachedLayoutData.Remove(layout); } }
public static string GenerateLayoutName(SILayout layout) { var keywords = new List <string>(); keywords.Add($"{layout.NumberOfStrings} Strings"); if (layout.ScaleLengthMode == ScaleLengthType.Dual) { keywords.Add("Multiscale"); } keywords.Add("Fingerboard"); keywords.Add("Layout"); return(string.Join(" ", keywords)); }
private void FetchFretPositions() { int fretNum = CurrentLayout != null?CurrentLayout.Strings.Max(s => s.NumberOfFrets) : 24; if (fretNum + 2 != FretPositions.Count) { cboParallelFret.DataSource = null; FretPositions.Clear(); FretPositions.Add(new FretPosition() { FretNumber = 0, Name = Localizations.FingerboardEnd_Nut, PositionRatio = 0 }); for (int i = 1; i <= fretNum; i++) { var ratio = 1d - SILayout.GetEqualTemperedFretPosition(i); FretPositions.Add(new FretPosition() { FretNumber = i, Name = $"{i}{i.GetSuffix()} {Localizations.Words_Fret}", PositionRatio = ratio }); } FretPositions.Add(new FretPosition() { FretNumber = FretPositions.Count, Name = Localizations.FingerboardEnd_Bridge, PositionRatio = 1 }); //FretPositions.Add(new FretPosition() //{ // FretNumber = -1, // Name = "Custom", // PositionRatio = -1 //}); cboParallelFret.DisplayMember = "Name"; cboParallelFret.ValueMember = "FretNumber"; cboParallelFret.DataSource = FretPositions; CalculateMaxCboItemWidth(); } }
public static LayoutDocument Open(string filename, bool asTemplate = false) { var layout = SILayout.Load(filename); var file = new LayoutDocument(layout); if (!asTemplate) { file.FilePath = filename; file.DocumentName = Path.GetFileNameWithoutExtension(filename); } else if (!string.IsNullOrEmpty(layout.LayoutName)) { file.DocumentName = layout.LayoutName; } return(file); }
private static string GetBatchDescription(SILayout layout, BatchChange batchChange) { switch (batchChange.Name) { case "NumberOfFrets": { var propChange = batchChange.ChangedProperties .FirstOrDefault(x => x.Property == nameof(SIString.NumberOfFrets)); if (propChange != null && propChange.NewValue is int fretCount) { return($"{Localizations.LayoutProperty_NumberOfFrets}: {fretCount}"); } return(Localizations.LayoutProperty_NumberOfFrets); } case "AddStrings": case "RemoveStrings": { var lastChange = batchChange.LayoutChanges .OfType <CollectionChange>() .Where(x => x.ElementType == typeof(SIString)) .LastOrDefault(); if (lastChange != null) { return($"{Localizations.LayoutProperty_NumberOfStrings}: {lastChange.CollectionCount}"); } break; } } if (batchChange.Component != null) { var marginChange = batchChange.ChangedProperties.FirstOrDefault(x => x.Component is FingerboardMargin); if (marginChange != null) { return(GetFingerboardMarginDescription(layout, batchChange.Name, marginChange)); } } return(null); }
protected LayoutExporterBase(SILayout layout, LayoutExportConfig options) { Layout = layout; Options = options; }
private static string GetPropertyDescription(SILayout layout, PropertyChange propChange) { if (propChange.Component != null) { switch (propChange.Component) { case ScaleLengthManager _: { switch (propChange.Property) { case nameof(SingleScaleManager.Length): return($"{Localizations.Words_ScaleLength}: {propChange.NewValue}"); case nameof(DualScaleManager.Bass): return($"{Localizations.Words_ScaleLength} ({Localizations.FingerboardSide_Bass}): {propChange.NewValue}"); case nameof(DualScaleManager.Treble): return($"{Localizations.Words_ScaleLength} ({Localizations.FingerboardSide_Treble}): {propChange.NewValue}"); case nameof(DualScaleManager.PerpendicularFretRatio): if (propChange.NewValue is double fretRatio) { int fretNumber = FretHelper.GetFretNumberFromRatio(fretRatio); string fretName = Localizations.Words_CustomRatio; switch (fretNumber) { case 0: fretName = Localizations.FingerboardEnd_Nut; break; case 1: fretName = Localizations.FingerboardEnd_Bridge; break; default: fretName = $"{fretNumber} {Localizations.Words_Fret}"; break; } return($"{Localizations.Words_PerpendicularFret}: {fretName}"); } else { return($"{Localizations.Words_PerpendicularFret}"); } default: return($"{Localizations.Words_ScaleLength} {propChange.Property}: {propChange.NewValue}"); } } case StringSpacingManager _: { switch (propChange.Property) { case nameof(StringSpacingManager.BridgeAlignment): return($"{Localizations.StringSpacingProperty_BridgeAlignment}"); case nameof(StringSpacingManager.NutAlignment): return($"{Localizations.StringSpacingProperty_NutAlignment}"); case nameof(StringSpacingSimple.BridgeSpacingMode): case nameof(StringSpacingSimple.NutSpacingMode): { string propDesc = Localizations.StringSpacingProperty_SpacingMode; string modeDesc = GetLocText($"StringSpacingMethod_{propChange.NewValue}"); int charIdx = modeDesc.IndexOf('('); if (charIdx > 0) { modeDesc = modeDesc.Substring(0, charIdx).Trim(); } string sideDesc = propChange.Property == nameof(StringSpacingSimple.BridgeSpacingMode) ? Localizations.FingerboardEnd_Bridge : Localizations.FingerboardEnd_Nut; return($"{propDesc} ({sideDesc}): {modeDesc}"); } case nameof(StringSpacingSimple.StringSpacingAtBridge): case nameof(StringSpacingSimple.StringSpacingAtNut): { string propDesc = Localizations.StringSpacingProperty_Spacing; string sideDesc = propChange.Property == nameof(StringSpacingSimple.StringSpacingAtBridge) ? Localizations.FingerboardEnd_Bridge : Localizations.FingerboardEnd_Nut; return($"{propDesc} ({sideDesc}): {propChange.NewValue}"); } default: return($"String spacing {propChange.Property}: {propChange.NewValue}"); } } case FingerboardMargin _: return(GetFingerboardMarginDescription(layout, propChange.Name, propChange)); case SIString str: { switch (propChange.Property) { case nameof(SIString.Gauge): case nameof(SIString.PhysicalProperties) + "." + nameof(StringProperties.StringDiameter): return($"{Localizations.StringProperty_Gauge} ({Localizations.Words_String} {str.Index + 1}): {propChange.NewValue}"); case nameof(SIString.StartingFret): return($"{Localizations.StringProperty_StartingFret} ({Localizations.Words_String} {str.Index + 1}): {propChange.NewValue}"); case nameof(SIString.ScaleLength): return($"{Localizations.Words_ScaleLength} ({Localizations.Words_String} {str.Index + 1}): {propChange.NewValue}"); case nameof(SIString.NumberOfFrets): return($"{Localizations.LayoutProperty_NumberOfFrets} ({Localizations.Words_String} {str.Index + 1}): {propChange.NewValue}"); } if (propChange.Property.StartsWith(nameof(SIString.PhysicalProperties))) { return(Localizations.StringProperties); } break; } } } else { switch (propChange.Property) { case nameof(SILayout.ScaleLengthMode): { var modeStr = GetLocText($"ScaleLengthType_{propChange.NewValue}"); return($"{Localizations.LayoutProperty_ScaleLengthMode}: {modeStr}"); } case nameof(SILayout.StringSpacingMode): { var modeStr = GetLocText($"StringSpacingType_{propChange.NewValue}"); return($"{Localizations.LayoutProperty_StringSpacingMode}: {modeStr}"); } case nameof(SILayout.LeftHanded): { return(Localizations.Layout_LeftHanded); } //case nameof(SILayout.NumberOfStrings): // return $"Number of strings: {pc.NewValue}"; } } return(null); }
private DxfLayoutExporter(SILayout layout, LayoutExportConfig options) : base(layout, options) { Layers = new Dictionary <string, Layer>(); ColorDictionary = new Dictionary <string, AciColor>(); }