File: wmen_getfile.c

package info (click to toggle)
scilab 4.0-12
  • links: PTS
  • area: non-free
  • in suites: etch, etch-m68k
  • size: 100,640 kB
  • ctags: 57,333
  • sloc: ansic: 377,889; fortran: 242,862; xml: 179,819; tcl: 42,062; sh: 10,593; ml: 9,441; makefile: 4,377; cpp: 1,354; java: 621; csh: 260; yacc: 247; perl: 130; lex: 126; asm: 72; lisp: 30
file content (92 lines) | stat: -rw-r--r-- 2,526 bytes parent folder | download | duplicates (2)
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);
}