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

IP电话/视频会议

开发平台:

Visual C++

  1. /*
  2.  * simpdlg.h
  3.  *
  4.  * Simple dialogs.
  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: simpdlg.h,v $
  30.  * Revision 1.22  1999/03/10 03:49:53  robertj
  31.  * More documentation adjustments.
  32.  *
  33.  * Revision 1.21  1999/03/09 08:01:50  robertj
  34.  * Changed comments for doc++ support (more to come).
  35.  *
  36.  * Revision 1.20  1999/02/16 08:08:46  robertj
  37.  * MSVC 6.0 compatibility changes.
  38.  *
  39.  * Revision 1.19  1998/09/23 06:29:03  robertj
  40.  * Added open source copyright license.
  41.  *
  42.  * Revision 1.18  1995/06/17 11:13:22  robertj
  43.  * Documentation update.
  44.  *
  45.  * Revision 1.17  1995/03/14 12:42:37  robertj
  46.  * Updated documentation to use HTML codes.
  47.  *
  48.  * Revision 1.16  1995/01/16  09:42:03  robertj
  49.  * Documentation.
  50.  *
  51.  * Revision 1.15  1995/01/15  04:53:07  robertj
  52.  * Fixed problems with stdarg and PString parameter on GNU compiler.
  53.  *
  54.  * Revision 1.14  1995/01/10  11:44:10  robertj
  55.  * Removed PString parameter in stdarg function for GNU C++ compatibility.
  56.  *
  57.  * Revision 1.13  1994/10/30  11:47:07  robertj
  58.  * Changed mechanism for doing notification callback functions.
  59.  *
  60.  * Revision 1.12  1994/08/23  11:32:52  robertj
  61.  * Oops
  62.  *
  63.  * Revision 1.11  1994/08/22  00:46:48  robertj
  64.  * Added pragma fro GNU C++ compiler.
  65.  *
  66.  * Revision 1.10  1994/08/21  23:43:02  robertj
  67.  * Changed parameter before variable argument list to NOT be a reference.
  68.  *
  69.  * Revision 1.9  1994/07/27  05:58:07  robertj
  70.  * Synchronisation.
  71.  *
  72.  * Revision 1.8  1994/06/25  11:55:15  robertj
  73.  * Unix version synchronisation.
  74.  *
  75.  * Revision 1.7  1994/03/07  07:38:19  robertj
  76.  * Major enhancementsacross the board.
  77.  *
  78.  * Revision 1.6  1994/01/03  04:42:23  robertj
  79.  * Mass changes to common container classes and interactors etc etc etc.
  80.  *
  81.  * Revision 1.5  1993/12/06  22:36:12  robertj
  82.  * Fixed problem with unimplemented icons.
  83.  *
  84.  * Revision 1.4  1993/12/01  16:09:05  robertj
  85.  * Windows NT port.
  86.  *
  87.  * Revision 1.3  1993/10/16  20:33:20  robertj
  88.  * Changed ButtonPressed variable name for X-Windows compatibility.
  89.  * Added protection for not having static icons yet.
  90.  *
  91.  * Revision 1.2  1993/07/14  12:49:16  robertj
  92.  * Fixed RCS keywords.
  93.  *
  94.  */
  95. #define _PSIMPLEDIALOG
  96. #ifdef __GNUC__
  97. #pragma interface
  98. #endif
  99. #include "stdresid.h"
  100. /**A class for displaying a simple, standard dialog for presenting short
  101.    messages and asking simple questions.
  102.    
  103.    A simple dialog consists of a static text item, an optional icon and up to
  104.    three buttons with fixed names. What combination of icons and buttons is
  105.    determined in the constructor parameters.
  106.    
  107.    Even though a PSimpleDialog object can be created and treated in the same
  108.    way as any other modal dialog, it is more usual to use one of the static
  109.    functions provided. For example to ask a simple yes or not question the
  110.    Ref{PSimpleDialog::YesNo()} function would be used.
  111.    
  112.    The value returned by the Ref{PModalDialog::RunModal()} function indicates
  113.    which button was pressed to terminate the modal dialog.
  114.  */
  115. class PSimpleDialog : public PModalDialog
  116. {
  117.   PCLASSINFO(PSimpleDialog, PModalDialog);
  118.   public:
  119.     /** Icon selection options for PSimpleDialog constructor. */
  120.     enum IconToShow {
  121.       /// Do not display an icon.
  122.       NoIcon,           
  123.      /**Display system standard information (asterisk) icon. This is used
  124.          when the message presented is not very important.
  125.        */
  126.       InformationIcon,
  127.      /**Display system standard question mark icon. This is usually used when
  128.          the simple dialog requires a decision to be made by the user.
  129.        */
  130.       QuestionIcon,
  131.      /**Display system standard exclamation mark icon. This is used when the
  132.          message is important, for example when an error occurs.
  133.        */
  134.       ExclamationIcon,
  135.      /**Display system standard stop sign icon. This is used when the message
  136.          is {bf very} important. For example when a fatal error that will
  137.          terminate the application occurs.
  138.        */
  139.       StopSignIcon
  140.     };
  141.     /** Button selection options for PSimpleDialog constructor. */
  142.     enum ButtonsToHave {
  143.       /// Only display the "Ok" button.
  144.       OkBtn,              
  145.       /// Display the "Ok" and "Cancel" buttons.
  146.       OkCancelBtn,        
  147.       /// Display the "Retry" and "Cancel" buttons.
  148.       RetryCancelBtn,     
  149.       /// Display the "Yes" and "No" buttons.
  150.       YesNoBtn,           
  151.       /// Display the "Yes", "No" and "Cancel" buttons.
  152.       YesNoCancelBtn,     
  153.       /// Display the "Abort", "Retry" and "Ignore" buttons.
  154.       AbortRetryIgnoreBtn 
  155.     };
  156.     /** Return values for Ref{PModalDialog::RunModal()} function. */
  157.     enum ButtonType {
  158.       /// Dialog was terminated by pressing the "Ok" button.
  159.       WasOk,      
  160.       /// Dialog was terminated by pressing the "Cancel" button.
  161.       WasCancel,  
  162.       /// Dialog was terminated by pressing the "Retry" button.
  163.       WasRetry,   
  164.       /// Dialog was terminated by pressing the "Yes" button.
  165.       WasYes,     
  166.       /// Dialog was terminated by pressing the "No" button.
  167.       WasNo,      
  168.       /// Dialog was terminated by pressing the "Abort" button.
  169.       WasAbort,   
  170.       /// Dialog was terminated by pressing the "Ignore" button.
  171.       WasIgnore   
  172.     };
  173.    /**Create a simple dialog for quick and easy user interface messages and
  174.        questions.
  175.        
  176.        The default title for the dialog is as for the ultimate
  177.        Ref{PTopLevelWindow} parent interactor.
  178.      */
  179.     PSimpleDialog(
  180.       PInteractor * parent,       /// Parent interactor for modal dialog.
  181.       const PString & str,        /// Message to display in static text control.
  182.       ButtonsToHave btns = OkBtn, /// Which buttons to display.
  183.       IconToShow icn = NoIcon     /// Which icon, if any, to display.
  184.     );
  185.   /**@name New functions for class */
  186.    /**Display the simple dialog using the information icon and the "Ok"
  187.        button only.
  188.        
  189.        The message text may be printf style formatted output unless a
  190.        Ref{PString} expression is used. Then the exact string is used in the
  191.        static text control.
  192.      */
  193.     static void Info(
  194.       PInteractor * parent, /// Parent interactor for modal dialog.
  195.       PRESOURCE_ID resID,
  196.       /// Unique id for resource string to be used a printf style format string.
  197.       ...
  198.     );
  199.     static void Info(
  200.       PInteractor * parent, /// Parent interactor for modal dialog.
  201.       const char * fmt,     /// Printf style format string.
  202.       ...
  203.     );
  204.     static void Info(
  205.       PInteractor * parent, /// Parent interactor for modal dialog.
  206.       const PString & str   /// Message string to place in static text control.
  207.     );
  208.    /**Display the simple dialog using the exclamation mark icon and the "Ok"
  209.        button only.
  210.        
  211.        The message text may be printf style formatted output unless a
  212.        Ref{PString} expression is used. Then the exact string is used in the
  213.        static text control.
  214.      */
  215.     static void Error(
  216.       PInteractor * parent, /// Parent interactor for modal dialog.
  217.       PRESOURCE_ID resID,
  218.       /// Unique id for resource string to be used a printf style format string.
  219.       ...
  220.     );
  221.     static void Error(
  222.       PInteractor * parent, /// Parent interactor for modal dialog.
  223.       const char * fmt,     /// Printf style format string.
  224.       ...
  225.     );
  226.     static void Error(
  227.       PInteractor * parent, /// Parent interactor for modal dialog.
  228.       const PString & str   /// Message string to place in static text control.
  229.     );
  230.    /**Display the simple dialog using the stop sign icon and the "Ok" button
  231.        only.
  232.        
  233.        The message text may be printf style formatted output unless a
  234.        Ref{PString} expression is used. Then the exact string is used in the
  235.        static text control.
  236.      */
  237.     static void FatalError(
  238.       PInteractor * parent, /// Parent interactor for modal dialog.
  239.       PRESOURCE_ID resID,
  240.       /// Unique id for resource string to be used a printf style format string.
  241.       ...
  242.     );
  243.     static void FatalError(
  244.       PInteractor * parent, /// Parent interactor for modal dialog.
  245.       const char * fmt,     /// Printf style format string.
  246.       ...
  247.     );
  248.     static void FatalError(
  249.       PInteractor * parent, /// Parent interactor for modal dialog.
  250.       const PString & str   /// Message string to place in static text control.
  251.     );
  252.    /**Display the simple dialog using the question mark icon and the "Ok" and
  253.        "Cancel" buttons.
  254.        
  255.        The message text may be printf style formatted output unless a
  256.        Ref{PString} expression is used. Then the exact string is used in the
  257.        static text control.
  258.      */
  259.     static BOOL OkCancel(
  260.       PInteractor * parent, /// Parent interactor for modal dialog.
  261.       PRESOURCE_ID resID,
  262.       /// Unique id for resource string to be used a printf style format string.
  263.       ...
  264.     );
  265.     static BOOL OkCancel(
  266.       PInteractor * parent, /// Parent interactor for modal dialog.
  267.       const char * fmt,     /// Printf style format string.
  268.       ...
  269.     );
  270.     static BOOL OkCancel(
  271.       PInteractor * parent, /// Parent interactor for modal dialog.
  272.       const PString & str   /// Message string to place in static text control.
  273.     );
  274.     
  275.    /**Display the simple dialog using the question mark icon and the "Yes"
  276.        and "No" buttons.
  277.        
  278.        The message text may be printf style formatted output unless a
  279.        Ref{PString} expression is used. Then the exact string is used in the
  280.        static text control.
  281.      */
  282.     static BOOL YesNo(
  283.       PInteractor * parent, /// Parent interactor for modal dialog.
  284.       PRESOURCE_ID resID,
  285.       /// Unique id for resource string to be used a printf style format string.
  286.       ...
  287.     );
  288.     static BOOL YesNo(
  289.       PInteractor * parent, /// Parent interactor for modal dialog.
  290.       const char * fmt,     /// Printf style format string.
  291.       ...
  292.     );
  293.     static BOOL YesNo(
  294.       PInteractor * parent, /// Parent interactor for modal dialog.
  295.       const PString & str   /// Message string to place in static text control.
  296.     );
  297.    /**Display the simple dialog using the question mark icon and the "Yes",
  298.        "No" and "Cancel" buttons.
  299.        
  300.        The message text may be printf style formatted output unless a
  301.        Ref{PString} expression is used. Then the exact string is used in the
  302.        static text control.
  303.      */
  304.     static ButtonType YesNoCancel(
  305.       PInteractor * parent, /// Parent interactor for modal dialog.
  306.       PRESOURCE_ID resID,
  307.       /// Unique id for resource string to be used a printf style format string.
  308.       ...
  309.     );
  310.     static ButtonType YesNoCancel(
  311.       PInteractor * parent, /// Parent interactor for modal dialog.
  312.       const char * fmt,     /// Printf style format string.
  313.       ...
  314.     );
  315.     static ButtonType YesNoCancel(
  316.       PInteractor * parent, /// Parent interactor for modal dialog.
  317.       const PString & str   /// Message string to place in static text control.
  318.     );
  319.    /**Display the simple dialog using the exclamation icon and the "Abort",
  320.        "Retry" and "Ignore" buttons.
  321.        
  322.        The message text may be printf style formatted output unless a
  323.        Ref{PString} expression is used. Then the exact string is used in the
  324.        static text control.
  325.      */
  326.     static ButtonType AbortRetryIgnore(
  327.       PInteractor * parent, /// Parent interactor for modal dialog.
  328.       PRESOURCE_ID resID,
  329.       /// Unique id for resource string to be used a printf style format string.
  330.       ...
  331.     );
  332.     static ButtonType AbortRetryIgnore(
  333.       PInteractor * parent, /// Parent interactor for modal dialog.
  334.       const char * fmt,     /// Printf style format string.
  335.       ...
  336.     );
  337.     static ButtonType AbortRetryIgnore(
  338.       PInteractor * parent, /// Parent interactor for modal dialog.
  339.       const PString & str   /// Message string to place in static text control.
  340.     );
  341.   protected:
  342.     /**@name Member variables */
  343.     /** Static text control for message. */
  344.     PStaticText * text;
  345.     /** Static icon control for icon specified in constructor. */
  346.     PStaticIcon * icon;
  347.     /** First button, may be "Ok", "Yes" or "Abort". */
  348.     PPushButton * btn1;
  349.     /** Second button, may be "Cancel", "No" or "Retry". */
  350.     PPushButton * btn2;
  351.     /** Third button, may be "Cancel" or "Ignore". */
  352.     PPushButton * btn3;
  353.     /** Value to return if button 1 is pressed, eg #WasOK#. */
  354.     ButtonType btn1val;
  355.     /** Value to return if button 2 is pressed, eg #WasCancel#. */
  356.     ButtonType btn2val;
  357.     /** Value to return if button 3 is pressed, eg #WasIgnore#. */
  358.     ButtonType btn3val;
  359.     PDECLARE_NOTIFIER(PPushButton, PSimpleDialog, DoButtonPress);
  360.     /* Called by any of the three button controls. */
  361.   private:
  362.     static ButtonType DoSimple(
  363.       PInteractor * parent, // Parent interactor for modal dialog.
  364.       PRESOURCE_ID resID,
  365.       // Unique id for resource string to be used a printf style format string.
  366.       ButtonsToHave btns,   // Which buttons to display.
  367.       IconToShow icn,       // Which icon, if any, to display.
  368.       va_list arg           // Arguments from stdarg variable argument list.
  369.     );
  370.     static ButtonType DoSimple(
  371.       PInteractor * parent, // Parent interactor for modal dialog.
  372.       const char * fmt,     // Printf style format string.
  373.       ButtonsToHave btns,   // Which buttons to display.
  374.       IconToShow icn,       // Which icon, if any, to display.
  375.       va_list arg           // Arguments from stdarg variable argument list.
  376.     );
  377.     static ButtonType DoSimple(
  378.       PInteractor * parent, // Parent interactor for modal dialog.
  379.       const PString & str,  // Printf style format string.
  380.       ButtonsToHave btns,   // Which buttons to display.
  381.       IconToShow icn        // Which icon, if any, to display.
  382.     );
  383.     // Common code for all of the simple dialog static functions.
  384. #ifdef DOC_PLUS_PLUS
  385. };
  386. #endif
  387. // Class declaration continued in platform specific header file ///////////////