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
|
/* Copyright ENPC */
/* SCILAB - win/wgetfile.c
* Jean-Philippe Chancelier
* A terminer
* Le pathname doit etre donne a la mode Windows95
* Il faut pouvoir le convertir a l'envers
*/
#include "wmen_scilab.h"
#ifdef WIN32
#include "../os_specific/win_mem_alloc.h" /* MALLOC */
#else
#include "../os_specific/sci_mem_alloc.h" /* MALLOC */
#endif
/** #define MAXSTR 256 **/
/*************************************************
* Really Ugly I'm ashamed
* The main function to activate the file menu
**********************************************************/
int GetFileWindow(filemask,szFile,dirname,flag,ierr,title)
char *filemask,*dirname,**szFile,*title;
int flag,*ierr;
{
int rep,i;
OPENFILENAME ofn;
char *szTitle;
char *szFileTitle;
char *szFilter;
HWND hwndOwner ;
if ( (hwndOwner = GetActiveWindow()) == NULL)
hwndOwner = textwin.hWndParent;
if ( (szTitle = MALLOC((MAXSTR+1)*sizeof(char))) == (char *)NULL
|| (szFileTitle = MALLOC((MAXSTR+1)*sizeof(char))) == (char *)NULL
|| (szFilter = MALLOC((MAXSTR+1)*sizeof(char))) == (char *)NULL )
{
Scistring("Malloc : No more place");
*ierr = 1;
return(1);
}
*szFile = (char *) MALLOC((MAXSTR+1)*sizeof(char));
if ( *szFile == (char*)0 )
{
Scistring("Malloc : No more place");
*ierr = 1;
return(1);
}
strncpy(szTitle,title,MAXSTR);
strcpy(szFilter,"Default (");
strcat(szFilter,filemask);
strcat(szFilter,")");
i=strlen(szFilter);
i++; /* move past NULL */
strcpy(szFilter+i,filemask);
i+=strlen(szFilter+i);
i++; /* move past NULL */
strcpy(szFilter+i,"All Files (*.*)");
i+=strlen(szFilter+i);
i++; /* move past NULL */
strcpy(szFilter+i,"*.*");
i+=strlen(szFilter+i);
i++; /* move past NULL */
szFilter[i++]='\0'; /* add a second NULL */
rep = TRUE;
(*szFile)[0] = '\0';
/* clear the structrure */
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = hwndOwner ;
ofn.lpstrFilter = szFilter;
ofn.nFilterIndex = 1;
ofn.lpstrFile = *szFile;
ofn.nMaxFile = MAXSTR;
ofn.lpstrFileTitle = szFileTitle;
ofn.nMaxFileTitle = MAXSTR;
ofn.lpstrTitle = szTitle;
if ( flag==1)
ofn.lpstrInitialDir = dirname;
else
ofn.lpstrInitialDir = (LPSTR)NULL;
ofn.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST
| OFN_NOCHANGEDIR ;
rep = GetSaveFileName(&ofn);
FREE(szTitle);
FREE(szFilter);
FREE(szFileTitle);
return(rep);
}
|