58 bool FrameDecoration::SetFacetByAction(
C4Def *pOfDef,
C4TargetFacet &rfctTarget,
const char *szFacetName)
62 sActName.
Format(
"FrameDeco%s", szFacetName);
64 if (!act)
return false;
72 if (!wdt || !hgt)
return false;
84 if (!pSrcDef)
return false;
98 SetFacetByAction(pSrcDef,
fctTop ,
"Top" );
99 SetFacetByAction(pSrcDef,
fctTopRight ,
"TopRight" );
100 SetFacetByAction(pSrcDef,
fctRight ,
"Right" );
102 SetFacetByAction(pSrcDef,
fctBottom ,
"Bottom" );
104 SetFacetByAction(pSrcDef,
fctLeft ,
"Left" );
105 SetFacetByAction(pSrcDef,
fctTopLeft ,
"TopLeft" );
182 #ifdef USE_WIN32_WINDOWS
193 ::ShowWindow(hWindow, SW_SHOW);
226 glClear(GL_COLOR_BUFFER_BIT);
230 cgo.
Set(
nullptr, 0, 0, r.
Wdt, r.
Hgt, 0, 0);
241 #ifdef WITH_QT_EDITOR
273 Dialog::Dialog(int32_t iWdt, int32_t iHgt,
const char *szTitle,
bool fViewportDlg):
274 Window(), pTitle(nullptr), pCloseBtn(nullptr), fDelOnClose(false), fViewportDlg(fViewportDlg), pWindow(nullptr), pFrameDeco(nullptr)
287 Keys.emplace_back(K_TAB);
308 Keys.emplace_back(K_RETURN);
316 Keys.emplace_back(K_ESCAPE);
347 if (szTitle && *szTitle)
362 if (fShowCloseButton)
384 delete pKeyAdvanceControl;
385 delete pKeyAdvanceControlB;
389 delete pKeyFocusDefControl;
448 case eFadeNone:
break;
451 if ((
iFade+=10) >= 100)
463 if ((
iFade-=10) <= 0)
474 if (
iFade <= 0)
return;
527 if (pDefCtrl && pDefCtrl !=
pActiveCtrl && (!c || *c != 0x20))
547 bool Dialog::KeyFocusDefault()
617 if (
fShow)
return false;
686 if (!
fShow)
return false;
705 if (!pScreen)
return false;
707 if (fForKeyboard && pScreen->
HasContext())
return false;
709 if (!pScreen->
IsExclusive() && !fForKeyboard)
return true;
733 this->
fOK = fCloseWithOK;
736 if (!pOnScreen)
return;
752 riX -= rcVP.
x; riY -= rcVP.
y;
765 riX += rcVP.
x; riY += rcVP.
y;
786 :
Dialog(
Screen::GetScreenS()->GetClientRect().Wdt,
Screen::GetScreenS()->GetClientRect().Hgt, nullptr , false), pFullscreenTitle(nullptr)
810 if (szTitle && *szTitle)
846 :
Dialog(eSize, 100 , szCaption, false), piConfigDontShowAgainSetting(piConfigDontShowAgainSetting), pKeyCopy(nullptr), sCopyText()
857 fTextCentered =
true;
860 int32_t iMsgWdt=0, iMsgHgt=0;
874 if (piConfigDontShowAgainSetting)
877 const char *szCheckText =
LoadResStr(
"IDS_MSG_DONTSHOW");
886 int32_t iButtonCount = 0;
887 int32_t i=1;
while (i) {
if (dwButtons & i) ++iButtonCount; i=i<<1; }
888 fHasOK = !!(dwButtons &
btnOK) || !!(dwButtons &
btnYes);
889 Button *btnFocus =
nullptr;
895 if (dwButtons &
btnOK)
900 if (!fDefaultNo) btnFocus = pBtnOK;
908 if (!btnFocus) btnFocus = pBtnRetry;
917 if (!btnFocus) btnFocus = pBtnAbort;
925 if (!btnFocus && !fDefaultNo) btnFocus = pBtnYes;
928 if (dwButtons &
btnNo)
932 if (!btnFocus) btnFocus = pBtnNo;
940 if (!btnFocus) btnFocus = pBtnReset;
944 if (btnFocus)
SetFocus(btnFocus,
false);
948 sCopyText =
strprintf(
"[%s] %s", szCaption ? szCaption :
"", szMessage ? szMessage :
"");
972 if ((this->pCB=pCB)) pCB->
Ref();
974 LogSilentF(
"[Cnf] %s: %s", szCaption, szMessage);
983 if (pStackCB) pStackCB->
Ref();
989 pStackCB->
DoCall(
nullptr);
1037 LogSilentF(
"[Msg] %s: %s", szCaption, szMessage);
1038 if (piConfigDontShowAgainSetting && *piConfigDontShowAgainSetting)
return true;
1054 LogSilentF(
"[Modal] %s: %s", szCaption, szMessage);
1056 if (piConfigDontShowAgainSetting && *piConfigDontShowAgainSetting)
return true;
1066 if (!pDlg->
Show(
this,
true)) {
delete pDlg;
return nullptr; }
1076 if (fDestruct)
delete pDlg;
1080 if (!pDlg)
return false;
1082 if (!pDlg->
Show(
this,
true)) {
delete pDlg;
return false; }
1084 bool fResult = pDlg->
DoModal();
1085 if (fDestruct)
delete pDlg;
1093 if (!pDlg)
return false;
1097 if (!pDlg->
Show(
this,
true)) {
delete pDlg;
return false; }
1108 fChatLayout ?
C4GUI::
Edit::GetDefaultEditHeight() + 2 :
1111 pEdit(nullptr), pCB(pCB), fChatLayout(fChatLayout), pChatLbl(nullptr)
1176 pEdit = pCustomEdit;
1205 for (
size_t i=0; i < sText.
getLength(); ++i)
1208 while (sText[i] !=
'|' && sText[i]) ++i;
1242 va_list lst; va_start(lst, szFmtString);
1244 buf.
FormatV(szFmtString, lst);
const int C4UpperBoardHeight
C4Def * C4Id2Def(C4ID id)
#define PSF_FrameDecoration
C4Application Application
C4GraphicsResource GraphicsResource
#define C4GUI_ProgressDlgPBHgt
#define C4GUI_FullscreenCaptionFontClr
#define C4GUI_StandardBGColor
#define C4GUI_ProgressDlgWdt
#define C4GUI_ProgressDlgVRoom
#define C4GUI_ButtonAreaHgt
#define C4GUI_TitleAutoScrollTime
#define C4GUI_InfoDlgVRoom
#define C4GUI_DefDlgIndent
#define C4GUI_DefButton2Wdt
#define C4GUI_CaptionFontClr
#define C4GUI_InputDlgWdt
#define C4GUI_MinWoodBarHgt
#define C4GUI_MessageFontClr
#define C4GUI_InputDlgVRoom
#define C4GUI_DefButtonWdt
#define C4GUI_DefButton2HSpace
const char * LoadResStr(const char *id)
bool LogSilentF(const char *strMessage,...)
std::string strprintf(const char *format,...)
bool SEqual(const char *szStr1, const char *szStr2)
StdStrBuf FormatString(const char *szFmt,...)
bool Copy(const std::string &text, bool fClipboard=true)
bool IsQuittingGame() const
int32_t GamepadGuiControl
const char * GetSubkeyPath(const char *subkey)
C4ConfigControls Controls
std::vector< C4KeyCodeEx > CodeList
C4Surface * GetBitmap(DWORD dwClr=0)
C4PropList * GetActionByName(const char *actname)
void DeactivateBlitModulation()
void DrawBoxDw(C4Surface *sfcDest, int iX1, int iY1, int iX2, int iY2, DWORD dwClr)
void ActivateBlitModulation(DWORD dwWithClr)
bool BlitSurfaceTile(C4Surface *sfcSurface, C4Surface *sfcTarget, float iToX, float iToY, float iToWdt, float iToHgt, float iOffsetX, float iOffsetY, C4ShaderCall *shader_call)
void DrawFullScreen(C4Facet &cgo)
void Draw(C4Facet &cgo, bool fAspect=true, int32_t iPhaseX=0, int32_t iPhaseY=0, bool fTransparent=true)
virtual void DoCall(class Element *pElement)=0
void SetOnChecked(BaseCallbackHandler *pCB)
static bool GetStandardCheckBoxSize(int *piWdt, int *piHgt, const char *szForCaptionText, CStdFont *pUseFont)
bool GetFromLeft(int32_t iWdt, int32_t iHgt, C4Rect &rcOut)
void ExpandLeft(int32_t iByWdt)
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)
bool GetFromTop(int32_t iHgt, int32_t iWdt, C4Rect &rcOut)
void GetAll(C4Rect &rcOut)
bool GetFromBottom(int32_t iHgt, int32_t iWdt, C4Rect &rcOut)
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
void AddElement(Element *pChild)
void RemoveElement(Element *pChild) override
virtual bool IsSelectedChild(Element *pChild)
bool OnHotkey(uint32_t cHotkey) override
Element * GetNextNestedElement(Element *pPrevElement, bool fBackwards)
virtual void OnLooseFocus()
virtual void OnGetFocus(bool fByMouse)
virtual bool CharIn(const char *)
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 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)
int32_t GetMarginRight() override
virtual class Control * GetDefaultControl()
static int32_t GetDefaultTitleHeight()
bool IsActive(bool fForKeyboard)
void UpdatePos() override
virtual const char * GetID()
void SetClientSize(int32_t iToWdt, int32_t iToHgt)
bool FadeIn(Screen *pOnScreen)
void ApplyInvElementOffset(int32_t &riX, int32_t &riY) override
void AdvanceFocus(bool fBackwards)
void UpdateSize() override
void Draw(C4TargetFacet &cgo) 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)
bool CreateConsoleWindow()
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
void PerformUpdate() override
virtual C4Window * Init(WindowKind windowKind, C4AbstractApp *pApp, const char *Title, const C4Rect *size)
C4Window * Init(C4AbstractApp *pApp, const char *Title, const C4Rect &rcBounds, const char *szID)
static int32_t GetDefaultEditHeight()
bool InsertText(const char *szText, bool fUser)
void SetDragTarget(Window *pToWindow)
C4Rect GetToprightCornerRect(int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
virtual Screen * GetScreen()
C4Rect GetContainedClientRect()
virtual void UpdateSize()
void SetBounds(const C4Rect &rcNewBound)
void SetToolTip(const char *szNewTooltip, bool is_immediate=false)
virtual Control * IsFocusElement()
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)
bool SetByDef(C4Def *pSrcDef)
C4TargetFacet fctTopRight
void Draw(C4TargetFacet &cgo, C4Rect &rcDrawArea)
bool fHasGfxOutsideClientArea
C4TargetFacet fctBottomLeft
C4TargetFacet fctBottomRight
void DrawElement(C4TargetFacet &cgo) override
void UpdateOwnPos() 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)
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 SetText(const char *szToText, bool fAllowHotkey=true)
void SetClickFocusControl(Control *pToCtrl)
~MessageDialog() 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 SetProgress(int32_t iToProgress)
void SetMessage(const char *szMessage)
ProgressDialog(const char *szMessage, const char *szCaption, int32_t iMaxProgress, int32_t iInitialProgress, Icons icoIcon)
bool ShowModalDlg(Dialog *pDlg, bool fDestruct=true)
static Screen * GetScreenS()
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()
bool ShowErrorMessage(const char *szMessage)
void ActivateDialog(Dialog *pDlg)
bool ShowRemoveDlg(Dialog *pDlg)
bool ShowMessageModal(const char *szMessage, const char *szCaption, DWORD dwButtons, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
bool ShowMessage(const char *szMessage, const char *szCaption, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
void CloseDialog(Dialog *pDlg, bool fFade)
void ClearText(bool fDoUpdate)
void SetScrollPos(int32_t iPos)
void AddTextLine(const char *szText, CStdFont *pFont, DWORD dwClr, bool fDoUpdate, bool fMakeReadableOnBlack, CStdFont *pCaptionFont=nullptr)
void UpdateOwnPos() override
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
void Draw(C4TargetFacet &cgo) override
C4Rect & GetClientRect() override
void ApplyElementOffset(int32_t &riX, int32_t &riY) override
void ApplyInvElementOffset(int32_t &riX, int32_t &riY) override
static int32_t GetDefaultHeight(CStdFont *pUseFont=nullptr)
void SetRightIndent(int32_t iNewIndent)
void SetAutoScrollTime(uint32_t tDelay)
int32_t GetPropertyInt(C4PropertyName k, int32_t default_val=0) const
C4Value Call(C4PropertyName k, C4AulParSet *pPars=nullptr, bool fPassErrors=false)
bool PageFlip(C4Rect *pSrcRt=nullptr, C4Rect *pDstRt=nullptr)
void Set(const C4Facet &cpy)
virtual C4Window * Init(WindowKind windowKind, C4AbstractApp *pApp, const char *Title, const C4Rect *size)
bool GetSize(C4Rect *pRect)
void SetTitle(const char *Title)
bool RestorePosition(const char *szWindowName, const char *szSubKey, bool fHidden=false)
void SetSize(unsigned int cx, unsigned int cy)
int GetLineHeight() const
std::tuple< std::string, int > BreakMessage(const char *szMsg, int iWdt, bool fCheckMarkup, float fZoom=1.0f)
bool GetTextExtent(const char *szText, int32_t &rsx, int32_t &rsy, bool fCheckMarkup=true)
bool PrepareRendering(C4Surface *sfcToSurface) override
bool ScheduleProcs(int iTimeout=1000/36)
void Remove(StdSchedulerProc *pProc)
void Add(StdSchedulerProc *pProc)
void FormatV(const char *szFmt, va_list args)
const char * getData() const
StdStrBuf copyPart(size_t iStart, size_t inSize) const
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
static StdStrBuf KeyCode2String(C4KeyCode wCode, bool fHumanReadable, bool fShort)