#pragma once #include "PLCore.h" namespace PortabilityLayer { class DialogItem; } template class ArrayView; class PLPasStr; struct Control; struct Dialog; typedef int16_t(*DialogFilterFunc_t)(Dialog *dialog, const TimeTaggedVOSEvent &evt); struct Dialog { virtual void Destroy() = 0; virtual Window *GetWindow() const = 0; virtual ArrayView GetItems() const = 0; virtual void SetItemVisibility(unsigned int itemIndex, bool isVisible) = 0; virtual int16_t ExecuteModal(DialogFilterFunc_t filterFunc) = 0; }; typedef Boolean(*ModalFilterUPP)(Dialog *dial, EventRecord *event, short *item); void DrawDialog(Dialog *dialog); DrawSurface *GetDialogPort(Dialog *dialog); void GetDialogItem(Dialog *dialog, int index, short *itemType, THandle *itemHandle, Rect *itemRect); void GetDialogItemText(THandle handle, StringPtr str); void SetDialogItem(Dialog *dialog, int index, short itemType, THandle itemHandle, const Rect *itemRect); void SetDialogItemText(THandle handle, const PLPasStr &str); void SelectDialogItemText(Dialog *dialog, int item, int firstSelChar, int lastSelCharExclusive); void ModalDialog(ModalFilterUPP filter, short *item); void ShowDialogItem(Dialog *dialog, int item); void HideDialogItem(Dialog *dialog, int item);