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 #ifndef INC_MI32_MSTATUS_H
00221 #define INC_MI32_MSTATUS_H
00222
00223 #ifndef INC_STDARG_H
00224 #include <stdarg.h>
00225 #define INC_STDARG_H
00226 #endif
00227
00228 #ifndef INC_MI32_STDDEFNS_H
00229 #include <mi32/stddefns.h>
00230 #endif
00231
00232 #if defined(MSTATUS_LIB) && !defined(INC_MI32_MIODEFNS_H)
00233 #include <mi32/miodefns.h>
00234 #endif
00235
00236 #ifndef INC_MI32_MISTRING_H
00237 #include <mi32/mistring.h>
00238 #endif
00239
00240 #ifndef INC_MI32_MTIMER_H
00241 #include <mi32/mtimer.h>
00242 #endif
00243
00244
00245 #ifdef WIN32
00246 #pragma warning (disable:4996) // Disable warning about deprecated declaration within header
00247 #endif
00248
00249 #ifdef RVCLOWDLL
00250 #define RVCLOWLIBEXPORT MI_DLLEXPORT
00251 #else
00252 #define RVCLOWLIBEXPORT MI_DLLIMPORT
00253 #endif
00254
00255
00256
00257 #if defined(__cplusplus)
00258 extern "C" {
00259 #endif
00260
00261 #define MSTATUSFLAG_NoCancel 0x0001
00262 #define MSTATUSFLAG_DelayPopup 0x0002
00263 #define MSTATUSFLAG_AllowFinish 0x0004
00264
00265 typedef struct _MSTATUSCONTEXT {
00266 struct _MSTATUSHANDLE *shandle;
00267 #ifdef MSTATUS_LIB
00268
00269 struct _MSTATUSCONTEXT *nextcontext;
00270 INT16 firstline;
00271 INT16 lastline;
00272 #endif
00273 } *MSTATUSCONTEXT;
00274
00275 #ifdef MSTATUS_LIB
00276 typedef struct {
00277 UNICODE *text;
00278 UINT8 HasBar;
00279 UINT8 textrows;
00280 UINT16 textwidth;
00281 INT32 curval, maxval;
00282 INT32 barupdatemodval;
00283 INT32 barcancelmodval;
00284 INT32 lastupdateval;
00285 } MSTATUSLINEDATA;
00286 #endif
00287
00288 typedef struct _MSTATUSHANDLE {
00289 int cancelled;
00290 #ifdef MSTATUS_LIB
00291
00292 int canceldisablecount;
00293 int (*TestCancel)(struct _MSTATUSHANDLE *, void *);
00294 void *TestCancelData;
00295 MSTATUSLINEDATA *linedata;
00296 MSTATUSCONTEXT firstcontext;
00297 MSTATUSCONTEXT curcontext;
00298 MTIMER timer;
00299 struct _MSTATUSHANDLE *prevdfthandle;
00300 void *privptr;
00301 #endif
00302 } *MSTATUSHANDLE;
00303
00304
00305
00306
00307
00308
00309 typedef struct _MSTATUSINTERFACE {
00310
00311
00312
00313
00314 INT32 size;
00315 void (*StatusBarClear)(MSTATUSCONTEXT, INT16);
00316 int (*StatusBarIncrement)(MSTATUSCONTEXT, INT16, INT32);
00317 int (*StatusBarInit)(MSTATUSCONTEXT, INT16, INT32);
00318 int (*StatusBarUpdate)(MSTATUSCONTEXT, INT16, INT32, INT32);
00319 void (*StatusClearAll)(MSTATUSCONTEXT);
00320 void (*StatusClearLine)(MSTATUSCONTEXT, INT16);
00321 int (*StatusCheckCancel)(MSTATUSHANDLE);
00322 MSTATUSCONTEXT (*StatusContextCreate)(MSTATUSHANDLE);
00323 void (*StatusContextFree)(MSTATUSCONTEXT);
00324 void (*StatusDisableCancel)(MSTATUSHANDLE);
00325 void (*StatusEnableCancel)(MSTATUSHANDLE);
00326 void (*StatusResetCancel)(MSTATUSHANDLE);
00327 void (*StatusTextClear)(MSTATUSCONTEXT, INT16);
00328 int (*StatusTextUpdate)(MSTATUSCONTEXT, INT16, const char*, const char*);
00329 int (*StatusTextUpdateString)(MSTATUSCONTEXT, INT16, const UNICODE*);
00330 int (*REMOVED_StatusTextUpdateF)();
00331 MSTATUSHANDLE (*StatusGetDefaultHandle)(void);
00332 int (*StatusDialogCreate)(void*, MSTATUSHANDLE*, MSTATUSCONTEXT*, UINT32);
00333 void (*StatusDialogDestroy)(MSTATUSHANDLE);
00334 void (*StatusReportDone)(MSTATUSHANDLE, const char*, const char*);
00335 void (*StatusSetCancelFunc)(MSTATUSHANDLE, int(*)(MSTATUSHANDLE, void*), void*);
00336 int (*REMOVED_StatusTextUpdateFV)();
00337 int (*StatusTextUpdateTimer) (MSTATUSCONTEXT, INT16, const char*, const char*, MTIMER*);
00338 MTIMER *(*StatusTimerGet)(MSTATUSHANDLE);
00339 void (*StatusTimerReset)(MSTATUSHANDLE);
00340 void (*StatusWaitForOK)(MSTATUSHANDLE);
00341 MSTATUSHANDLE (*StatusSetDefaultHandle)(MSTATUSHANDLE);
00342 MSTATUSHANDLE DefaultHandle;
00343 void (*ReportDone) (MSTATUSHANDLE, TEXTID);
00344 int (*TextUpdateTimer) (MSTATUSCONTEXT, INT16, TEXTID, MTIMER*);
00345 } *MSTATUSINTERFACE;
00346
00347
00348 #if defined(MAC_OSX) && defined(RVCSYSDLL)
00349
00350
00351 #define DftStatusInterface DftStatusInterfaceRVCSYS
00352 #endif
00353
00354 extern MSTATUSINTERFACE DftStatusInterface;
00355
00356
00357
00358
00359
00360
00361
00362
00363
00364 RVCLOWLIBEXPORT MSTATUSINTERFACE MfStatusGet (void);
00365
00366
00367 RVCLOWLIBEXPORT void MfStatusSet (
00368 MSTATUSINTERFACE status
00369 );
00370
00371 DEPRECATED inline void MstatusBarClear (
00372 MSTATUSCONTEXT c,
00373 INT16 ln
00374 ) { (*DftStatusInterface->StatusBarClear)(c,ln); }
00375
00376 DEPRECATED inline int MstatusBarIncrement (
00377 MSTATUSCONTEXT c,
00378 INT16 ln,
00379 INT32 inc
00380 ) { return ((*DftStatusInterface->StatusBarIncrement)(c,ln,inc)); }
00381
00382 DEPRECATED inline int MstatusBarInit (
00383 MSTATUSCONTEXT c,
00384 INT16 ln,
00385 INT32 max
00386 ) { return ((*DftStatusInterface->StatusBarInit)(c,ln,max)); }
00387
00388 DEPRECATED inline int MstatusBarUpdate (
00389 MSTATUSCONTEXT c,
00390 INT16 ln,
00391 INT32 val,
00392 INT32 max
00393 ) { return ((*DftStatusInterface->StatusBarUpdate)(c,ln,val,max)); }
00394
00395 DEPRECATED inline int MstatusCheckCancel (
00396 MSTATUSHANDLE h
00397 ) { return ((*DftStatusInterface->StatusCheckCancel)(h)); }
00398
00399 DEPRECATED inline void MstatusClearAll (
00400 MSTATUSCONTEXT c
00401 ) { (*DftStatusInterface->StatusClearAll)(c); }
00402
00403 DEPRECATED inline void MstatusClearLine (
00404 MSTATUSCONTEXT c,
00405 INT16 ln
00406 ) { (*DftStatusInterface->StatusClearLine)(c,ln); }
00407
00408 DEPRECATED inline MSTATUSCONTEXT MstatusContextCreate (
00409 MSTATUSHANDLE h
00410 ) { return ((*DftStatusInterface->StatusContextCreate)(h)); }
00411
00412 DEPRECATED inline void MstatusContextFree (
00413 MSTATUSCONTEXT c
00414 ) { (*DftStatusInterface->StatusContextFree)(c); }
00415
00416 DEPRECATED inline int MstatusDialogCreate (
00417 MDLGPARENT p,
00418 MSTATUSHANDLE *ph,
00419 MSTATUSCONTEXT *pc,
00420 UINT32 flags
00421 ) { return ((*DftStatusInterface->StatusDialogCreate)(p,ph,pc,flags)); }
00422
00423 DEPRECATED inline void MstatusDialogDestroy (
00424 MSTATUSHANDLE h
00425 ) { (*DftStatusInterface->StatusDialogDestroy)(h); }
00426
00427 DEPRECATED inline void MstatusDisableCancel (
00428 MSTATUSHANDLE h
00429 ) { (*DftStatusInterface->StatusDisableCancel)(h); }
00430
00431 DEPRECATED inline void MstatusEnableCancel (
00432 MSTATUSHANDLE h
00433 ) { (*DftStatusInterface->StatusEnableCancel)(h); }
00434
00435 inline MSTATUSHANDLE MstatusGetDefaultHandle (
00436 ) { return ((*DftStatusInterface->StatusGetDefaultHandle)()); }
00437
00438 inline MSTATUSINTERFACE& MstatusInterfaceGet (
00439 ) { return (DftStatusInterface); }
00440
00441 void MstatusInterfaceSet (
00442 MSTATUSINTERFACE StatusInterface
00443 );
00444
00445 #ifndef DEPRECATE_GROUPKEY
00446 DEPRECATED inline void MstatusReportDone (
00447 MSTATUSHANDLE h,
00448 const char *mg,
00449 const char *mc
00450 ) { (*DftStatusInterface->StatusReportDone)(h,mg,mc); }
00451 #endif
00452
00453 DEPRECATED inline void MstatusResetCancel (
00454 MSTATUSHANDLE h
00455 ) { (*DftStatusInterface->StatusResetCancel)(h); }
00456
00457 DEPRECATED inline void MstatusSetCancelFunc (
00458 MSTATUSHANDLE h,
00459 int (*f)(MSTATUSHANDLE, void*),
00460 void *d
00461 ) { (*DftStatusInterface->StatusSetCancelFunc)(h,f,d); }
00462
00463 DEPRECATED inline MSTATUSHANDLE MstatusSetDefaultHandle (
00464 MSTATUSHANDLE h
00465 ) { return ((*DftStatusInterface->StatusSetDefaultHandle)(h)); }
00466
00467 DEPRECATED inline void MstatusTextClear (
00468 MSTATUSCONTEXT c,
00469 INT16 ln
00470 ) { (*DftStatusInterface->StatusTextClear)(c,ln); }
00471
00472 DEPRECATED inline int MstatusTextUpdateString (
00473 MSTATUSCONTEXT c,
00474 INT16 ln,
00475 const UNICODE *s
00476 ) { return ((*DftStatusInterface->StatusTextUpdateString)(c,ln,s)); }
00477
00478 #ifndef DEPRECATE_GROUPKEY
00479 DEPRECATED inline int MstatusTextUpdateTimer (
00480 MSTATUSCONTEXT c,
00481 INT16 ln,
00482 const char *mg,
00483 const char *mc,
00484 MTIMER *t
00485 ) { return ((*DftStatusInterface->StatusTextUpdateTimer)(c,ln,mg,mc,t)); }
00486 #endif
00487
00488 DEPRECATED inline MTIMER* MstatusTimerGet (
00489 MSTATUSHANDLE h
00490 ) { return ((*DftStatusInterface->StatusTimerGet)(h)); }
00491
00492 DEPRECATED inline void MstatusTimerReset (
00493 MSTATUSHANDLE h
00494 ) { (*DftStatusInterface->StatusTimerReset)(h); }
00495
00496 DEPRECATED inline void MstatusWaitForOK (
00497 MSTATUSHANDLE h
00498 ) { (*DftStatusInterface->StatusWaitForOK)(h); }
00499
00500 #if defined(WIN32_NATIVE)
00501
00502 class CStatusBar;
00503
00504
00505 int MstatusFormCreate (
00506 CStatusBar *pStatusBar,
00507 MSTATUSHANDLE *rshandle,
00508 UINT32 flags
00509 );
00510
00511
00512 void MstatusFormDestroy (
00513 MSTATUSHANDLE shandle
00514 );
00515
00516
00517 void MstatusInterfaceInitWin (void);
00518
00519 #else
00520
00521
00522 void MstatusInterfaceInitX (void);
00523
00524 #endif
00525
00526 #if defined(__cplusplus)
00527 }
00528 #endif
00529
00530
00531 #ifndef DEPRECATE_GROUPKEY
00532 DEPRECATED inline ERRVALUE MstatusTextUpdate (
00533 MSTATUSCONTEXT c,
00534 INT16 line,
00535 const char *msggroup,
00536 const char *msgkey
00537 ) { return ((*DftStatusInterface->StatusTextUpdate)(c,line,msggroup,msgkey)); }
00538 #endif
00539
00540 inline ERRVALUE MstatusTextUpdate (
00541 MSTATUSCONTEXT c,
00542 INT16 line,
00543 TEXTID textid
00544 ) { return ((*DftStatusInterface->StatusTextUpdateString)(c,line,MISTRING(textid))); }
00545
00546
00547
00548
00549 class STATUSDIALOG {
00550 public:
00551
00552 enum FLAGS {
00553 FLAG_NoCancel = MSTATUSFLAG_NoCancel,
00554 FLAG_DelayPopup = MSTATUSFLAG_DelayPopup,
00555 FLAG_AllowFinish = MSTATUSFLAG_AllowFinish,
00556 FLAG_None = 0
00557 };
00558
00559
00560 STATUSDIALOG (
00561 ): m_shandle(0) { }
00562
00563
00564 ~STATUSDIALOG (
00565 ) { if (m_shandle != 0) MstatusDialogDestroy(m_shandle); }
00566
00567
00568
00569 ERRVALUE CheckCancel (
00570 ) const { return (MstatusCheckCancel(m_shandle)); }
00571
00572
00573 ERRVALUE Create (
00574 MDLGPARENT dlgparent,
00575 FLAGS flags = FLAG_None
00576 ) { return (MstatusDialogCreate(dlgparent,&m_shandle,0,flags)); }
00577
00578
00579 void Destroy (
00580 ) { MstatusDialogDestroy(m_shandle); m_shandle = 0; }
00581
00582
00583 void DisableCancel (
00584 ) const { MstatusDisableCancel(m_shandle); }
00585
00586
00587 void EnableCancel (
00588 ) const { MstatusEnableCancel(m_shandle); }
00589
00590
00591
00592
00593
00594 MSTATUSHANDLE GetHandle (
00595 ) const {
00596 return (m_shandle);
00597 }
00598
00599
00600 MTIMER* GetTimer (
00601 ) const { return (MstatusTimerGet(m_shandle)); }
00602
00603
00604
00605
00606 void ReportDone (
00607 TEXTID textid = TEXTID__None
00608 ) const { (*DftStatusInterface->ReportDone)(m_shandle,textid); }
00609
00610 #ifndef DEPRECATE_GROUPKEY
00611
00612
00613
00614 DEPRECATED void ReportDone (
00615 const char *msggroup,
00616 const char *msgkey
00617 ) const { (*DftStatusInterface->StatusReportDone)(m_shandle,msggroup,msgkey); }
00618 #endif
00619
00620
00621 void ResetCancel (
00622 ) const { MstatusResetCancel(m_shandle); }
00623
00624
00625 void ResetTimer (
00626 ) const { MstatusTimerReset(m_shandle); }
00627
00628
00629
00630
00631 MSTATUSHANDLE SetSelfAsDefault (
00632 ) { return (MstatusSetDefaultHandle(m_shandle)); }
00633
00634
00635 void WaitForOK (
00636 ) const { MstatusWaitForOK(m_shandle); }
00637
00638 private:
00639 #ifndef GENERATING_DOXYGEN_OUTPUT
00640 MSTATUSHANDLE m_shandle;
00641
00642 STATUSDIALOG (const STATUSDIALOG&);
00643 STATUSDIALOG& operator= (const STATUSDIALOG&);
00644
00645 friend class STATUSCONTEXT;
00646 #endif // GENERATING_DOXYGEN_OUTPUT
00647 };
00648 DEFINE_ENUM_OPERATORS(STATUSDIALOG::FLAGS);
00649
00650
00651
00652 class STATUSCONTEXT {
00653 public:
00654
00655
00656 explicit STATUSCONTEXT (
00657 MSTATUSHANDLE shandle = 0,
00658 bool CreateContext = true
00659 ) :
00660 m_scontext(0)
00661 { if (CreateContext) Create(shandle); }
00662
00663
00664 explicit STATUSCONTEXT (
00665 STATUSDIALOG& sdialog
00666 ):
00667 m_scontext(0)
00668 { if (sdialog.m_shandle != 0) Create(sdialog.m_shandle); }
00669
00670
00671 ~STATUSCONTEXT (
00672 ) { Destroy(); }
00673
00674
00675 void BarClear (
00676 INT16 line = 0
00677 ) { MstatusBarClear(m_scontext,line); }
00678
00679
00680 int BarIncrement (
00681 INT32 increment = 1,
00682 INT16 line = 0
00683 ) { return (MstatusBarIncrement(m_scontext,line,increment)); }
00684
00685
00686 int BarInit (
00687 INT32 maximum,
00688 INT16 line = 0
00689 ) { return (MstatusBarInit(m_scontext,line,maximum)); }
00690
00691
00692 int BarUpdate (
00693 INT32 value,
00694 INT32 maximum,
00695 INT16 line = 0
00696 ) { return (MstatusBarUpdate(m_scontext,line,value,maximum)); }
00697
00698
00699 int CheckCancel (
00700 ) { return ((m_scontext != 0) ? MstatusCheckCancel(m_scontext->shandle) : 0); }
00701
00702
00703 void Clear (
00704 ) { MstatusClearAll(m_scontext); }
00705
00706
00707 void ClearLine (
00708 INT16 line = 0
00709 ) { MstatusClearLine(m_scontext,line); }
00710
00711
00712 void Create (
00713 MSTATUSHANDLE shandle = 0
00714 ) { m_scontext = MstatusContextCreate(shandle); }
00715
00716
00717
00718 void Destroy (
00719 ) { MstatusContextFree(m_scontext); m_scontext = 0; }
00720
00721
00722 void DisableCancel (
00723 ) { if (m_scontext != 0) MstatusDisableCancel(m_scontext->shandle); }
00724
00725
00726 void EnableCancel (
00727 ) { if (m_scontext != 0) MstatusEnableCancel(m_scontext->shandle); }
00728
00729
00730 MSTATUSCONTEXT GetHandle (
00731 ) const { return (m_scontext); }
00732
00733 #ifndef DEPRECATE_GROUPKEY
00734
00735
00736 DEPRECATED int TextUpdate (
00737 const char *MsgGroup,
00738 const char *MsgName,
00739 INT16 line = 0
00740 ) { return ((*DftStatusInterface->StatusTextUpdate)(m_scontext,line,MsgGroup,MsgName)); }
00741 #endif
00742
00743
00744 int TextUpdate (
00745 const MISTRING& string,
00746 INT16 line = 0
00747 ) { return (MstatusTextUpdateString(m_scontext,line,string)); }
00748
00749
00750 int TextUpdateTimer (
00751 TEXTID textid,
00752 INT16 line = 0
00753 ) { return ((*DftStatusInterface->TextUpdateTimer)(m_scontext,line,textid,NULL)); }
00754
00755
00756 int TextUpdateTimer (
00757 TEXTID textid,
00758 MTIMER& timer,
00759 INT16 line = 0
00760 ) { return ((*DftStatusInterface->TextUpdateTimer)(m_scontext,line,textid,&timer)); }
00761
00762 private:
00763 #ifndef GENERATING_DOXYGEN_OUTPUT
00764 MSTATUSCONTEXT m_scontext;
00765
00766 STATUSCONTEXT (const STATUSCONTEXT&);
00767 STATUSCONTEXT& operator= (const STATUSCONTEXT&);
00768 #endif // GENERATING_DOXYGEN_OUTPUT
00769 };
00770
00771
00772
00773 class STATUSDISABLECANCEL {
00774 public:
00775
00776
00777 STATUSDISABLECANCEL (
00778 MSTATUSHANDLE sdh = 0,
00779 bool Enable = true
00780 ) :
00781 m_msh(sdh)
00782 {
00783 if (Enable) {
00784 if (m_msh == 0) m_msh = MstatusGetDefaultHandle();
00785 if (m_msh != 0) MstatusDisableCancel(m_msh);
00786 }
00787 else {
00788 m_msh = 0;
00789 }
00790 }
00791
00792
00793 ~STATUSDISABLECANCEL (
00794 ) { if (m_msh != 0) MstatusEnableCancel(m_msh); }
00795
00796 private:
00797 #ifndef GENERATING_DOXYGEN_OUTPUT
00798 MSTATUSHANDLE m_msh;
00799
00800 STATUSDISABLECANCEL (const STATUSDISABLECANCEL&);
00801 STATUSDISABLECANCEL& operator=(const STATUSDISABLECANCEL&);
00802 #endif // GENERATING_DOXYGEN_OUTPUT
00803 };
00804
00805 #ifdef WIN32
00806 #pragma warning (default:4996) // Restore warning about deprecated declaration
00807 #endif
00808
00809 #endif // INC_MI32_MSTATUS_H