00001
00002 #ifndef vgui_dialog_impl_h_
00003 #define vgui_dialog_impl_h_
00004 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00005 #pragma interface
00006 #endif
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <vcl_string.h>
00027 #include <vcl_vector.h>
00028 #include <vgui/vgui_tableau.h>
00029 #include <vgui/vgui_command_sptr.h>
00030
00031 class vgui_dialog_field;
00032
00033
00034
00035
00036
00037
00038
00039
00040 class vgui_dialog_impl
00041 {
00042 public:
00043
00044 vgui_dialog_impl(const char* dialog_name);
00045
00046
00047 virtual ~vgui_dialog_impl();
00048
00049
00050 void bool_field(const char*, bool&);
00051
00052
00053 void int_field(const char*, int&);
00054
00055
00056 void long_field(const char*, long&);
00057
00058
00059 void float_field(const char*, float&);
00060
00061
00062 void double_field(const char*, double&);
00063
00064
00065 void string_field(const char*, vcl_string&);
00066
00067
00068 void choice_field(const char*, const vcl_vector<vcl_string>&, int&);
00069
00070
00071 void text_message(const char*);
00072
00073
00074 void file_browser(const char*, vcl_string&, vcl_string&);
00075
00076
00077 void inline_file_browser(const char *, vcl_string&, vcl_string&);
00078
00079
00080 void color_chooser(const char*, vcl_string&);
00081
00082
00083 void inline_color_chooser(const char*, vcl_string&);
00084
00085
00086 void inline_tab(const vgui_tableau_sptr tab, unsigned width, unsigned height);
00087
00088
00089 void line_break();
00090
00091
00092 void pushbutton_field(vgui_command_sptr cmnd, const char* label, const void* icon);
00093
00094
00095 virtual void* bool_field_widget(const char*, bool&);
00096
00097
00098 virtual void* int_field_widget(const char*, int&);
00099
00100
00101 virtual void* long_field_widget(const char*, long&);
00102
00103
00104 virtual void* float_field_widget(const char*, float&);
00105
00106
00107 virtual void* double_field_widget(const char*, double&);
00108
00109
00110 virtual void* string_field_widget(const char*, vcl_string&);
00111
00112
00113 virtual void* choice_field_widget(const char*, const vcl_vector<vcl_string>&, int&);
00114
00115
00116 virtual void* text_message_widget(const char*);
00117
00118
00119 virtual void* file_browser_widget(const char*, vcl_string&, vcl_string&);
00120
00121
00122 virtual void* inline_file_browser_widget(const char *,vcl_string&, vcl_string&);
00123
00124
00125 virtual void* color_chooser_widget(const char*, vcl_string&);
00126
00127
00128 virtual void* inline_color_chooser_widget(const char *,vcl_string&);
00129
00130
00131 virtual void* inline_tableau_widget(const vgui_tableau_sptr tab, unsigned width, unsigned height);
00132
00133
00134 virtual void* pushbutton_field_widget(const char*, const void*);
00135
00136
00137
00138
00139
00140 virtual void modal(bool);
00141
00142
00143 virtual void set_cancel_button(const char* msg) { cancel_button_text_ = msg ? msg : ""; }
00144
00145
00146 virtual void set_ok_button(const char* msg) { ok_button_text_ = msg?msg:""; }
00147
00148
00149 virtual bool ask() = 0;
00150
00151
00152 enum element_type {bool_elem, int_elem, long_elem, float_elem,
00153 double_elem, string_elem, choice_elem, text_msg,
00154 file_bsr, color_csr,inline_file_bsr,inline_color_csr,
00155 inline_tabl, dir_bsr, line_br, button_elem, unknown};
00156
00157
00158
00159
00160 struct element
00161 {
00162
00163 element_type type;
00164
00165
00166
00167
00168
00169
00170
00171 void *widget;
00172
00173
00174 vgui_dialog_field *field;
00175
00176 element() : type(unknown), widget(0), field(0) {}
00177 };
00178
00179 protected:
00180 vcl_string name;
00181 vcl_vector<element> elements;
00182 vcl_string cancel_button_text_;
00183 vcl_string ok_button_text_;
00184
00185 bool use_line_break;
00186 };
00187
00188 #endif // vgui_dialog_impl_h_