Scicos blocks: use the new MVC graphic for scopes
[scilab.git] / scilab / modules / scicos_blocks / src / c / scoUtils.c
1 /*
2  *  Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  *  Copyright (C) 2011 - Scilab Enterprises - ClĂ©ment DAVID
4  *
5  *  This file must be used under the terms of the CeCILL.
6  *  This source file is licensed as described in the file COPYING, which
7  *  you should have received as part of this distribution.  The terms
8  *  are also available at
9  *  http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12
13 #include "machine.h"
14 #include "MALLOC.h"
15 #include "BOOL.h"
16
17 #include "getGraphicObjectProperty.h"
18 #include "setGraphicObjectProperty.h"
19 #include "graphicObjectProperties.h"
20
21 #include "scoUtils.h"
22 #include "scicos_block4.h"
23 #include "scicos.h"
24
25 #include <string.h>
26
27 char *findChildWithKindAt(char *parent, const char *type, int position)
28 {
29     char *child = NULL;
30
31     int childrenCount;
32     char **children;
33
34     int i;
35     char *childType;
36     int typeCount;
37
38     int *pChildrenCount = &childrenCount;
39
40     getGraphicObjectProperty(parent, __GO_CHILDREN_COUNT__, jni_int, (void **)&pChildrenCount);
41     getGraphicObjectProperty(parent, __GO_CHILDREN__, jni_string_vector, (void **)&children);
42
43     for (typeCount = 0, i = 0; i < childrenCount; i++)
44     {
45         getGraphicObjectProperty(children[i], __GO_TYPE__, jni_string, (void **)&childType);
46
47         if (strcmp(childType, type) == 0)
48         {
49             typeCount++;
50         }
51 //      Commented due to the C++ allocation
52 //      see http://bugzilla.scilab.org/show_bug.cgi?id=9747
53 //      FREE(childType);
54
55         if (typeCount == (position + 1))
56         {
57             child = strdup(children[i]);
58             break;
59         }
60     }
61
62 //  Commented due to the C++ allocation
63 //  see http://bugzilla.scilab.org/show_bug.cgi?id=9747
64 //  for (; i>=0; i--) {
65 //      FREE(children[i]);
66 //  }
67 //  FREE(children);
68
69     return child;
70 };
71
72 BOOL setLabel(char *pAxeUID, const char *_pstName, const char *label)
73 {
74     char *pLabelUID;
75     char *rwLabel = strdup(label);
76     int dimensions[2];
77
78     BOOL result;
79
80     getGraphicObjectProperty(pAxeUID, _pstName, jni_string, (void **)&pLabelUID);
81
82     if (pLabelUID != NULL)
83     {
84         dimensions[0] = 1;
85         dimensions[1] = 1;
86
87         result = setGraphicObjectProperty(pLabelUID, __GO_TEXT_ARRAY_DIMENSIONS__, &dimensions, jni_int_vector, 2);
88     }
89
90     if (pLabelUID != NULL && result == TRUE)
91     {
92         result = setGraphicObjectProperty(pLabelUID, __GO_TEXT_STRINGS__, &rwLabel, jni_string_vector, 1);
93     }
94
95     FREE(rwLabel);
96 //  Commented due to the C++ allocation
97 //  see http://bugzilla.scilab.org/show_bug.cgi?id=9747
98 //  FREE(pLabelUID);
99
100     return result && pLabelUID != NULL;
101 }