home *** CD-ROM | disk | FTP | other *** search
- -- $Source: /home/harp/1/proto/monoBANK/winnt/file.adb,v $
- -- $Revision: 1.3 $ $Date: 95/12/15 16:49:37 $ $Author: mg $
- -- $Id: file.adb 1.3 1995/02/08 18:28:32 mps Exp mps $
- --
- -- This package contains the functions needed to process the file commands.
- -- It uses the common dialog controls (Win32.CommDlg) to give the application a
- -- familiar look and feel.
- --
- with Win32.WinDef;
- with Win32.WinUser;
- with Win32.CommDlg;
- with Interfaces.C;
- with Interfaces.C.Strings;
-
- use Win32.WinDef;
-
-
- package body File is
-
- use Win32;
- use type Interfaces.C.INT;
-
- maxfilename : constant := 1024;
-
- BUFFER : Win32.CHAR_Array(0..maxfilename);
- SZFILE : Win32.LPSTR;
-
-
- -- aliased for function GetFileName
- filter_str : aliased constant Win32.CHAR_Array :=
- "PCX Files (*.PCX)" & Nul & "*.PCX" & nul & nul;
- title_str : aliased constant Win32.CHAR_Array :=
- "Open Graphic Files" & Nul;
- defext_str : aliased constant Win32.CHAR_Array := "pcx" & Nul;
- error_str : aliased constant Win32.CHAR_Array :=
- "No File Opened" & Nul;
- error_title_str : aliased constant Win32.CHAR_Array :=
- "Pcx Information" & Nul;
- OFN : aliased Win32.CommDlg.OPENFILENAME;
-
-
- function CP(S : Win32.CHAR_Array) return Win32.LPCSTR is
- function UC is new
- Ada.Unchecked_Conversion(System.Address,Win32.LPCSTR);
- begin
- return UC(S(S'First)'Address);
- end CP;
-
- function GetFileName(PSTR : LPSTR) return LPCSTR is
-
- filter : constant Win32.LPCSTR := CP(filter_str);
- title : constant Win32.LPCSTR := CP(title_str);
- defext : constant Win32.LPCSTR := CP(defext_str);
- error : constant Win32.LPCSTR := CP(error_str);
- error_title : constant Win32.LPCSTR := CP(error_title_str);
-
- BRESULT : BOOL;
- IRESULT : INT;
-
- begin
- --
- -- Fill in non-variant fields of OPENFILENAME struct.
- --
- OFN.LSTRUCTSIZE := DWORD(Win32.CommDlg.OPENFILENAME'size / 8);
- OFN.HWNDOWNER := System.Null_Address;
- OFN.HINSTANCE := System.Null_Address;
- OFN.LPSTRFILTER := filter;
- OFN.LPSTRCUSTOMFILTER := null;
- OFN.NMAXCUSTFILTER := 0;
- OFN.NFILTERINDEX := 0;
- OFN.LPSTRFILE := PSTR;
- OFN.NMAXFILE := maxfilename;
- OFN.LPSTRFILETITLE := null;
- OFN.NMAXFILETITLE := maxfilename;
- OFN.LPSTRINITIALDIR := null;
- OFN.LPSTRTITLE := title;
- OFN.FLAGS := Win32.CommDlg.OFN_FILEMUSTEXIST or
- Win32.CommDlg.OFN_HIDEREADONLY;
- OFN.NFILEOFFSET := 0;
- OFN.NFILEEXTENSION := 0;
- OFN.LPSTRDEFEXT := defext;
- OFN.LCUSTDATA := 0;
- OFN.LPFNHOOK := null;
- OFN.LPTEMPLATENAME := null;
- --
- -- Use standard open dialog.
- --
- BRESULT := Win32.CommDlg.GetOpenFileName(OFN'access);
- if BRESULT = Win32.FALSE then
- IRESULT := Win32.WinUser.MessageBox(Win32.WinUser.GetFocus,
- error,
- error_title,
- Win32.WinUser.MB_OK);
- return null;
- else
- return LPCSTR(OFN.LPSTRFILE);
- end if;
- end GetFileName;
-
- function ReadFile return Win32.LPCSTR is
- begin
- BUFFER(BUFFER'first) := Interfaces.C.CHAR(Ascii.nul);
- SZFILE := Win32.LPSTR(CP(BUFFER));
- return GetFileName(SZFILE);
- end ReadFile;
-
- -------------------------------------------------------------------------------
- --
- -- THIS FILE AND ANY ASSOCIATED DOCUMENTATION IS FURNISHED "AS IS" WITHOUT
- -- WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
- -- TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
- -- PURPOSE. The user assumes the entire risk as to the accuracy and the
- -- use of this file.
- --
- -- Copyright (c) Intermetrics, Inc. 1995
- -- Royalty-free, unlimited, worldwide, non-exclusive use, modification,
- -- reproduction and further distribution of this file is permitted.
- --
- -------------------------------------------------------------------------------
-
- end File;
-