File: men_mdial.c

package info (click to toggle)
scilab 2.4-1
  • links: PTS
  • area: non-free
  • in suites: potato, slink
  • size: 55,196 kB
  • ctags: 38,019
  • sloc: ansic: 231,970; fortran: 148,976; tcl: 7,099; makefile: 4,585; sh: 2,978; csh: 154; cpp: 101; asm: 39; sed: 5
file content (83 lines) | stat: -rw-r--r-- 2,492 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/* Copyright INRIA */
#ifdef WIN32 
#include "wmen_scilab.h"
#else
#include "men_scilab.h"
#endif

MDialog SciMDialog;        /** used to stored the mdialog data **/
/*************************************************     
 * a test function used in command.c
 **********************************************************/

int TestmDialogWindow()
{
  int rep,i;
  static char *labels = "LaBel";
  static char *pszTitle[] = {
    "first list entry",
    "second list entry",
    "third list entry",
    "fourth list entry",
    NULL
    };
  SciMDialog.labels = labels;
  SciMDialog.pszTitle = pszTitle;
  /** Warning pszName must be allocated because 
    MatricDialogWindow will reallc it to store result **/
  SciMDialog.pszName  = (char **) malloc((4+1)*sizeof(char *));
  if ( SciMDialog.pszName == ( char **) 0 ) return(FALSE);
  for ( i = 0 ; i < 4 ; i++ )
    {
      SciMDialog.pszName[i] = (char *) malloc(2*sizeof(char));
      if ( SciMDialog.pszName[i] == ( char *) 0 ) return(FALSE);
      sprintf(SciMDialog.pszName[i],"%1d",i);
    }
  SciMDialog.pszName[4]= (char*)0;
  SciMDialog.nv = 4;
  SciMDialog.ierr=0;
  rep=mDialogWindow();
  return(rep);
}

/*************************************************     
 * interface with scilab 
 **********************************************************/

void C2F(xmdial)(label,ptrlab,nlab,value,ptrv,desc,ptrdesc,nv,res,ptrres,ierr)
     int *label,*ptrlab,*nlab,*value,*ptrv,*desc,*ptrdesc,*nv,*res,*ptrres,*ierr;
{
  int i,rep;
  int  maxchars= *ierr;
  *ierr=0;
  /* conversion of scilab characters into strings */
  ScilabMStr2C(label,nlab,ptrlab,&(SciMDialog.labels),ierr);
  if ( *ierr == 1) return;
  ScilabMStr2CM(desc,nv,ptrdesc,&(SciMDialog.pszTitle),ierr);
  if ( *ierr == 1) return;
  ScilabMStr2CM(value,nv,ptrv,&(SciMDialog.pszName),ierr);
  if ( *ierr == 1) return;
  SciMDialog.nv = *nv;
  if ( SciMDialog.nv >  NPAGESMAX*NITEMMAXPAGE )
    {
      sciprint("Sorry : x_mdialog limited to %d items on Windows\n",
	        NPAGESMAX*NITEMMAXPAGE );
      *ierr = 1;
      return;
    }
  SciMDialog.ierr = 0;
  rep = mDialogWindow();
  if ( SciMDialog.ierr == 0 )
    {
      /** No errors **/
      if ( rep == FALSE ) 
	*nv=0;  /** cancel **/
      else 
	ScilabCM2MStr(SciMDialog.pszName,*nv,res,ptrres,maxchars,ierr);
    }
  FREE(SciMDialog.labels);
  for (i=0; i< *nv;i++) FREE(SciMDialog.pszName[i]); 
  FREE(SciMDialog.pszName);
  for (i=0; i< *nv;i++) FREE(SciMDialog.pszTitle[i]); 
  FREE(SciMDialog.pszTitle);
}