37 #define C4GUI_CaptionFontClr 0xffffffff
38 #define C4GUI_Caption2FontClr 0xffffff00
39 #define C4GUI_InactCaptionFontClr 0xffafafaf
40 #define C4GUI_ButtonFontClr 0xffffff00
41 #define C4GUI_ButtonFontShadowClr 0xff000000
42 #define C4GUI_StatusFontClr 0xffffffff
43 #define C4GUI_MessageFontClr 0xffffffff
44 #define C4GUI_MessageFontAlpha 0xff000000
45 #define C4GUI_InactMessageFontClr 0xffafafaf
46 #define C4GUI_NotifyFontClr 0xffff0000
47 #define C4GUI_ComboFontClr 0xffffffff
48 #define C4GUI_CheckboxFontClr 0xffffffff
49 #define C4GUI_SmallCheckboxFontClr 0xffffffff
50 #define C4GUI_CheckboxDisabledFontClr 0xffafafaf
51 #define C4GUI_LogFontClr 0xffafafaf
52 #define C4GUI_LogFontClr2 0xffff1f1f
53 #define C4GUI_ErrorFontClr 0xffff1f1f
54 #define C4GUI_ProgressBarFontClr 0xffffffff
55 #define C4GUI_ContextFontClr 0xffffffff
56 #define C4GUI_GfxTabCaptActiveClr 0xff000000
57 #define C4GUI_GfxTabCaptInactiveClr 0xff000000
60 #define C4GUI_ImportantBGColor 0x2f00007f
61 #define C4GUI_ProgressBarColor 0x4fffffff
62 #define C4GUI_ListBoxSelColor 0x4faf0000
63 #define C4GUI_ListBoxInactSelColor 0x4f7f7f7f
64 #define C4GUI_ContextSelColor 0x4faf0000
65 #define C4GUI_ContextBGColor 0xaf3f1a00
66 #define C4GUI_StandardBGColor 0x9f000000
67 #define C4GUI_ActiveTabBGColor C4GUI_StandardBGColor
68 #define C4GUI_ListBoxBarColor 0x7f772200
69 #define C4GUI_EditBGColor 0x7f000000
70 #define C4GUI_EditFontColor 0xffffffff
72 #define C4GUI_ToolTipBGColor 0xFFF1EA78
73 #define C4GUI_ToolTipFrameColor 0x7f000000
74 #define C4GUI_ToolTipColor 0xFF483222
77 #define C4GUI_WinningTextColor 0xffffdf00
78 #define C4GUI_WinningBackgroundColor 0xafaf7a00
79 #define C4GUI_LosingTextColor 0xffffffff
80 #define C4GUI_LosingBackgroundColor 0x7fafafaf
84 #define C4GUI_BorderAlpha 0x4f
85 #define C4GUI_BorderColor1 0x772200
86 #define C4GUI_BorderColor2 0x331100
87 #define C4GUI_BorderColor3 0xaa4400
88 #define C4GUI_BorderColorA1 (C4GUI_BorderAlpha<<24 | C4GUI_BorderColor1)
89 #define C4GUI_BorderColorA2 (C4GUI_BorderAlpha<<24 | C4GUI_BorderColor2)
90 #define C4GUI_BorderColorA3 (C4GUI_BorderAlpha<<24 | C4GUI_BorderColor3)
93 #define C4GUI_IconWdt 40
94 #define C4GUI_IconHgt 40
95 #define C4GUI_IconExWdt 64
96 #define C4GUI_IconExHgt 64
97 #define C4GUI_ControllerIconWdt 100
98 #define C4GUI_ControllerIconHgt 100
100 #define C4GUI_IconLabelSpacing 2
103 #define C4GUI_ScrollBarWdt 16
104 #define C4GUI_ScrollBarHgt 16
105 #define C4GUI_ScrollArrowHgt 16
106 #define C4GUI_ScrollArrowWdt 16
107 #define C4GUI_ScrollThumbHgt 16
108 #define C4GUI_ScrollThumbWdt 16
111 #define C4GUI_ButtonHgt 32
112 #define C4GUI_BigButtonHgt 40
113 #define C4GUI_ButtonAreaHgt 40
114 #define C4GUI_DefButtonWdt 140
115 #define C4GUI_DefButton2Wdt 120
116 #define C4GUI_DefButton2HSpace 10
119 #define C4GUI_CheckBoxHgt 32
120 #define C4GUI_CheckBoxLabelSpacing 4
123 #define C4GUI_DefaultListSpacing 1
124 #define C4GUI_ListBoxBarIndent 10
127 #define C4GUI_MessageDlgWdt 500
128 #define C4GUI_MessageDlgWdtMedium 360
129 #define C4GUI_MessageDlgWdtSmall 300
130 #define C4GUI_ProgressDlgWdt 500
131 #define C4GUI_InputDlgWdt 300
132 #define C4GUI_DefDlgIndent 10
133 #define C4GUI_DefDlgSmallIndent 4
134 #define C4GUI_MessageDlgVRoom 100
135 #define C4GUI_ProgressDlgVRoom 150
136 #define C4GUI_InputDlgVRoom 150
137 #define C4GUI_ProgressDlgPBHgt 30
138 #define C4GUI_InfoDlgWdt 620
139 #define C4GUI_InfoDlgVRoom 100
140 #define C4GUI_MaxToolTipWdt 500
143 #define C4GUI_ToolTipShowTime 500
146 #define C4GUI_TitleAutoScrollTime 3000
149 #define C4GUI_TabCaptionScrollTime 500
152 #define C4GUI_Z_CHAT +2
153 #define C4GUI_Z_INPUT +1
154 #define C4GUI_Z_DEFAULT 0
155 #define C4GUI_Z_PLAYERMENU -1
156 #define C4GUI_Z_OBJECTMENU -2
158 #define C4GUI_MinWoodBarHgt 23
160 #define C4GUI_FullscreenDlg_TitleHeight C4UpperBoardHeight
161 #define C4GUI_FullscreenCaptionFontClr 0xffffff00
169 class Element;
class Screen;
class CMouse;
170 class ComponentAligner;
173 class Label;
class WoodenLabel;
class MultilineLabel;
174 class HorizontalLine;
class ProgressBar;
175 class Picture;
class Icon;
class PaintBox;
179 class Container;
class Window;
class GroupBox;
class Control;
180 class ScrollBar;
class ScrollWindow;
183 class Button;
template <
class CallbackDlg,
class Base>
class CallbackButton;
185 class CloseButton;
class OKButton;
class CancelButton;
186 class CloseIconButton;
class OKIconButton;
class CancelIconButton;
208 class Dialog;
class MessageDialog;
class ProgressDialog;
209 class InputDialog;
class InfoDialog;
212 class MenuHandler;
class ContextHandler;
243 inline void Ref() { ++iRefs; }
244 inline void DeRef() {
if (!--iRefs)
delete this; }
256 inline void Ref() { ++iRefs; }
257 inline void DeRef() {
if (!--iRefs)
delete this; }
274 ((pCBClass)->*CBFunc)(pElement);
292 ((pCBClass)->*CBFunc)();
301 typedef void (CB::*
Func)(ParType);
311 ((pCBClass)->*CBFunc)(par);
331 typedef void (CB::*
Func)(ParType par);
343 void DoCall(ParType par)
override { ((pCBClass)->*CBFunc)(par); }
364 void Set(
const C4Facet &rByFct, int32_t iPinIndex=0);
373 bool is_immediate_tooltip{
false};
420 virtual bool OnHotkey(uint32_t cHotkey) {
return false; }
438 void SetToolTip(
const char *szNewTooltip,
bool is_immediate =
false);
502 void SetText(
const char *szToText,
bool fAllowHotkey=
true);
506 void SetX0(int32_t iToX0);
515 uint32_t iAutoScrollDelay;
519 int32_t iScrollPos, iScrollDir;
520 int32_t iRightIndent;
531 :
Label(szLblText,
rcBounds,
iAlign, dwFClr,
pFont, true, true,
fMarkup), iAutoScrollDelay(0), tLastChangeTime(
C4TimeMilliseconds::Now()), iScrollPos(0), iScrollDir(0), iRightIndent(0)
560 void Clear(
bool fDoUpdate);
759 bool OnHotkey(uint32_t cHotkey)
override;
791 return (current == other.current);
796 return !(*
this == other);
814 return (current == other.current);
819 return !(*
this == other);
860 void SetPos(int32_t iXPos, int32_t iYPos)
935 friend class ::C4ScriptGuiWindow;
1004 uint32_t dwFrameClr, dwTitleClr, dwBackClr;
1017 void SetColors(uint32_t dwFrameClr, uint32_t dwTitleClr, uint32_t dwBackClr=0xffffffff) { this->dwFrameClr = dwFrameClr; this->dwTitleClr = dwTitleClr; this->dwBackClr = dwBackClr; }
1039 PaintBox(
C4Rect &rtBounds, int32_t iSfcWdt=-1, int32_t iSfcHgt=-1);
1042 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1051 virtual bool CharIn(
const char *) {
return false; }
1065 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1116 void SetUp(
bool fPress);
1124 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1128 void SetText(
const char *szToText);
1130 { this->pCustomGfx = pCustomGfx; this->pCustomGfxDown = pCustomGfxDown; }
1208 CallbackDlg *pC=
pCB;
1209 if (!pC)
if (!(pC=
reinterpret_cast<CallbackDlg *
>(Base::GetDlg())))
return;
1250 Edit(
const C4Rect &rtBounds,
bool fFocusEdit=
false);
1262 enum CursorOperation { COP_BACK, COP_DELETE, COP_LEFT, COP_RIGHT, COP_HOME, COP_END };
1263 static const char *CursorRepresentation;
1265 bool KeyCursorOp(
const C4KeyCodeEx &key,
const CursorOperation &op);
1267 bool KeyCopy() { Copy();
return true; }
1268 bool KeyPaste() { Paste();
return true; }
1269 bool KeyCut() { Cut();
return true; }
1270 bool KeySelectAll() {
SelectAll();
return true; }
1274 class C4KeyBinding *pKeyCursorBack, *pKeyCursorDel, *pKeyCursorLeft, *pKeyCursorRight, *pKeyCursorHome, *pKeyCursorEnd,
1275 *pKeyEnter, *pKeyCopy, *pKeyPaste, *pKeyCut, *pKeySelAll;
1290 bool InsertText(
const char *szText,
bool fUser);
1297 int32_t GetCharPos(int32_t iControlXPos);
1298 void EnsureBufferSize(int32_t iMinBufferSize);
1299 void ScrollCursorInView();
1300 bool DoFinishInput(
bool fPasting,
bool fPastingMore);
1302 bool Copy();
bool Cut();
bool Paste();
1318 bool CharIn(
const char * c)
override;
1337 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1345 bool GetCurrentWord(
char *szTargetBuf, int32_t iMaxTargetBufLen);
1349 void SetColors(uint32_t dwNewBGClr, uint32_t dwNewFontClr, uint32_t dwNewBorderColor)
1359 CallbackCtrl *pCBCtrl;
1399 void FinishRename();
1438 static bool GetControlSize(
int *piWdt,
int *piHgt,
const char *szForText,
CStdFont *pForFont,
bool fMultiline);
1452 uint32_t dwEnabledClr, dwDisabledClr;
1456 CheckBox(
const C4Rect &rtBounds,
const char *szCaption,
bool fChecked);
1460 bool KeyCheck() {
ToggleCheck(
true);
return true; }
1470 bool OnHotkey(uint32_t cHotkey)
override;
1473 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1485 { this->pFont=pFont; this->dwEnabledClr=dwEnabledClr; this->dwDisabledClr=dwDisabledClr; }
1494 class C4KeyBinding *pKeyContext, *pKeyUp, *pKeyDown, *pKeyPageUp, *pKeyPageDown, *pKeyHome, *pKeyEnd, *pKeyActivate, *pKeyLeft, *pKeyRight;
1527 bool CharIn(
const char * c)
override;
1538 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1621 bool IsPosOnCloseButton(int32_t x, int32_t y, int32_t iCaptWdt, int32_t iCaptHgt,
bool fLarge);
1627 void SetTitle(
const char *szNewTitle);
1643 Sheet *pActiveSheet;
1645 int32_t iMaxTabWidth;
1646 int32_t iSheetSpacing, iSheetOff;
1647 int32_t iCaptionLengthTotal, iCaptionScrollPos;
1648 bool fScrollingLeft, fScrollingRight, fScrollingLeftDown, fScrollingRightDown;
1653 C4Facet *pfctBack, *pfctClip, *pfctIcons;
1656 C4KeyBinding *pKeySelUp, *pKeySelDown, *pKeySelUp2, *pKeySelDown2, *pKeyCloseTab;
1658 void SelectionChanged(
bool fByUser);
1659 void SheetsChanged();
1660 void UpdateScrolling();
1661 void DoCaptionScroll(int32_t iDir);
1665 bool HasGfx() {
return pfctBack && pfctClip && pfctIcons; }
1691 bool IsSelectedChild(
Element *pChild)
override {
return pChild == pActiveSheet || (pActiveSheet && pActiveSheet->IsParentOf(pChild)); }
1697 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1739 TextWindow(
C4Rect &rtBounds,
size_t iPicWdt=0,
size_t iPicHgt=0,
size_t iPicPadding=0,
size_t iMaxLines=100,
size_t iMaxTextLen=4096,
const char *szIndentChars=
" ",
bool fAutoGrow=
false,
const C4Facet *pOverlayPic=
nullptr,
int iOverlayBorder=0,
bool fMarkup=
false);
1769 class C4KeyBinding *pKeySelUp, *pKeySelDown, *pKeySubmenu, *pKeyBack, *pKeyAbort, *pKeyConfirm, *pKeyHotkey;
1780 static int32_t iGlobalMenuIndex;
1783 void UpdateElementPositions();
1786 bool AddElement(
Element *pChild);
1841 virtual bool CharIn(
const char * c);
1869 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1872 void Abort(
bool fByUser);
1877 AddElement(pNew); pNew->
SetToolTip(szToolTip);
1906 bool DoContext(int32_t iX=-1, int32_t iY=-1);
1907 bool KeyContext() {
return DoContext(); }
1908 void RegisterContextKey();
1916 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
1937 void AddEntry(
const char *szText, int32_t
id);
1955 {
if (pCBClass && FillFunc) (pCBClass->*FillFunc)(
this); }
1957 {
if (pCBClass && SelFunc)
return (pCBClass->*SelFunc)(pForCombo, idNewSelection);
else return false; }
1961 pCBClass(pCBClass), FillFunc(FillFunc), SelFunc(SelFunc) { }
1987 uint32_t dwFontClr, dwBGClr, dwBorderClr;
1992 bool KeyDropDown() {
return DoDropdown(); }
1993 bool KeyAbortDropDown() {
return AbortDropdown(
true); }
1994 bool AbortDropdown(
bool fByUser);
2008 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
2014 void SetText(
const char *szToText);
2015 void SetReadOnly(
bool fToVal) {
if ((fReadOnly = fToVal)) AbortDropdown(
false); }
2019 void SetColors(uint32_t dwFontClr, uint32_t dwBGClr, uint32_t dwBorderClr)
2020 { this->dwFontClr=dwFontClr; this->dwBGClr=dwBGClr; this->dwBorderClr=dwBorderClr; }
2022 { this->pFctSideArrow = pFctSideArrow; }
2037 void Close()
override;
2047 bool SetFacetByAction(
C4Def *pOfDef,
class C4TargetFacet &rfctTarget,
const char *szFacetName);
2066 void Deref() {
if (!--iRefCount)
delete this; }
2075 enum Fade { eFadeNone=0, eFadeOut, eFadeIn };
2077 C4KeyBinding *pKeyAdvanceControl, *pKeyAdvanceControlB, *pKeyHotkey, *pKeyEnter, *pKeyEscape, *pKeyFocusDefControl;
2108 virtual const char *
GetID() {
return nullptr; }
2120 virtual bool CharIn(
const char * c);
2124 bool KeyFocusDefault();
2127 void MouseInput(
CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam)
override;
2187 void FadeOut(
bool fCloseWithOK);
2193 void SetTitle(
const char *szToTitle,
bool fShowCloseButton =
true);
2215 static bool RegisterWindowClass(HINSTANCE hInst);
2227 const char *
GetID()
override {
return nullptr; }
2232 void SetTitle(
const char *szToTitle);
2332 int32_t *piConfigDontShowAgainSetting;
2334 std::string sCopyText;
2344 bool OnEnter()
override {
if (!fHasOK)
return false;
Close(
true);
return true; }
2346 {
if (piConfigDontShowAgainSetting) *piConfigDontShowAgainSetting =
static_cast<C4GUI::CheckBox *
>(pCheckBox)->GetChecked(); }
2349 const char *
GetID()
override {
return "MessageDialog"; }
2374 const char *
GetID()
override {
return "ProgressDialog"; }
2377 ProgressDialog(
const char *szMessage,
const char *szCaption, int32_t iMaxProgress, int32_t iInitialProgress,
Icons icoIcon);
2415 const char *
GetID()
override {
return "InputDialog"; }
2440 void AddLine(
const char *szText);
2450 InfoDialog(
const char *szCaption, int32_t iLineCount);
2460 typedef bool(TargetClass::*CallbackFunc)();
2472 typedef bool(TargetClass::*CallbackFunc)(
const C4KeyCodeEx &key);
2480 template <
class TargetClass,
class ParameterType>
class DlgKeyCBEx :
public C4KeyCBEx<TargetClass, ParameterType>
2484 typedef bool(TargetClass::*CallbackFunc)(ParameterType
par);
2497 typedef bool(TargetClass::*CallbackFunc)();
2509 typedef bool(TargetClass::*CallbackFunc)(
const C4KeyCodeEx &key,
const ParameterType &
par);
2523 typedef bool(TargetClass::*CallbackFunc)();
2559 CMouse(int32_t iX, int32_t iY);
2564 void Input(int32_t iButton, int32_t iX, int32_t iY,
DWORD dwKeyParam);
2622 void Init(int32_t tx, int32_t ty, int32_t twdt, int32_t thgt);
2636 virtual bool CharIn(
const char * c);
2643 bool ShowMessage(
const char *szMessage,
const char *szCaption,
Icons icoIcon, int32_t *piConfigDontShowAgainSetting=
nullptr);
2645 bool ShowMessageModal(
const char *szMessage,
const char *szCaption,
DWORD dwButtons,
Icons icoIcon, int32_t *piConfigDontShowAgainSetting=
nullptr);
2652 #ifdef USE_WIN32_WINDOWS
2702 :
MenuHandler(), pCBTarget(pCBTarget), pCallbackFn(pCallbackFn) { }
2706 if (!pCBTarget )
return;
2708 (pCBTarget->*pCallbackFn)(pTargetElement);
2722 :
MenuHandler(), pCBTarget(pCBTarget), pCallbackFn(pCallbackFn), Extra(
std::move(aExtra)) { }
2724 :
MenuHandler(), pCBTarget(pCBTarget), pCallbackFn(pCallbackFn), Extra() { }
2731 if (!pCBTarget || !pCallbackFn)
return;
2733 (pCBTarget->*pCallbackFn)(pTargetElement, Extra);
2747 :
ContextHandler(), pCBTarget(pCBTarget), pCallbackFn(pCallbackFn) { }
2752 if (!pCBTarget)
return false;
2755 if (!pScreen)
return false;
2757 ContextMenu *pNewMenu = (pCBTarget->*pCallbackFn)(pOnElement, iX, iY);
2758 if (!pNewMenu)
return false;
2760 pScreen->
DoContext(pNewMenu, pOnElement, iX, iY);
2768 return (pCBTarget->*pCallbackFn)(pOnElement, 0, 0);
2801 C4Rect &
GetGridCell(int32_t iSectX, int32_t iSectXMax, int32_t iSectY, int32_t iSectYMax, int32_t iSectSizeX=-1, int32_t iSectSizeY=-1,
bool fCenterPos=
false, int32_t iSectNumX=1, int32_t iSectNumY=1);
2816 void LogIt(
const char *szName);
2828 void GUISound(
const char *szSound);
const int C4UpperBoardHeight
#define C4GUI_ToolTipShowTime
#define C4GUI_ScrollArrowHgt
#define C4GUI_FullscreenDlg_TitleHeight
#define C4GUI_MessageDlgWdtMedium
#define C4GUI_BorderAlpha
#define C4GUI_DefaultListSpacing
#define C4GUI_ScrollThumbWdt
#define C4GUI_ScrollThumbHgt
#define C4GUI_CaptionFontClr
C4GUI::Screen C4GUIScreen
#define C4GUI_MessageDlgWdt
#define C4GUI_MessageDlgWdtSmall
#define C4GUI_ScrollArrowWdt
const char * LoadResStr(const char *id)
void Set(const C4Facet &cpy)
BaseCallbackHandler()=default
virtual void DoCall(class Element *pElement)=0
virtual ~BaseCallbackHandler()=default
virtual void DoCall(ParType par)=0
void DoCall(class Element *pElement) override
BaseParCallbackHandler()=default
bool OnContext(Element *pOnElement, int32_t iX, int32_t iY) override
C4GUI::ContextMenu * OnSubcontext(Element *pOnElement) override
const TEx & GetExtra() const
void SetExtra(const TEx &e)
void OnOK(Element *pTargetElement) override
void OnOK(Element *pTargetElement) override
C4TimeMilliseconds tLastMovementTime
void Input(int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam)
Element * pMouseOverElement
void OnElementGetsInvisible(Element *pChild)
Element * pPrevMouseOverElement
void Draw(C4TargetFacet &cgo, TooltipShowState draw_tool_tips)
void RemoveElement(Element *pChild)
CMouse(int32_t iX, int32_t iY)
void SetOwnedMouse(bool fToVal)
void GetLastXY(int32_t &rX, int32_t &rY, DWORD &rdwKeys)
CallbackEdit(const C4Rect &rtBounds, CallbackCtrl *pCBCtrl, CBFunc pCBFunc, CBAbortFunc pCBAbortFunc=nullptr)
InputResult OnFinishInput(bool fPasting, bool fPastingMore) override
InputResult(CallbackCtrl::* CBFunc)(Edit *, bool, bool)
void OnAbortInput() override
void(CallbackCtrl::* CBAbortFunc)()
CallbackHandlerExPar(CB *pTarget, Func rFunc, ParType par)
void DoCall(class Element *pElement) override
void(CB::* Func)(ParType)
void DoCall(class Element *pElement) override
void(CB::* Func)(class Element *pElement)
CallbackHandler(CB *pTarget, Func rFunc)
CallbackHandlerNoPar(CB *pTarget, Func rFunc)
void DoCall(class Element *pElement) override
CBCancelFunc pCBCancelFunc
RenameResult(CallbackDlg::* CBOKFunc)(ParType, const char *)
CallbackRenameEdit(Label *pForLabel, CallbackDlg *pDlg, const ParType &par, CBOKFunc pCBOKFunc, CBCancelFunc pCBCancelFunc)
void OnCancelRename() override
void(CallbackDlg::* CBCancelFunc)(ParType)
RenameResult OnOKRename(const char *szNewName) override
void SetFont(CStdFont *pFont, uint32_t dwEnabledClr, uint32_t dwDisabledClr)
void DrawElement(C4TargetFacet &cgo) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void SetOnChecked(BaseCallbackHandler *pCB)
bool IsFocusOnClick() override
void MouseLeave(CMouse &rMouse) override
void SetChecked(bool fToVal)
CheckBox(const C4Rect &rtBounds, const char *szCaption, bool fChecked)
bool OnHotkey(uint32_t cHotkey) override
void MouseEnter(CMouse &rMouse) override
Control * IsFocusElement() override
void SetEnabled(bool fToVal)
static bool GetStandardCheckBoxSize(int *piWdt, int *piHgt, const char *szForCaptionText, CStdFont *pUseFont)
void ToggleCheck(bool fByUser)
void UpdateOwnPos() override
virtual void FillDropDownCB()=0
void AddEntry(const char *szText, int32_t id)
void SelectEntry(int32_t iEntry)
virtual bool OnComboSelChange(ComboBox *pForCombo, int32_t idNewSelection)=0
bool FindEntry(const char *szText)
virtual ~ComboBox_FillCB()=default
void FillDropDown(ComboBox *pComboBox, ContextMenu *pDropdownList)
ComboBox_FillCallback(CB *pCBClass, ComboFillFunc FillFunc, ComboSelFunc SelFunc)
void FillDropDownCB() override
void(CB::* ComboFillFunc)(ComboBox_FillCB *pFiller)
bool OnComboSelChange(ComboBox *pForCombo, int32_t idNewSelection) override
bool(CB::* ComboSelFunc)(ComboBox *pForCombo, int32_t idNewSelection)
void SetSimple(bool fToVal)
void DrawElement(C4TargetFacet &cgo) override
static int32_t GetDefaultHeight()
const StdStrBuf GetText()
Control * IsFocusElement() override
void SetComboCB(ComboBox_FillCB *pNewFillCallback)
void OnCtxComboSelect(C4GUI::Element *pListItem, const ComboMenuCBStruct &rNewSel)
void SetColors(uint32_t dwFontClr, uint32_t dwBGClr, uint32_t dwBorderClr)
void SetFont(CStdFont *pToFont)
void SetReadOnly(bool fToVal)
bool IsFocusOnClick() override
void SetDecoration(C4Facet *pFctSideArrow)
void SetText(const char *szToText)
void MouseLeave(CMouse &rMouse) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
ComboBox(const C4Rect &rtBounds)
void MouseEnter(CMouse &rMouse) override
ComponentAligner(const C4Rect &rcArea, int32_t iMarginX, int32_t iMarginY, bool fZeroAreaXY=false)
int32_t GetInnerHeight() const
C4Rect & GetFromLeft(int32_t iWdt, int32_t iHgt=-1)
bool GetFromLeft(int32_t iWdt, int32_t iHgt, C4Rect &rcOut)
C4Rect & GetFromTop(int32_t iHgt, int32_t iWdt=-1)
void ExpandLeft(int32_t iByWdt)
C4Rect & GetFromBottom(int32_t iHgt, int32_t iWdt=-1)
bool GetCentered(int32_t iWdt, int32_t iHgt, C4Rect &rcOut)
int32_t GetHeight() const
int32_t GetInnerWidth() const
bool GetFromRight(int32_t iWdt, int32_t iHgt, C4Rect &rcOut)
int32_t GetHMargin() const
void ExpandBottom(int32_t iByHgt)
void ExpandTop(int32_t iByHgt)
bool GetFromTop(int32_t iHgt, int32_t iWdt, C4Rect &rcOut)
int32_t GetVMargin() const
C4Rect & GetCentered(int32_t iWdt, int32_t iHgt)
void LogIt(const char *szName)
C4Rect & GetGridCell(int32_t iSectX, int32_t iSectXMax, int32_t iSectY, int32_t iSectYMax, int32_t iSectSizeX=-1, int32_t iSectSizeY=-1, bool fCenterPos=false, int32_t iSectNumX=1, int32_t iSectNumY=1)
bool GetFromBottom(int32_t iHgt, int32_t iWdt, C4Rect &rcOut)
C4Rect & GetFromRight(int32_t iWdt, int32_t iHgt=-1)
void ExpandRight(int32_t iByWdt)
ConfirmationDialog(const char *szMessage, const char *szCaption, BaseCallbackHandler *pCB, DWORD dwButtons=MessageDialog::btnOKAbort, bool fSmall=false, Icons icoIcon=Ico_Confirm)
void OnClosed(bool fOK) override
~ConfirmationDialog() override
Element * operator->() const
Element * operator*() const
bool operator!=(const Iterator &other) const
bool operator==(const Iterator &other) const
Iterator(Element *element=nullptr)
bool operator!=(const ReverseIterator &other) const
bool operator==(const ReverseIterator &other) const
Element * operator*() const
Element * operator->() const
ReverseIterator(Element *element=nullptr)
virtual Element * GetLastContained()
void AddElement(Element *pChild)
void RemoveElement(Element *pChild) override
virtual void ElementPosChanged(Element *pOfElement)
virtual void ElementSizeChanged(Element *pOfElement)
Element * GetElementByIndex(int32_t i)
virtual bool IsSelectedChild(Element *pChild)
void MakeLastElement(Element *pChild)
int32_t GetElementCount()
Container * GetContainer() override
void ReaddElement(Element *pChild)
virtual void AfterElementRemoval()
void InsertElement(Element *pChild, Element *pInsertBefore)
bool OnHotkey(uint32_t cHotkey) override
Element * GetNextNestedElement(Element *pPrevElement, bool fBackwards)
virtual void ApplyInvElementOffset(int32_t &riX, int32_t &riY)
virtual void ApplyElementOffset(int32_t &riX, int32_t &riY)
void Draw(C4TargetFacet &cgo) override
void SetVisibility(bool fToValue) override
bool IsParentOf(Element *pEl) override
Element * GetFirstContained() override
friend class ScrollWindow
Element * GetFirstNestedElement(bool fBackwards) override
virtual bool IsFocused(Control *pCtrl)
void DrawElement(C4TargetFacet &cgo) override
void MouseEnter(CMouse &rMouse) override
bool IsFocusOnClick() override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void MouseLeave(CMouse &rMouse) override
~ContextButton() override
ContextButton(C4Rect &rtBounds)
virtual bool OnContext(Element *pOnElement, int32_t iX, int32_t iY)=0
virtual ContextMenu * OnSubcontext(Element *pOnElement)=0
virtual ~ContextHandler()=default
virtual void OnLooseFocus()
Control(const C4Rect &rtBounds)
Control * IsFocusElement() override
virtual void OnGetFocus(bool fByMouse)
virtual bool CharIn(const char *)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
virtual bool IsFocusOnClick()
ControlKeyCBExPassKey(TargetClass &rTarget, const ParameterType &rPar, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
bool CheckCondition() override
bool CheckCondition() override
ControlKeyCB(TargetClass &rTarget, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
ControlKeyDlgCB(Control *pCtrl, TargetClass &rTarget, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
bool CheckCondition() override
void SetFocus(Control *pCtrl, bool fByMouse)
void SetDelOnClose(bool fToVal=true)
CallbackButton< Dialog, C4GUI::IconButton > * pCloseBtn
virtual bool CharIn(const char *c)
void FadeOut(bool fCloseWithOK)
int32_t GetMarginTop() override
void RemoveElement(Element *pChild) override
int32_t GetMarginBottom() override
virtual void UserClose(bool fOK)
virtual bool IsExclusiveDialog()
virtual C4Viewport * GetViewport()
bool KeyAdvanceFocus(bool fBackwards)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void OnUserClose(C4GUI::Control *btn)
virtual bool IsBottomPlacementDialog()
bool IsComponentOutsideClientArea() override
int32_t GetMarginRight() override
virtual bool IsFullscreenDialog()
bool IsExternalDrawDialog() override
virtual class Control * GetDefaultControl()
virtual bool HasBackground()
static int32_t GetDefaultTitleHeight()
bool IsActive(bool fForKeyboard)
DialogWindow * GetDialogWindow() override
void UpdatePos() override
virtual const char * GetID()
void SetClientSize(int32_t iToWdt, int32_t iToHgt)
void SetFrameDeco(FrameDecoration *pNewDeco)
bool FadeIn(Screen *pOnScreen)
virtual int32_t GetZOrdering()
FrameDecoration * GetFrameDecoration() const
void ApplyInvElementOffset(int32_t &riX, int32_t &riY) override
void AdvanceFocus(bool fBackwards)
virtual bool IsMouseControlled()
bool IsFocused(Control *pCtrl) override
void UpdateSize() override
void Draw(C4TargetFacet &cgo) override
Dialog * GetDlg() override
Dialog(int32_t iWdt, int32_t iHgt, const char *szTitle, bool fViewportDlg)
void ApplyElementOffset(int32_t &riX, int32_t &riY) override
virtual void OnClosed(bool fOK)
virtual bool DoPlacement(Screen *pOnScreen, const C4Rect &rPreferredDlgRect)
bool CreateConsoleWindow()
ContextHandler * GetContextHandler() override
int32_t GetMarginLeft() override
void DestroyConsoleWindow()
void SetTitle(const char *szToTitle, bool fShowCloseButton=true)
bool Show(Screen *pOnScreen, bool fCB)
FrameDecoration * pFrameDeco
void DrawElement(C4TargetFacet &cgo) override
virtual bool IsFreePlaceDialog()
void PerformUpdate() override
virtual C4Window * Init(WindowKind windowKind, C4AbstractApp *pApp, const char *Title, const C4Rect *size)
DlgKeyCBEx(TargetClass &rTarget, const ParameterType &par, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
bool CheckCondition() override
bool CheckCondition() override
DlgKeyCB(TargetClass &rTarget, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
bool CheckCondition() override
DlgKeyCBPassKey(TargetClass &rTarget, CallbackFunc pFuncDown, CallbackFunc pFuncUp=nullptr, CallbackFunc pFuncPressed=nullptr)
bool GetCurrentWord(char *szTargetBuf, int32_t iMaxTargetBufLen)
static int32_t GetCustomEditHeight(CStdFont *pUseFont)
int32_t GetMarginTop() override
ContextMenu * OnContext(C4GUI::Element *pListItem, int32_t iX, int32_t iY)
void SetMaxText(int32_t iTo)
virtual InputResult OnFinishInput(bool fPasting, bool fPastingMore)
bool CharIn(const char *c) override
int32_t GetMarginRight() override
static int32_t GetDefaultEditHeight()
void OnCtxSelAll(C4GUI::Element *pThis)
void DoDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void DrawElement(C4TargetFacet &cgo) override
void OnCtxCopy(C4GUI::Element *pThis)
virtual void OnAbortInput()
void OnCtxClear(C4GUI::Element *pThis)
Edit(const C4Rect &rtBounds, bool fFocusEdit=false)
int32_t GetMarginBottom() override
void SetFont(CStdFont *pToFont)
bool SetText(const char *szText, bool fUser)
void SetPasswordMask(char cNewPasswordMask)
C4TimeMilliseconds tLastInputTime
void OnCtxCut(C4GUI::Element *pThis)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void OnCtxPaste(C4GUI::Element *pThis)
bool InsertText(const char *szText, bool fUser)
void OnLooseFocus() override
void SetColors(uint32_t dwNewBGClr, uint32_t dwNewFontClr, uint32_t dwNewBorderColor)
bool IsFocusOnClick() override
int32_t GetMarginLeft() override
void OnGetFocus(bool fByMouse) override
virtual void DrawElement(C4TargetFacet &cgo)
virtual bool IsParentOf(Element *pEl)
virtual bool IsOwnPtrElement()
virtual bool GetListItemTopSpacingBar()
Element * GetPrev() const
virtual void SetVisibility(bool fToValue)
void SetDragTarget(Window *pToWindow)
virtual void RemoveElement(Element *pChild)
const char * GetOwnToolTip()
virtual Container * GetContainer()
C4Rect GetToprightCornerRect(int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
void DrawVBar(C4TargetFacet &cgo, DynBarFacet &rFacets)
virtual Screen * GetScreen()
Element * GetNext() const
C4Rect GetContainedClientRect()
bool IsInActiveDlg(bool fForKeyboard)
virtual void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam)
virtual void UpdateSize()
virtual C4Rect & GetClientRect()
void SetBounds(const C4Rect &rcNewBound)
virtual void StopDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
virtual ContextHandler * GetContextHandler()
void DrawBar(C4TargetFacet &cgo, DynBarFacet &rFacets)
void DrawHBarByVGfx(C4TargetFacet &cgo, DynBarFacet &rFacets)
virtual void StartDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
virtual void MouseEnter(CMouse &rMouse)
virtual class Dialog * GetDlg()
void DrawHVBar(C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
virtual class DialogWindow * GetDialogWindow()
void SetToolTip(const char *szNewTooltip, bool is_immediate=false)
virtual bool IsExternalDrawDialog()
virtual Control * IsFocusElement()
void ClientPos2ScreenPos(int32_t &riX, int32_t &riY)
const char * GetToolTip()
virtual void DoDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
void SetContextHandler(ContextHandler *pNewHd)
virtual bool CheckNameHotkey(const char *)
virtual bool OnHotkey(uint32_t cHotkey)
virtual Element * GetFirstNestedElement(bool fBackwards)
virtual Element * GetFirstContained()
ContextHandler * pContextHandler
bool IsImmediateToolTip() const
virtual int32_t GetListItemTopSpacing()
virtual void MouseLeave(CMouse &rMouse)
void Draw3DFrame(C4TargetFacet &cgo, bool fUp=false, int32_t iIndent=1, BYTE byAlpha=C4GUI_BorderAlpha, bool fDrawTop=true, int32_t iTopOff=0, bool fDrawLeft=true, int32_t iLeftOff=0)
virtual void Draw(C4TargetFacet &cgo)
virtual void UpdateOwnPos()
void ScreenPos2ClientPos(int32_t &riX, int32_t &riY)
bool SetByDef(C4Def *pSrcDef)
C4TargetFacet fctTopRight
void Draw(C4TargetFacet &cgo, C4Rect &rcDrawArea)
bool fHasGfxOutsideClientArea
C4TargetFacet fctBottomLeft
C4TargetFacet fctBottomRight
bool IsFullscreenDialog() override
const char * GetID() override
void DrawElement(C4TargetFacet &cgo) override
bool DoPlacement(Screen *pOnScreen, const C4Rect &rPreferredDlgRect) override
void UpdateOwnPos() override
int32_t GetMarginLeft() override
virtual bool HasUpperBoard()
void DrawBackground(C4TargetFacet &cgo, C4Facet &rFromFct)
void SetTitle(const char *szToTitle)
int32_t GetMarginTop() override
FullscreenDialog(const char *szTitle, const char *szSubtitle)
bool IsComponentOutsideClientArea() override
int32_t GetMarginRight() override
int32_t GetMarginBottom() override
void SetColors(uint32_t dwFrameClr, uint32_t dwTitleClr, uint32_t dwBackClr=0xffffffff)
void SetTitle(const char *szToTitle)
int32_t GetMarginBottom() override
void DrawElement(C4TargetFacet &cgo) override
void SetFont(CStdFont *pToFont)
GroupBox(C4Rect &rtBounds)
int32_t GetMarginRight() override
void SetMargin(int32_t iNewMargin)
int32_t GetMarginTop() override
int32_t GetMarginLeft() override
void DrawElement(C4TargetFacet &cgo) override
HorizontalLine(C4Rect &rrcBounds, uint32_t dwClr=0x000000, uint32_t dwShadowClr=0xaf7f7f7f)
void SetIcon(Icons icoNewIconIndex)
static C4Facet GetIconFacet(Icons icoIconIndex)
Icon(const C4Rect &rcBounds, Icons icoIconIndex)
void AddLine(const char *szText)
InfoDialog(const char *szCaption, int32_t iLineCount)
void AddLineFmt(const char *szFmtString,...) GNUC_FORMAT_ATTRIBUTE_O
virtual void UpdateText()
void CreateSubComponents()
void OnSec1Timer() override
void UpdateOwnPos() override
virtual int32_t GetLeftIndent()
void SetText(const char *szToText, bool fAllowHotkey=true)
void SetClickFocusControl(Control *pToCtrl)
void DrawElement(C4TargetFacet &cgo) override
void SetAutosize(bool fToVal)
void SetX0(int32_t iToX0)
Control * pClickFocusControl
Label(const char *szLblText, int32_t iX0, int32_t iTop, int32_t iAlign=ALeft, DWORD dwFClr=0xffffffff, CStdFont *pFont=nullptr, bool fMakeReadableOnBlack=true, bool fMarkup=true)
bool OnHotkey(uint32_t cHotkey) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void SetColor(DWORD dwToClr, bool fMakeReadableOnBlack=true)
LabeledEdit(const C4Rect &rcBounds, const char *szName, bool fMultiline, const char *szPrefText=nullptr, CStdFont *pUseFont=nullptr, uint32_t dwTextClr=C4GUI_CaptionFontClr)
static bool GetControlSize(int *piWdt, int *piHgt, const char *szForText, CStdFont *pForFont, bool fMultiline)
C4GUI::Edit * GetEdit() const
const char * GetText() const
Element * GetSelectedItem()
void ElementPosChanged(Element *pOfElement) override
bool IsScrollingNecessary()
bool IsFocused(Control *pCtrl) override
bool InsertElement(Element *pChild, Element *pInsertBefore, int32_t iIndent=0)
bool IsFocusOnClick() override
void SetSelectionDblClickFn(BaseCallbackHandler *pToHandler)
void SetSelectionChangeCallbackFn(BaseCallbackHandler *pToHandler)
int32_t ContractToElementHeight()
int32_t GetMarginBottom() override
BaseCallbackHandler * pSelectionChangeHandler
void SelectFirstEntry(bool fByUser)
bool AddElement(Element *pChild, int32_t iIndent=0)
bool CharIn(const char *c) override
void UpdateElementPositions()
ScrollWindow * pClientWindow
bool IsSelectedChild(Element *pChild) override
void DrawElement(C4TargetFacet &cgo) override
Control * IsFocusElement() override
void ScrollItemInView(Element *pItem)
void ElementSizeChanged(Element *pOfElement) override
void SelectionChanged(bool fByUser)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void SetDecoration(bool fDrawBG, ScrollBarFacets *pToGfx, bool fAutoScroll, bool fDrawBorder=false)
int32_t(* SortFunction)(const Element *pEl1, const Element *pEl2, void *par)
void SelectNone(bool fByUser)
void SortElements(SortFunction SortFunc, void *par)
bool IsMultiColumn() const
int32_t GetMarginTop() override
BaseCallbackHandler * pSelectionDblClickHandler
void SelectEntry(Element *pNewSel, bool fByUser)
int32_t GetMarginRight() override
void UpdateElementPosition(Element *pOfElement, int32_t iIndent)
void SetSelectionDiabled(bool fToVal=true)
int32_t GetMarginLeft() override
int32_t iMultiColItemWidth
void AfterElementRemoval() override
void UpdateSize() override
void RemoveElement(Element *pChild) override
void OnGetFocus(bool fByMouse) override
virtual ~MenuHandler()=default
virtual void OnOK(Element *pTarget)=0
const char * GetID() override
~MessageDialog() override
int32_t GetZOrdering() override
MessageDialog(const char *szMessage, const char *szCaption, DWORD dwButtons, Icons icoIcon, DlgSize eSize=dsRegular, int32_t *piConfigDontShowAgainSetting=nullptr, bool fDefaultNo=false)
void OnDontShowAgainCheck(C4GUI::Element *pCheckBox)
void DrawElement(C4TargetFacet &cgo) override
void AddLine(const char *szLine, CStdFont *pFont, DWORD dwClr, bool fDoUpdate, bool fMakeReadableOnBlack, CStdFont *pCaptionFont)
MultilineLabel(const C4Rect &rcBounds, int32_t iMaxLines, int32_t iMaxBuf, const char *szIndentChars, bool fAutoGrow, bool fMarkup)
void Clear(bool fDoUpdate)
void UpdateSize() override
OverlayPicture(const C4Rect &rcBounds, bool fAspect, const C4Facet &rOverlayImage, int iBorderSize)
void DrawElement(C4TargetFacet &cgo) override
void DrawElement(C4TargetFacet &cgo) override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
PaintBox(C4Rect &rtBounds, int32_t iSfcWdt=-1, int32_t iSfcHgt=-1)
void DoCall(ParType par) override
void(CB::* Func)(ParType par)
ParCallbackHandler(CB *pTarget, Func rFunc)
void SetFacet(const C4Facet &fct)
C4FacetSurface & GetMFacet()
Picture(const C4Rect &rcBounds, bool fAspect)
void SetDrawColor(uint32_t dwToClr)
void DrawElement(C4TargetFacet &cgo) override
void SetAnimated(bool fEnabled, int iDelay)
const C4FacetSurface & GetFacet() const
void SetProgress(int32_t iToProgress)
void DrawElement(C4TargetFacet &cgo) override
ProgressBar(C4Rect &rrcBounds, int32_t iMaxProgress=100)
void SetProgress(int32_t iToProgress)
void SetMessage(const char *szMessage)
const char * GetID() override
ProgressDialog(const char *szMessage, const char *szCaption, int32_t iMaxProgress, int32_t iInitialProgress, Icons icoIcon)
virtual void OnCancelRename()
virtual RenameResult OnOKRename(const char *szNewName)=0
InputResult OnFinishInput(bool fPasting, bool fPastingMore) override
void OnLooseFocus() override
RenameEdit(Label *pLabel)
bool ShowModalDlg(Dialog *pDlg, bool fDestruct=true)
Dialog * GetFullscreenDialog(bool fIncludeFading)
static Screen * GetScreenS()
void SetPreferredDlgRect(const C4Rect &rtNewPref)
static void DrawToolTip(const char *szTip, C4TargetFacet &cgo, float guix, float guiy)
int32_t GetContextMenuIndex()
ProgressDialog * ShowProgressDlg(const char *szMessage, const char *szCaption, int32_t iMaxProgress=100, int32_t iInitialProgress=0, Icons icoIcon=Ico_Wait)
void ShowDialog(Dialog *pDlg, bool fFade)
void RecheckActiveDialog()
Screen * GetScreen() override
bool ShowErrorMessage(const char *szMessage)
virtual bool CharIn(const char *c)
void UpdateGamepadGUIControlEnabled()
void Init(int32_t tx, int32_t ty, int32_t twdt, int32_t thgt)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void SetMouseInGUI(bool fInGUI, bool fByMouse)
void RenderMouse(C4TargetFacet &cgo)
void Draw(C4TargetFacet &cgo) override
bool HasFullscreenDialog(bool fIncludeFading)
void ActivateDialog(Dialog *pDlg)
int32_t GetLastContextMenuIndex()
Dialog * GetDialog(C4Window *pWindow)
bool ShowRemoveDlg(Dialog *pDlg)
bool ShowMessageModal(const char *szMessage, const char *szCaption, DWORD dwButtons, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
void AbortContext(bool fByUser)
void ElementPosChanged(Element *pOfElement) override
void SetExclusive(bool fToState)
void MouseMove(int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam, class C4Viewport *pVP)
bool ShowMessage(const char *szMessage, const char *szCaption, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
void CloseDialog(Dialog *pDlg, bool fFade)
void CloseAllDialogs(bool fWithOK)
const C4Rect & GetPreferredDlgRect()
void RemoveElement(Element *pChild) override
void DoContext(ContextMenu *pNewCtx, Element *pAtElement, int32_t iX, int32_t iY)
int32_t GetMouseControlledDialogCount()
bool HasCloseButton() const
void SetTitle(const char *szNewTitle)
bool IsPosOnCloseButton(int32_t x, int32_t y, int32_t iCaptWdt, int32_t iCaptHgt, bool fLarge)
void SetCloseButtonHighlight(bool fToVal)
virtual void OnShown(bool fByUser)
Sheet(const char *szTitle, const C4Rect &rcBounds, int32_t icoTitle=Ico_None, bool fHasCloseButton=false, bool fTitleMarkup=true)
void DrawCaption(C4TargetFacet &cgo, int32_t x, int32_t y, int32_t iMaxWdt, bool fLarge, bool fActive, bool fFocus, C4Facet *pfctClip, C4Facet *pfctIcon, CStdFont *pUseFont)
void SetCaptionColor(uint32_t dwNewClr=0)
void GetCaptionSize(int32_t *piWdt, int32_t *piHgt, bool fLarge, bool fActive, C4Facet *pfctClip, C4Facet *pfctIcon, CStdFont *pUseFont)
bool fCloseButtonHighlighted
void DrawElement(C4TargetFacet &cgo) override
Tabular(C4Rect &rtBounds, TabPosition eTabPos)
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
Sheet * AddSheet(const char *szTitle, int32_t icoTitle=Ico_None)
int32_t GetMarginLeft() override
void SelectSheet(int32_t iIndex, bool fByUser)
int32_t GetActiveSheetIndex()
void OnGetFocus(bool fByMouse) override
Sheet * GetSheet(int32_t iIndex)
Control * IsFocusElement() override
void MouseLeaveCaptionArea()
void RemoveElement(Element *pChild) override
static int32_t GetLeftClipSize(C4Facet *pfctForClip)
bool IsFocusOnClick() override
void UpdateSize() override
void SetDrawDecoration(bool fToVal)
int32_t GetMarginRight() override
bool IsSelectedChild(Element *pChild) override
void AddCustomSheet(Sheet *pAddSheet)
void SetSheetMargin(int32_t iMargin)
int32_t GetMarginBottom() override
void MouseLeave(CMouse &rMouse) override
int32_t GetMarginTop() override
void SetGfx(C4Facet *pafctBack, C4Facet *pafctClip, C4Facet *pafctIcons, CStdFont *paSheetCaptionFont, bool fResizeByAspect)
MultilineLabel * pLogBuffer
int32_t GetMarginBottom() override
void DrawElement(C4TargetFacet &cgo) override
Control * IsFocusElement() override
void SetDecoration(bool fDrawBG, bool fDrawFrame, ScrollBarFacets *pToGfx, bool fAutoScroll)
void ElementSizeChanged(Element *pOfElement) override
int32_t GetMarginLeft() override
void SetPicture(const C4Facet &rNewPic)
void ClearText(bool fDoUpdate)
void ElementPosChanged(Element *pOfElement) override
void SetScrollPos(int32_t iPos)
ScrollWindow * pClientWindow
int32_t GetMarginTop() override
int32_t GetMarginRight() override
void UpdateSize() override
void AddTextLine(const char *szText, CStdFont *pFont, DWORD dwClr, bool fDoUpdate, bool fMakeReadableOnBlack, CStdFont *pCaptionFont=nullptr)
void SetPos(int32_t iXPos, int32_t iYPos)
virtual int32_t GetMarginRight()
virtual int32_t GetMarginTop()
void UpdateOwnPos() override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
virtual int32_t GetMarginLeft()
void Draw(C4TargetFacet &cgo) override
C4Rect & GetClientRect() override
virtual int32_t GetMarginBottom()
void ApplyElementOffset(int32_t &riX, int32_t &riY) override
virtual bool IsComponentOutsideClientArea()
void ApplyInvElementOffset(int32_t &riX, int32_t &riY) override
static int32_t GetDefaultHeight(CStdFont *pUseFont=nullptr)
int32_t GetLeftIndent() override
WoodenLabel(const char *szLblText, const C4Rect &rcBounds, DWORD dwFClr=0xffffffff, CStdFont *pFont=nullptr, int32_t iAlign=ACenter, bool fMarkup=true)
void SetRightIndent(int32_t iNewIndent)
void SetAutoScrollTime(uint32_t tDelay)
int32_t GetRightIndent() const
void SetIcon(const C4Facet &rfctIcon)
void DrawElement(C4TargetFacet &cgo) override
CallbackFunc pFuncPressed
CallbackFunc pFuncPressed
CallbackFunc pFuncPressed
CallbackFunc pFuncPressed
static C4TimeMilliseconds Now()
virtual C4Window * Init(WindowKind windowKind, C4AbstractApp *pApp, const char *Title, const C4Rect *size)
int GetLineHeight() const
const char * getData() const
void(CallbackDlg::* ContextClickFunc)(Element *pTargetElement)
void MouseMove(int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam, class C4Viewport *pVP)
@ Ico_Controller_LeftStick
@ Ico_Controller_LeftTrigger
@ Ico_Controller_DpadRight
@ Ico_Controller_DpadDown
@ Ico_Controller_RightStick
@ Ico_Controller_LeftShoulder
@ Ico_Controller_RightShoulder
@ Ico_Controller_DpadLeft
@ Ico_Controller_RightTrigger
void(CallbackDlg::* Func)(Control *pFromControl)
bool(CallbackDlg::* Bool2Func)(Control *pFromControl, bool fBool, bool fBool2)
bool(CallbackDlg::* BoolFunc)(Control *pFromControl)
void(CallbackDlg::* ContextClickFunc)(Element *pTargetElement, TEx Extra)
DWORD MakeColorReadableOnBlack(DWORD &rdwClr)
bool ExpandHotkeyMarkup(StdStrBuf &sText, uint32_t &rcHotkey, bool for_tooltip)
ContextMenu *(CallbackDlg::* ContextFunc)(Element *pFromElement, int32_t iX, int32_t iY)
void GUISound(const char *szSound)
void SetHorizontal(C4Surface &rBySfc, int iHeight=0, int iBorderWidth=0)