00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef __EDELIB_MESSAGEBOX_H__
00022 #define __EDELIB_MESSAGEBOX_H__
00023
00024 #include "edelib-global.h"
00025
00026 #include <FL/Fl_Window.H>
00027 #include <FL/Fl_Button.H>
00028 #include <FL/Fl_Box.H>
00029 #include <FL/Fl_Input.H>
00030 #include <FL/Fl_Pixmap.H>
00031
00032 #define MSGBOX_MAX_BUTTONS 4 // Max buttons in dialog
00033
00034 #define MSGBOX_ICON_ERROR "dialog-error"
00035 #define MSGBOX_ICON_INFO "dialog-information"
00036 #define MSGBOX_ICON_PASSWORD "dialog-password"
00037 #define MSGBOX_ICON_WARNING "dialog-warning"
00038 #define MSGBOX_ICON_QUESTION "dialog-question"
00039
00040 EDELIB_NS_BEGIN
00041
00047 enum MessageBoxType {
00048 MSGBOX_PLAIN = 0,
00049 MSGBOX_INPUT,
00050 MSGBOX_INPUT_SECRET
00051 };
00052
00058 enum MessageBoxButtonType {
00059 MSGBOX_BUTTON_PLAIN = 0,
00060 MSGBOX_BUTTON_RETURN
00061 };
00062
00068 enum MessageBoxIconType {
00069 MSGBOX_ICON_TYPE_INFO = 0,
00070 MSGBOX_ICON_TYPE_ALERT,
00071 MSGBOX_ICON_TYPE_QUESTION,
00072 MSGBOX_ICON_TYPE_INPUT,
00073 MSGBOX_ICON_TYPE_PASSWORD
00074 };
00075
00196 class EDELIB_API MessageBox : public Fl_Window {
00197 private:
00198 Fl_Box* img;
00199 Fl_Box* txt;
00200 Fl_Input* inpt;
00201 Fl_Group* gr;
00202 Fl_Pixmap* pix;
00203
00204 MessageBoxType mbt;
00205
00206 int nbuttons;
00207 int b_start;
00208 Fl_Button* buttons[MSGBOX_MAX_BUTTONS];
00209
00210 void init(void);
00211 void fix_sizes(void);
00212
00213 void add(Fl_Widget*) { }
00214
00215 public:
00220 MessageBox(MessageBoxType t = MSGBOX_PLAIN);
00221
00225 ~MessageBox();
00226
00231 void set_text(const char* t);
00232
00238 bool set_icon(const char* path);
00239
00246 bool set_theme_icon(const char* name);
00247
00251 void set_xpm_icon(const char* const* arr);
00252
00257 void set_icon_from_type(MessageBoxIconType type);
00258
00267 const char* get_input(void);
00268
00272 void set_input(const char* txt);
00273
00277 void focus_button(int b);
00278
00284 void add_button(Fl_Button* b, MessageBoxButtonType bt = MSGBOX_BUTTON_PLAIN);
00285
00293 void add_button(const char* l, MessageBoxButtonType bt = MSGBOX_BUTTON_PLAIN, Fl_Callback cb = 0, void* param = 0);
00294
00299 void clear(MessageBoxType t = MSGBOX_PLAIN);
00300
00305 void run_plain(bool center = true);
00306
00314 int run(bool center = true);
00315
00324 static void set_themed_icons(const char* msg, const char* alert = 0, const char* ask = 0,
00325 const char* input = 0, const char* password = 0);
00326
00328 static void clear_themed_icons(void);
00329 };
00330
00341 EDELIB_API void themed_dialog_icons(const char* msg, const char* alert = 0,
00342 const char* ask = 0, const char* input = 0, const char* password = 0) EDELIB_DEPRECATED;
00343
00349 EDELIB_API void clear_dialog_icons(void) EDELIB_DEPRECATED;
00350
00355 EDELIB_API void message(const char* fmt, ...);
00356
00361 EDELIB_API void alert(const char* fmt, ...);
00362
00368 EDELIB_API int ask(const char* fmt, ...);
00369
00380 EDELIB_API const char* input(const char* fmt, const char* deflt = 0, ...);
00381
00386 EDELIB_API const char* password(const char* fmt, const char* deflt = 0, ...);
00387
00388 #ifndef SKIP_DOCS
00389
00390
00391
00392 extern void (*fl_message)(const char* fmt, ...);
00393 extern void (*fl_alert)(const char* fmt, ...);
00394 extern int (*fl_ask)(const char* fmt, ...);
00395 extern const char* (*fl_input)(const char* fmt, const char* deflt, ...);
00396 extern const char* (*fl_password)(const char* fmt, const char* deflt, ...);
00397 #endif
00398
00399 EDELIB_NS_END
00400 #endif