console: Bug #14422 fixed: Scilab GUI console improved. 70/21270/9
C.L. TAN [Thu, 30 Jan 2020 15:33:44 +0000 (07:33 -0800)]
    http://bugzilla.scilab.org/14422
    after clc(); mprintf("abcd"); prints " abcd" with a leading blank.

    clc(0) now just clearing its own line, and redisplay the prompt --> on the same line.

Change-Id: I125fde72a8be04063df5560bef9a4fbbed23835d

scilab/CHANGES.md
scilab/modules/console/src/java/org/scilab/modules/console/SciConsole.java
scilab/modules/console/tests/nonreg_tests/bug_14422.tst [new file with mode: 0644]

index 63afa35..6a2f034 100644 (file)
@@ -214,6 +214,7 @@ Bug Fixes
 * [#12534](http://bugzilla.scilab.org/show_bug.cgi?id=12534): Variable browser did not display the size of the variables.
 * [#13766](http://bugzilla.scilab.org/show_bug.cgi?id=13766): Minimal values for `.figure_size` were not documented.
 * [#14015](http://bugzilla.scilab.org/show_bug.cgi?id=14015): Nan terms added to a polynomial were ignored.
+* [#14422](http://bugzilla.scilab.org/show_bug.cgi?id=14422): `clc(0)` did nothing, now clears last console entry. Remove leading blank after a `clc()`.
 * [#14498](http://bugzilla.scilab.org/show_bug.cgi?id=14498): `size([],3)` returned 1 instead of 0.
 * [#14501](http://bugzilla.scilab.org/show_bug.cgi?id=14501): `strsubst` crashed on consecutive occurrences.
 * [#14557](http://bugzilla.scilab.org/show_bug.cgi?id=14557): `csim` failed when the system has no state.
index 78991be..d96f967 100644 (file)
@@ -415,10 +415,7 @@ public abstract class SciConsole extends JPanel {
             e.printStackTrace();
         }
         config.getOutputView().reset();
-        /* Bug 4014 */
-        /* We add a space to add a line */
-        /* clc , F2 and menus have same position */
-        config.getOutputView().append(" ");
+
     }
 
     /**
@@ -434,45 +431,40 @@ public abstract class SciConsole extends JPanel {
             sciConsole.doLayout();
         }
 
-        if (nbLines == 0) {
-            // Clear the prompt
-            config.getInputCommandView().reset();
-        } else {
-            // Clear lines in output command view
-            try {
-                // We have to remove the command entered by the user
-                int totalNumberOfLines = nbLines + LINE_NUMBER_IN_PROMPT;
-
-                //  We add a space to add a line to make it consistent clc for all mode
-                config.getOutputView().append(" ");
-
-                Document outputDoc = ((JEditorPane) config.getOutputView()).getDocument();
-                String outputTxt =  outputDoc.getText(0, outputDoc.getLength());
-
-                // Are there enough lines in the output view ?
-                String[] allLines = outputTxt.split(StringConstants.NEW_LINE);
-                if (allLines.length < totalNumberOfLines) {
-                    // Delete lines
-                    config.getOutputView().reset();
-                    config.getOutputView().append(Messages.gettext("Out of Screen"));
-                } else {
-                    // Delete lines
-                    int lastEOL;
-                    for (int i = 0; i < totalNumberOfLines; i++) {
-                        outputTxt = outputDoc.getText(0, outputDoc.getLength());
-                        lastEOL = outputTxt.lastIndexOf(StringConstants.NEW_LINE);
-                        if (lastEOL != -1) {
-                            outputDoc.remove(lastEOL, outputDoc.getLength() - lastEOL);
-                        }
+        // Clear lines in output command view
+        try {
+            // We have to remove the command entered by the user
+            int totalNumberOfLines = nbLines + LINE_NUMBER_IN_PROMPT;
+
+            //  We add a space to add a line to make it consistent clc for all mode
+            config.getOutputView().append(" ");
+
+            Document outputDoc = ((JEditorPane) config.getOutputView()).getDocument();
+            String outputTxt =  outputDoc.getText(0, outputDoc.getLength());
+
+            // Are there enough lines in the output view ?
+            String[] allLines = outputTxt.split(StringConstants.NEW_LINE);
+            if (allLines.length < totalNumberOfLines) {
+                // Delete lines
+                config.getOutputView().reset();
+                config.getOutputView().append(Messages.gettext("Out of Screen"));
+            } else {
+                // Delete lines
+                int lastEOL;
+                for (int i = 0; i < totalNumberOfLines; i++) {
+                    outputTxt = outputDoc.getText(0, outputDoc.getLength());
+                    lastEOL = outputTxt.lastIndexOf(StringConstants.NEW_LINE);
+                    if (lastEOL != -1) {
+                        outputDoc.remove(lastEOL, outputDoc.getLength() - lastEOL);
                     }
                 }
+            }
 
-                // Bring the prompt back to the left
-                config.getOutputView().append("\r");
+            // Bring the prompt back to the left
+            config.getOutputView().append("\r");
 
-            } catch (BadLocationException e) {
-                e.printStackTrace();
-            }
+        } catch (BadLocationException e) {
+            e.printStackTrace();
         }
     }
 
diff --git a/scilab/modules/console/tests/nonreg_tests/bug_14422.tst b/scilab/modules/console/tests/nonreg_tests/bug_14422.tst
new file mode 100644 (file)
index 0000000..a8eff75
--- /dev/null
@@ -0,0 +1,32 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2020 - Tan C.L. ByteCode
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- Non-regression test for bug 14422 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/14422
+//
+// <-- INTERACTIVE TEST -->
+// after clc(); mprintf("abcd"); prints " abcd" with a leading blank.
+// clc(0) now just clearing its own line, and redisplay the prompt --> on the same line.
+
+// Test 1
+clc(); mprintf("abcd");
+// abcd
+// -->
+//
+// but not
+//  abcd
+// -->
+//
+
+// Test 2
+clc(0)
+// should clear its own line and redisplay the prompt at the begining of the same line
+
+
+