]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - radiant/dialog.h
transfer from internal tree r5311 branches/1.4-gpl
[xonotic/netradiant.git] / radiant / dialog.h
1 /*\r
2 Copyright (C) 1999-2007 id Software, Inc. and contributors.\r
3 For a list of contributors, see the accompanying CONTRIBUTORS file.\r
4 \r
5 This file is part of GtkRadiant.\r
6 \r
7 GtkRadiant is free software; you can redistribute it and/or modify\r
8 it under the terms of the GNU General Public License as published by\r
9 the Free Software Foundation; either version 2 of the License, or\r
10 (at your option) any later version.\r
11 \r
12 GtkRadiant is distributed in the hope that it will be useful,\r
13 but WITHOUT ANY WARRANTY; without even the implied warranty of\r
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
15 GNU General Public License for more details.\r
16 \r
17 You should have received a copy of the GNU General Public License\r
18 along with GtkRadiant; if not, write to the Free Software\r
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
20 */\r
21 \r
22 #ifndef _DIALOG_H_\r
23 #define _DIALOG_H_\r
24 \r
25 #include <gtk/gtk.h>\r
26 #include "str.h"\r
27 #include "gtkmisc.h"\r
28 \r
29 typedef enum\r
30 {\r
31   DLG_CHECK_BOOL,\r
32   DLG_RADIO_INT,\r
33   DLG_ENTRY_TEXT,\r
34   DLG_ENTRY_FLOAT,\r
35   DLG_ENTRY_INT,\r
36   DLG_SPIN_FLOAT,\r
37   DLG_SPIN_INT,\r
38   DLG_ADJ_INT,\r
39   DLG_COMBO_INT\r
40 } DLG_DATA_TYPE;\r
41 \r
42 class Dialog\r
43 {\r
44  public:\r
45   Dialog ();\r
46   virtual ~Dialog ();\r
47 \r
48   /*! \r
49   start modal dialog box\r
50   you need to use AddModalButton to select IDOK IDCANCEL buttons\r
51   */\r
52   int DoModal ();\r
53   void EndModal (int code);\r
54   virtual void BuildDialog () = 0;\r
55   virtual void UpdateData (bool retrieve);\r
56   virtual void PreModal () { };\r
57   virtual void PostModal (int code) { };\r
58   virtual void ShowDlg ();\r
59   virtual void HideDlg ();\r
60   void Create ();\r
61   void Destroy ();\r
62   GtkWidget* GetDlgWidget (const char* name)\r
63     { return GTK_WIDGET (g_object_get_data (G_OBJECT (m_pWidget), name)); }\r
64   GtkWidget* GetWidget ()\r
65     { return m_pWidget; }\r
66 \r
67  protected:\r
68   GtkWidget *m_pWidget;\r
69   int m_nLoop;\r
70   int m_nReturn;\r
71 \r
72   void AddDialogData (GtkWidget *widget, void *buf, DLG_DATA_TYPE type)\r
73     { AddDialogData (GTK_OBJECT (widget), buf, type); };\r
74   void AddDialogData (GtkObject *object, void *buf, DLG_DATA_TYPE type);\r
75   /*!\r
76   used in overloaded BuildDialog implementations to configure modal behaviour easily\r
77   */\r
78   void AddModalButton (GtkWidget *widget, int ret);\r
79 \r
80  private:\r
81   GSList* m_pDataList;\r
82   bool    m_bNeedBuild;\r
83 };\r
84 \r
85 #endif // _DIALOG_H_\r