File: wmen_getfile.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 (85 lines) | stat: -rw-r--r-- 2,366 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
84
85
/* Copyright INRIA */
/* 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"

/** #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;
  rep = GetSaveFileName(&ofn);
  FREE(szTitle);
  FREE(szFilter);
  FREE(szFileTitle);
  return(rep);
}