//================================================================================
// Xe GUI library
//
// FileSelectionBox private header file
//
// AUTHOR:  Gabor Nagy
// DATE:    2024-Apr-15 18:36:32
//
// Copyright (C) 1996-2026 by Gabor Nagy. All rights reserved.
//===============================================================================
#ifndef _XeFSBoxP_h
#define _XeFSBoxP_h

#include <Xe/Dialog.h>
#include <Xe/FSBox.h>

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


typedef struct
{
	XeWidget  ListW;
} EGUIList;


typedef struct
{
	XeDialogCore;

	XeWidget          ShellW;
	XeWidget          ManagerW;
	XeWidget          FilterMatrixW, FilterTextW, FilterListBW,
	                  ListsMatrixW, FileLabelW, FileTextW;

	EGUIList          DirList;
	EGUIList          FileList;

	XeEntryIdFunc     EntryIdFunc;

	XeWidget          ListsLayoutW, FilterListFormW, FilterListW;
	XeWidget          DirsScrolledWindowW, FilesScrolledWindowW,
	                  DirListLabelW, FileListLabelW, ViewModeMatrixW,
	                  SingleViewBW, DualViewBW,
	                  CustomItemW;
	XeWidget          FocusWidget;
	int               VScrollbarSizeX;
	int               FileListSizeX, ListXMargin, CustomItemPlacement, CustomItemType;
	int               SizeXDiff, SizeYDiff;
	int               SizeXWithLists, SizeYWithLists;
	unsigned int      DispFlags;
	char*             DirFilter;
	char*             Path;
	char*             FileName;

	EListA_s(, EDirEntry, DirEntries);
	EIndex            NumOfDirs;

	char*             TmpFilterList;
	EguiCallbackList  ValueChangedCallback;

	XeIntervalId      DirMonitorTimer;
	time_t            DirLastUpdateMTime;

	uint16_t          MultiSelect:1, Mapped:1, DirListOn:1, FileListOn:1, ShowLists:1,
	                  FileListVisibleItemCountGiven:1,
	                  ShowFullPaths:1, FilterListOn:1, PrgChangedSize:1;

	int               FileListVisibleItemCount;

	uint16_t          FileDeleteAction, FileActivateOnSelectWith;
} XeFileSelectionBox;



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


extern void  _XeFSBoxFree(void);


#endif	// _XeFSBoxP_h
