more Basic preferences

This commit is contained in:
Denis Molony 2020-12-21 15:33:03 +10:00
parent 77276ab156
commit 3deda1c06a
3 changed files with 30 additions and 17 deletions

View File

@ -69,7 +69,7 @@ public class ApplesoftBasicProgram extends BasicProgram
// ---------------------------------------------------------------------------------//
{
int indentSize = 2;
boolean blankLine = false;
boolean insertBlankLine = false;
StringBuilder fullText = new StringBuilder ();
Stack<String> loopVariables = new Stack<> ();
@ -149,6 +149,9 @@ public class ApplesoftBasicProgram extends BasicProgram
int pos = subline.is (TOKEN_REM) ? 0 : alignPos;
String lineText = subline.getAlignedText (pos);
if (subline.is (TOKEN_REM) && basicPreferences.deleteExtraRemSpace)
lineText = lineText.replaceFirst ("REM ", "REM ");
// Check for a wrappable REM statement
// (see SEA BATTLE on DISK283.DSK)
if (subline.is (TOKEN_REM) && lineText.length () > basicPreferences.wrapRemAt)
@ -224,13 +227,13 @@ public class ApplesoftBasicProgram extends BasicProgram
++indent;
}
else if (basicPreferences.blankAfterReturn && subline.is (TOKEN_RETURN))
blankLine = true;
insertBlankLine = true;
}
if (blankLine)
if (insertBlankLine)
{
fullText.append ("\n");
blankLine = false;
insertBlankLine = false;
}
// Reset alignment value if we just left an IF - the indentation will be different now

View File

@ -12,6 +12,7 @@ public class BasicPreferences
public boolean showCaret = false;
public boolean showThen = true;
public boolean blankAfterReturn = false;
public boolean deleteExtraRemSpace = false;
public int wrapPrintAt = 0;
public int wrapRemAt = 60;
public int wrapDataAt = 60;
@ -23,18 +24,19 @@ public class BasicPreferences
{
StringBuilder text = new StringBuilder ();
text.append (String.format ("Split REM ............. %s%n", splitRem));
text.append (String.format ("Align assign .......... %s%n", alignAssign));
text.append (String.format ("Show targets .......... %s%n", showTargets));
text.append (String.format ("Split REM ................ %s%n", splitRem));
text.append (String.format ("Align assign ............. %s%n", alignAssign));
text.append (String.format ("Show targets ............. %s%n", showTargets));
text.append (
String.format ("Only target lines ..... %s%n", onlyShowTargetLineNumbers));
text.append (String.format ("Show header ........... %s%n", showHeader));
text.append (String.format ("Show caret ............ %s%n", showCaret));
text.append (String.format ("Show THEN ............. %s%n", showThen));
text.append (String.format ("Blank after RETURN .... %s%n", blankAfterReturn));
text.append (String.format ("Wrap PRINT at ......... %d%n", wrapPrintAt));
text.append (String.format ("Wrap REM at .......... %d%n", wrapRemAt));
text.append (String.format ("Wrap DATA at ......... %d", wrapDataAt));
String.format ("Only target lines ........ %s%n", onlyShowTargetLineNumbers));
text.append (String.format ("Show header .............. %s%n", showHeader));
text.append (String.format ("Show caret ............... %s%n", showCaret));
text.append (String.format ("Show THEN ................ %s%n", showThen));
text.append (String.format ("Blank after RETURN ....... %s%n", blankAfterReturn));
text.append (String.format ("Delete extra REM space ... %s%n", deleteExtraRemSpace));
text.append (String.format ("Wrap PRINT at ............ %d%n", wrapPrintAt));
text.append (String.format ("Wrap REM at .............. %d%n", wrapRemAt));
text.append (String.format ("Wrap DATA at ............. %d", wrapDataAt));
return text.toString ();
}

View File

