GTK+ IOStream  Beta
<< GTK+ >> add C++ IOStream operators to GTK+. Now with extra abilities ... like network serialisation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
MessageDialog.H
Go to the documentation of this file.
1 /* Copyright 2000-2013 Matt Flax <flatmax@flatmax.org>
2  This file is part of GTK+ IOStream class set
3 
4  GTK+ IOStream is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  GTK+ IOStream is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You have received a copy of the GNU General Public License
15  along with GTK+ IOStream
16  */
17 #ifndef MESSAGEDIALOG_H_
18 #define MESSAGEDIALOG_H_
19 
20 #include "Container.H"
21 #include "Pango.H"
22 
32 class MessageDialog : public Container {
33 public:
41  MessageDialog(GtkWidget *parent, GtkDialogFlags flags, GtkMessageType whichType, GtkButtonsType buttonsType, const char *text) {
42  widget=gtk_message_dialog_new(GTK_WINDOW(parent), flags, whichType, buttonsType, "%s", text);
43  }
44 
52  MessageDialog(GtkWidget *parent, GtkDialogFlags flags, GtkMessageType whichType, GtkButtonsType buttonsType, string &text) {
53  widget=gtk_message_dialog_new(GTK_WINDOW(parent), flags, whichType, buttonsType, "%s", text.c_str());
54  }
55 
63  MessageDialog(GtkWidget *parent, GtkDialogFlags flags, GtkMessageType whichType, GtkButtonsType buttonsType, Pango &pango) {
64  widget=gtk_message_dialog_new_with_markup(GTK_WINDOW(parent), flags, whichType, buttonsType, pango.getMarkup().c_str());
65  }
66 
69  virtual ~MessageDialog() {
70  gtk_widget_destroy(widget);
71  }
72 
77  MessageDialog& operator<<(char *str) {
78  return operator<<(string(str));
79  }
80 
85  MessageDialog& operator<<(string str) {
86  Pango pango;
87  pango<<str;
88  return operator<<(pango);
89  }
90 
96  gtk_message_dialog_set_markup(GTK_MESSAGE_DIALOG(widget), pango.getMarkup().c_str());
97  cout<<"created"<<endl;
98  return *this;
99  }
100 
103  void run(void) {
104  gtk_dialog_run(GTK_DIALOG(widget));
105  }
106 
110  void title(char *text) {
111  string t(text);
112  title(t);
113  }
114 
118  void title(string &text) {
119  gtk_window_set_title(GTK_WINDOW(widget), text.c_str());
120  }
121 
122 };
123 
127 class MessageInfo : public MessageDialog {
128 public:
133  MessageInfo(GtkWidget *win, char *text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text) {
134  }
138  MessageInfo(char *text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text) {
139  }
140 
145  MessageInfo(GtkWidget *win, string text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text) {
146  }
150  MessageInfo(string text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, text) {
151  }
152 
157  MessageInfo(GtkWidget *win, Pango &pango) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, pango) {
158  }
159 
163  MessageInfo(Pango &pango) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, pango) {
164  }
165 };
166 
170 class MessageError : public MessageDialog {
171 public:
176  MessageError(GtkWidget *win, char *text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, text) {
177  }
181  MessageError(char *text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, text) {
182  }
187  MessageError(GtkWidget *win, string text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, text) {
188  }
192  MessageError(string text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, text) {
193  }
198  MessageError(GtkWidget *win, Pango &pango) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, pango) {
199  }
203  MessageError(Pango &pango) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, pango) {
204  }
205 };
206 
211 public:
216  MessageQuestion(GtkWidget *win, char *text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text) {
217  }
221  MessageQuestion(char *text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text) {
222  }
227  MessageQuestion(GtkWidget *win, string text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text) {
228  }
232  MessageQuestion(string text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, text) {
233  }
238  MessageQuestion(GtkWidget *win, Pango &pango) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, pango) {
239  }
243  MessageQuestion(Pango &pango) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, pango) {
244  }
245 };
246 
251 public:
256  MessageWarning(GtkWidget *win, string text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, text) {
257  }
261  MessageWarning(string text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, text) {
262  }
267  MessageWarning(GtkWidget *win, char *text) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, text) {
268  }
272  MessageWarning(char *text) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, text) {
273  }
278  MessageWarning(GtkWidget *win, Pango &pango) : MessageDialog(win, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, pango) {
279  }
283  MessageWarning(Pango &pango) : MessageDialog(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, pango) {
284  }
285 };
286 
287 #endif // MESSAGEDIALOG_H_