* Bug #13901 fixed - lines() was not updated when resizing Scilab console. 97/16697/2
Vincent COUVERT [Wed, 17 Jun 2015 12:27:13 +0000 (14:27 +0200)]
Change-Id: I3ae4cb469ac05ce9e491e0165f0c178b2a71e2e2

scilab/modules/ast/includes/system_env/configvariable.hxx
scilab/modules/ast/src/cpp/system_env/configvariable.cpp
scilab/modules/console/includes/scilines.h
scilab/modules/console/sci_gateway/c/sci_lines.c [deleted file]
scilab/modules/console/src/c/GuiManagement.c
scilab/modules/console/src/c/scilines.c
scilab/modules/console/src/c/windows/TermCompletion.c
scilab/modules/console/src/c/windows/TermConsole.c
scilab/modules/output_stream/src/c/Console_Import.def
scilab/modules/output_stream/src/c/ast_Import.def
scilab/modules/output_stream/src/c/sciprint_full.c

index 5c746c8..5d8d6dd 100644 (file)
@@ -33,6 +33,10 @@ extern "C"
 #include "dynlib_ast.h"
 }
 
+// Minimal values for iConsoleLines & iConsoleWidth
+#define ICONSOLELINES_MIN 0
+#define ICONSOLEWIDTH_MIN 10
+
 class EXTERN_AST ConfigVariable
 {
     //module list
index 843dc6c..a794670 100644 (file)
@@ -183,7 +183,7 @@ int ConfigVariable::m_iConsoleWidth = 0;
 
 void ConfigVariable::setConsoleWidth(int _iConsoleWidth)
 {
-    m_iConsoleWidth = _iConsoleWidth;
+    m_iConsoleWidth = Max(ICONSOLEWIDTH_MIN, _iConsoleWidth);
 }
 
 int ConfigVariable::getConsoleWidth(void)
@@ -203,7 +203,7 @@ int ConfigVariable::m_iConsoleLines = 0; //console lines default value
 
 void ConfigVariable::setConsoleLines(int _iConsoleLines)
 {
-    m_iConsoleLines = _iConsoleLines;
+    m_iConsoleLines = Max(ICONSOLELINES_MIN, _iConsoleLines);
 }
 
 int ConfigVariable::getConsoleLines(void)
index 807b8a4..7b46b2f 100644 (file)
@@ -45,31 +45,5 @@ CONSOLE_IMPEXP int C2F(scilines)(int *nl, int *nc);
 */
 CONSOLE_IMPEXP int C2F(scilinesdefault)(void);
 
-/**
-* set number of columns to display data
-* @param new size of columns
-* @return TRUE or FALSE
-*/
-CONSOLE_IMPEXP BOOL setColumnsSize(int colums);
-
-/**
-* set number of lines to display data
-* @param new size of lines
-* @return TRUE or FALSE
-*/
-CONSOLE_IMPEXP BOOL setLinesSize(int lines_);
-
-/**
-* get number of columns to display data
-* @return numbers of columns
-*/
-CONSOLE_IMPEXP int getColumnsSize(void);
-
-/**
-* get number of lines to display data
-* @return numbers of lines
-*/
-CONSOLE_IMPEXP int getLinesSize(void);
-
 #endif /* __SCILINES_H__ */
 /*--------------------------------------------------------------------------*/
diff --git a/scilab/modules/console/sci_gateway/c/sci_lines.c b/scilab/modules/console/sci_gateway/c/sci_lines.c
deleted file mode 100644 (file)
index 73a131c..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2007 - INRIA - Allan CORNET
- * Copyright (C) 2011 - DIGITEO - Allan CORNET
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
- *
- */
-/*--------------------------------------------------------------------------*/
-#include "api_scilab.h"
-#include "scilines.h"
-#include "Scierror.h"
-#include "localization.h"
-#include "MALLOC.h"
-#include "gw_console.h"
-#include "ScilabLinesUpdate.h"
-#include "configvariable_interface.h"
-/*--------------------------------------------------------------------------*/
-static int sci_lines_no_rhs(char *fname, void* pvApiCtx);
-static int sci_lines_one_rhs(char *fname, void* pvApiCtx);
-static int sci_lines_two_rhs(char *fname, void* pvApiCtx);
-/*--------------------------------------------------------------------------*/
-int sci_lines(char *fname, void* pvApiCtx)
-{
-    CheckRhs(0, 2);
-    CheckLhs(1, 1);
-
-    switch (Rhs)
-    {
-        case 0:
-            sci_lines_no_rhs(fname, pvApiCtx);
-            break;
-        case 1:
-            sci_lines_one_rhs(fname, pvApiCtx);
-            break;
-        case 2:
-            sci_lines_two_rhs(fname, pvApiCtx);
-            break;
-    }
-    return 0;
-}
-/*--------------------------------------------------------------------------*/
-static int sci_lines_no_rhs(char *fname, void* pvApiCtx)
-{
-    /* ncl = lines() */
-    /* with ncl a 1x2 vector [nc , nl] */
-    /* for compatibility BUT order should be [nl, nc] */
-    /* input/output not coherents */
-    SciErr sciErr;
-    double returnedDouble[2];
-    int n1 = 0, m1 = 0;
-
-    returnedDouble[0] = (double)getColumnsSize();
-    returnedDouble[1] = (double)getLinesSize();
-
-    n1 = 1;
-    m1 = 2;
-    sciErr = createMatrixOfDouble(pvApiCtx, Rhs + 1, n1, m1, returnedDouble);
-
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        Scierror(999, _("%s: Memory allocation error.\n"), fname);
-        return 0;
-    }
-
-    LhsVar(1) = Rhs + 1;
-    PutLhsVar();
-
-    return 0;
-}
-/*--------------------------------------------------------------------------*/
-static int sci_lines_one_rhs(char *fname, void* pvApiCtx)
-{
-    /* lines(nb_lines) */
-    /* nb_lines == -1 auto */
-    /* nb_lines == 0 no stop on display */
-    /* nb_lines > 0 set value */
-    SciErr sciErr;
-    int *piAddressVarOne = NULL;
-    int iParam1 = 0;
-
-    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-        return 0;
-    }
-
-    /* compatibility with previous version manages int32 and double */
-    if (!(isDoubleType(pvApiCtx, piAddressVarOne) || isIntegerType(pvApiCtx, piAddressVarOne)))
-    {
-        Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 1);
-        return 0;
-    }
-
-    if (!isScalar(pvApiCtx, piAddressVarOne))
-    {
-        Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), fname, 1);
-        return 0;
-    }
-
-    if (isIntegerType(pvApiCtx, piAddressVarOne))
-    {
-        if (getScalarInteger32(pvApiCtx, piAddressVarOne, &iParam1) != 0)
-        {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 1);
-            return 0;
-        }
-    }
-    else // double
-    {
-        double dParam1 = 0.;
-        if (getScalarDouble(pvApiCtx, piAddressVarOne, &dParam1) == 0)
-        {
-            iParam1 = (int)dParam1;
-        }
-    }
-
-    if (iParam1 == -1)
-    {
-        scilinesdefault();
-        if (getScilabMode() == SCILAB_STD)
-        {
-            ScilabLinesUpdate();
-        }
-    }
-    else
-    {
-        if (iParam1 < 0)
-        {
-            Scierror(999, _("%s: Wrong value for input argument #%d: A scalar (>= 0) expected.\n"), fname, 1);
-            return 0;
-        }
-        else
-        {
-            setLinesSize(iParam1);
-        }
-    }
-
-    LhsVar(1) = 0;
-    PutLhsVar();
-    return 0;
-}
-/*--------------------------------------------------------------------------*/
-static int sci_lines_two_rhs(char *fname, void* pvApiCtx)
-{
-    /* lines (nl, nc) */
-    SciErr sciErr;
-    int *piAddressVarOne = NULL;
-    int *piAddressVarTwo = NULL;
-
-    int iParam1 = 0;
-    int iParam2 = 0;
-
-    sciErr = getVarAddressFromPosition(pvApiCtx, 2, &piAddressVarTwo);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 2);
-        return 0;
-    }
-
-    sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
-    if (sciErr.iErr)
-    {
-        printError(&sciErr, 0);
-        Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
-        return 0;
-    }
-
-    /* compatibility with previous version manages int32 and double */
-    if (!(isDoubleType(pvApiCtx, piAddressVarOne) || isIntegerType(pvApiCtx, piAddressVarOne)))
-    {
-        Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 1);
-        return 0;
-    }
-
-    if (!(isDoubleType(pvApiCtx, piAddressVarTwo) || isIntegerType(pvApiCtx, piAddressVarTwo)))
-    {
-        Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 2);
-        return 0;
-    }
-
-    if (!isScalar(pvApiCtx, piAddressVarOne))
-    {
-        Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), fname, 1);
-        return 0;
-    }
-
-    if (!isScalar(pvApiCtx, piAddressVarTwo))
-    {
-        Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), fname, 2);
-        return 0;
-    }
-
-    if (isIntegerType(pvApiCtx, piAddressVarOne))
-    {
-        if (getScalarInteger32(pvApiCtx, piAddressVarOne, &iParam1) != 0)
-        {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 1);
-            return 0;
-        }
-    }
-    else // double
-    {
-        double dParam1 = 0.;
-        if (getScalarDouble(pvApiCtx, piAddressVarOne, &dParam1) == 0)
-        {
-            iParam1 = (int)dParam1;
-        }
-    }
-
-    if (isIntegerType(pvApiCtx, piAddressVarTwo))
-    {
-        if (getScalarInteger32(pvApiCtx, piAddressVarTwo, &iParam2) != 0)
-        {
-            Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), fname, 2);
-            return 0;
-        }
-    }
-    else // double
-    {
-        double dParam2 = 0.;
-        if (getScalarDouble(pvApiCtx, piAddressVarTwo, &dParam2) == 0)
-        {
-            iParam2 = (int)dParam2;
-        }
-    }
-
-
-    if (iParam1 == -1)
-    {
-        scilinesdefault();
-        if (getScilabMode() == SCILAB_STD)
-        {
-            ScilabLinesUpdate();
-        }
-    }
-    else
-    {
-        if (iParam1 < 0)
-        {
-            Scierror(999, _("%s: Wrong value for input argument #%d: A scalar (>= 0) expected.\n"), fname, 1);
-            return 0;
-        }
-        else
-        {
-            setLinesSize(iParam1);
-        }
-    }
-
-    if (iParam2 > 0)
-    {
-        setColumnsSize(iParam2);
-    }
-    else
-    {
-        Scierror(999, _("%s: Wrong value for input argument #%d: A scalar (>= 0) expected.\n"), fname, 2);
-        return 0;
-    }
-
-    LhsVar(1) = 0;
-    PutLhsVar();
-    return 0;
-}
-/*--------------------------------------------------------------------------*/
index 4410549..b65beba 100644 (file)
 /*--------------------------------------------------------------------------*/
 #include "GuiManagement.h"
 #include "scilines.h"
