Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions Src/xWorks/DictionaryConfigurationController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -520,18 +520,18 @@ public static void SetConfigureHomographParameters(DictionaryConfigurationModel
var senseNode = mainEntryNode.Children.Where(prop => prop.Label == senseType).FirstOrDefault();
if (senseNode == null) return;
var senseOptions = (DictionaryNodeSenseOptions)senseNode.DictionaryNodeOptions;
cacheHc.ksSenseNumberStyle = senseOptions.NumberingStyle;
cacheHc.ksSenseNumberStyle = senseOptions.NonEmptyNumberingStyle;
//SubSense Node
var subSenseNode = senseNode.Children.Where(prop => prop.Label == "Subsenses").FirstOrDefault();
if (subSenseNode == null) return;
var subSenseOptions = (DictionaryNodeSenseOptions)subSenseNode.DictionaryNodeOptions;
cacheHc.ksSubSenseNumberStyle = subSenseOptions.NumberingStyle;
cacheHc.ksSubSenseNumberStyle = subSenseOptions.NonEmptyNumberingStyle;
cacheHc.ksParentSenseNumberStyle = subSenseOptions.ParentSenseNumberingStyle;
//SubSubSense Node
var subSubSenseNode = subSenseNode.ReferencedOrDirectChildren.Where(prop => prop.Label == "Subsenses").FirstOrDefault();
if (subSubSenseNode == null) return;
var subSubSenseOptions = (DictionaryNodeSenseOptions)subSubSenseNode.DictionaryNodeOptions;
cacheHc.ksSubSubSenseNumberStyle = subSubSenseOptions.NumberingStyle;
cacheHc.ksSubSubSenseNumberStyle = subSubSenseOptions.NonEmptyNumberingStyle;
cacheHc.ksParentSubSenseNumberStyle = subSubSenseOptions.ParentSenseNumberingStyle;
}

Expand Down
8 changes: 6 additions & 2 deletions Src/xWorks/DictionaryDetailsView/SenseOptionsView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,12 @@ public string NumberingStyle
{
get
{
// Return null if string is empty, because returning an empty string for reversal numbers
// also forces sense numbers not to be displayed. Null doesn't cause the same problem.
// Handles NumberingStyle for the dictionary/reversal configuration dialog preview display.
// Both empty string and null mean there is no numbering style to use.
// Numbering style will be null if no numbering style has ever been selected.
// Numbering style will be an empty string if a numbering style was selected at some point and then turned back off.
// Returning an empty string for reversal numbering style forces sense numbers to be turned off too, but null doesn't cause this problem.
// Return null if numbering style is empty.
var formatString = ((NumberingStyleComboItem)dropDownNumberingStyle.SelectedItem).FormatString;
return string.IsNullOrEmpty(formatString) ? null : formatString;
}
Expand Down
28 changes: 27 additions & 1 deletion Src/xWorks/DictionaryNodeOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,33 @@ public class DictionaryNodeSenseOptions : DictionaryNodeOptions

// Example values: ""->none; %O->1.2.3; %d->1, 2, 3
[XmlAttribute(AttributeName = "numberingStyle")]
public string NumberingStyle { get; set; }
private string m_NumberingStyle;

/// <summary>
/// Numbering style for senses. If null or empty, no style is used.
///
/// NumberingStyle is null if no numbering style has ever been selected.
/// NumberingStyle is an empty string if a numbering style is selected but then removed.
/// </summary>
public string NumberingStyle
{
get => m_NumberingStyle;
set => m_NumberingStyle = value;
}

/// <summary>
/// Returns the numbering style, or null if no numbering style should be used.
///
/// <see cref="NumberingStyle"/> may contain either null or an empty string to indicate
/// that numbering is disabled. An empty string used for reversals' NumberingStyle also
/// forces sense numbers to be disabled. This property normalizes both values to null
/// to retain the expected behavior for senses.
/// </summary>
public string NonEmptyNumberingStyle
{
get => string.IsNullOrEmpty(m_NumberingStyle) ? null : m_NumberingStyle;
set => m_NumberingStyle = value;
}

// Example values: ""->none; %j->Joined; %.->Separated by dot
[XmlAttribute(AttributeName = "parentSenseNumberingStyle")]
Expand Down
Loading