1 // -*- C++ -*-
2 
3 /*
4  * Gnome Chemistry Utils
5  * gcugtk/message.h
6  *
7  * Copyright (C) 2010-2011 Jean Bréfort <jean.brefort@normalesup.org>
8  *
9  * This program is free software; you can redistribute it and/or
10  * modify it under the terms of the GNU General Public License as
11  * published by the Free Software Foundation; either version 3 of the
12  * License, or (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
22  * USA
23  */
24 
25 #ifndef GCU_GTK_MESSAGE_H
26 #define GCU_GTK_MESSAGE_H
27 
28 #include <gtk/gtk.h>
29 #include <string>
30 
31 /*!\file*/
32 namespace gcugtk {
33 
34 class Application;
35 
36 /*!\class Message gcugtk/message.h
37 @brief Message box.
38 
39 This class implements a wrapper around GtkMessageDialog.
40 */
41 class Message {
42 friend class MessagePrivate;
43 public:
44 /*!
45 @param app the Application owning the message box.
46 @param message the text displayed inside the message box.
47 @param type the message box type.
48 @param buttons the buttons to display.
49 @param parent the parent window.
50 @param modal whether the message should be a modal dialog.
51 
52 Contructs a new message box.
53 */
54 	Message (Application *app, std::string &message, GtkMessageType type, GtkButtonsType buttons, GtkWindow *parent = NULL, bool modal = false);
55 /*!
56 @param app the Application owning the message box.
57 @param message the text displayed inside the message box.
58 @param type the message box type.
59 @param buttons the buttons to display.
60 @param parent the parent window.
61 @param modal whether the message should be a modal dialog.
62 
63 Contructs a new message box.
64 */
65 	Message (Application *app, char const *message, GtkMessageType type, GtkButtonsType buttons, GtkWindow *parent = NULL, bool modal = false);
66 /*!
67 The destructor.
68 */
69 	virtual ~Message ();
70 
71 /*!
72 Runs the modal message box.
73 @return the response from the dialog.
74 */
75 	int Run ();
76 /*!
77 Displays a non modal message box.
78 */
79 	void Show ();
80 
81 private:
82 	unsigned m_delete_sgn, m_destroy_sgn, m_response_sgn;
83 
84 /*!\fn GetWindow()
85 @return the embedded GtkDialog instance.
86 */
87 GCU_RO_PROP (GtkDialog *, Window)
88 };
89 
90 }
91 
92 #endif	//	GCU_GTK_MESSAGE_H
93