mirror of
https://github.com/fadden/6502bench.git
synced 2025-02-20 06:29:04 +00:00
Improve data operand editor
Added accelerator keys to Mixed and Null strings. (Issue #67) Added units to string counts. (Issue #68) Added proper handling for plural/singular for bytes and strings. Changed N/A indicator from "xx" to "--".
This commit is contained in:
parent
0ab76ea1f7
commit
b0278c9c51
@ -33,9 +33,15 @@ limitations under the License.
|
|||||||
<system:String x:Key="str_SingleGroup">Select data format ({0} bytes selected):</system:String>
|
<system:String x:Key="str_SingleGroup">Select data format ({0} bytes selected):</system:String>
|
||||||
<system:String x:Key="str_MultiGroup">Select data format ({0} bytes selected in {1} groups):</system:String>
|
<system:String x:Key="str_MultiGroup">Select data format ({0} bytes selected in {1} groups):</system:String>
|
||||||
|
|
||||||
<system:String x:Key="str_StringMixed">Mixed character ({0} bytes) and non-character ({1} bytes)</system:String>
|
<system:String x:Key="str_NotApplicable">--</system:String>
|
||||||
<system:String x:Key="str_StringMixedReverse">Reversed character ({0} bytes) and non-character ({1} bytes)</system:String>
|
<system:String x:Key="str_StringSingleFmt">{0} string</system:String>
|
||||||
<system:String x:Key="str_StringNullTerm">Null-terminated strings ({0})</system:String>
|
<system:String x:Key="str_StringPluralFmt">{0} strings</system:String>
|
||||||
|
<system:String x:Key="str_ByteSingleFmt">{0} byte</system:String>
|
||||||
|
<system:String x:Key="str_BytePluralFmt">{0} bytes</system:String>
|
||||||
|
|
||||||
|
<system:String x:Key="str_StringMixed">_Mixed character ({0}) and non-character ({1})</system:String>
|
||||||
|
<system:String x:Key="str_StringMixedReverse">Reversed character ({0}) and non-character ({1})</system:String>
|
||||||
|
<system:String x:Key="str_StringNullTerm">_Null-terminated strings ({0})</system:String>
|
||||||
<system:String x:Key="str_StringLen8">Strings prefixed with 8-bit length ({0})</system:String>
|
<system:String x:Key="str_StringLen8">Strings prefixed with 8-bit length ({0})</system:String>
|
||||||
<system:String x:Key="str_StringLen16">Strings prefixed with 16-bit length ({0})</system:String>
|
<system:String x:Key="str_StringLen16">Strings prefixed with 16-bit length ({0})</system:String>
|
||||||
<system:String x:Key="str_StringDci">Dextral character inverted ({0})</system:String>
|
<system:String x:Key="str_StringDci">Dextral character inverted ({0})</system:String>
|
||||||
@ -129,7 +135,7 @@ limitations under the License.
|
|||||||
<RadioButton Name="radioDenseHex" GroupName="Main" Content="Densely-_packed bytes" Margin="0,4,0,0"
|
<RadioButton Name="radioDenseHex" GroupName="Main" Content="Densely-_packed bytes" Margin="0,4,0,0"
|
||||||
Checked="MainGroup_CheckedChanged"/>
|
Checked="MainGroup_CheckedChanged"/>
|
||||||
<StackPanel Orientation="Horizontal" Margin="20,4,0,0">
|
<StackPanel Orientation="Horizontal" Margin="20,4,0,0">
|
||||||
<RadioButton Name="radioDenseHexLimited" GroupName="Main" Content="...with a limit of"
|
<RadioButton Name="radioDenseHexLimited" GroupName="Main" Content="...with a _limit of"
|
||||||
Checked="MainGroup_CheckedChanged"/>
|
Checked="MainGroup_CheckedChanged"/>
|
||||||
<TextBox Width="40" Margin="7,-3,0,0" MaxLength="2"
|
<TextBox Width="40" Margin="7,-3,0,0" MaxLength="2"
|
||||||
Text="{Binding MaxDenseBytesPerLine, UpdateSourceTrigger=PropertyChanged}"/>
|
Text="{Binding MaxDenseBytesPerLine, UpdateSourceTrigger=PropertyChanged}"/>
|
||||||
|
@ -670,57 +670,37 @@ namespace SourceGen.WpfGui {
|
|||||||
|
|
||||||
// Update the dialog with string and character counts, summed across all regions.
|
// Update the dialog with string and character counts, summed across all regions.
|
||||||
|
|
||||||
|
string UNSUP_STR = (string)FindResource("str_NotApplicable");
|
||||||
string fmt;
|
string fmt;
|
||||||
const string UNSUP_STR = "xx";
|
|
||||||
fmt = (string)FindResource("str_StringMixed");
|
fmt = (string)FindResource("str_StringMixed");
|
||||||
string revfmt = (string)FindResource("str_StringMixedReverse");
|
string revfmt = (string)FindResource("str_StringMixedReverse");
|
||||||
if (mixedCharOkCount > 0) {
|
if (mixedCharOkCount > 0) {
|
||||||
Debug.Assert(radioStringMixed.IsEnabled);
|
Debug.Assert(radioStringMixed.IsEnabled);
|
||||||
radioStringMixed.Content = string.Format(fmt,
|
radioStringMixed.Content = string.Format(fmt,
|
||||||
mixedCharOkCount, mixedCharNotCount);
|
FormatByteCount(mixedCharOkCount), FormatByteCount(mixedCharNotCount));
|
||||||
radioStringMixedReverse.Content = string.Format(revfmt,
|
radioStringMixedReverse.Content = string.Format(revfmt,
|
||||||
mixedCharOkCount, mixedCharNotCount);
|
FormatByteCount(mixedCharOkCount), FormatByteCount(mixedCharNotCount));
|
||||||
} else {
|
} else {
|
||||||
Debug.Assert(!radioStringMixed.IsEnabled);
|
Debug.Assert(!radioStringMixed.IsEnabled);
|
||||||
radioStringMixed.Content = string.Format(fmt, UNSUP_STR, UNSUP_STR);
|
radioStringMixed.Content = string.Format(fmt, UNSUP_STR, UNSUP_STR);
|
||||||
radioStringMixedReverse.Content = string.Format(revfmt, UNSUP_STR, UNSUP_STR);
|
radioStringMixedReverse.Content = string.Format(revfmt, UNSUP_STR, UNSUP_STR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Debug.Assert((nullTermStringCount > 0) ^ (radioStringNullTerm.IsEnabled == false));
|
||||||
fmt = (string)FindResource("str_StringNullTerm");
|
fmt = (string)FindResource("str_StringNullTerm");
|
||||||
if (nullTermStringCount > 0) {
|
radioStringNullTerm.Content = FormatStringOption(fmt, nullTermStringCount);
|
||||||
Debug.Assert(radioStringNullTerm.IsEnabled);
|
|
||||||
radioStringNullTerm.Content = string.Format(fmt, nullTermStringCount);
|
|
||||||
} else {
|
|
||||||
Debug.Assert(!radioStringNullTerm.IsEnabled);
|
|
||||||
radioStringNullTerm.Content = string.Format(fmt, UNSUP_STR);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Debug.Assert((len8StringCount > 0) ^ (radioStringLen8.IsEnabled == false));
|
||||||
fmt = (string)FindResource("str_StringLen8");
|
fmt = (string)FindResource("str_StringLen8");
|
||||||
if (len8StringCount > 0) {
|
radioStringLen8.Content = FormatStringOption(fmt, len8StringCount);
|
||||||
Debug.Assert(radioStringLen8.IsEnabled);
|
|
||||||
radioStringLen8.Content = string.Format(fmt, len8StringCount);
|
|
||||||
} else {
|
|
||||||
Debug.Assert(!radioStringLen8.IsEnabled);
|
|
||||||
radioStringLen8.Content = string.Format(fmt, UNSUP_STR);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Debug.Assert((len16StringCount > 0) ^ (radioStringLen16.IsEnabled == false));
|
||||||
fmt = (string)FindResource("str_StringLen16");
|
fmt = (string)FindResource("str_StringLen16");
|
||||||
if (len16StringCount > 0) {
|
radioStringLen16.Content = FormatStringOption(fmt, len16StringCount);
|
||||||
Debug.Assert(radioStringLen16.IsEnabled);
|
|
||||||
radioStringLen16.Content = string.Format(fmt, len16StringCount);
|
|
||||||
} else {
|
|
||||||
Debug.Assert(!radioStringLen16.IsEnabled);
|
|
||||||
radioStringLen16.Content = string.Format(fmt, UNSUP_STR);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
Debug.Assert((dciStringCount > 0) ^ (radioStringDci.IsEnabled == false));
|
||||||
fmt = (string)FindResource("str_StringDci");
|
fmt = (string)FindResource("str_StringDci");
|
||||||
if (dciStringCount > 0) {
|
radioStringDci.Content = FormatStringOption(fmt, dciStringCount);
|
||||||
Debug.Assert(radioStringDci.IsEnabled);
|
|
||||||
radioStringDci.Content = string.Format(fmt, dciStringCount);
|
|
||||||
} else {
|
|
||||||
Debug.Assert(!radioStringDci.IsEnabled);
|
|
||||||
radioStringDci.Content = string.Format(fmt, UNSUP_STR);
|
|
||||||
}
|
|
||||||
|
|
||||||
// If this invalidated the selected item, reset to Default.
|
// If this invalidated the selected item, reset to Default.
|
||||||
if ((radioStringMixed.IsChecked == true && !radioStringMixed.IsEnabled) ||
|
if ((radioStringMixed.IsChecked == true && !radioStringMixed.IsEnabled) ||
|
||||||
@ -735,6 +715,32 @@ namespace SourceGen.WpfGui {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private string FormatByteCount(int count) {
|
||||||
|
string fmt;
|
||||||
|
if (count <= 0) {
|
||||||
|
return (string)FindResource("str_NotApplicable");
|
||||||
|
} else if (count == 1) {
|
||||||
|
fmt = (string)FindResource("str_ByteSingleFmt");
|
||||||
|
} else {
|
||||||
|
fmt = (string)FindResource("str_BytePluralFmt");
|
||||||
|
}
|
||||||
|
return string.Format(fmt, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
private string FormatStringOption(string fmt, int count) {
|
||||||
|
if (count <= 0) {
|
||||||
|
return string.Format(fmt, (string)FindResource("str_NotApplicable"));
|
||||||
|
} else if (count == 1) {
|
||||||
|
string fmtSingleString = (string)FindResource("str_StringSingleFmt");
|
||||||
|
return string.Format(fmt,
|
||||||
|
string.Format(fmtSingleString, count));
|
||||||
|
} else {
|
||||||
|
string fmtPluralString = (string)FindResource("str_StringPluralFmt");
|
||||||
|
return string.Format(fmt,
|
||||||
|
string.Format(fmtPluralString, count));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Determines whether the data in the buffer can be represented as character values.
|
/// Determines whether the data in the buffer can be represented as character values.
|
||||||
/// Using ".DD1 'A'" for 0x41 is obvious, but we also allow ".DD2 'A'" for
|
/// Using ".DD1 'A'" for 0x41 is obvious, but we also allow ".DD2 'A'" for
|
||||||
|
Loading…
x
Reference in New Issue
Block a user