00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188
00189
00190
00191
00192
00193
00194
00195
00196
00197
00198
00199
00200
00201
00202
00203
00204
00205
00206
00207
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00235
00236
00237
00238 #ifndef INC_MI32_MSTATUS_H
00239 #define INC_MI32_MSTATUS_H
00240
00241 #ifndef INC_STDARG_H
00242 #include <stdarg.h>
00243 #define INC_STDARG_H
00244 #endif
00245
00246 #ifndef INC_MI32_STDDEFNS_H
00247 #include <mi32/stddefns.h>
00248 #endif
00249
00250 #ifndef INC_MI32_MISTRING_H
00251 #include <mi32/mistring.h>
00252 #endif
00253
00254 #ifndef INC_MI32_MTIMER_H
00255 #include <mi32/mtimer.h>
00256 #endif
00257
00258
00259 #ifdef WIN32
00260 #pragma warning (disable:4996) // Disable warning about deprecated declaration within header
00261 #endif
00262
00263 #ifdef RVCLOWDLL
00264 #define RVCLOWLIBEXPORT MI_DLLEXPORT
00265 #else
00266 #define RVCLOWLIBEXPORT MI_DLLIMPORT
00267 #endif
00268
00269
00270
00271 #if defined(__cplusplus)
00272 extern "C" {
00273 #endif
00274
00275 #define MSTATUSFLAG_NoCancel 0x0001
00276 #define MSTATUSFLAG_DelayPopup 0x0002
00277 #define MSTATUSFLAG_AllowFinish 0x0004
00278
00279 typedef struct _MSTATUSCONTEXT {
00280 struct _MSTATUSHANDLE *shandle;
00281 #ifdef MSTATUS_LIB
00282
00283 struct _MSTATUSCONTEXT *nextcontext;
00284 INT16 firstline;
00285 INT16 lastline;
00286 #endif
00287 } *MSTATUSCONTEXT;
00288
00289 #ifdef MSTATUS_LIB
00290 typedef struct {
00291 MIUNICODE *text;
00292 UINT8 HasBar;
00293 UINT8 textrows;
00294 UINT16 textwidth;
00295 INT32 curval, maxval;
00296 INT32 barupdatemodval;
00297 INT32 barcancelmodval;
00298 INT32 lastupdateval;
00299 } MSTATUSLINEDATA;
00300 #endif
00301
00302 typedef struct _MSTATUSHANDLE {
00303 int cancelled;
00304 #ifdef MSTATUS_LIB
00305
00306 int canceldisablecount;
00307 int (*TestCancel)(struct _MSTATUSHANDLE *, void *);
00308 void *TestCancelData;
00309 MSTATUSLINEDATA *linedata;
00310 MSTATUSCONTEXT firstcontext;
00311 MSTATUSCONTEXT curcontext;
00312 MTIMER timer;
00313 struct _MSTATUSHANDLE *prevdfthandle;
00314 void *privptr;
00315 #endif
00316 } *MSTATUSHANDLE;
00317
00318
00319
00320
00321
00322
00323 typedef struct _MSTATUSINTERFACE {
00324
00325
00326
00327
00328 INT32 size;
00329 void (*StatusBarClear)(MSTATUSCONTEXT, INT16);
00330 int (*StatusBarIncrement)(MSTATUSCONTEXT, INT16, INT32);
00331 int (*StatusBarInit)(MSTATUSCONTEXT, INT16, INT32);
00332 int (*StatusBarUpdate)(MSTATUSCONTEXT, INT16, INT32, INT32);
00333 void (*StatusClearAll)(MSTATUSCONTEXT);
00334 void (*StatusClearLine)(MSTATUSCONTEXT, INT16);
00335 int (*StatusCheckCancel)(MSTATUSHANDLE);
00336 MSTATUSCONTEXT (*StatusContextCreate)(MSTATUSHANDLE);
00337 void (*StatusContextFree)(MSTATUSCONTEXT);
00338 void (*StatusDisableCancel)(MSTATUSHANDLE);
00339 void (*StatusEnableCancel)(MSTATUSHANDLE);
00340 void (*StatusResetCancel)(MSTATUSHANDLE);
00341 void (*StatusTextClear)(MSTATUSCONTEXT, INT16);
00342 int (*StatusTextUpdate)(MSTATUSCONTEXT, INT16, const char*, const char*);
00343 int (*StatusTextUpdateString)(MSTATUSCONTEXT, INT16, const MIUNICODE*);
00344 int (*REMOVED_StatusTextUpdateF)();
00345 MSTATUSHANDLE (*StatusGetDefaultHandle)(void);
00346 int (*StatusDialogCreate)(void*, MSTATUSHANDLE*, MSTATUSCONTEXT*, UINT32);
00347 void (*StatusDialogDestroy)(MSTATUSHANDLE);
00348 void (*StatusReportDone)(MSTATUSHANDLE, const char*, const char*);
00349 void (*StatusSetCancelFunc)(MSTATUSHANDLE, int(*)(MSTATUSHANDLE, void*), void*);
00350 int (*REMOVED_StatusTextUpdateFV)();
00351 int (*StatusTextUpdateTimer) (MSTATUSCONTEXT, INT16, const char*, const char*, MTIMER*);
00352 MTIMER *(*StatusTimerGet)(MSTATUSHANDLE);
00353 void (*StatusTimerReset)(MSTATUSHANDLE);
00354 void (*StatusWaitForOK)(MSTATUSHANDLE);
00355 MSTATUSHANDLE (*StatusSetDefaultHandle)(MSTATUSHANDLE);
00356 MSTATUSHANDLE DefaultHandle;
00357 void (*ReportDone) (MSTATUSHANDLE, TEXTID);
00358 int (*TextUpdateTimer) (MSTATUSCONTEXT, INT16, TEXTID, MTIMER*);
00359 } *MSTATUSINTERFACE;
00360
00361
00362 #if defined(MAC_OSX) && defined(RVCSYSDLL)
00363
00364
00365 #define DftStatusInterface DftStatusInterfaceRVCSYS
00366 #endif
00367
00368 extern MSTATUSINTERFACE DftStatusInterface;
00369
00370
00371
00372
00373
00374
00375
00376
00377
00378 RVCLOWLIBEXPORT MSTATUSINTERFACE MfStatusGet (void);
00379
00380
00381 RVCLOWLIBEXPORT void MfStatusSet (
00382 MSTATUSINTERFACE status
00383 );
00384
00385 DEPRECATED inline void MstatusBarClear (
00386 MSTATUSCONTEXT c,
00387 INT16 ln
00388 ) { (*DftStatusInterface->StatusBarClear)(c,ln); }
00389
00390 DEPRECATED inline int MstatusBarIncrement (
00391 MSTATUSCONTEXT c,
00392 INT16 ln,
00393 INT32 inc
00394 ) { return ((*DftStatusInterface->StatusBarIncrement)(c,ln,inc)); }
00395
00396 DEPRECATED inline int MstatusBarInit (
00397 MSTATUSCONTEXT c,
00398 INT16 ln,
00399 INT32 max
00400 ) { return ((*DftStatusInterface->StatusBarInit)(c,ln,max)); }
00401
00402 DEPRECATED inline int MstatusBarUpdate (
00403 MSTATUSCONTEXT c,
00404 INT16 ln,
00405 INT32 val,
00406 INT32 max
00407 ) { return ((*DftStatusInterface->StatusBarUpdate)(c,ln,val,max)); }
00408
00409 DEPRECATED inline int MstatusCheckCancel (
00410 MSTATUSHANDLE h
00411 ) { return ((*DftStatusInterface->StatusCheckCancel)(h)); }
00412
00413 DEPRECATED inline void MstatusClearAll (
00414 MSTATUSCONTEXT c
00415 ) { (*DftStatusInterface->StatusClearAll)(c); }
00416
00417 DEPRECATED inline void MstatusClearLine (
00418 MSTATUSCONTEXT c,
00419 INT16 ln
00420 ) { (*DftStatusInterface->StatusClearLine)(c,ln); }
00421
00422 DEPRECATED inline MSTATUSCONTEXT MstatusContextCreate (
00423 MSTATUSHANDLE h
00424 ) { return ((*DftStatusInterface->StatusContextCreate)(h)); }
00425
00426 DEPRECATED inline void MstatusContextFree (
00427 MSTATUSCONTEXT c
00428 ) { (*DftStatusInterface->StatusContextFree)(c); }
00429
00430 DEPRECATED inline int MstatusDialogCreate (
00431 MDLGPARENT p,
00432 MSTATUSHANDLE *ph,
00433 MSTATUSCONTEXT *pc,
00434 UINT32 flags
00435 ) { return ((*DftStatusInterface->StatusDialogCreate)(p,ph,pc,flags)); }
00436
00437 DEPRECATED inline void MstatusDialogDestroy (
00438 MSTATUSHANDLE h
00439 ) { (*DftStatusInterface->StatusDialogDestroy)(h); }
00440
00441 DEPRECATED inline void MstatusDisableCancel (
00442 MSTATUSHANDLE h
00443 ) { (*DftStatusInterface->StatusDisableCancel)(h); }
00444
00445 DEPRECATED inline void MstatusEnableCancel (
00446 MSTATUSHANDLE h
00447 ) { (*DftStatusInterface->StatusEnableCancel)(h); }
00448
00449 inline MSTATUSHANDLE MstatusGetDefaultHandle (
00450 ) { return ((*DftStatusInterface->StatusGetDefaultHandle)()); }
00451
00452 inline MSTATUSINTERFACE& MstatusInterfaceGet (
00453 ) { return (DftStatusInterface); }
00454
00455 void MstatusInterfaceSet (
00456 MSTATUSINTERFACE StatusInterface
00457 );
00458
00459 DEPRECATED inline void MstatusReportDone (
00460 MSTATUSHANDLE h,
00461 TEXTID textid = TEXTID__None
00462 ) { (*DftStatusInterface->ReportDone)(h,textid); }
00463
00464 DEPRECATED inline void MstatusResetCancel (
00465 MSTATUSHANDLE h
00466 ) { (*DftStatusInterface->StatusResetCancel)(h); }
00467
00468 DEPRECATED inline void MstatusSetCancelFunc (
00469 MSTATUSHANDLE h,
00470 int (*f)(MSTATUSHANDLE, void*),
00471 void *d
00472 ) { (*DftStatusInterface->StatusSetCancelFunc)(h,f,d); }
00473
00474 DEPRECATED inline MSTATUSHANDLE MstatusSetDefaultHandle (
00475 MSTATUSHANDLE h
00476 ) { return ((*DftStatusInterface->StatusSetDefaultHandle)(h)); }
00477
00478 DEPRECATED inline void MstatusTextClear (
00479 MSTATUSCONTEXT c,
00480 INT16 ln
00481 ) { (*DftStatusInterface->StatusTextClear)(c,ln); }
00482
00483 DEPRECATED inline int MstatusTextUpdateString (
00484 MSTATUSCONTEXT c,
00485 INT16 ln,
00486 const MIUNICODE *s
00487 ) { return ((*DftStatusInterface->StatusTextUpdateString)(c,ln,s)); }
00488
00489 DEPRECATED inline MTIMER* MstatusTimerGet (
00490 MSTATUSHANDLE h
00491 ) { return ((*DftStatusInterface->StatusTimerGet)(h)); }
00492
00493 DEPRECATED inline void MstatusTimerReset (
00494 MSTATUSHANDLE h
00495 ) { (*DftStatusInterface->StatusTimerReset)(h); }
00496
00497 DEPRECATED inline void MstatusWaitForOK (
00498 MSTATUSHANDLE h
00499 ) { (*DftStatusInterface->StatusWaitForOK)(h); }
00500
00501 #if defined(WIN32_NATIVE)
00502
00503 class CStatusBar;
00504
00505
00506 int MstatusFormCreate (
00507 CStatusBar *pStatusBar,
00508 MSTATUSHANDLE *rshandle,
00509 UINT32 flags
00510 );
00511
00512
00513 void MstatusFormDestroy (
00514 MSTATUSHANDLE shandle
00515 );
00516
00517
00518 void MstatusInterfaceInitWin (void);
00519
00520 #else
00521
00522
00523 void MstatusInterfaceInitX (void);
00524
00525 #endif
00526
00527 #if defined(__cplusplus)
00528 }
00529 #endif
00530
00531
00532 #ifndef NO_DEPRECATED
00533 DEPRECATED inline ERRVALUE MstatusTextUpdate (
00534 MSTATUSCONTEXT c,
00535 INT16 line,
00536 const char *msggroup,
00537 const char *msgkey
00538 ) { return ((*DftStatusInterface->StatusTextUpdate)(c,line,msggroup,msgkey)); }
00539 #endif
00540
00541 inline ERRVALUE MstatusTextUpdate (
00542 MSTATUSCONTEXT c,
00543 INT16 line,
00544 TEXTID textid
00545 ) { return ((*DftStatusInterface->StatusTextUpdateString)(c,line,MISTRING(textid))); }
00546
00547
00548
00549
00550 class STATUSDIALOG {
00551 public:
00552
00553 enum FLAGS {
00554 FLAG_NoCancel = MSTATUSFLAG_NoCancel,
00555 FLAG_DelayPopup = MSTATUSFLAG_DelayPopup,
00556 FLAG_AllowFinish = MSTATUSFLAG_AllowFinish,
00557 FLAG_None = 0
00558 };
00559
00560
00561 STATUSDIALOG (
00562 ): m_shandle(0) { }
00563
00564
00565 ~STATUSDIALOG (
00566 ) { if (m_shandle != 0) MstatusDialogDestroy(m_shandle); }
00567
00568
00569
00570 ERRVALUE CheckCancel (
00571 ) const { return (MstatusCheckCancel(m_shandle)); }
00572
00573
00574 ERRVALUE Create (
00575 MDLGPARENT dlgparent,
00576 FLAGS flags = FLAG_None
00577 ) { return (MstatusDialogCreate(dlgparent,&m_shandle,0,flags)); }
00578
00579
00580 void Destroy (
00581 ) { MstatusDialogDestroy(m_shandle); m_shandle = 0; }
00582
00583
00584 void DisableCancel (
00585 ) const { MstatusDisableCancel(m_shandle); }
00586
00587
00588 void EnableCancel (
00589 ) const { MstatusEnableCancel(m_shandle); }
00590
00591
00592
00593
00594
00595 MSTATUSHANDLE GetHandle (
00596 ) const {
00597 return (m_shandle);
00598 }
00599
00600
00601 MTIMER* GetTimer (
00602 ) const { return (MstatusTimerGet(m_shandle)); }
00603
00604
00605
00606
00607 void ReportDone (
00608 TEXTID textid = TEXTID__None
00609 ) const { (*DftStatusInterface->ReportDone)(m_shandle,textid); }
00610
00611
00612 void ResetCancel (
00613 ) const { MstatusResetCancel(m_shandle); }
00614
00615
00616 void ResetTimer (
00617 ) const { MstatusTimerReset(m_shandle); }
00618
00619
00620
00621
00622 MSTATUSHANDLE SetSelfAsDefault (
00623 ) { return (MstatusSetDefaultHandle(m_shandle)); }
00624
00625
00626 void WaitForOK (
00627 ) const { MstatusWaitForOK(m_shandle); }
00628
00629 private:
00630 #ifndef GENERATING_DOXYGEN_OUTPUT
00631 MSTATUSHANDLE m_shandle;
00632
00633 STATUSDIALOG (const STATUSDIALOG&);
00634 STATUSDIALOG& operator= (const STATUSDIALOG&);
00635
00636 friend class STATUSCONTEXT;
00637 #endif // GENERATING_DOXYGEN_OUTPUT
00638 };
00639 DEFINE_ENUM_OPERATORS(STATUSDIALOG::FLAGS);
00640
00641
00642
00643 class STATUSCONTEXT {
00644 public:
00645
00646
00647 explicit STATUSCONTEXT (
00648 MSTATUSHANDLE shandle = 0,
00649 bool CreateContext = true
00650 ) :
00651 m_scontext(0)
00652 { if (CreateContext) Create(shandle); }
00653
00654
00655 explicit STATUSCONTEXT (
00656 STATUSDIALOG& sdialog
00657 ):
00658 m_scontext(0)
00659 { if (sdialog.m_shandle != 0) Create(sdialog.m_shandle); }
00660
00661
00662 ~STATUSCONTEXT (
00663 ) { Destroy(); }
00664
00665
00666 void BarClear (
00667 INT16 line = 0
00668 ) { MstatusBarClear(m_scontext,line); }
00669
00670
00671 int BarIncrement (
00672 INT32 increment = 1,
00673 INT16 line = 0
00674 ) { return (MstatusBarIncrement(m_scontext,line,increment)); }
00675
00676
00677 int BarInit (
00678 INT32 maximum,
00679 INT16 line = 0
00680 ) { return (MstatusBarInit(m_scontext,line,maximum)); }
00681
00682
00683 int BarUpdate (
00684 INT32 value,
00685 INT32 maximum,
00686 INT16 line = 0
00687 ) { return (MstatusBarUpdate(m_scontext,line,value,maximum)); }
00688
00689
00690 int CheckCancel (
00691 ) { return ((m_scontext != 0) ? MstatusCheckCancel(m_scontext->shandle) : 0); }
00692
00693
00694 void Clear (
00695 ) { MstatusClearAll(m_scontext); }
00696
00697
00698 void ClearLine (
00699 INT16 line = 0
00700 ) { MstatusClearLine(m_scontext,line); }
00701
00702
00703 void Create (
00704 MSTATUSHANDLE shandle = 0
00705 ) { m_scontext = MstatusContextCreate(shandle); }
00706
00707
00708
00709 void Destroy (
00710 ) { MstatusContextFree(m_scontext); m_scontext = 0; }
00711
00712
00713 void DisableCancel (
00714 ) { if (m_scontext != 0) MstatusDisableCancel(m_scontext->shandle); }
00715
00716
00717 void EnableCancel (
00718 ) { if (m_scontext != 0) MstatusEnableCancel(m_scontext->shandle); }
00719
00720
00721 MSTATUSCONTEXT GetHandle (
00722 ) const { return (m_scontext); }
00723
00724 #ifndef NO_DEPRECATED
00725
00726
00727 DEPRECATED int TextUpdate (
00728 const char *MsgGroup,
00729 const char *MsgName,
00730 INT16 line = 0
00731 ) { return ((*DftStatusInterface->StatusTextUpdate)(m_scontext,line,MsgGroup,MsgName)); }
00732 #endif
00733
00734
00735 int TextUpdate (
00736 const MISTRING& string,
00737 INT16 line = 0
00738 ) { return (MstatusTextUpdateString(m_scontext,line,string)); }
00739
00740
00741 int TextUpdateTimer (
00742 TEXTID textid,
00743 INT16 line = 0
00744 ) { return ((*DftStatusInterface->TextUpdateTimer)(m_scontext,line,textid,NULL)); }
00745
00746
00747 int TextUpdateTimer (
00748 TEXTID textid,
00749 MTIMER& timer,
00750 INT16 line = 0
00751 ) { return ((*DftStatusInterface->TextUpdateTimer)(m_scontext,line,textid,&timer)); }
00752
00753 private:
00754 #ifndef GENERATING_DOXYGEN_OUTPUT
00755 MSTATUSCONTEXT m_scontext;
00756
00757 STATUSCONTEXT (const STATUSCONTEXT&);
00758 STATUSCONTEXT& operator= (const STATUSCONTEXT&);
00759 #endif // GENERATING_DOXYGEN_OUTPUT
00760 };
00761
00762
00763
00764 class STATUSDISABLECANCEL {
00765 public:
00766
00767
00768 STATUSDISABLECANCEL (
00769 MSTATUSHANDLE sdh = 0,
00770 bool Enable = true
00771 ) :
00772 m_msh(sdh)
00773 {
00774 if (Enable) {
00775 if (m_msh == 0) m_msh = MstatusGetDefaultHandle();
00776 if (m_msh != 0) MstatusDisableCancel(m_msh);
00777 }
00778 else {
00779 m_msh = 0;
00780 }
00781 }
00782
00783
00784 ~STATUSDISABLECANCEL (
00785 ) { if (m_msh != 0) MstatusEnableCancel(m_msh); }
00786
00787 private:
00788 #ifndef GENERATING_DOXYGEN_OUTPUT
00789 MSTATUSHANDLE m_msh;
00790
00791 STATUSDISABLECANCEL (const STATUSDISABLECANCEL&);
00792 STATUSDISABLECANCEL& operator=(const STATUSDISABLECANCEL&);
00793 #endif // GENERATING_DOXYGEN_OUTPUT
00794 };
00795
00796 #ifdef WIN32
00797 #pragma warning (default:4996) // Restore warning about deprecated declaration
00798 #endif
00799
00800 #endif // INC_MI32_MSTATUS_H