#ifndef _DONNETEMPINCLUDES_H_
#define _DONNETEMPINCLUDES_H_ 1

#pragma once

#include "MiniCadCallbacks.X.h"
#include "GSGeometry.h"
#include "GSString.h"
#include <vector>

#if DMartin
#define GS_ENABLE_TRANSPARENT_LAYOUT_MANAGER_STATIC_TEXT 1
#endif

#if GS_ENABLE_NEW_LAYOUT_MANAGER_CONTROLS

#define GS_ENABLE_OIP_THREE_STATE					1

//------------------------------------------------------------------------------------
const int	kTwentyFiveItemsVisMultiplier			= 27;
const int	kAlwaysShowCurrentToolOnFDBSelector		= 9999;
const long	kNotifyInvalidateSymPreview				= 'SymP';		// Move to MCNotify.h

//------------------------------------------------------------------------------------
// Disabled Owner Drawn Control Constants
//------------------------------------------------------------------------------------
enum EOwnerDrawnControlEventType {
	kOwnerDrawnControlLeftClick		= 0,
	kOwnerDrawnControlRightClick	= 1,
	kOwnerDrawnControlDoubleClick	= 2,
	kOwnerDrawnControlDrag			= 3,
	kOwnerDrawnControlNoEvents		= 4,
	kOwnerDrawnControlEventError	= 5
};

//------------------------------------------------------------------------------------
enum EOwnerDrawnControlObjectType {
	kOwnerDrawnControlPoint			= 0,
	kOwnerDrawnControlLine			= 1,
	kOwnerDrawnControlRectangle		= 2,
	kOwnerDrawnControlEllipse		= 3,
	kOwnerDrawnControlPolygon		= 4,
	kOwnerDrawnControlArc			= 5,
	kOwnerDrawnControlText			= 6,
	kOwnerDrawnControlIcon			= 7,
	kOwnerDrawnControlTypeError		= 8
};

//------------------------------------------------------------------------------------
// Layout Manager Functions
//------------------------------------------------------------------------------------
void	GS_SetupImageControl(Sint32 dialogID, Sint32 componentID, int iImageDefNodeRefNum);
void	GS_ImageControlMapClear();
Boolean GS_ImageControlMapDraw(Sint32 dialogID, Sint32 componentID);
Boolean GS_GetImageControlRect(Sint32 dialogID, Sint32 componentID, int& iLeftBound, int& iTopBound, int& iRightBound, int& iBottomBound);

#if GS_WIN
Boolean GS_GetImageControlDrawingInfo(Sint32 dialogID, Sint32 componentID, HWND& fViewHWND, HDC& fViewDC);
#else
Boolean GS_GetImageControlDrawingInfo(Sint32 dialogID, Sint32 componentID, CGrafPtr& pCurrentGWorld, GDHandle& hCurrentDevice);
#endif

Boolean GS_SetStaticTextType(Sint32 dialogID, Sint32 componentID, EStaticTextType enumType);
Boolean	GS_CreateStyledStaticText(Sint32 dialogID, Sint32 componentID, TXString strText, short siWidthInCharacters, EStaticTextType enumType);

void	CallAlertDontShowAgainInform(TXString strQuestion, Boolean& bCheckBoxVal, TXString strAdvice = "", TXString strOKOverrideText = "", TXString strCancelOverrideText = "");

Boolean GS_CreateClassInEnhancedComboBox(Sint32 dialogID, Sint32 componentID);
Boolean GS_CreateDesignLayerInEnhancedComboBox(Sint32 dialogID, Sint32 componentID);
Boolean GS_CreateSheetLayerInEnhancedComboBox(Sint32 dialogID, Sint32 componentID);

Boolean GS_InitializeClassEnhancedComboBox(Sint32 dialogID, Sint32 componentID, std::vector<TXString> vListProposedItemsNames, std::vector<int> vListProposedItemsIcons);
Boolean GS_InitializeDesignLayerEnhancedComboBox(Sint32 dialogID, Sint32 componentID, std::vector<TXString> vListProposedItemsNames, std::vector<int> vListProposedItemsIcons);
Boolean GS_InitializeSheetLayerEnhancedComboBox(Sint32 dialogID, Sint32 componentID, std::vector<TXString> vListProposedItemsNames, std::vector<int> vListProposedItemsIcons);
 
Boolean GS_NotifyPullDownClicked(Sint32 dialogID, Sint32 componentID);

Boolean GS_ShowListBrowserRadioToolTips(Sint32 dialogID, Sint32 componentID);

//------------------------------------------------------------------------------------
class HierarchyObject {
public:
	HierarchyObject()	{};
	~HierarchyObject()	{};

	TXString	fParentName;
	TXString	fName;
};

//------------------------------------------------------------------------------------
// Used in Plug Ins
//------------------------------------------------------------------------------------
const int kDataBarCursorVisStateUndefined			= -1;
const int kDataBarCursorVisStatePrimary				= 0;
const int kDataBarCursorVisStatePrimaryAndSecondary	= 1;
const int kDataBarCursorVisStateAll					= 2;

//------------------------------------------------------------------------------------
// Miscellaneous Variables
//------------------------------------------------------------------------------------
extern int							gCurrentFileID;
extern std::vector<HierarchyObject>	gHierarchyObjects;
extern std::vector<TXString>		gImportedRefNames;
extern bool							gDragAndDropImport;
extern bool							gDefaultContentImport;
extern TXString						gCurrentFolder;
extern int							gNumFoldersDeep;
extern bool							gAboutVWDialog;
extern void*						gSavedDataType;
extern bool							gAllowSetFocusToCurrentViewAfterLocateInRBMenu;
extern long							gPlanarPopupWidgetWidgetID;

//------------------------------------------------------------------------------------
// Miscellaneous Functions
//------------------------------------------------------------------------------------
int			GetCurrentNavigationPane();
void		SetUpSavedSettings();
TXString	GetSplashFullFileName();
void		RetrieveSplashAndAboutCoordinates(int &nXSplashCoord, int &nYSplashCoord, int &nXAboutCoord, int &nYAboutCoord, int &nSeparation);
TXString	GetApplicationVersion();
TXString	GetMaskedModernSerialNumber();
void		SendSelectionChangeNotification();
int			GetStandardView();

void		SetNavPalSavedSetting(PStr255 strCategory, PStr255 strItem, PStr255 strValue);
int			GetNavPalSavedSetting(PStr255 strCategory, PStr255 strItem, PStr255& strValue);

#endif
//------------------------------------------------------------------------------------

#endif // _DONNETEMPINCLUDES_H_