+#include "configvariable_interface.h"
 /*--------------------------------------------------------------------------*/
 void setScilabLines(int nbRows, int nbCols)
 {
-    if (getLinesSize() == 0)
+    if (getConsoleLines() == 0)
     {
         /* The user does not want to be asked for more display */
         /* Modify only the number of columns used to format displayed data */
-        scilines(getLinesSize(), nbCols);
+        scilines(getConsoleLines(), nbCols);
     }
     else
     {
index 582ae81..d758d9a 100644 (file)
@@ -45,8 +45,8 @@
 #include "stack-def.h"
 #ifdef _MSC_VER
 #include "../../../windows_tools/src/c/scilab_windows/console.h"
-#include "configvariable_interface.h"
 #endif
+#include "configvariable_interface.h"
 /*--------------------------------------------------------------------------*/
 #define DEFAULT_NUMBERS_LINES 28
 #define DEFAULT_NUMBERS_COLUMNS 80
@@ -55,8 +55,8 @@
 /*--------------------------------------------------------------------------*/
 int scilines(int nblines, int nbcolumns)
 {
-    setLinesSize(nblines);
-    setColumnsSize(nbcolumns);
+    setConsoleLines(nblines);
+    setConsoleWidth(nbcolumns);
     return 0;
 }
 /*--------------------------------------------------------------------------*/
@@ -67,15 +67,15 @@ int scilinesdefault(void)
     char tc_buf[1024];       /* holds termcap buffer */
     if (tgetent(tc_buf, getenv("TERM")) == 1)
     {
-        setLinesSize(tgetnum("li")); /* retrieve from the term info the number
+        setConsoleLines(tgetnum("li")); /* retrieve from the term info the number
                                                                                of lines */
-        setColumnsSize(tgetnum("co")); /* And the number of columns */
+        setConsoleWidth(tgetnum("co")); /* And the number of columns */
     }
     else
     {
         /* Haven't been able to detect the terminal */
-        setLinesSize(DEFAULT_NUMBERS_LINES);
-        setColumnsSize(DEFAULT_NUMBERS_COLUMNS);
+        setConsoleLines(DEFAULT_NUMBERS_LINES);
+        setConsoleWidth(DEFAULT_NUMBERS_COLUMNS);
     }
 
 #else
@@ -93,13 +93,13 @@ int scilinesdefault(void)
         {
             Y = DEFAULT_NUMBERS_LINES;
         }
-        setColumnsSize(X);
-        setLinesSize(Y);
+        setConsoleWidth(X);
+        setConsoleLines(Y);
     }
     else
     {
-        setLinesSize(DEFAULT_NUMBERS_LINES);
-        setColumnsSize(DEFAULT_NUMBERS_COLUMNS);
+        setConsoleLines(DEFAULT_NUMBERS_LINES);
+        setConsoleWidth(DEFAULT_NUMBERS_COLUMNS);
     }
 #endif
     return 0;
@@ -115,25 +115,3 @@ int C2F(scilinesdefault)(void)
     return scilinesdefault();
 }
 /*--------------------------------------------------------------------------*/
