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 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
/* Copyright ENPC */
#ifdef WIN32
#include "wmen_scilab.h"
#else
#include "men_scilab.h"
#endif
#define OK 1
#define CANCEL 2
#define MEMERR 3
PrintDial ScilabPrintD;
static char *Print_Formats[] = {
"Postscript",
"Postscript No Preamble",
"Postscript-Latex",
"Xfig",
"Gif",
};
static int nF=5;
/******************************************
* main function
******************************************/
int prtdlg(flag,printer,colored,orientation,file,ok)
integer *colored,*orientation,*flag,*ok;
char printer[],file[];
{
static int firstentry=0;
static int multiple_call=0;
int rep ;
if ( firstentry == 0)
{
ScilabPrintD.numChoice=1;
ScilabPrintD.Pbuffer = NULL;
ScilabPrintD.PList = NULL;
firstentry++;
}
/** multiple calls are forbidden **/
if ( multiple_call == 1 )
{
sciprint(" Can't raise the print menu : you must quit another raised menu before \r\n");
*ok=0;
return(0);
}
else
{
multiple_call = 1;
}
*ok=1;
rep = ExposePrintdialogWindow((int) *flag,colored,orientation);
if ( rep == TRUE )
{
strcpy(printer,ScilabPrintD.PList[ScilabPrintD.numChoice-1]);
if (*flag==2) {strcpy(file,ScilabPrintD.filename);FREE(ScilabPrintD.filename);}
}
else
{
*ok=0;
}
if (*flag==1)
{
FREE(ScilabPrintD.Pbuffer);
FREE(ScilabPrintD.PList);
}
multiple_call =0;
return(0);
}
/******************************************
* Test function
******************************************/
int TestPrintDlg()
{
static char file[100],printer[20];
integer flag,colored,orientation,ok;
prtdlg(&flag,printer,&colored,&orientation,file,&ok);
return(0);
}
/******************************************
* Initialize list of printers
******************************************/
int SetPrinterList(flag)
int flag;
{
int n,i,npr;
char *getenv(),*str,*p;
if (flag == 1)
{
/* searching for printers */
if ( (str=getenv("PRINTERS")) == 0) str="lp";
n=strlen(str);
if (n==0)
{
str="lp";n=strlen(str);
}
/* counting number of printers */
npr=1;
for (i=0 ; str[i] != '\0' ;i++)
if(str[i]==':' ) npr++;
ScilabPrintD.PList=(char **) MALLOC((npr)*sizeof(char *));
ScilabPrintD.Pbuffer=(char *) MALLOC( (strlen(str)+1)*sizeof(char));
if ( ScilabPrintD.Pbuffer != (char *) 0 && ScilabPrintD.PList != (char **) 0)
{
strcpy(ScilabPrintD.Pbuffer,str);
ScilabPrintD.ns=0;
while ( ScilabPrintD.ns < npr )
{
p=(ScilabPrintD.ns == 0) ? strtok(ScilabPrintD.Pbuffer,":") : strtok((char *)0,":");
ScilabPrintD.PList[ScilabPrintD.ns]=p;
ScilabPrintD.ns++;
}
}
else
{
sciprint("x_choices : No more place\r\n");
return(MEMERR);
}
}
else
{
ScilabPrintD.PList=Print_Formats;
ScilabPrintD.ns=nF;
}
return(OK);
}
|