1
0
mirror of https://github.com/fadden/6502bench.git synced 2024-05-31 22:41:37 +00:00

Add "quick set" menu to delimiter settings tab

Added a pop-up menu with three options: default (curly quotes),
straight, and Merlin.  Removed the "reset to defaults" buttons.

Also, slightly rearranged the Display Format tab so that the quick
set pop-up is on the left, near the items it affects.  Moved the
"use comma-separated format for bulk data" checkbox over as well,
since it's part of the set.
This commit is contained in:
Andy McFadden 2021-10-14 15:10:32 -07:00
parent cb114be0f6
commit 2008558870
6 changed files with 482 additions and 310 deletions

View File

@ -164,15 +164,16 @@ namespace Asm65 {
#region Text Delimiters
/// <summary>
/// Container for character and string delimiter pieces. Instances are immutable.
/// Container for delimiter pieces for characters or strings. Instances are immutable.
/// </summary>
/// <remarks>
/// For single-character operands, a simple concatenation of the four fields, with the
/// character in the middle, is performed.
/// For single-character operands, the generated format string will be a simple
/// concatenation of the four fields, with the character in the middle.
///
/// For strings, the prefix is included at the start of the first line, but not included
/// on subsequent lines. This is primarily intended for the on-screen display, not
/// assembly source generation. The suffix is not used at all.
/// on subsequent lines in a multi-line operand. This is primarily intended for the
/// on-screen display, not assembly source generation (which doesn't generally make use
/// of a string prefix). The suffix is not used at all.
/// </remarks>
public class DelimiterDef {
public string Prefix { get; private set; }
@ -203,10 +204,37 @@ namespace Asm65 {
public override string ToString() {
return Prefix + OpenDelim + '#' + CloseDelim + Suffix;
}
public static bool operator ==(DelimiterDef a, DelimiterDef b) {
if (ReferenceEquals(a, b)) {
return true; // same object, or both null
}
if (ReferenceEquals(a, null) || ReferenceEquals(b, null)) {
return false; // one is null
}
// All fields must be equal. Ignore FormatStr, which is generated from the
// other fields.
return a.Prefix == b.Prefix && a.OpenDelim == b.OpenDelim &&
a.CloseDelim == b.CloseDelim && a.Suffix == b.Suffix;
}
public static bool operator !=(DelimiterDef a, DelimiterDef b) {
return !(a == b);
}
public override bool Equals(object obj) {
return obj is DelimiterDef && this == (DelimiterDef)obj;
}
public override int GetHashCode() {
return Prefix.GetHashCode() ^ OpenDelim.GetHashCode() ^ CloseDelim.GetHashCode() ^
Suffix.GetHashCode();
}
}
public static readonly DelimiterDef SINGLE_QUOTE_DELIM = new DelimiterDef('\'');
public static readonly DelimiterDef DOUBLE_QUOTE_DELIM = new DelimiterDef('"');
/// <summary>
/// Set of DelimiterDef objects, indexed by character encoding. The objects may be
/// for character or string encoding.
/// </summary>
public class DelimiterSet {
private Dictionary<CharEncoding.Encoding, DelimiterDef> mDelimiters =
new Dictionary<CharEncoding.Encoding, DelimiterDef>();
@ -321,6 +349,35 @@ namespace Asm65 {
offset = commaIndex + 1 + len;
return resultStr;
}
public static bool operator ==(DelimiterSet a, DelimiterSet b) {
if (ReferenceEquals(a, b)) {
return true; // same object, or both null
}
if (ReferenceEquals(a, null) || ReferenceEquals(b, null)) {
return false; // one is null
}
// Compare set contents.
if (a.mDelimiters.Count != b.mDelimiters.Count) {
return false;
}
foreach (KeyValuePair<CharEncoding.Encoding, DelimiterDef> kvp in a.mDelimiters) {
if (kvp.Value != b.Get(kvp.Key)) {
return false;
}
}
return true;
}
public static bool operator !=(DelimiterSet a, DelimiterSet b) {
return !(a == b);
}
public override bool Equals(object obj) {
return obj is DelimiterSet && this == (DelimiterSet)obj;
}
public override int GetHashCode() {
return mDelimiters.GetHashCode();
}
}
#endregion Text Delimiters

View File

@ -40,10 +40,6 @@ limitations under the License.
<system:String x:Key="str_DataBankUserFmt">{0}</system:String>
<system:String x:Key="str_DataBankK">K</system:String>
<system:String x:Key="str_DefaultHeaderCommentFmt">6502bench SourceGen v{0}</system:String>
<system:String x:Key="str_DefaultAsciiDelimPat">&#x2018;#&#x2019;</system:String>
<system:String x:Key="str_DefaultHighAsciiDelimPat">&#x201c;#&#x201d;</system:String>
<system:String x:Key="str_DefaultC64PetsciiDelimPat">pet:&#x201c;#&#x201d;</system:String>
<system:String x:Key="str_DefaultC64ScreenCodeDelimPat">scr:&#x201c;#&#x201d;</system:String>
<system:String x:Key="str_EquAddress">addr</system:String>
<system:String x:Key="str_EquConstant">const</system:String>
<system:String x:Key="str_EquStackRelative">stkrl</system:String>

View File

@ -55,14 +55,6 @@ namespace SourceGen.Res {
(string)Application.Current.FindResource("str_DataBankK");
public static string DEFAULT_HEADER_COMMENT_FMT =
(string)Application.Current.FindResource("str_DefaultHeaderCommentFmt");
public static string DEFAULT_ASCII_DELIM_PAT =
(string)Application.Current.FindResource("str_DefaultAsciiDelimPat");
public static string DEFAULT_HIGH_ASCII_DELIM_PAT =
(string)Application.Current.FindResource("str_DefaultHighAsciiDelimPat");
public static string DEFAULT_C64_PETSCII_DELIM_PAT =
(string)Application.Current.FindResource("str_DefaultC64PetsciiDelimPat");
public static string DEFAULT_C64_SCREEN_CODE_DELIM_PAT =
(string)Application.Current.FindResource("str_DefaultC64ScreenCodeDelimPat");
public static string CLIPFORMAT_ALL_COLUMNS =
(string)Application.Current.FindResource("str_ClipformatAllColumns");
public static string CLIPFORMAT_ASSEMBLER_SOURCE =

View File

@ -28,11 +28,13 @@ limitations under the License.
Loaded="Window_Loaded">
<Window.Resources>
<system:String x:Key="str_PresetCustom">Custom</system:String>
<system:String x:Key="str_PresetDefault">Default</system:String>
<system:String x:Key="str_ExpStyleCommon">Common</system:String>
<system:String x:Key="str_ExpStyleCc65">cc65</system:String>
<system:String x:Key="str_ExpStyleMerlin">Merlin</system:String>
<system:String x:Key="str_PresetCustom">Custom</system:String>
<system:String x:Key="str_PresetDefault">Default</system:String>
<system:String x:Key="str_DelimStraight">Straight</system:String>
<system:String x:Key="str_DelimMerlin">Merlin</system:String>
</Window.Resources>
<DockPanel Margin="8">
@ -143,282 +145,286 @@ limitations under the License.
<TabItem Name="textDelimitersTab" Header="Text Delimiters">
<Grid>
<Grid.Resources>
<!-- TextBox spacer -->
<Thickness x:Key="TBS" Left="2" Top="4" Right="0" Bottom="0"/>
<Thickness x:Key="ENC" Left="0" Top="3" Right="4" Bottom="3"/>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DockPanel LastChildFill="False">
<TextBlock DockPanel.Dock="Top" Margin="4,0,0,0"
Text="Select pseudo-op names for display. This does not affect source code generation. Blank entries get a default value."/>
<TextBlock Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Margin="4,0,0,0"
Text="Configure character and string delimiters. This does not affect source code generation."/>
<Grid DockPanel.Dock="Top" Height="240" Margin="4,0">
<GroupBox Grid.Column="0" Grid.Row="1" Header="Character Operand Delimiters" Margin="4"
Padding="2,4">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.Resources>
<!-- TextBox spacer -->
<Thickness x:Key="TBS" Left="2" Top="4" Right="0" Bottom="0"/>
<Thickness x:Key="ENC" Left="0" Top="3" Right="4" Bottom="3"/>
</Grid.Resources>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<!-- decorative lines to set off row/column headers -->
<Rectangle Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5"
VerticalAlignment="Bottom" Height="1"
Stroke="LightGray" Fill="Transparent"/>
<Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="5"
HorizontalAlignment="Right" Width="1"
Stroke="LightGray" Fill="Transparent"/>
<GroupBox Grid.Column="0" Grid.Row="1" Header="Character Operand Delimiters" Margin="4"
Padding="2,4">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Encoding" Margin="0,2,0,3"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Prefix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Grid.Row="0" Text="Open" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="3" Grid.Row="0" Text="Close" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="4" Grid.Row="0" Text="Suffix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<!-- decorative lines to set off row/column headers -->
<Rectangle Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5"
VerticalAlignment="Bottom" Height="1"
Stroke="LightGray" Fill="Transparent"/>
<Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="5"
HorizontalAlignment="Right" Width="1"
Stroke="LightGray" Fill="Transparent"/>
<TextBlock Text="Plain ASCII" Grid.Column="0" Grid.Row="1"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdAsciiPrefix" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiOpen" Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiClose" Grid.Column="3" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiSuffix" Grid.Column="4" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Encoding" Margin="0,2,0,3"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Prefix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Grid.Row="0" Text="Open" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="3" Grid.Row="0" Text="Close" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="4" Grid.Row="0" Text="Suffix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Text="High ASCII" Grid.Column="0" Grid.Row="2"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdHighAsciiPrefix" Grid.Column="1" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiOpen" Grid.Column="2" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiClose" Grid.Column="3" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiSuffix" Grid.Column="4" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="Plain ASCII" Grid.Column="0" Grid.Row="1"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdAsciiPrefix" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiOpen" Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiClose" Grid.Column="3" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdAsciiSuffix" Grid.Column="4" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 PETSCII" Grid.Column="0" Grid.Row="3"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdPetsciiPrefix" Grid.Column="1" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiOpen" Grid.Column="2" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiClose" Grid.Column="3" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiSuffix" Grid.Column="4" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="High ASCII" Grid.Column="0" Grid.Row="2"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdHighAsciiPrefix" Grid.Column="1" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiOpen" Grid.Column="2" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiClose" Grid.Column="3" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdHighAsciiSuffix" Grid.Column="4" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 Screen Code" Grid.Column="0" Grid.Row="4"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdScreenCodePrefix" Grid.Column="1" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeOpen" Grid.Column="2" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeClose" Grid.Column="3" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeSuffix" Grid.Column="4" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 PETSCII" Grid.Column="0" Grid.Row="3"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdPetsciiPrefix" Grid.Column="1" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiOpen" Grid.Column="2" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiClose" Grid.Column="3" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdPetsciiSuffix" Grid.Column="4" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
</Grid>
<TextBlock Text="C64 Screen Code" Grid.Column="0" Grid.Row="4"
Margin="{StaticResource ENC}"/>
<TextBox Name="chrdScreenCodePrefix" Grid.Column="1" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeOpen" Grid.Column="2" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeClose" Grid.Column="3" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="chrdScreenCodeSuffix" Grid.Column="4" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<Button Content="Reset To Defaults" Width="120" Margin="0,8,0,0"
HorizontalAlignment="Left" Click="ChrDelDefaultsButton_Click"/>
</StackPanel>
</Grid>
</StackPanel>
</GroupBox>
<GroupBox Grid.Column="1" Grid.Row="1" Header="Text String Delimiters" Margin="4"
Padding="2,4">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- decorative lines to set off row/column headers -->
<Rectangle Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5"
VerticalAlignment="Bottom" Height="1"
Stroke="LightGray" Fill="Transparent"/>
<Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="5"
HorizontalAlignment="Right" Width="1"
Stroke="LightGray" Fill="Transparent"/>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Encoding" Margin="0,2,0,3"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Prefix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Grid.Row="0" Text="Open" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="3" Grid.Row="0" Text="Close" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Visibility="Hidden" Grid.Column="4" Grid.Row="0" Text="Suffix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Text="Plain ASCII" Grid.Column="0" Grid.Row="1"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdAsciiPrefix" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdAsciiOpen" Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdAsciiClose" Grid.Column="3" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdAsciiSuffix" Grid.Column="4" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="High ASCII" Grid.Column="0" Grid.Row="2"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdHighAsciiPrefix" Grid.Column="1" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdHighAsciiOpen" Grid.Column="2" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdHighAsciiClose" Grid.Column="3" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdHighAsciiSuffix" Grid.Column="4" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 PETSCII" Grid.Column="0" Grid.Row="3"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdPetsciiPrefix" Grid.Column="1" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdPetsciiOpen" Grid.Column="2" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdPetsciiClose" Grid.Column="3" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdPetsciiSuffix" Grid.Column="4" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 Screen Code" Grid.Column="0" Grid.Row="4"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdScreenCodePrefix" Grid.Column="1" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdScreenCodeOpen" Grid.Column="2" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdScreenCodeClose" Grid.Column="3" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdScreenCodeSuffix" Grid.Column="4" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
</Grid>
</StackPanel>
</GroupBox>
<GroupBox Grid.Column="0" Grid.Row="2" Header="Sample Characters" Margin="4"
Padding="2,4">
<StackPanel>
<TextBox IsReadOnly="True"
Text="&#x2018;&#x2019;&#x2022;&#x201c;&#x201d;&#x2191;&#xab;&#xbb;&#x2770;&#x2771;"
FontFamily="{StaticResource GeneralMonoFont}" FontSize="16"/>
</StackPanel>
</GroupBox>
</Grid>
<GroupBox DockPanel.Dock="Bottom" Header="Quick Set"
HorizontalAlignment="Left" Padding="2,4">
<ComboBox Name="textDelimQuickComboBox" Width="170" IsReadOnly="True"
ItemsSource="{Binding DelimPresets}" DisplayMemberPath="Name"
SelectionChanged="TextDelimQuickComboBox_SelectionChanged"/>
</GroupBox>
<GroupBox Grid.Column="1" Grid.Row="1" Header="Text String Delimiters" Margin="4"
Padding="2,4">
<StackPanel>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!-- decorative lines to set off row/column headers -->
<Rectangle Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="5"
VerticalAlignment="Bottom" Height="1"
Stroke="LightGray" Fill="Transparent"/>
<Rectangle Grid.Column="0" Grid.Row="0" Grid.RowSpan="5"
HorizontalAlignment="Right" Width="1"
Stroke="LightGray" Fill="Transparent"/>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Encoding" Margin="0,2,0,3"/>
<TextBlock Grid.Column="1" Grid.Row="0" Text="Prefix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="2" Grid.Row="0" Text="Open" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Grid.Column="3" Grid.Row="0" Text="Close" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Visibility="Hidden" Grid.Column="4" Grid.Row="0" Text="Suffix" Margin="3,2,3,0"
HorizontalAlignment="Center"/>
<TextBlock Text="Plain ASCII" Grid.Column="0" Grid.Row="1"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdAsciiPrefix" Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdAsciiOpen" Grid.Column="2" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdAsciiClose" Grid.Column="3" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdAsciiSuffix" Grid.Column="4" Grid.Row="1"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="High ASCII" Grid.Column="0" Grid.Row="2"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdHighAsciiPrefix" Grid.Column="1" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdHighAsciiOpen" Grid.Column="2" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdHighAsciiClose" Grid.Column="3" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdHighAsciiSuffix" Grid.Column="4" Grid.Row="2"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 PETSCII" Grid.Column="0" Grid.Row="3"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdPetsciiPrefix" Grid.Column="1" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdPetsciiOpen" Grid.Column="2" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdPetsciiClose" Grid.Column="3" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdPetsciiSuffix" Grid.Column="4" Grid.Row="3"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBlock Text="C64 Screen Code" Grid.Column="0" Grid.Row="4"
Margin="{StaticResource ENC}"/>
<TextBox Name="strdScreenCodePrefix" Grid.Column="1" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="8"
Text="01234567"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdScreenCodeOpen" Grid.Column="2" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Name="strdScreenCodeClose" Grid.Column="3" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="20" MaxLength="1"
FontFamily="{StaticResource GeneralMonoFont}"/>
<TextBox Visibility="Hidden" Name="strdScreenCodeSuffix" Grid.Column="4" Grid.Row="4"
HorizontalAlignment="Center" VerticalAlignment="Top"
Margin="{StaticResource TBS}" Width="65" MaxLength="12"
FontFamily="{StaticResource GeneralMonoFont}"/>
</Grid>
<Button Content="Reset To Defaults" Width="120" Margin="0,8,0,0"
HorizontalAlignment="Left" Click="StrDelDefaultsButton_Click"/>
</StackPanel>
</GroupBox>
<GroupBox Grid.Column="0" Grid.Row="2" Header="Sample Characters" Margin="4"
Padding="2,4">
<StackPanel>
<TextBox IsReadOnly="True"
Text="&#x2018;&#x2019;&#x2022;&#x201c;&#x201d;&#x2191;&#xab;&#xbb;&#x2770;&#x2771;"
FontFamily="{StaticResource GeneralMonoFont}" FontSize="16"/>
</StackPanel>
</GroupBox>
</Grid>
</DockPanel>
</TabItem>
@ -510,10 +516,13 @@ limitations under the License.
FontFamily="{StaticResource GeneralMonoFont}"/>
</StackPanel>
<CheckBox DockPanel.Dock="Top" Margin="4,8,0,0"
Content="Use comma-separated format for bulk data"
IsChecked="{Binding CommaSeparatedBulkData}"/>
<GroupBox DockPanel.Dock="Bottom" Header="Quick Set"
HorizontalAlignment="Left" Padding="2,4">
<ComboBox Name="displayFmtQuickComboBox" DockPanel.Dock="Right"
Width="170" IsReadOnly="True"
<ComboBox Name="displayFmtQuickComboBox" Width="170" IsReadOnly="True"
ItemsSource="{Binding DisplayPresets}" DisplayMemberPath="Name"
SelectionChanged="DisplayFmtQuickComboBox_SelectionChanged"/>
</GroupBox>
@ -526,9 +535,6 @@ limitations under the License.
<CheckBox DockPanel.Dock="Top" Margin="4,12,0,0"
Content="Add spaces in Bytes column"
IsChecked="{Binding SpacesBetweenBytes}"/>
<CheckBox DockPanel.Dock="Top" Margin="4,8,0,0"
Content="Use comma-separated format for bulk data"
IsChecked="{Binding CommaSeparatedBulkData}"/>
<StackPanel DockPanel.Dock="Top" Orientation="Horizontal" Margin="4,8,0,0">
<TextBlock Text="Wrap operands at" Margin="0,3,0,0"/>
@ -728,9 +734,8 @@ limitations under the License.
</Grid>
<GroupBox DockPanel.Dock="Bottom" Header="Quick Set"
HorizontalAlignment="Right" Padding="2,4">
<ComboBox Name="pseudoOpQuickComboBox" DockPanel.Dock="Right"
Width="170" IsReadOnly="True"
HorizontalAlignment="Left" Padding="2,4">
<ComboBox Name="pseudoOpQuickComboBox" Width="170" IsReadOnly="True"
ItemsSource="{Binding PseudoOpPresets}" DisplayMemberPath="Name"
SelectionChanged="PseudoOpQuickComboBox_SelectionChanged"/>
</GroupBox>

View File

@ -139,8 +139,9 @@ namespace SourceGen.WpfGui {
}
// Can't set the selected item yet.
Construct_PseudoOp();
Construct_TextDelimiters();
Construct_DisplayFormat();
Construct_PseudoOp();
}
private void Window_Loaded(object sender, RoutedEventArgs e) {
@ -436,6 +437,77 @@ namespace SourceGen.WpfGui {
#region Text Delimiters
public class TextDelimPreset {
public const int ID_CUSTOM = -2;
public const int ID_DEFAULT = -1;
public int Ident { get; private set; } // ID_ value, or zero
public string Name { get; private set; }
public Formatter.DelimiterSet CharDelims { get; private set; }
public Formatter.DelimiterSet StringDelims { get; private set; }
public TextDelimPreset(int id, string name, Formatter.DelimiterSet charDelims,
Formatter.DelimiterSet stringDelims) {
Ident = id;
Name = name;
CharDelims = charDelims;
StringDelims = stringDelims;
}
}
public TextDelimPreset[] DelimPresets { get; private set; }
private void ConstructTextDelimPresets() {
// "custom" must be in slot 0
DelimPresets = new TextDelimPreset[4];
DelimPresets[0] = new TextDelimPreset(TextDelimPreset.ID_CUSTOM,
(string)FindResource("str_PresetCustom"), null, null);
DelimPresets[1] = new TextDelimPreset(TextDelimPreset.ID_DEFAULT,
(string)FindResource("str_PresetDefault"),
Formatter.DelimiterSet.GetDefaultCharDelimiters(),
Formatter.DelimiterSet.GetDefaultStringDelimiters());
Formatter.DelimiterSet chrDel = new Formatter.DelimiterSet();
chrDel.Set(CharEncoding.Encoding.Ascii,
new Formatter.DelimiterDef(string.Empty, '\'', '\'', string.Empty));
chrDel.Set(CharEncoding.Encoding.HighAscii,
new Formatter.DelimiterDef(string.Empty, '\'', '\'', " | $80"));
chrDel.Set(CharEncoding.Encoding.C64Petscii,
new Formatter.DelimiterDef("pet:", '\'', '\'', string.Empty));
chrDel.Set(CharEncoding.Encoding.C64ScreenCode,
new Formatter.DelimiterDef("scr:", '\'', '\'', string.Empty));
Formatter.DelimiterSet strDel = new Formatter.DelimiterSet();
strDel.Set(CharEncoding.Encoding.Ascii,
new Formatter.DelimiterDef(string.Empty, '\"', '\"', string.Empty));
strDel.Set(CharEncoding.Encoding.HighAscii,
new Formatter.DelimiterDef("\u2191", '\"', '\"', string.Empty));
strDel.Set(CharEncoding.Encoding.C64Petscii,
new Formatter.DelimiterDef("pet:", '\"', '\"', string.Empty));
strDel.Set(CharEncoding.Encoding.C64ScreenCode,
new Formatter.DelimiterDef("scr:", '\"', '\"', string.Empty));
DelimPresets[2] = new TextDelimPreset(0,
(string)FindResource("str_DelimStraight"), chrDel, strDel);
chrDel = new Formatter.DelimiterSet();
chrDel.Set(CharEncoding.Encoding.Ascii,
new Formatter.DelimiterDef(string.Empty, '\u2018', '\u2019', string.Empty));
chrDel.Set(CharEncoding.Encoding.HighAscii,
new Formatter.DelimiterDef(string.Empty, '\u201c', '\u201d', string.Empty));
chrDel.Set(CharEncoding.Encoding.C64Petscii,
new Formatter.DelimiterDef("pet:", '\u2018', '\u2019', string.Empty));
chrDel.Set(CharEncoding.Encoding.C64ScreenCode,
new Formatter.DelimiterDef("scr:", '\u2018', '\u2019', string.Empty));
strDel = new Formatter.DelimiterSet();
strDel.Set(CharEncoding.Encoding.Ascii,
new Formatter.DelimiterDef(string.Empty, '\u2018', '\u2019', string.Empty));
strDel.Set(CharEncoding.Encoding.HighAscii,
new Formatter.DelimiterDef(string.Empty, '\u201c', '\u201d', string.Empty));
strDel.Set(CharEncoding.Encoding.C64Petscii,
new Formatter.DelimiterDef("pet:", '\u201c', '\u201d', string.Empty));
strDel.Set(CharEncoding.Encoding.C64ScreenCode,
new Formatter.DelimiterDef("scr:", '\u201c', '\u201d', string.Empty));
DelimPresets[3] = new TextDelimPreset(0,
(string)FindResource("str_DelimMerlin"), chrDel, strDel);
}
private class DelimiterTextBoxes {
public CharEncoding.Encoding mEncoding;
public TextBox mPrefix;
@ -455,8 +527,8 @@ namespace SourceGen.WpfGui {
private DelimiterTextBoxes[] mCharDtb;
private DelimiterTextBoxes[] mStringDtb;
private void Loaded_TextDelimiters() {
// Map text boxes to delimiter definitions.
private void MapTextDelimControls() {
// Map TextBox controls to delimiter definitions.
mCharDtb = new DelimiterTextBoxes[] {
new DelimiterTextBoxes(CharEncoding.Encoding.Ascii,
chrdAsciiPrefix, chrdAsciiOpen, chrdAsciiClose, chrdAsciiSuffix),
@ -511,6 +583,18 @@ namespace SourceGen.WpfGui {
}
}
// prevent recursion
private bool mSettingTextDelimCombo;
private void Construct_TextDelimiters() {
ConstructTextDelimPresets();
}
private void Loaded_TextDelimiters() {
MapTextDelimControls();
UpdateTextDelimQuickCombo();
}
// Import delimiters from a DelimiterSet to the text fields.
private void ImportDelimiters(Formatter.DelimiterSet delSet, DelimiterTextBoxes[] boxarr) {
foreach (DelimiterTextBoxes boxes in boxarr) {
@ -540,17 +624,47 @@ namespace SourceGen.WpfGui {
// Invoked when text is changed in any delimiter text box.
private void DelimiterTextChanged(object sender, EventArgs e) {
UpdateTextDelimQuickCombo();
IsDirty = true;
}
private void ChrDelDefaultsButton_Click(object sender, RoutedEventArgs e) {
Formatter.DelimiterSet chrDel = Formatter.DelimiterSet.GetDefaultCharDelimiters();
ImportDelimiters(chrDel, mCharDtb);
private void TextDelimQuickComboBox_SelectionChanged(object sender,
SelectionChangedEventArgs e) {
if (mSettingTextDelimCombo) {
// We shouldn't actually recurse indefinitely because we'll eventually
// decide that nothing is changing, but I feel better having this here.
return;
}
TextDelimPreset preset = (TextDelimPreset)textDelimQuickComboBox.SelectedItem;
if (preset.Ident == TextDelimPreset.ID_CUSTOM) {
// Not an actual preset. Leave the combo box set to "Custom".
return;
}
ImportDelimiters(preset.CharDelims, mCharDtb);
ImportDelimiters(preset.StringDelims, mStringDtb);
// dirty flag will be set by change watchers if one or more fields have changed
}
private void StrDelDefaultsButton_Click(object sender, RoutedEventArgs e) {
Formatter.DelimiterSet strDel = Formatter.DelimiterSet.GetDefaultStringDelimiters();
ImportDelimiters(strDel, mStringDtb);
private void UpdateTextDelimQuickCombo() {
mSettingTextDelimCombo = true;
// If the current settings match one of the quick sets, update the combo box to
// match. Otherwise, set it to "custom".
textDelimQuickComboBox.SelectedIndex = 0;
Formatter.DelimiterSet inputChars = ExportDelimiters(mCharDtb);
Formatter.DelimiterSet inputStrings = ExportDelimiters(mStringDtb);
for (int i = 1; i < DelimPresets.Length; i++) {
TextDelimPreset preset = DelimPresets[i];
if (preset.CharDelims == inputChars && preset.StringDelims == inputStrings) {
textDelimQuickComboBox.SelectedIndex = i;
break;
}
}
mSettingTextDelimCombo = false;
}
#endregion Text Delimiters
@ -895,6 +1009,7 @@ namespace SourceGen.WpfGui {
set {
mSettings.SetBool(AppSettings.FMT_COMMA_SEP_BULK_DATA, value);
OnPropertyChanged();
UpdateDisplayFormatQuickCombo();
IsDirty = true;
}
}

View File

@ -96,16 +96,22 @@ don't look very good at smaller font sizes.)</p>
<p>If one of the delimiter characters appears in the string itself,
the character will be output as hex to avoid confusion. For this
reason, it's generally wise to use delimiter characters that aren't
part of the ASCII character set. The "Sample Characters" box holds some
characters that you can copy and paste (with Ctrl+C / Ctrl+V) into the
delimiter fields.</p>
part of the ASCII character set, such as "curly" quotes. The
"Sample Characters" box holds some characters that you can copy and
paste (with Ctrl+C / Ctrl+V) into the delimiter fields.</p>
<p>For character operands, the prefix and suffix are added to the start
and end of the operand. For string operands, the prefix is added to the
start of the first line, and suffixes aren't allowed.
start of the first line, and suffixes aren't allowed.</p>
<p>These options change the way the code list looks on screen. They
do not affect generated code, which must use the delimiter characters
specified by the chosen assembler.</p>
<p>The "quick set" pop-up can be used to set the fields for a few
common configurations. The default set uses curly quotes with a few
prefixes and suffixes, while "straight" uses the ASCII apostrophe and
double-quote characters. "Merlin" uses a format similar to what the
Merlin assembler expects.</p>
<h3><a name="appset-displayformat">Display Format</a></h3>
@ -131,6 +137,11 @@ The setting affects label editing as well as display.</p>
<p>If you would like your local variables to be shown with a prefix
character, you can set it in the "local variable prefix" box.</p>
<p>The "comma-separated format for bulk data" determines whether large
blocks of hex look like <code>ABC123</code> or
<code>$AB,$C1,$23</code>. The former reduces the number of lines
required, the latter is more readable.</p>
<p>The "quick set" pop-up configures the fields on the left side of the
tab to match the conventions of the specified assembler. Select your
preferred assembler in the combo box to set the fields. The setting
@ -143,13 +154,9 @@ hex data in the code list "bytes" column from dense (<code>20edfd</code>)
to spaced (<code>20 ed fd</code>). This also affects the format of
clipboard copies and exports.</p>
<p>The "comma-separated format for bulk data" determines whether large
blocks of hex look like <code>ABC123</code> or
<code>$AB,$C1,$23</code>. The former reduces the number of lines
required, the latter is more readable.</p>
<p>Long operands, such as strings and bulk data, are wrapped to a new
line after a certain number of characters. Use the pop-up to configure
the value. Larger values can make the code easier to read, but smaller
the value. Larger values can make the code display more compact, but smaller
values allow you to shrink the width of the operand column in the
on-screen listing, moving the comment field closer in.</p>