PCL
MessageBox.h
Go to the documentation of this file.
1 // ____ ______ __
2 // / __ \ / ____// /
3 // / /_/ // / / /
4 // / ____// /___ / /___ PixInsight Class Library
5 // /_/ \____//_____/ PCL 2.7.0
6 // ----------------------------------------------------------------------------
7 // pcl/MessageBox.h - Released 2024-06-18T15:48:54Z
8 // ----------------------------------------------------------------------------
9 // This file is part of the PixInsight Class Library (PCL).
10 // PCL is a multiplatform C++ framework for development of PixInsight modules.
11 //
12 // Copyright (c) 2003-2024 Pleiades Astrophoto S.L. All Rights Reserved.
13 //
14 // Redistribution and use in both source and binary forms, with or without
15 // modification, is permitted provided that the following conditions are met:
16 //
17 // 1. All redistributions of source code must retain the above copyright
18 // notice, this list of conditions and the following disclaimer.
19 //
20 // 2. All redistributions in binary form must reproduce the above copyright
21 // notice, this list of conditions and the following disclaimer in the
22 // documentation and/or other materials provided with the distribution.
23 //
24 // 3. Neither the names "PixInsight" and "Pleiades Astrophoto", nor the names
25 // of their contributors, may be used to endorse or promote products derived
26 // from this software without specific prior written permission. For written
27 // permission, please contact info@pixinsight.com.
28 //
29 // 4. All products derived from this software, in any form whatsoever, must
30 // reproduce the following acknowledgment in the end-user documentation
31 // and/or other materials provided with the product:
32 //
33 // "This product is based on software from the PixInsight project, developed
34 // by Pleiades Astrophoto and its contributors (https://pixinsight.com/)."
35 //
36 // Alternatively, if that is where third-party acknowledgments normally
37 // appear, this acknowledgment must be reproduced in the product itself.
38 //
39 // THIS SOFTWARE IS PROVIDED BY PLEIADES ASTROPHOTO AND ITS CONTRIBUTORS
40 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
41 // TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
42 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL PLEIADES ASTROPHOTO OR ITS
43 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
44 // EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, BUSINESS
45 // INTERRUPTION; PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; AND LOSS OF USE,
46 // DATA OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
47 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
48 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
49 // POSSIBILITY OF SUCH DAMAGE.
50 // ----------------------------------------------------------------------------
51 
52 #ifndef __PCL_MessageBox_h
53 #define __PCL_MessageBox_h
54 
56 
57 #include <pcl/Defs.h>
58 
59 #include <pcl/AutoPointer.h>
60 #include <pcl/String.h>
61 
62 #ifndef __PCL_MSGBOX_DONT_REMOVE_PREVIOUS_DECLARATION
63 /*
64  * Remove conflicting identifiers from Win32 SDK headers.
65  *
66  * Unfortunately, MessageBox is #defined as a macro in winuser.h, and this may
67  * cause problems with our code on Windows platforms.
68  *
69  * If for some eccentric reason you really want to use the Win32 API MessageBox
70  * function (why should you?), then call either MessageBoxA() or MessageBoxW().
71  */
72 # ifdef MessageBox
73 # undef MessageBox
74 # endif
75 #endif
76 
77 namespace pcl
78 {
79 
80 // ----------------------------------------------------------------------------
81 
94 namespace StdIcon
95 {
96  enum value_type
97  {
98  NoIcon,
99  Question,
100  Information,
101  Warning,
102  Error,
103 
104  NumberOfStandardIcons
105  };
106 }
107 
108 // ----------------------------------------------------------------------------
109 
127 namespace StdButton
128 {
129  enum value_type
130  {
131  NoButton,
132  Ok,
133  Cancel,
134  Yes,
135  No,
136  Abort,
137  Retry,
138  Ignore,
139  YesToAll,
140  NoToAll,
141 
142  NumberOfStandardButtons
143  };
144 }
145 
146 // ----------------------------------------------------------------------------
147 
148 class MessageBoxPrivate;
149 
161 class PCL_CLASS MessageBox
162 {
163 public:
164 
168  using std_icon = StdIcon::value_type;
169 
173  using std_button = StdButton::value_type;
174 
205  MessageBox( const String& text = String(),
206  const String& caption = String(), // default caption
207  std_icon icon = StdIcon::NoIcon,
208  std_button button0 = StdButton::Ok,
209  std_button button1 = StdButton::NoButton,
210  std_button button2 = StdButton::NoButton,
211  int defaultButtonIdx = 0,
212  int escapeButtonIdx = -1 ); // escape cancels dialog
213 
217  virtual ~MessageBox();
218 
227  std_button Execute();
228 
233  std_button Result() const;
234 
238  String Text() const;
239 
243  void SetText( const String& text );
244 
248  String Caption() const;
249 
253  void SetCaption( const String& text );
254 
258  std_icon Icon() const;
259 
263  void SetIcon( std_icon icon );
264 
268  std_button FirstButton() const;
269 
273  void SetFirstButton( std_button button );
274 
278  std_button SecondButton() const;
279 
283  void SetSecondButton( std_button button );
284 
288  std_button ThirdButton() const;
289 
293  void SetThirdButton( std_button button );
294 
302  int DefaultButtonIndex() const;
303 
308  void SetDefaultButtonIndex( int index );
309 
317  int EscapeButtonIndex() const;
318 
323  void SetEscapeButtonIndex( int index );
324 
325 private:
326 
328 };
329 
330 // ----------------------------------------------------------------------------
331 
332 } // pcl
333 
334 #endif // __PCL_MessageBox_h
335 
336 // ----------------------------------------------------------------------------
337 // EOF pcl/MessageBox.h - Released 2024-06-18T15:48:54Z
High-level interface to a PixInsight MessageBox object.
Definition: MessageBox.h:162
int EscapeButtonIndex() const
void SetEscapeButtonIndex(int index)
std_button FirstButton() const
void SetText(const String &text)
MessageBox(const String &text=String(), const String &caption=String(), std_icon icon=StdIcon::NoIcon, std_button button0=StdButton::Ok, std_button button1=StdButton::NoButton, std_button button2=StdButton::NoButton, int defaultButtonIdx=0, int escapeButtonIdx=-1)
String Text() const
void SetSecondButton(std_button button)
std_button Result() const
std_icon Icon() const
std_button Execute()
void SetIcon(std_icon icon)
String Caption() const
void SetThirdButton(std_button button)
virtual ~MessageBox()
void SetFirstButton(std_button button)
int DefaultButtonIndex() const
void SetCaption(const String &text)
std_button ThirdButton() const
void SetDefaultButtonIndex(int index)
std_button SecondButton() const
Unicode (UTF-16) string.
Definition: String.h:8113
PCL root namespace.
Definition: AbstractImage.h:77