opendlg.h
上传用户:hzhsqp
上传日期:2007-01-06
资源大小:1600k
文件大小:7k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * opendlg.h
  3.  *
  4.  * Open existing file dialog.
  5.  *
  6.  * Portable Windows Library
  7.  *
  8.  * Copyright (c) 1993-1998 Equivalence Pty. Ltd.
  9.  *
  10.  * The contents of this file are subject to the Mozilla Public License
  11.  * Version 1.0 (the "License"); you may not use this file except in
  12.  * compliance with the License. You may obtain a copy of the License at
  13.  * http://www.mozilla.org/MPL/
  14.  *
  15.  * Software distributed under the License is distributed on an "AS IS"
  16.  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
  17.  * the License for the specific language governing rights and limitations
  18.  * under the License.
  19.  *
  20.  * The Original Code is Portable Windows Library.
  21.  *
  22.  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
  23.  *
  24.  * Portions are Copyright (C) 1993 Free Software Foundation, Inc.
  25.  * All Rights Reserved.
  26.  *
  27.  * Contributor(s): ______________________________________.
  28.  *
  29.  * $Log: opendlg.h,v $
  30.  * Revision 1.18  1999/03/10 03:49:52  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.17  1999/03/09 08:01:49  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.16  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.15  1998/09/23 06:24:31  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.14  1998/03/09 07:15:29  robertj
  43.  * More implementation of file type lists.
  44.  *
  45.  * Revision 1.13  1998/03/09 01:41:14  robertj
  46.  * Enhanced file types for standard file dialog.
  47.  *
  48.  * Revision 1.12  1995/06/17 11:12:49  robertj
  49.  * Documentation update.
  50.  *
  51.  * Revision 1.11  1995/03/14 12:41:55  robertj
  52.  * Updated documentation to use HTML codes.
  53.  *
  54.  * Revision 1.10  1994/12/21  11:53:17  robertj
  55.  * Documentation and variable normalisation.
  56.  *
  57.  * Revision 1.9  1994/08/23  11:32:52  robertj
  58.  * Oops
  59.  *
  60.  * Revision 1.8  1994/08/22  00:46:48  robertj
  61.  * Added pragma fro GNU C++ compiler.
  62.  *
  63.  * Revision 1.7  1994/04/20  12:17:44  robertj
  64.  * Split name into PFilePath
  65.  *
  66.  * Revision 1.6  1994/04/11  14:13:05  robertj
  67.  * Added extra standard resource IDs and normalised dialog ids.
  68.  *
  69.  * Revision 1.5  1994/03/07  07:38:19  robertj
  70.  * Major enhancementsacross the board.
  71.  *
  72.  * Revision 1.4  1994/01/03  04:42:23  robertj
  73.  * Mass changes to common container classes and interactors etc etc etc.
  74.  *
  75.  * Revision 1.3  1993/12/01  16:09:05  robertj
  76.  * Windows NT port.
  77.  *
  78.  * Revision 1.2  1993/07/14  12:49:16  robertj
  79.  * Fixed RCS keywords.
  80.  *
  81.  */
  82. #define _POPENFILEDIALOG
  83. #ifdef __GNUC__
  84. #pragma interface
  85. #endif
  86. /**A standard dialog for obtaining an existing file name for loading by the
  87.    application. The exact appearance of the dialog is platform specific,
  88.    however they all consists of the same basic functions.
  89.    The semantics of the set of file types is slightly different on different
  90.    platforms. For the Macintosh all files in the set are displayed. For
  91.    MS-Window a choice box is available which allows the user to select one
  92.    of the types in the set and only files for that single type are available.
  93.    Note that unlike most dialogs, most operations such as
  94.    Ref{PInteractor::Show()}, Ref{PInteractorLayout::GetControl()} etc may
  95.    {bf not} be executed before the Ref{PModalDialog::RunModal()} function
  96.    has been executed. Furthermore, they are not available {bf after}
  97.    Ref{PModalDialog::RunModal()} has returned. Similarly some functions such
  98.    as Ref{PFileDialog::SetDirectory()} are not available {bf within} the
  99.    centext of Ref{PModalDialog::RunModal()}. This is due to the
  100.    implementation on some platforms which goes to great lengths to use the
  101.    actual standard file dialog for the platform.
  102.  */
  103. class POpenFileDialog : public PFileDialog
  104. {
  105.   PCLASSINFO(POpenFileDialog, PFileDialog);
  106.   public:
  107.    /**Create a new standard open file dialog. The actual appearence is
  108.        platform dependent and is displayed using the standard resource. This
  109.        resource may be overridden by the #resID# parameter but must
  110.        still contain all of the controls of the standard resource.
  111.      */
  112.     POpenFileDialog(
  113.       PInteractor * parent,   /// Owner interactor for the dialog.
  114.       PRESOURCE_ID resID = PSTD_ID_DIALOG_OPEN_FILE
  115.         /// Resource identifier for the dialog description resource.
  116.     );
  117.       
  118.     /** Destroy the standard open file dialog. */
  119.     virtual ~POpenFileDialog();
  120.   /**@name New functions for class */
  121.    /**Add a file type to the array of file types that may be specified for the
  122.        file dialog.
  123.        The file type array is used to filter out file names unless they have
  124.        a file type within the set. If the array is empty then all files are
  125.        available. They may be subsequently filtered by the
  126.        Ref{OnFilterFile()} callback function.
  127.        @return
  128.        Index of new entry in array
  129.      */
  130.     PINDEX AddFileType(
  131.       const PString & type    /// File type to add to set of file types.
  132.     );
  133.    /**Get the array of file types that may be specified for the file dialog.
  134.        The file type array is used to filter out file names unless they have
  135.        a file type within the set. If the set is empty then all files are
  136.        available. They may be subsequently filtered by the
  137.        Ref{OnFilterFile()} callback function.
  138.        @return
  139.        array of file type strings.
  140.      */
  141.     PStringArray GetFileTypes() const;
  142.    /**Set the array of file types that may be specified for the file dialog.
  143.      */
  144.     void SetFileTypes(
  145.       const PStringArray & array
  146.     );
  147.       
  148.    /**Set the file type displayed when dialog is opened
  149.      */
  150.     void SetInitialFileType(
  151.       PINDEX idx
  152.     );
  153.     void SetInitialFileType(
  154.         const PString & str
  155.     );
  156.    /**Get file type that was finally displayed
  157.      */
  158.     PINDEX GetFinalFileType() const;
  159.     BOOL GetFinalFileType(
  160.       PString & str
  161.     ) const;
  162.   /**@name Callback functions */
  163.    /**This is called as the dialog fills the list of files available to be
  164.        selected. An application specific file select dialog may filter out
  165.        files from the list. The default is to display the current file type(s) 
  166.        only.
  167.        Note that the files are pre-filtered with those files that are specified
  168.        in the file types set created with the Ref{AddFileType()} function.
  169.        
  170.        @return
  171.        TRUE if the file is to be included in the list.
  172.      */
  173.     virtual BOOL OnFilterFile(
  174.       const PFilePath & file  /// File to determine if is displayed.
  175.     );
  176.   protected:
  177.     // Member variables
  178.     PStringArray fileTypes;
  179. #ifdef DOC_PLUS_PLUS
  180.     };
  181. #endif
  182. // Class declaration continued in platform specific header file ///////////////