//========================================================================================================
// 3DPanel
//
// 3DPanel header file
//
// AUTHOR:  Gabor Nagy
// DATE:    2025-Jun-17 02:27:55
//
// Copyright (C) 1996-2026 By Gabor Nagy. All rights reserved.
//================================================================
#ifndef _E3D_StatusPanel_h
#define _E3D_StatusPanel_h


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
extern "C" {
#endif


//--------------------------------
// Panel/StatusPanel.c
//--------------------------------
extern XeProgressIndicator  E3dp_ProgressIndicator;

extern int     E3dp_LogMessages;  // Or-ed flags of what to log: ELogERROR, ELogWARNING, ELogMESSAGE, ELogTIMING

extern XeWidget  E3d_UndoBufferDisplayW;

extern void    E3dp_StatusPanelOnOff(E3dPanel* P3DPanel, const EBool PSwitch);
extern void    E3dp_ClearDefaultMessage(void);

extern E3dID   E3dp_PrintMessage(const int PType, const int PRemoveInMillisedonds, const char* PMessage,...);
extern E3dID   E3dp_PrintCompoundMessage(const int PType, const int PRemoveInMillisedonds, const XeString PMessage);
extern E3dID   E3dp_PrintCompoundMessageVa(const int PType, const int PRemoveInMillisedonds, ...);

extern void    E3dProgressIndicator_SetMessageVa(const char* PMessage, va_list PArgList);
extern void    E3dProgressIndicator_SetMessage(const char* PMessage, ...);
extern void    E3dProgressIndicator_SetMessageCB(EPointer PCustomData, const char* PMessage, ...);
extern void    E3dProgressIndicator_Set(const float PValue, void (*PAbortCallback)(EPointer PClientData), EPointer PClientData);

extern E3dID   E3dp_PushMessage(const int PType, const char* PMessage, ...);
extern E3dID   E3dp_PushHTMLMessage(int PType, const char* PMessage, ...);
extern E3dID   E3dp_PushCompoundMessage(const int PType, XeString PMessage, const EBool PMessagePersistent);
extern int     E3dp_ChangeCompoundMessage(XeString PXeStr);
extern int     E3dp_ChangeCompoundMessageByID(const int PID, XeString PXeStr);

extern EBool   E3dp_PopMessage(const E3dID PMessageID);

extern void    E3dp_ClearDefaultMessage(void);
extern E3dID   E3dp_SetDefaultMessage(const char* PMessage, ...);
extern void    E3dp_ResetMessageStack(void);

extern void    E3dp_StatusPanelFree(void);


#if defined (__cplusplus) && (!(defined (__CPLUSLIBS)))
}	// Close scope of 'extern "C"' declaration
#endif

#endif	// _E3D_StatusPanel_h
