//===============================================================================
// Xe UI toolkit
//
// XeMessageBox
//  Private header file
//
// AUTHOR:  Gabor Nagy
// DATE:    2023-Aug-17 18:55:34
//
// Copyright (C) 1996-2026 by Gabor Nagy. All rights reserved.
//===============================================================================
#ifndef _XeMessageBoxP_h
#define _XeMessageBoxP_h

#include <Xe/ManagerP.h>
#include <Xe/MessageBox.h>

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

//================================
// Class definition
//================================
// Class part
//================================
typedef struct _XeMessageBoxClassPart
{
	EPointer  Extension;
} XeMessageBoxClassPart;


//================================
// Class record
//================================
typedef struct _XeMessageBoxClassRec
{
	XeCompositeClassCore;
	XeConstraintClassPart  Constraint;
	XeManagerClassPart     Manager;
	XeMessageBoxClassPart  MessageBox_class;
} XeMessageBoxClassRec;

extern XeMessageBoxClassRec  _XeMessageBox_class;



//================================
// Instance definition
//================================
// Instance part
//================================
typedef struct
{
	int             ButtonAlignment;

	XeCoord2        WorkAreaMarginSize;
	XeCoordinate    ButtonSpacing, ButtonsSizeY;

	XeWidget        WorkAreaW, SeparatorW;
	XeWidget*       Buttons;int		NumOfButtons;

	XeCallbackList  OkCallback, CancelCallback, HelpCallback;

	uint8_t         WorkAreaResizePolicyX, WorkAreaResizePolicyY;   // Tells whether MessageBox can resize its WorkArea child
	EBool           CreateSeparator, CreateButtons, ButtonsStretch, ButtonsUniformWidth;

// Private variables
//
	EBool           DoLayout;
} XeMessageBoxPart;


//================================
// Instance record
//================================
typedef struct _XeMessageBoxRec
{
	XeCompositeWidgetCore;

	XeBasePart        Base;
	XeManagerPart     Manager;
	XeMessageBoxPart  MessageBox;
} XeMessageBoxRec;


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

#endif // _XeMessageBoxP_h
