1 /*
2    Copyright (C) 2002/2004 Kai Sterker <kai.sterker@gmail.com>
3    Part of the Adonthell Project  <http://adonthell.nongnu.org>
4 
5    Dlgedit is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9 
10    Dlgedit is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    You should have received a copy of the GNU General Public License
16    along with Dlgedit.  If not, see <http://www.gnu.org/licenses/>.
17 */
18 
19 /**
20  * @file gui_modal_dialog.h
21  *
22  * @author Kai Sterker
23  * @brief Base class for modal dialog windows
24  */
25 
26 #ifndef GUI_MODAL_DIALOG_H
27 #define GUI_MODAL_DIALOG_H
28 
29 #include <gtk/gtk.h>
30 
31 /**
32  * Encapsulates the most basic functionality a modal/transient dialog window needs.
33  */
34 class GuiModalDialog
35 {
36 public:
37     /**
38      * Initialize the dialog window.
39      * @param p parent of the dialog.
40      * @param m whether the dialog is model or just transient.
41      */
42     GuiModalDialog (GtkWindow *p, const bool & m = true);
43 
44     /*
45      * Destroy the dialog window.
46      */
47     virtual ~GuiModalDialog ();
48 
49     /**
50      * Displays the dialog window and sets it transient for the dlgedit main window.
51      * @return the state of pressedOK. This should be set to <b>true</b> if the dialog
52      * was closed via the OK button. By default it is <b>false</b>.
53      */
54     virtual bool run ();
55     /**
56      * Indicate whether the OK button of the dialog has been pressed.
57      * @param button Set this to <b>true</b> if the OK button has been pressed,
58      * otherwise to <b>false</b>
59      */
okButtonPressed(bool button)60     void okButtonPressed (bool button)  { pressedOK = button; }
61     /**
62      * Get the dialog window.
63      * @return the dialog window.
64      */
getWindow()65     GtkWidget *getWindow ()             { return window; }
66 
67 protected:
68     /// whether the Cancel or OK button has been pushed
69     bool pressedOK;
70     /// whether the dialog is truly modal or merely transient
71     bool modal;
72     /// the dialog window
73     GtkWidget *window;
74     /// parent of the dialog.
75     GtkWindow *parent;
76 };
77 
78 #endif // GUI_MODAL_DIALOG_H
79