00001
00047 #ifndef INC_MI32_MDLG_H
00048 #define INC_MI32_MDLG_H
00049
00050 #ifndef INC_MI32_MISTRING_H
00051 #include <mi32/mistring.h>
00052 #endif
00053
00054 #ifdef WIN32
00055 #pragma warning (disable:4996) // Disable warning about deprecated declaration within header
00056 #endif
00057
00058 #ifndef GENERATING_DOXYGEN_OUTPUT
00059
00060 class ERRORSTATE;
00061 class FILEPATH;
00062 class FILEPATHLIST;
00063 class GETSTRINGFILTER;
00064 #endif // GENERATING_DOXYGEN_OUTPUT
00065
00066
00067
00069 class GETFILEFILTER {
00070 public:
00071
00073 GETFILEFILTER (
00074 ) { }
00075
00077 virtual ~GETFILEFILTER (
00078 ) { }
00079
00082 virtual bool OnSelection (
00083 const FILEPATH& path
00084 ) = 0;
00085
00087 void SetFilterMsg (
00088 const char *msgkey
00089 );
00090
00092 void SetFilterMsg (
00093 const MIUNICODE* string
00094 );
00095
00096 private:
00097 #ifndef GENERATING_DOXYGEN_OUTPUT
00098 MISTRING m_msgstr;
00099
00100 GETFILEFILTER (const GETFILEFILTER&);
00101 GETFILEFILTER& operator= (const GETFILEFILTER&);
00102 #endif // GENERATING_DOXYGEN_OUTPUT
00103 };
00104
00105
00106
00107
00108
00109 typedef int (*MdlgGetFilesValidMultiProto) (const FILEPATHLIST& list, void*, char*);
00110 typedef int (*MdlgGetFileFilterProto) (MIUNICODE*, char*, void*);
00111
00112
00113 #define FILT_NotUsable 0
00114 #define FILT_NotSelectable FILT_NotUsable
00115 #define FILT_Usable 1
00116 #define FILT_Selectable FILT_Usable
00117 #define FILT_FolderUsable 5
00118
00119 enum GETFILEFLAGS {
00120 GETFILEFLAG_None = 0,
00121 GETFILEFLAG_NewOK = 0x00000001,
00122 GETFILEFLAG_DftNew = 0x00000002,
00123 GETFILEFLAG_SkipOK = 0x00000004,
00124 GETFILEFLAG_OnlyNew = 0x00000008,
00125 GETFILEFLAG_MakeNew = 0x00000010,
00126 GETFILEFLAG_FilterByExtn = 0x00000400,
00127 GETFILEFLAG_SkipNone = 0x00002000,
00128 GETFILEFLAG_AllowFewer = 0x00004000,
00129 GETFILEFLAG_AllowAutoName = 0x00008000,
00130 GETFILEFLAG_SelectDir = 0x00020000,
00131 GETFILEFLAG_AllowDefault = 0x00080000,
00132 GETFILEFLAG_AllowAllFiles = 0x00100000,
00133 GETFILEFLAG_SelectFileOrDir = 0x00200000,
00134 };
00135 #ifndef GENERATING_DOXYGEN_OUTPUT
00136 DEFINE_ENUM_OP_BITWISE(GETFILEFLAGS)
00137 #endif
00138
00139
00140
00141
00144
00146 DEPRECATED int MdlgGetFile (
00147 MDLGPARENT dlgparent,
00148 FILEPATH& filename,
00149 const char *extns,
00150 const MISTRING& prompt,
00151 MdlgGetFileFilterProto filterfunc = 0,
00152 void *funcdata = 0,
00153 GETFILEFLAGS flags = GETFILEFLAG_None
00154 );
00155
00157 DEPRECATED int MdlgGetFile (
00158 MDLGPARENT dlgparent,
00159 FILEPATH& filename,
00160 const MISTRING& extns,
00161 const MISTRING& prompt,
00162 MdlgGetFileFilterProto filterfunc = 0,
00163 void *funcdata = 0,
00164 GETFILEFLAGS flags = GETFILEFLAG_None
00165 );
00166
00168 DEPRECATED int MdlgGetFiles (
00169 MDLGPARENT dlgparent,
00170 FILEPATH& filename,
00171 const char *extns,
00172 const MISTRING& prompt,
00173 int minfiles,
00174 int maxfiles,
00175 FILEPATHLIST& FileList,
00176 MdlgGetFileFilterProto filterfunc = 0,
00177 void *funcdata = 0,
00178 GETFILEFLAGS flags = GETFILEFLAG_None,
00179 MdlgGetFilesValidMultiProto validfunc = 0
00180 );
00181
00182 #ifndef NODLLLINKAGE // Can't default mistring to textid with nodlllinkage
00184 ERRVALUE MdlgGetFileComponentName (
00185 MDLGPARENT parent,
00186 const MISTRING& title,
00187 const FILEPATH& ParentDirectory,
00188 MISTRING& ComponentName,
00189 const MISTRING& Extension = TEXTID__None,
00190 const MISTRING& label = TEXTID__None
00191 );
00192 #endif
00193
00195
00196
00197
00198
00199
00200 class GETFOLDERFILTER : public GETFILEFILTER {
00201 public:
00202 GETFOLDERFILTER () {}
00203 private:
00204 GETFOLDERFILTER (const GETFOLDERFILTER&);
00205 GETFOLDERFILTER& operator= (const GETFOLDERFILTER&);
00206 };
00207
00209 enum GETFOLDERFLAGS {
00210 GETFOLDERFLAG_None = 0,
00211 GETFOLDERFLAG_AllowNew = 0x0001,
00212 GETFOLDERFLAG_CheckWritable = 0x0002,
00213 GETFOLDERFLAG_CheckEmpty = 0x0004,
00214 };
00215 #ifndef GENERATING_DOXYGEN_OUTPUT
00216 DEFINE_ENUM_OP_BITWISE(GETFOLDERFLAGS)
00217 #endif
00218
00219
00222
00224 ERRVALUE MdlgGetFolder (
00225 MDLGPARENT dlgparent,
00226 FILEPATH& filepath,
00227 const MISTRING& promptstr,
00228 GETFOLDERFLAGS flags = GETFOLDERFLAG_None,
00229 GETFOLDERFILTER *filter = 0
00230 );
00231
00233
00234
00235
00236
00237
00238
00239 enum MDLG_MESSAGEFLAGS {
00240 MDLG_MESSAGEFLAG_None = 0,
00241 MDLG_MESSAGEFLAG_AllowNoShowAgain = 0x00000001,
00242 MDLG_MESSAGEFLAG_AllowSaveText = 0x00000002,
00243 MDLG_MESSAGEFLAG_CenterDialog = 0x00000004,
00244 MDLG_MESSAGEFLAG_NoCancel = 0x00000100,
00245 MDLG_MESSAGEFLAG_AllowCancel = 0x00000200,
00246 MDLG_MESSAGEFLAG_NoOK = 0x00000400,
00247 MDLG_MESSAGEFLAG_ContinueButton = 0x00800000,
00248 MDLG_MESSAGEFLAG_RetryButton = 0x01000000,
00249 MDLG_MESSAGEFLAG_TraceButton = 0x02000000,
00250 };
00251 #ifndef GENERATING_DOXYGEN_OUTPUT
00252 DEFINE_ENUM_OP_BITWISE(MDLG_MESSAGEFLAGS)
00253 #endif
00254
00255
00257 enum MDLG_MESSAGETYPE {
00258 MDLG_MESSAGETYPE_Default = 0,
00259 MDLG_MESSAGETYPE_Information = 1,
00260 MDLG_MESSAGETYPE_Warning = 2,
00261 MDLG_MESSAGETYPE_Error = 3,
00262 MDLG_MESSAGETYPE_Message = 4,
00263 MDLG_MESSAGETYPE_Working = 5,
00264 MDLG_MESSAGETYPE_Question = 6,
00265 };
00266
00267
00268
00269
00270 typedef int (*MESSAGEHOOKFUNC)(void* cbdata, MDLG_MESSAGETYPE msgtype, const MISTRING& msg, const MIUNICODE* details);
00271
00272
00273
00275 enum DLGQ_STYLE {
00277 DLGQ_BUTTON_Ok = 0x00000001,
00278 DLGQ_BUTTON_Yes = 0x00000002,
00279 DLGQ_BUTTON_No = 0x00000004,
00280 DLGQ_BUTTON_Retry = 0x00000008,
00281 DLGQ_BUTTON_Save = 0x00000010,
00282 DLGQ_BUTTON_SaveAs = 0x00000020,
00283 DLGQ_BUTTON_SaveAll = 0x00000040,
00284 DLGQ_BUTTON_Discard = 0x00000080,
00285 DLGQ_BUTTON_DiscardAll = 0x00000100,
00286 DLGQ_BUTTON_Skip = 0x00000200,
00287 DLGQ_BUTTON_Continue = 0x00000400,
00288 DLGQ_BUTTON_YesToAll = 0x00000800,
00289 DLGQ_BUTTON_NoToAll = 0x00001000,
00290
00291 DLGQ_BUTTON_Cancel = 0x00010000,
00292
00294 DLGQ_BUTTONS_OkCancel = DLGQ_BUTTON_Ok | DLGQ_BUTTON_Cancel,
00295 DLGQ_BUTTONS_YesNo = DLGQ_BUTTON_Yes | DLGQ_BUTTON_No,
00296 DLGQ_BUTTONS_YesNoCancel = DLGQ_BUTTON_Yes | DLGQ_BUTTON_No | DLGQ_BUTTON_Cancel,
00297 DLGQ_BUTTONS_RetryCancel = DLGQ_BUTTON_Retry | DLGQ_BUTTON_Cancel,
00298 DLGQ_BUTTONS_SaveDiscardCancel = DLGQ_BUTTON_Save | DLGQ_BUTTON_Discard | DLGQ_BUTTON_Cancel,
00299 DLGQ_BUTTONS_ContinueCancel = DLGQ_BUTTON_Continue | DLGQ_BUTTON_Cancel,
00300
00301 DLGQ_STYLE_CenterText = 0x10000000
00302 };
00303 #ifndef GENERATING_DOXYGEN_OUTPUT
00304 DEFINE_ENUM_OP_BITWISE(DLGQ_STYLE)
00305 #endif
00306
00308 enum DLGRESPONSE {
00309 DLGRESPONSE_Cancel = -1000,
00310 DLGRESPONSE_No = 0,
00311 DLGRESPONSE_Ok = 1,
00312 DLGRESPONSE_Yes = DLGRESPONSE_Ok,
00313 DLGRESPONSE_Continue = DLGRESPONSE_Ok,
00314 DLGRESPONSE_Save = 2,
00315 DLGRESPONSE_SaveAs = 3,
00316 DLGRESPONSE_SaveAll = 4,
00317 DLGRESPONSE_Discard = 5,
00318 DLGRESPONSE_Skip = DLGRESPONSE_Discard,
00319 DLGRESPONSE_DiscardAll = 6,
00320 DLGRESPONSE_Retry = 7,
00321 DLGRESPONSE_NoToAll = 8,
00322 DLGRESPONSE_YesToAll = 9
00323 };
00324
00327
00329 ERRVALUE MdlgAskNumber (
00330 MDLGPARENT dlgparent,
00331 const MISTRING& prompt,
00332 double& value,
00333 double minvalue,
00334 double maxvalue,
00335 int decplaces,
00336 HELPID helpid = HELPID__None
00337 );
00338
00340 ERRVALUE MdlgAskNumber (
00341 MDLGPARENT dlgparent,
00342 const MISTRING& dlgtitle,
00343 const MISTRING& prompt,
00344 double& value,
00345 double minvalue,
00346 double maxvalue,
00347 int decplaces,
00348 HELPID helpid = HELPID__None
00349 );
00350
00353 DLGRESPONSE MdlgAskQuestion (
00354 MDLGPARENT parent,
00355 const MISTRING& text,
00356 DLGQ_STYLE style,
00357 DLGRESPONSE dftresponse,
00358 HELPID helpid = HELPID__None
00359 );
00360
00363 DLGRESPONSE MdlgAskQuestion (
00364 MDLGPARENT parent,
00365 const MISTRING& dlgtitle,
00366 const MISTRING& text,
00367 DLGQ_STYLE style,
00368 DLGRESPONSE dftresponse,
00369 HELPID helpid = HELPID__None
00370 );
00371
00373 ERRVALUE MdlgAskString (
00374 MDLGPARENT dlgparent,
00375 const MISTRING& prompt,
00376 MISTRING& string,
00377 int maxchars = 0,
00378 HELPID helpid = HELPID__None,
00379 GETSTRINGFILTER *filter = 0
00380 );
00381
00383 ERRVALUE MdlgAskString (
00384 MDLGPARENT dlgparent,
00385 const MISTRING& dlgtitle,
00386 const MISTRING& prompt,
00387 MISTRING& string,
00388 int maxchars = 0,
00389 HELPID helpid = HELPID__None,
00390 GETSTRINGFILTER *filter = 0
00391 );
00392
00394 void MdlgExamineRawData (
00395 MDLGPARENT dlgparent,
00396 const void *buffer,
00397 int buffersize
00398 );
00399
00404 MDLGPARENT MdlgGetDefaultParent (void);
00405
00407 ERRVALUE MdlgSaveAsTextFile (
00408 MDLGPARENT dlgparent,
00409 const MISTRING& string,
00410 FILEPATH *pFilePath = 0
00411 );
00412
00419 void MdlgSetMessageHookFunc (
00420 MESSAGEHOOKFUNC HookFunc,
00421 void* cbdata
00422 );
00423
00427 int MdlgShowErrorState (
00428 MDLGPARENT parent,
00429 const ERRORSTATE& ErrorState,
00430 MDLG_MESSAGEFLAGS flags = MDLG_MESSAGEFLAG_AllowSaveText
00431 );
00432
00435 int MdlgShowMessage (
00436 MDLGPARENT parent,
00437 MDLG_MESSAGETYPE msgtype,
00438 const MISTRING& msgtext,
00439 MDLG_MESSAGEFLAGS flags = MDLG_MESSAGEFLAG_None,
00440 HELPID helpid = HELPID__None,
00441 const char *inibasetag = 0,
00442 const MIUNICODE *details = 0
00443 );
00444
00448 int MdlgShowMessageCode (
00449 MDLGPARENT parent,
00450 int errcode,
00451 MDLG_MESSAGETYPE msgtype = MDLG_MESSAGETYPE_Default,
00452 MDLG_MESSAGEFLAGS flags = MDLG_MESSAGEFLAG_AllowSaveText
00453 );
00454
00456 void MdlgShowProductInfo (
00457 MDLGPARENT dlgparent = 0
00458 );
00459
00461
00462 #ifdef WIN32
00463 #pragma warning (default:4996) // Restore warning about deprecated declaration
00464 #endif
00465
00466 #endif // INC_MI32_MDLG_H
00467