Finish to replace sciprint by Scierror when needed in graphics
[scilab.git] / scilab / modules / graphics / sci_gateway / c / sci_show_window.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA - Fabrice Leray
4  * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
5  * 
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at    
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*------------------------------------------------------------------------*/
15 /* file: sci_show_window.c                                                */
16 /* desc : interface for show_window routine                               */
17 /*------------------------------------------------------------------------*/
18
19 #include "sci_show_window.h"
20 #include "getHandleProperty/getPropertyAssignedValue.h"
21 #include "HandleManagement.h"
22 #include "stack-c.h"
23 #include "Scierror.h"
24 #include "SetProperty.h"
25 #include "GetProperty.h"
26 #include "InitObjects.h"
27 #include "CurrentObjectsManagement.h"
28 #include "localization.h"
29 #include "Interaction.h"
30 #include "WindowList.h"
31 /*--------------------------------------------------------------------------*/
32 int sci_show_window( char *fname,unsigned long fname_len )
33 {
34   sciPointObj * shownFigure = NULL;
35
36   CheckRhs(0,1);
37   CheckLhs(0,1);
38
39   if ( Rhs == 1 )
40   {
41     /* the window to show is specified */
42     int paramType    = VarType(1);
43     int nbRow        = 0 ;
44     int nbCol        = 0 ;
45     size_t stackPointer = 0 ;
46
47     if ( isParameterHandle( paramType ) )
48     {
49       /* by tis handle */
50       GetRhsVar( 1,GRAPHICAL_HANDLE_DATATYPE, &nbRow, &nbCol, &stackPointer );
51
52       if ( nbRow * nbCol != 1 )
53       {
54         Scierror(999, _("%s: Wrong size for input argument #%d: A '%s' handle or a real scalar expected.\n"),fname, 1, "Figure");
55         return -1 ;
56       }
57
58       shownFigure = sciGetPointerFromHandle( getHandleFromStack(stackPointer) );
59
60       if (sciGetEntityType(shownFigure) != SCI_FIGURE)
61       {
62         Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle or a real scalar expected.\n"),fname, 1, "Figure");
63         return -1 ;
64       }
65
66     }
67     else if ( isParameterDoubleMatrix( paramType ) )
68     {
69       /* by its number */
70       int winNum;
71       GetRhsVar(1,MATRIX_OF_DOUBLE_DATATYPE, &nbRow, &nbCol, &stackPointer );
72       if ( nbRow * nbCol != 1 )
73       {
74         Scierror(999, _("%s: Wrong size for input argument #%d: A '%s' handle or a real scalar expected.\n"),fname, 1, "Figure");
75         return -1 ;
76       }
77       winNum = (int) getDoubleFromStack(stackPointer);
78       shownFigure = getFigureFromIndex(winNum);
79
80       if (shownFigure == NULL)
81       {
82         /* No window with this number, create one */
83         if(sciSetUsedWindow(winNum) < 0)
84         {
85           Scierror(999, _("%s: Unable to create requested figure: No more memory.\n"), fname);
86                                         return -1;
87         }
88         shownFigure = sciGetCurrentFigure();
89       }
90     }
91     else
92     {
93       Scierror(999, _("%s: Wrong type for input argument #%d: A '%s' handle or a real scalar expected.\n"),fname,1, "Figure");
94                         return -1;
95     }
96
97   }
98   else
99   {
100     /* Rhs == 0 */
101     /* raise current figure */
102     shownFigure = sciGetCurrentFigure();
103   }
104
105   /* Check that the requested figure really exists */
106   if ( shownFigure == NULL )
107   {
108     Scierror(999, _("%s: '%s' handle does not or no longer exists.\n"),fname,"Figure");
109     return -1 ;
110   }
111
112   /* Actually show the window */
113   showWindow(shownFigure);
114
115   LhsVar(1)=0;
116   return 0;
117 }
118 /*--------------------------------------------------------------------------*/