@ -50,6 +50,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
private static final String PREFS_SHOW_CARET = "showCaret";
private static final String PREFS_SHOW_THEN = "showThen";
private static final String PREFS_BLANK_AFTER_RETURN = "blankAfterReturn";
private static final String PREFS_DELETE_EXTRA_REM_SPACE = "deleteExtraRemSpace";
private static final String PREFS_SHOW_ASSEMBLER_TARGETS = "showAssemblerTargets";
private static final String PREFS_SHOW_ASSEMBLER_STRINGS = "showAssemblerStrings";
@ -127,7 +128,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
// Applesoft menu items
final JMenuItem splitRemarkItem = new JCheckBoxMenuItem ("Split remarks");
final JMenuItem alignAssignItem = new JCheckBoxMenuItem ("Align assign");
final JMenuItem alignAssignItem = new JCheckBoxMenuItem ("Align consecutive assign");
final JMenuItem showBasicTargetsItem = new JCheckBoxMenuItem ("Show targets");
final JMenuItem onlyShowTargetLinesItem =
new JCheckBoxMenuItem ("Only show target lines");
@ -135,6 +136,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
final JMenuItem showCaretItem = new JCheckBoxMenuItem ("Show caret");
final JMenuItem showThenItem = new JCheckBoxMenuItem ("Show THEN after IF");
final JMenuItem blankAfterReturn = new JCheckBoxMenuItem ("Blank line after RETURN");
final JMenuItem deleteExtraRemSpace = new JCheckBoxMenuItem ("Delete extra REM space");
// Assembler menu items
final JMenuItem showAssemblerTargetsItem = new JCheckBoxMenuItem ("Show targets");
@ -157,9 +159,9 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
menuBar.add (fileMenu);
menuBar.add (formatMenu);
menuBar.add (imageMenu);
menuBar.add (prodosMenu);
menuBar.add (applesoftMenu);
menuBar.add (assemblerMenu);
menuBar.add (prodosMenu);
menuBar.add (textMenu);
menuBar.add (helpMenu);
@ -230,6 +232,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
applesoftMenu.add (showCaretItem);
applesoftMenu.add (showThenItem);
applesoftMenu.add (blankAfterReturn);
applesoftMenu.add (deleteExtraRemSpace);
assemblerMenu.add (showAssemblerHeaderItem);
assemblerMenu.add (showAssemblerTargetsItem);
@ -288,6 +291,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
showCaretItem.addActionListener (basicPreferencesAction);
showThenItem.addActionListener (basicPreferencesAction);
blankAfterReturn.addActionListener (basicPreferencesAction);
deleteExtraRemSpace.addActionListener (basicPreferencesAction);
showAssemblerTargetsItem.addActionListener (assemblerPreferencesAction);
showAssemblerStringsItem.addActionListener (assemblerPreferencesAction);
@ -332,6 +336,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
basicPreferences.showCaret = showCaretItem.isSelected ();
basicPreferences.showThen = showThenItem.isSelected ();
basicPreferences.blankAfterReturn = blankAfterReturn.isSelected ();
basicPreferences.deleteExtraRemSpace = deleteExtraRemSpace.isSelected ();
basicPreferences.showHeader = showHeaderItem.isSelected ();
basicPreferences.showTargets = showBasicTargetsItem.isSelected ();
basicPreferences.onlyShowTargetLineNumbers = onlyShowTargetLinesItem.isSelected ();
@ -490,6 +495,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
prefs.putBoolean (PREFS_SHOW_TARGETS, showBasicTargetsItem.isSelected ());
prefs.putBoolean (PREFS_ONLY_SHOW_TARGETS, onlyShowTargetLinesItem.isSelected ());
prefs.putBoolean (PREFS_BLANK_AFTER_RETURN, blankAfterReturn.isSelected ());
prefs.putBoolean (PREFS_DELETE_EXTRA_REM_SPACE, deleteExtraRemSpace.isSelected ());
prefs.putBoolean (PREFS_SHOW_ASSEMBLER_TARGETS,
showAssemblerTargetsItem.isSelected ());
@ -540,6 +546,8 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
onlyShowTargetLinesItem
.setSelected (prefs.getBoolean (PREFS_ONLY_SHOW_TARGETS, false));
blankAfterReturn.setSelected (prefs.getBoolean (PREFS_BLANK_AFTER_RETURN, false));
deleteExtraRemSpace
.setSelected (prefs.getBoolean (PREFS_DELETE_EXTRA_REM_SPACE, false));
showAssemblerTargetsItem
.setSelected (prefs.getBoolean (PREFS_SHOW_ASSEMBLER_TARGETS, true));