-BOOL setColumnsSize(int colums)
-{
-    C2F(iop).lct[4] = Max(MIN_NUMBERS_COLUMNS, colums);
-    return TRUE;
-}
-/*--------------------------------------------------------------------------*/
-BOOL setLinesSize(int lines_)
-{
-    C2F(iop).lct[1] = Max(MIN_NUMBERS_LINES, lines_);
-    return TRUE;
-}
-/*--------------------------------------------------------------------------*/
-int getColumnsSize(void)
-{
-    return C2F(iop).lct[4];
-}
-/*--------------------------------------------------------------------------*/
-int getLinesSize(void)
-{
-    return C2F(iop).lct[1];
-}
-/*--------------------------------------------------------------------------*/
index 3aaca5a..30818f0 100644 (file)
@@ -315,7 +315,7 @@ static void displayCompletionDictionary(char **dictionary, int sizedictionary, c
         for (i = 0; i < sizedictionary; i++)
         {
             int newlenLine = lenCurrentLine + (int)strlen(dictionary[i]) + (int)strlen(" ");
-            if ( newlenLine >= (getColumnsSize() - 10) )
+            if ( newlenLine >= (getConsoleWidth() - 10) )
             {
                 TerminalPrintf("\n");
                 lenCurrentLine = 0;
index 0f9cc1a..06549c7 100644 (file)
@@ -296,8 +296,8 @@ static unsigned char TerminalGetchar(void)
             case WINDOW_BUFFER_SIZE_EVENT:
             {
                 /* Read resize event Input */
-                setColumnsSize(irBuffer.Event.WindowBufferSizeEvent.dwSize.X);
-                setLinesSize(irBuffer.Event.WindowBufferSizeEvent.dwSize.Y);
+                setConsoleWidth(irBuffer.Event.WindowBufferSizeEvent.dwSize.X);
+                setConsoleLines(irBuffer.Event.WindowBufferSizeEvent.dwSize.Y);
 
                 ReadConsoleInput (Win32InputStream, &irBuffer, 1, &n);
             }
index a583974..6566848 100644 (file)
@@ -3,8 +3,6 @@ LIBRARY    sciconsole.dll
 
 EXPORTS
 ConsolePrintf
-getLinesSize
-getColumnsSize
 linesmore
 TermPrintf_Windows     
 GetCurrentPrompt
\ No newline at end of file
index f398b32..b1dfb4c 100644 (file)
@@ -6,3 +6,5 @@ setLastError
 isPromptShow
 getWarningMode
 getSilentError
+getConsoleLines
+getConsoleWidth
index 0b463ab..5213c5b 100644 (file)
@@ -26,6 +26,7 @@
 #include "sci_malloc.h"
 #include "localization.h"
 #include "scilines.h"
+#include "configvariable_interface.h"
 /*--------------------------------------------------------------------------*/
 #ifdef _MSC_VER
 #define vsnprintf _vsnprintf
@@ -52,7 +53,7 @@ void sciprint_full(char *fmt, ...)
     }
 
     /* number of columns as set by command lines() */
-    colwidth = getColumnsSize();
+    colwidth = getConsoleWidth();
 
     split_s_buf = MALLOC(sizeof(char) * (colwidth + 1));
     if (split_s_buf == (char *) 0)