OpenClonk
C4StartupOptionsDlg Class Reference

#include <C4StartupOptionsDlg.h>

Inheritance diagram for C4StartupOptionsDlg:
[legend]
Collaboration diagram for C4StartupOptionsDlg:
[legend]

Public Member Functions

 C4StartupOptionsDlg ()
 
 ~C4StartupOptionsDlg () override
 
void DoBack ()
 
bool SetSubscreen (const char *szToScreen) override
 
void OnKeyboardLayoutChanged () override
 
void RecreateDialog (bool fFade)
 
virtual void OnLeagueOptionChanged ()
 
void SetTitle (const char *szToTitle)
 
void SetTitle (const char *szToTitle, bool fShowCloseButton=true)
 
void RemoveElement (Element *pChild) override
 
void Draw (C4TargetFacet &cgo) override
 
void ApplyElementOffset (int32_t &riX, int32_t &riY) override
 
void ApplyInvElementOffset (int32_t &riX, int32_t &riY) override
 
bool IsFocused (Control *pCtrl) override
 
void SetFocus (Control *pCtrl, bool fByMouse)
 
ControlGetFocus ()
 
DialogGetDlg () override
 
DialogWindow * GetDialogWindow () override
 
virtual bool CharIn (const char *c)
 
void MouseInput (CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
 
virtual class ControlGetDefaultControl ()
 
bool KeyEnter ()
 
bool KeyEscape ()
 
void AdvanceFocus (bool fBackwards)
 
bool KeyAdvanceFocus (bool fBackwards)
 
bool IsShown ()
 
bool IsOK ()
 
bool IsAborted ()
 
bool IsActive (bool fForKeyboard)
 
bool IsFading ()
 
virtual bool HasBackground ()
 
virtual bool IsFreePlaceDialog ()
 
virtual bool IsBottomPlacementDialog ()
 
virtual bool IsExclusiveDialog ()
 
virtual bool IsMouseControlled ()
 
virtual C4ViewportGetViewport ()
 
bool IsViewportDialog ()
 
bool IsExternalDrawDialog () override
 
virtual int32_t GetZOrdering ()
 
bool Show (Screen *pOnScreen, bool fCB)
 
void Close (bool fOK)
 
bool FadeIn (Screen *pOnScreen)
 
void FadeOut (bool fCloseWithOK)
 
bool DoModal ()
 
bool Execute ()
 
bool Execute2 ()
 
void SetDelOnClose (bool fToVal=true)
 
void SetFrameDeco (FrameDecoration *pNewDeco)
 
void ClearFrameDeco ()
 
FrameDecoration * GetFrameDecoration () const
 
void SetClientSize (int32_t iToWdt, int32_t iToHgt)
 
void OnUserClose (C4GUI::Control *btn)
 
virtual void OnShown ()
 
virtual void OnIdle ()
 
ContextHandler * GetContextHandler () override
 
void SetPos (int32_t iXPos, int32_t iYPos)
 
C4RectGetClientRect () override
 
void Clear ()
 
void ClearChildren ()
 
void MakeLastElement (Element *pChild)
 
void AddElement (Element *pChild)
 
void ReaddElement (Element *pChild)
 
void InsertElement (Element *pChild, Element *pInsertBefore)
 
ElementGetNextNestedElement (Element *pPrevElement, bool fBackwards)
 
ElementGetFirstContained () override
 
virtual ElementGetLastContained ()
 
ElementGetFirstNestedElement (bool fBackwards) override
 
Iterator begin ()
 
Iterator end ()
 
ReverseIterator rbegin ()
 
ReverseIterator rend ()
 
ElementGetFirst ()
 
ElementGetLast ()
 
ContainerGetContainer () override
 
ElementGetElementByIndex (int32_t i)
 
int32_t GetElementCount ()
 
void SetVisibility (bool fToValue) override
 
virtual bool IsSelectedChild (Element *pChild)
 
bool IsParentOf (Element *pEl) override
 
virtual void MouseEnter (CMouse &rMouse)
 
virtual void MouseLeave (CMouse &rMouse)
 
virtual void StartDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
virtual void DoDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
virtual void StopDragging (CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
 
bool DoContext ()
 
ContainerGetParent ()
 
virtual ScreenGetScreen ()
 
virtual ControlIsFocusElement ()
 
void ScreenPos2ClientPos (int32_t &riX, int32_t &riY)
 
void ClientPos2ScreenPos (int32_t &riX, int32_t &riY)
 
void SetToolTip (const char *szNewTooltip, bool is_immediate=false)
 
const char * GetToolTip ()
 
const char * GetOwnToolTip ()
 
bool IsImmediateToolTip () const
 
int32_t GetWidth ()
 
int32_t GetHeight ()
 
C4RectGetBounds ()
 
void SetBounds (const C4Rect &rcNewBound)
 
C4Rect GetContainedClientRect ()
 
ElementGetNext () const
 
ElementGetPrev () const
 
bool IsInActiveDlg (bool fForKeyboard)
 
C4Rect GetToprightCornerRect (int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
 
bool IsVisible ()
 
virtual int32_t GetListItemTopSpacing ()
 
virtual bool GetListItemTopSpacingBar ()
 
void SetDragTarget (Window *pToWindow)
 
void SetContextHandler (ContextHandler *pNewHd)
 

Static Public Member Functions

static int32_t GetDefaultTitleHeight ()
 

Public Attributes

bool fVisible {true}
 

Protected Member Functions

bool OnEnter () override
 
bool OnEscape () override
 
bool KeyBack ()
 
void OnClosed (bool fOK) override
 
void UserClose (bool fOK) override
 
void OnBackBtn (C4GUI::Control *btn)
 
bool SaveConfig (bool fForce, bool fKeepOpen)
 
bool KeyMusicToggle ()
 
const char * GetID () override
 
void DrawElement (C4TargetFacet &cgo) override
 
bool IsComponentOutsideClientArea () override
 
virtual bool HasUpperBoard ()
 
bool IsFullscreenDialog () override
 
bool DoPlacement (Screen *pOnScreen, const C4Rect &rPreferredDlgRect) override
 
int32_t GetMarginTop () override
 
int32_t GetMarginLeft () override
 
int32_t GetMarginRight () override
 
int32_t GetMarginBottom () override
 
void UpdateOwnPos () override
 
void DrawBackground (C4TargetFacet &cgo, C4Facet &rFromFct)
 
bool CreateConsoleWindow ()
 
void DestroyConsoleWindow ()
 
void UpdateSize () override
 
void UpdatePos () override
 
virtual void ElementSizeChanged (Element *pOfElement)
 
virtual void ElementPosChanged (Element *pOfElement)
 
virtual void AfterElementRemoval ()
 
bool OnHotkey (uint32_t cHotkey) override
 
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)
 
void DrawBar (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawVBar (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawHBarByVGfx (C4TargetFacet &cgo, DynBarFacet &rFacets)
 
void DrawHVBar (C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
 
virtual bool IsOwnPtrElement ()
 
virtual bool IsMenu ()
 
virtual bool CheckNameHotkey (const char *)
 

Protected Attributes

Label * pFullscreenTitle
 
Label * pSubTitle
 
int32_t iDlgMarginX
 
int32_t iDlgMarginY
 
WoodenLabel * pTitle
 
CallbackButton< Dialog, C4GUI::IconButton > * pCloseBtn
 
ControlpActiveCtrl
 
bool fShow
 
bool fOK
 
int32_t iFade
 
Fade eFade
 
bool fDelOnClose
 
StdStrBuf TitleString
 
bool fViewportDlg
 
DialogWindow * pWindow
 
FrameDecoration * pFrameDeco
 
C4Rect rcClientRect
 
ElementpFirst
 
ElementpLast
 
ContainerpParent {nullptr}
 
ElementpPrev
 
ElementpNext
 
WindowpDragTarget {nullptr}
 
int32_t iDragX
 
int32_t iDragY
 
bool fDragging {false}
 
ContextHandler * pContextHandler {nullptr}
 
C4Rect rcBounds
 

Detailed Description

Definition at line 24 of file C4StartupOptionsDlg.h.

Constructor & Destructor Documentation

◆ C4StartupOptionsDlg()

C4StartupOptionsDlg::C4StartupOptionsDlg ( )

Definition at line 696 of file C4StartupOptionsDlg.cpp.

References ACenter, C4GUI::Container::AddElement(), C4GUI::Tabular::AddSheet(), ALeft, C4ConfigNetwork::AlternateServerAddress, Application, C4ConfigGraphics::AutoFrameSkip, C4StartupGraphics::BookFont, C4StartupGraphics::BookSmallFont, C4GUI_ButtonHgt, C4GUI_DefDlgSmallIndent, C4GUI_ScrollBarHgt, C4NetStdPortDiscovery, C4NetStdPortRefServer, C4NetStdPortTCP, C4NetStdPortUDP, C4StartupEditBGColor, C4StartupEditBorderColor, C4StartupFontClr, C4StartupFontClrDisabled, C4GraphicsResource::CaptionFont, Config, StdStrBuf::Copy(), C4ConfigNetwork::EnableUPnP, C4Window::EnumerateMultiSamples(), C4StartupGraphics::fctOptionsIcons, C4StartupGraphics::fctOptionsTabClip, C4ConfigSound::FEMusic, C4ConfigSound::FESamples, StdStrBuf::Format(), FormatString(), C4Config::General, C4Startup::Get(), C4GUI::ComponentAligner::GetAll(), C4GUI::ComponentAligner::GetCentered(), C4GUI::Window::GetClientRect(), StdStrBuf::getData(), C4GUI::ComboBox::GetDefaultHeight(), C4GUI::ComponentAligner::GetFromLeft(), C4GUI::ComponentAligner::GetFromRight(), C4GUI::ComponentAligner::GetFromTop(), C4GUI::ComponentAligner::GetInnerWidth(), StdStrBuf::getLength(), CStdFont::GetLineHeight(), C4Config::GetRegistrationData(), C4GUI::CheckBox::GetStandardCheckBoxSize(), CStdFont::GetTextExtent(), C4Startup::Graphics, C4Config::Graphics, GraphicsResource, C4Rect::Hgt, C4ConfigStartup::HideMsgMMTimerChange, KeyBack(), KeyMusicToggle(), KEYSCOPE_Gui, LoadResStr(), LoadResStrNoAmp(), C4ConfigGeneral::MMTimer, C4ConfigGraphics::MultiSampling, C4ConfigSound::MusicVolume, C4Config::Network, C4ConfigNetwork::Nick, OnBackBtn(), C4ConfigNetwork::PacketLogging, C4ConfigNetwork::PortDiscovery, C4ConfigNetwork::PortRefServer, C4ConfigNetwork::PortTCP, C4ConfigNetwork::PortUDP, C4CustomKey::PRIO_Dlg, C4AbstractApp::pWindow, C4ConfigGraphics::ResX, C4ConfigGraphics::ResY, C4ConfigSound::RXMusic, C4ConfigSound::RXSound, C4GUI::GroupBox::SetColors(), C4GUI::ComboBox::SetColors(), C4GUI::ComboBox::SetComboCB(), C4GUI::ComboBox::SetDecoration(), C4GUI::Dialog::SetFocus(), C4GUI::GroupBox::SetFont(), C4GUI::CheckBox::SetFont(), C4GUI::ComboBox::SetFont(), C4GUI::Tabular::SetGfx(), C4GUI::ComboBox::SetReadOnly(), C4GUI::ComboBox::SetText(), C4GUI::GroupBox::SetTitle(), C4GUI::Element::SetToolTip(), C4Config::Sound, C4ConfigSound::SoundVolume, C4Config::Startup, C4GUI::Tabular::tbLeft, C4GraphicsResource::TextFont, C4GUI::Dialog::UpdateSize(), C4ConfigNetwork::UseAlternateServer, and C4Rect::Wdt.

696  : C4StartupDlg(LoadResStrNoAmp("IDS_DLG_OPTIONS"))
697 {
698  // ctor
699  UpdateSize();
700  bool fSmall = (GetClientRect().Wdt < 750);
701  CStdFont *pUseFont = &(C4Startup::Get()->Graphics.BookFont);
702 
703  // key bindings
705  keys.emplace_back(K_BACK); keys.emplace_back(K_LEFT);
706  pKeyBack = new C4KeyBinding(keys, "StartupOptionsBack", KEYSCOPE_Gui,
708  keys.clear();
709  keys.emplace_back(K_F3); // overloading global toggle with higher priority here, so a new name is required
710  pKeyToggleMusic = new C4KeyBinding(keys, "OptionsMusicToggle", KEYSCOPE_Gui,
712 
713  // screen calculations
714  int32_t iButtonWidth,iCaptionFontHgt;
715  int32_t iButtonHeight = C4GUI_ButtonHgt;
716  ::GraphicsResource.CaptionFont.GetTextExtent("<< BACK", iButtonWidth, iCaptionFontHgt, true);
717  iButtonWidth *= 3;
718  int iIndentX1, iIndentY1, iIndentY2;
719  if (fSmall)
720  {
721  iIndentX1=20;
722  }
723  else
724  {
725  iIndentX1 = GetClientRect().Wdt/40;
726  }
727  if (fSmall)
728  {
729  iIndentY1=1; iIndentY2=1;
730  }
731  else
732  {
733  iIndentY1 = GetClientRect().Hgt/200;
734  iIndentY2 = std::max<int32_t>(1, iIndentY1/2);
735  }
736  C4GUI::ComponentAligner caMain(GetClientRect(), 0,0, true);
737  C4GUI::ComponentAligner caButtonArea(caMain.GetFromBottom(caMain.GetHeight()/(fSmall ? 20 : 7)),0,0);
738  C4GUI::ComponentAligner caButtons(caButtonArea.GetCentered(caMain.GetWidth()*7/8, iButtonHeight),0,0);
739  C4GUI::ComponentAligner caConfigArea(caMain.GetAll(), fSmall ? 0 : (caMain.GetWidth()*69/1730), fSmall ? 0 : (caMain.GetHeight()/200));
740 
741  // back button
743  AddElement(btn = new C4GUI::CallbackButton<C4StartupOptionsDlg>(LoadResStr("IDS_BTN_BACK"), caButtons.GetFromLeft(iButtonWidth), &C4StartupOptionsDlg::OnBackBtn));
744  btn->SetToolTip(LoadResStr("IDS_DLGTIP_BACKMAIN"));
745 
746  // main config area tabular
747  pOptionsTabular = new C4GUI::Tabular(caConfigArea.GetAll(), C4GUI::Tabular::tbLeft);
749  AddElement(pOptionsTabular);
750  C4GUI::Tabular::Sheet *pSheetGeneral = pOptionsTabular->AddSheet(LoadResStr("IDS_DLG_PROGRAM") , 0);
751  C4GUI::Tabular::Sheet *pSheetGraphics = pOptionsTabular->AddSheet(LoadResStr("IDS_DLG_GRAPHICS"), 1);
752  C4GUI::Tabular::Sheet *pSheetSound = pOptionsTabular->AddSheet(LoadResStr("IDS_DLG_SOUND") , 2);
753  C4GUI::Tabular::Sheet *pSheetControls= pOptionsTabular->AddSheet(LoadResStr("IDS_DLG_CONTROLS"), 3);
754  C4GUI::Tabular::Sheet *pSheetNetwork = pOptionsTabular->AddSheet(LoadResStr("IDS_DLG_NETWORK") , 5);
755 
756  C4GUI::CheckBox *pCheck; C4GUI::Label *pLbl;
757  int iCheckWdt=100, iCheckHgt=20, iEdit2Wdt=100, iEdit2Hgt=40;
758  BoolConfig::GetStandardCheckBoxSize(&iCheckWdt, &iCheckHgt, "Default text", pUseFont);
759  EditConfig::GetControlSize(&iEdit2Wdt, &iEdit2Hgt, "Default text", false);
760 
761  // --- page program
762  C4GUI::ComponentAligner caSheetProgram(pSheetGeneral->GetClientRect(), caMain.GetWidth()/20, caMain.GetHeight()/20, true);
763  // language
764  const char *szLangTip = LoadResStr("IDS_MSG_SELECTLANG");
765  C4GUI::ComponentAligner caLanguage(caSheetProgram.GetGridCell(0,1,0,7,-1,-1,true,1,2), 0, C4GUI_DefDlgSmallIndent, false);
766  C4GUI::ComponentAligner caLanguageBox(caLanguage.GetFromTop(C4GUI::ComboBox::GetDefaultHeight()), 0, 0, false);
767  StdStrBuf sLangStr; sLangStr.Copy(LoadResStr("IDS_CTL_LANGUAGE")); sLangStr.AppendChar(':');
768  int32_t w,q;
769  pUseFont->GetTextExtent(sLangStr.getData(), w,q,true);
770  pLbl = new C4GUI::Label(sLangStr.getData(), caLanguageBox.GetFromLeft(w+C4GUI_DefDlgSmallIndent), ALeft, C4StartupFontClr, pUseFont, false);
771  pLbl->SetToolTip(szLangTip);
772  pSheetGeneral->AddElement(pLbl);
773  pUseFont->GetTextExtent("XX: Top Secret Language", w,q,true);
774  pLangCombo = new C4GUI::ComboBox(caLanguageBox.GetFromLeft(std::min(w, caLanguageBox.GetWidth())));
775  pLangCombo->SetToolTip(szLangTip);
776  pLangCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnLangComboFill, &C4StartupOptionsDlg::OnLangComboSelChange));
777  pLangCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
778  pLangCombo->SetFont(pUseFont);
779  pLangCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
780  pSheetGeneral->AddElement(pLangCombo);
781  pLangInfoLabel = new C4GUI::Label(nullptr, caLanguage.GetFromTop(::GraphicsResource.TextFont.GetLineHeight()*3), ALeft, C4StartupFontClr, pUseFont, false);
782  pLangInfoLabel->SetToolTip(szLangTip);
783  pSheetGeneral->AddElement(pLangInfoLabel);
784  UpdateLanguage();
785  // font
786  const char *szFontTip = LoadResStr("IDS_DESC_SELECTFONT");
787  C4GUI::ComponentAligner caFontBox(caSheetProgram.GetGridCell(0,1,2,7,-1,C4GUI::ComboBox::GetDefaultHeight(), true), 0, 0, false);
788  StdStrBuf sFontStr; sFontStr.Copy(LoadResStr("IDS_CTL_FONT")); sFontStr.AppendChar(':');
789  pUseFont->GetTextExtent(sFontStr.getData(), w,q,true);
790  pLbl = new C4GUI::Label(sFontStr.getData(), caFontBox.GetFromLeft(w+C4GUI_DefDlgSmallIndent), ALeft, C4StartupFontClr, pUseFont, false);
791  pLbl->SetToolTip(szFontTip);
792  pSheetGeneral->AddElement(pLbl);
793  pUseFont->GetTextExtent("Comic Sans MS", w,q,true);
794  pFontFaceCombo = new C4GUI::ComboBox(caFontBox.GetFromLeft(std::min<int32_t>(caFontBox.GetInnerWidth()*3/4, w*3)));
795  pFontFaceCombo->SetToolTip(szFontTip);
796  pFontFaceCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnFontFaceComboFill, &C4StartupOptionsDlg::OnFontComboSelChange));
797  pFontFaceCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
798  pFontFaceCombo->SetFont(pUseFont);
799  pFontFaceCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
800  caFontBox.ExpandLeft(-C4GUI_DefDlgSmallIndent);
801  pSheetGeneral->AddElement(pFontFaceCombo);
802  pFontSizeCombo = new C4GUI::ComboBox(caFontBox.GetFromLeft(std::min<int32_t>(caFontBox.GetInnerWidth(), w)));
803  pFontSizeCombo->SetToolTip(LoadResStr("IDS_DESC_FONTSIZE"));
804  pFontSizeCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnFontSizeComboFill, &C4StartupOptionsDlg::OnFontComboSelChange));
805  pFontSizeCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
806  pFontSizeCombo->SetFont(pUseFont);
807  pFontSizeCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
808  pSheetGeneral->AddElement(pFontSizeCombo);
809  UpdateFontControls();
810  // MM timer
811  pCheck = new BoolConfig(caSheetProgram.GetGridCell(0,1,3,7,-1,iCheckHgt, true), LoadResStr("IDS_CTL_MMTIMER"), nullptr, &Config.General.MMTimer, true, &Config.Startup.HideMsgMMTimerChange);
812  pCheck->SetToolTip(LoadResStr("IDS_MSG_MMTIMER_DESC"));
813  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
814  pSheetGeneral->AddElement(pCheck);
815  // reset configuration
816  const char *szBtnText = LoadResStr("IDS_BTN_RESETCONFIG");
818  ::GraphicsResource.CaptionFont.GetTextExtent(szBtnText, iButtonWidth, iButtonHeight, true);
819  C4Rect rcResetBtn = caSheetProgram.GetGridCell(1,2,6,7, std::min<int32_t>(iButtonWidth+iButtonHeight*4, caSheetProgram.GetInnerWidth()*2/5), SmallButton::GetDefaultButtonHeight(), true);
820  pSmallBtn = new C4GUI::CallbackButton<C4StartupOptionsDlg, SmallButton>(szBtnText, rcResetBtn, &C4StartupOptionsDlg::OnResetConfigBtn, this);
821  pSheetGeneral->AddElement(pSmallBtn);
822  pSmallBtn->SetToolTip(LoadResStr("IDS_DESC_RESETCONFIG"));
823 
824  // --- page graphics
825  C4GUI::ComponentAligner caSheetGraphics(pSheetGraphics->GetClientRect(), iIndentX1, iIndentY1, true);
826  // --subgroup display
827  C4GUI::GroupBox *pGroupResolution = new C4GUI::GroupBox(caSheetGraphics.GetGridCell(0,1,0,2));
828  pGroupResolution->SetTitle(LoadResStrNoAmp("IDS_CTL_DISPLAY"));
829  pGroupResolution->SetFont(pUseFont);
830  pGroupResolution->SetColors(C4StartupEditBorderColor, C4StartupFontClr);
831  pSheetGraphics->AddElement(pGroupResolution);
832  C4GUI::ComponentAligner caGroupResolution(pGroupResolution->GetClientRect(), iIndentX1, iIndentY2, true);
833  int32_t iNumGfxOptions = 3, iOpt = 0;
834  // resolution combobox
835  C4GUI::ComponentAligner resBox(caGroupResolution.GetGridCell(0,1,iOpt++,iNumGfxOptions), 0, 0, false);
836  w=20; q=12; pUseFont->GetTextExtent(LoadResStr("IDS_CTL_RESOLUTION"), w,q, true);
837  pGroupResolution->AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_RESOLUTION"), resBox.GetFromLeft(w+C4GUI_DefDlgSmallIndent,q), ALeft, C4StartupFontClr, pUseFont, false, false));
838  pUseFont->GetTextExtent("1600 x 1200", w,q,true); w = std::min<int32_t>(caGroupResolution.GetInnerWidth(), w+40);
839  C4GUI::ComboBox *pGfxResCombo = new C4GUI::ComboBox(resBox.GetFromLeft(w+40,C4GUI::ComboBox::GetDefaultHeight()));
840  pGfxResCombo->SetToolTip(LoadResStr("IDS_MSG_RESOLUTION_DESC"));
841  pGfxResCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnGfxResComboFill, &C4StartupOptionsDlg::OnGfxResComboSelChange));
842  pGfxResCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
843  pGfxResCombo->SetFont(pUseFont);
844  pGfxResCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
845  pGfxResCombo->SetText(GetGfxResString(Config.Graphics.ResX, Config.Graphics.ResY).getData());
846  pGroupResolution->AddElement(pGfxResCombo);
847  // fullscreen combobox
848  C4GUI::ComponentAligner fsBox(caGroupResolution.GetGridCell(0,1,iOpt++,iNumGfxOptions), 0, 0, false);
849  w=20; q=12; pUseFont->GetTextExtent(LoadResStr("IDS_CTL_FULLSCREENMODE"), w,q, true);
850  pGroupResolution->AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_FULLSCREENMODE"), fsBox.GetFromLeft(w+C4GUI_DefDlgSmallIndent,q), ALeft, C4StartupFontClr, pUseFont, false, false));
851  uint32_t wmax = 0;
852  for(int i = 0; i < 3; ++i)
853  {
854  pUseFont->GetTextExtent(GetWindowedName(i),w,q,true);
855  wmax = std::max<int32_t>(w, wmax);
856  }
857  C4GUI::ComboBox * pCombo = new C4GUI::ComboBox(fsBox.GetFromLeft(w+40,C4GUI::ComboBox::GetDefaultHeight()));
858  pCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnWindowedModeComboFill, &C4StartupOptionsDlg::OnWindowedModeComboSelChange));
859  pCombo->SetToolTip(LoadResStr("IDS_MSG_FULLSCREEN_DESC"));
860  pCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
861  pCombo->SetFont(pUseFont);
862  pCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
863  pCombo->SetText(GetWindowedName());
864  pGroupResolution->AddElement(pCombo);
865  // --subgroup options
866  iNumGfxOptions = 5, iOpt=0;
867  C4GUI::GroupBox *pGroupOptions = new C4GUI::GroupBox(caSheetGraphics.GetGridCell(0,1,1,2));
868  pGroupOptions->SetTitle(LoadResStrNoAmp("IDS_DLG_OPTIONS"));
869  pGroupOptions->SetFont(pUseFont);
870  pGroupOptions->SetColors(C4StartupEditBorderColor, C4StartupFontClr);
871  pSheetGraphics->AddElement(pGroupOptions);
872  C4GUI::ComponentAligner caGroupOptions(pGroupOptions->GetClientRect(), iIndentX1, iIndentY2, true);
873  // multisampling
874  C4GUI::ComponentAligner msBox(caGroupOptions.GetFromTop(C4GUI::ComboBox::GetDefaultHeight()), 0, 0, false);
875  w=20; q=12; pUseFont->GetTextExtent(LoadResStr("IDS_CTL_ANTIALIASING"), w,q, true);
876  pGroupOptions->AddElement(new C4GUI::Label(LoadResStr("IDS_CTL_ANTIALIASING"), msBox.GetFromLeft(w+C4GUI_DefDlgSmallIndent), ALeft, C4StartupFontClr, pUseFont, false, false));
877 
878  pUseFont->GetTextExtent("Off", w, q, true);
879  C4GUI::ComboBox *pGfxMSCombo = new C4GUI::ComboBox(msBox.GetFromLeft(w+40,C4GUI::ComboBox::GetDefaultHeight()));
880  pGfxMSCombo->SetToolTip(LoadResStr("IDS_MSG_ANTIALIASING_DESC"));
881  pGfxMSCombo->SetComboCB(new C4GUI::ComboBox_FillCallback<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnGfxMSComboFill, &C4StartupOptionsDlg::OnGfxMSComboSelChange));
882  pGfxMSCombo->SetColors(C4StartupFontClr, C4StartupEditBGColor, C4StartupEditBorderColor);
883  pGfxMSCombo->SetFont(pUseFont);
884  pGfxMSCombo->SetDecoration(&(C4Startup::Get()->Graphics.fctContext));
885  // Pre-Select current setting
886  StdStrBuf Current;
888  else Current.Copy("Off");
889  pGfxMSCombo->SetText(Current.getData());
890  // Set control read only if multisampling is not available
891  std::vector<int> multisamples;
893  pGfxMSCombo->SetReadOnly(multisamples.empty());
894  pGroupOptions->AddElement(pGfxMSCombo);
895  // automatic gfx frame skip
896  pCheck = new BoolConfig(caGroupOptions.GetGridCell(0,1,iOpt++,iNumGfxOptions,-1,iCheckHgt,true), LoadResStr("IDS_MSG_AUTOFRAMESKIP"), nullptr, &Config.Graphics.AutoFrameSkip);
897  pCheck->SetToolTip(LoadResStr("IDS_DESC_AUTOFRAMESKIP"));
898  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
899  pGroupOptions->AddElement(pCheck);
900 
901  // --- page sound
902  C4GUI::ComponentAligner caSheetSound(pSheetSound->GetClientRect(), iIndentX1, iIndentY1, true);
903  if (!C4GUI::CheckBox::GetStandardCheckBoxSize(&iCheckWdt, &iCheckHgt, "Lorem ipsum", pUseFont)) { iCheckWdt=100; iCheckHgt=20; }
904  int32_t iGridWdt = iCheckWdt * 2, iGridHgt = iCheckHgt * 5/2;
905  // --subgroup menu system sound
906  C4GUI::GroupBox *pGroupFESound = new C4GUI::GroupBox(caSheetSound.GetGridCell(0,2,0,5, iGridWdt, iGridHgt, false, 1,2));
907  pGroupFESound->SetTitle(LoadResStrNoAmp("IDS_CTL_FRONTEND"));
908  pGroupFESound->SetFont(pUseFont);
909  pGroupFESound->SetColors(C4StartupEditBorderColor, C4StartupFontClr);
910  pSheetSound->AddElement(pGroupFESound);
911  C4GUI::ComponentAligner caGroupFESound(pGroupFESound->GetClientRect(), iIndentX1, iIndentY2, true);
912  // menu system music
913  pCheck = pFEMusicCheck = new C4GUI::CheckBox(caGroupFESound.GetGridCell(0,1,0,2,-1,iCheckHgt,true), LoadResStr("IDS_CTL_MUSIC"), !!Config.Sound.FEMusic);
914  pCheck->SetToolTip(LoadResStr("IDS_DESC_MENUMUSIC"));
915  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
916  pCheck->SetOnChecked(new C4GUI::CallbackHandler<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnFEMusicCheck));
917  pGroupFESound->AddElement(pCheck);
918  // menu system sound effects
919  pCheck = pFESoundCheck = new BoolConfig(caGroupFESound.GetGridCell(0,1,1,2,-1,iCheckHgt,true), LoadResStr("IDS_CTL_SOUNDFX"), nullptr, &Config.Sound.FESamples);
920  pCheck->SetToolTip(LoadResStr("IDS_DESC_MENUSOUND"));
921  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
922  pGroupFESound->AddElement(pCheck);
923  // --subgroup game sound
924  C4GUI::GroupBox *pGroupRXSound = new C4GUI::GroupBox(caSheetSound.GetGridCell(1,2,0,5, iGridWdt, iGridHgt, false, 1,2));
925  pGroupRXSound->SetTitle(LoadResStrNoAmp("IDS_CTL_GAME"));
926  pGroupRXSound->SetFont(pUseFont);
927  pGroupRXSound->SetColors(C4StartupEditBorderColor, C4StartupFontClr);
928  pSheetSound->AddElement(pGroupRXSound);
929  C4GUI::ComponentAligner caGroupRXSound(pGroupRXSound->GetClientRect(), iIndentX1, iIndentY2, true);
930  // game music
931  pCheck = new BoolConfig(caGroupRXSound.GetGridCell(0,1,0,2,-1,iCheckHgt,true), LoadResStr("IDS_CTL_MUSIC"), nullptr, &Config.Sound.RXMusic);
932  pCheck->SetToolTip(LoadResStr("IDS_DESC_GAMEMUSIC"));
933  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
934  pGroupRXSound->AddElement(pCheck);
935  // game sound effects
936  pCheck = new C4GUI::CheckBox(caGroupRXSound.GetGridCell(0,1,1,2,-1,iCheckHgt,true), LoadResStr("IDS_CTL_SOUNDFX"), !!Config.Sound.RXSound);
937  pCheck->SetToolTip(LoadResStr("IDS_DESC_GAMESOUND"));
938  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
939  pCheck->SetOnChecked(new C4GUI::CallbackHandler<C4StartupOptionsDlg>(this, &C4StartupOptionsDlg::OnRXSoundCheck));
940  pGroupRXSound->AddElement(pCheck);
941  // -- subgroup volume
942  C4GUI::GroupBox *pGroupVolume = new C4GUI::GroupBox(caSheetSound.GetGridCell(0,2,2,5, iGridWdt, iGridHgt, false, 2,3));
943  pGroupVolume->SetTitle(LoadResStrNoAmp("IDS_BTN_VOLUME"));
944  pGroupVolume->SetFont(pUseFont);
945  pGroupVolume->SetColors(C4StartupEditBorderColor, C4StartupFontClr);
946  pSheetSound->AddElement(pGroupVolume);
947  C4GUI::ComponentAligner caGroupVolume(pGroupVolume->GetClientRect(), iIndentX1, iIndentY2, true);
948  // volume sliders
949  int32_t i;
950  for (i=0; i<2; ++i)
951  {
952  StdStrBuf sLabelTxt;
953  C4GUI::ComponentAligner caVolumeSlider(caGroupVolume.GetGridCell(0,1,i,2, -1, pUseFont->GetLineHeight()+iIndentY2*2+C4GUI_ScrollBarHgt, true), 1,0,false);
954  pGroupVolume->AddElement(new C4GUI::Label(FormatString("%s:", LoadResStr(i ? "IDS_CTL_SOUNDFX" : "IDS_CTL_MUSIC")).getData(), caVolumeSlider.GetFromTop(pUseFont->GetLineHeight()), ALeft, C4StartupFontClr, pUseFont, false, false));
955  sLabelTxt.Copy(LoadResStr("IDS_CTL_SILENT"));
956  w=20; q=12; pUseFont->GetTextExtent(sLabelTxt.getData(), w,q, true);
957  pGroupVolume->AddElement(new C4GUI::Label(sLabelTxt.getData(), caVolumeSlider.GetFromLeft(w,q), ACenter, C4StartupFontClr, pUseFont, false, false));
958  sLabelTxt.Copy(LoadResStr("IDS_CTL_LOUD"));
959  pUseFont->GetTextExtent(sLabelTxt.getData(), w,q, true);
960  pGroupVolume->AddElement(new C4GUI::Label(sLabelTxt.getData(), caVolumeSlider.GetFromRight(w,q), ACenter, C4StartupFontClr, pUseFont, false, false));
961  auto *pCB = new C4GUI::ParCallbackHandler<C4StartupOptionsDlg, int32_t>(this, i ? &C4StartupOptionsDlg::OnSoundVolumeSliderChange : &C4StartupOptionsDlg::OnMusicVolumeSliderChange);
962  auto *pSlider = new C4GUI::ScrollBar(caVolumeSlider.GetCentered(caVolumeSlider.GetInnerWidth(), C4GUI_ScrollBarHgt), true, pCB, 101);
963  pSlider->SetDecoration(&C4Startup::Get()->Graphics.sfctBookScroll, false);
964  pSlider->SetToolTip(i ? LoadResStr("IDS_DESC_VOLUMESOUND") : LoadResStr("IDS_DESC_VOLUMEMUSIC"));
965  pSlider->SetScrollPos(i ? Config.Sound.SoundVolume : Config.Sound.MusicVolume);
966  pGroupVolume->AddElement(pSlider);
967  }
968 
969  // --- page controls
970  pSheetControls->AddElement(pControlConfigArea = new ControlConfigArea(pSheetControls->GetClientRect(), caMain.GetWidth()/20, caMain.GetHeight()/40, false, this));
971 
972  // --- page network
973  int iPortCfgWdt=200, iPortCfgHgt=48; NetworkPortConfig::GetControlSize(&iPortCfgWdt, &iPortCfgHgt);
974  int iServerCfgWdt = 120, iServerCfgHgt = 20, iServerCfgWdtMid = 0;
975  StdStrBuf sServerText; sServerText.Copy(LoadResStr("IDS_CTL_USEOTHERSERVER"));
976  NetworkServerAddressConfig::GetControlSize(&iServerCfgWdt, &iServerCfgHgt, &iServerCfgWdtMid, sServerText.getData());
977  int32_t net_component_hgt = iPortCfgHgt * 4 + iServerCfgHgt + 3 * pUseFont->GetLineHeight();
978  C4GUI::ComponentAligner caSheetNetwork(pSheetNetwork->GetClientRect(), caMain.GetWidth() / 20, std::max<int32_t>(0, (caMain.GetHeight() - net_component_hgt)/20), true);
979  pPortCfgTCP = new NetworkPortConfig(caSheetNetwork.GetGridCell(0,2,0,2, iPortCfgWdt, iPortCfgHgt), LoadResStr("IDS_NET_PORT_TCP"), &(Config.Network.PortTCP), C4NetStdPortTCP);
980  pPortCfgUDP = new NetworkPortConfig(caSheetNetwork.GetGridCell(1,2,0,2, iPortCfgWdt, iPortCfgHgt), LoadResStr("IDS_NET_PORT_UDP"), &(Config.Network.PortUDP), C4NetStdPortUDP);
981  pPortCfgRef = new NetworkPortConfig(caSheetNetwork.GetGridCell(0,2,1,2, iPortCfgWdt, iPortCfgHgt), LoadResStr("IDS_NET_PORT_REFERENCE"), &(Config.Network.PortRefServer), C4NetStdPortRefServer);
982  pPortCfgDsc = new NetworkPortConfig(caSheetNetwork.GetGridCell(1,2,1,2, iPortCfgWdt, iPortCfgHgt), LoadResStr("IDS_NET_PORT_DISCOVERY"), &(Config.Network.PortDiscovery), C4NetStdPortDiscovery);
983  pPortCfgTCP->SetToolTip(LoadResStr("IDS_NET_PORT_TCP_DESC"));
984  pPortCfgUDP->SetToolTip(LoadResStr("IDS_NET_PORT_UDP_DESC"));
985  pPortCfgRef->SetToolTip(LoadResStr("IDS_NET_PORT_REFERENCE_DESC"));
986  pPortCfgDsc->SetToolTip(LoadResStr("IDS_NET_PORT_DISCOVERY_DESC"));
987  pSheetNetwork->AddElement(pPortCfgTCP);
988  pSheetNetwork->AddElement(pPortCfgUDP);
989  pSheetNetwork->AddElement(pPortCfgRef);
990  pSheetNetwork->AddElement(pPortCfgDsc);
991  int iNetHgt0=pPortCfgDsc->GetBounds().GetBottom();
992  caSheetNetwork.ExpandTop(-iNetHgt0);
993  pLeagueServerCfg = new NetworkServerAddressConfig(caSheetNetwork.GetFromTop(iServerCfgHgt), sServerText.getData(), &(Config.Network.UseAlternateServer), Config.Network.AlternateServerAddress, iServerCfgWdtMid);
994  pLeagueServerCfg->SetToolTip(LoadResStr("IDS_NET_MASTERSRV_DESC"));
995  pSheetNetwork->AddElement(pLeagueServerCfg);
996 #ifdef WITH_AUTOMATIC_UPDATE
997  pCheck = new BoolConfig(caSheetNetwork.GetFromTop(pUseFont->GetLineHeight()), LoadResStr("IDS_CTL_AUTOMATICUPDATES"), nullptr, &Config.Network.AutomaticUpdate, false);
998  pCheck->SetToolTip(LoadResStr("IDS_DESC_AUTOMATICUPDATES"));
999  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
1000  pSheetNetwork->AddElement(pCheck);
1001 #endif
1002  pCheck = new BoolConfig(caSheetNetwork.GetFromTop(pUseFont->GetLineHeight()), LoadResStr("IDS_CTL_UPNP"), nullptr, &Config.Network.EnableUPnP, false);
1003  pCheck->SetToolTip(LoadResStr("IDS_DESC_UPNP"));
1004  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
1005  pSheetNetwork->AddElement(pCheck);
1006  pCheck = new BoolConfig(caSheetNetwork.GetFromTop(pUseFont->GetLineHeight()), LoadResStr("IDS_CTL_PACKETLOGGING"), nullptr, &Config.Network.PacketLogging, false);
1007  pCheck->SetToolTip(LoadResStr("IDS_DESC_PACKETLOGGING"));
1008  pCheck->SetFont(pUseFont, C4StartupFontClr, C4StartupFontClrDisabled);
1009  pSheetNetwork->AddElement(pCheck);
1010  const char *szNameCfgText = LoadResStr("IDS_NET_USERNAME");
1011  int iNameCfgWdt=200, iNameCfgHgt=48; C4StartupOptionsDlg::EditConfig::GetControlSize(&iNameCfgWdt, &iNameCfgHgt, szNameCfgText, false);
1012  iNameCfgWdt += 5;
1013  pNetworkNickEdit = new EditConfig(caSheetNetwork.GetFromTop(iNameCfgHgt), szNameCfgText, &Config.Network.Nick, nullptr, false);
1014  pNetworkNickEdit->SetToolTip(LoadResStr("IDS_NET_USERNAME_DESC"));
1015  pSheetNetwork->AddElement(pNetworkNickEdit);
1016 
1017  StdCopyStrBuf NickBuf(Config.Network.Nick);
1018  if (!NickBuf.getLength()) NickBuf.Copy(Config.GetRegistrationData("Nick"));
1019  pNetworkNickEdit->GetEdit()->SetText(NickBuf.getData(), false);
1020 
1021  // initial focus is on tab selection
1022  SetFocus(pOptionsTabular, false);
1023 }
int32_t MultiSampling
Definition: C4Config.h:115
C4Config Config
Definition: C4Config.cpp:833
C4ConfigStartup Startup
Definition: C4Config.h:260
void SetComboCB(ComboBox_FillCB *pNewFillCallback)
#define C4GUI_ButtonHgt
Definition: C4Gui.h:111
int32_t PortDiscovery
Definition: C4Config.h:153
const int16_t C4NetStdPortUDP
Definition: C4Network2.h:30
C4ConfigGeneral General
Definition: C4Config.h:251
int32_t FEMusic
Definition: C4Config.h:128
int32_t PacketLogging
Definition: C4Config.h:168
void SetToolTip(const char *szNewTooltip, bool is_immediate=false)
Definition: C4Gui.cpp:409
void SetFont(CStdFont *pToFont)
Definition: C4Gui.h:2017
#define C4GUI_DefDlgSmallIndent
Definition: C4Gui.h:133
int32_t RXSound
Definition: C4Config.h:126
int32_t PortRefServer
Definition: C4Config.h:153
void OnBackBtn(C4GUI::Control *btn)
Definition: C4Rect.h:27
bool GetTextExtent(const char *szText, int32_t &rsx, int32_t &rsy, bool fCheckMarkup=true)
void Format(const char *szFmt,...) GNUC_FORMAT_ATTRIBUTE_O
Definition: StdBuf.cpp:174
virtual void EnumerateMultiSamples(std::vector< int > &samples) const
Definition: C4AppT.cpp:105
void AddElement(Element *pChild)
const int32_t C4StartupEditBorderColor
Definition: C4Startup.h:30
int32_t HideMsgMMTimerChange
Definition: C4Config.h:183
const int32_t C4StartupFontClrDisabled
Definition: C4Startup.h:28
int32_t SoundVolume
Definition: C4Config.h:132
C4GraphicsResource GraphicsResource
void SetFont(CStdFont *pFont, uint32_t dwEnabledClr, uint32_t dwDisabledClr)
Definition: C4Gui.h:1483
const int32_t C4StartupFontClr
Definition: C4Startup.h:27
ValidatedStdCopyStrBuf< C4InVal::VAL_NameAllowEmpty > Nick
Definition: C4Config.h:156
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
const char * GetRegistrationData(const char *strField)
Definition: C4Config.h:281
void SetReadOnly(bool fToVal)
Definition: C4Gui.h:2014
static bool GetControlSize(int *piWdt, int *piHgt, const char *szForText, CStdFont *pForFont, bool fMultiline)
Definition: C4GuiEdit.cpp:812
C4ConfigGraphics Graphics
Definition: C4Config.h:253
int32_t Wdt
Definition: C4Rect.h:30
std::vector< C4KeyCodeEx > CodeList
const int16_t C4NetStdPortTCP
Definition: C4Network2.h:29
CStdFont BookSmallFont
Definition: C4Startup.h:77
const int16_t C4NetStdPortRefServer
Definition: C4Network2.h:32
const char * LoadResStrNoAmp(const char *id)
Definition: StdResStr2.cpp:23
const int16_t C4NetStdPortDiscovery
Definition: C4Network2.h:31
const int ACenter
Definition: C4Surface.h:41
C4FacetID fctOptionsIcons
Definition: C4Startup.h:83
void SetTitle(const char *szToTitle)
Definition: C4Gui.h:1018
void SetGfx(C4Facet *pafctBack, C4Facet *pafctClip, C4Facet *pafctIcons, CStdFont *paSheetCaptionFont, bool fResizeByAspect)
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
void SetDecoration(C4Facet *pFctSideArrow)
Definition: C4Gui.h:2020
C4ConfigNetwork Network
Definition: C4Config.h:255
char AlternateServerAddress[CFG_MaxString+1]
Definition: C4Config.h:159
static int32_t GetDefaultHeight()
void UpdateSize() override
void SetColors(uint32_t dwFontClr, uint32_t dwBGClr, uint32_t dwBorderClr)
Definition: C4Gui.h:2018
#define C4GUI_ScrollBarHgt
Definition: C4Gui.h:104
CStdFont BookFont
Definition: C4Startup.h:77
const char * getData() const
Definition: StdBuf.h:442
static bool GetStandardCheckBoxSize(int *piWdt, int *piHgt, const char *szForCaptionText, CStdFont *pUseFont)
void SetColors(uint32_t dwFrameClr, uint32_t dwTitleClr, uint32_t dwBackClr=0xffffffff)
Definition: C4Gui.h:1017
C4StartupDlg(const char *szTitle)
Definition: C4Startup.h:98
void SetFocus(Control *pCtrl, bool fByMouse)
const int32_t C4StartupEditBGColor
Definition: C4Startup.h:29
int32_t MMTimer
Definition: C4Config.h:48
int32_t ResX
Definition: C4Config.h:103
const int ALeft
Definition: C4Surface.h:41
int GetLineHeight() const
Definition: C4FontLoader.h:125
int32_t ResY
Definition: C4Config.h:103
static C4Startup * Get()
Definition: C4Startup.h:145
int32_t FESamples
Definition: C4Config.h:129
Sheet * AddSheet(const char *szTitle, int32_t icoTitle=Ico_None)
int32_t MusicVolume
Definition: C4Config.h:131
int32_t Hgt
Definition: C4Rect.h:30
int32_t EnableUPnP
Definition: C4Config.h:154
int32_t UseAlternateServer
Definition: C4Config.h:152
C4FacetID fctOptionsTabClip
Definition: C4Startup.h:83
void SetText(const char *szToText)
C4ConfigSound Sound
Definition: C4Config.h:254
int32_t AutoFrameSkip
Definition: C4Config.h:116
void SetFont(CStdFont *pToFont)
Definition: C4Gui.h:1016
void Copy()
Definition: StdBuf.h:467
int32_t PortTCP
Definition: C4Config.h:153
C4StartupGraphics Graphics
Definition: C4Startup.h:112
C4Window * pWindow
Definition: C4App.h:80
C4Application Application
Definition: C4Globals.cpp:44
int32_t PortUDP
Definition: C4Config.h:153
int32_t RXMusic
Definition: C4Config.h:127
StdStrBuf FormatString(const char *szFmt,...)
Definition: StdBuf.cpp:270
Here is the call graph for this function:

◆ ~C4StartupOptionsDlg()

C4StartupOptionsDlg::~C4StartupOptionsDlg ( )
override

Definition at line 1025 of file C4StartupOptionsDlg.cpp.

1026 {
1027  delete pKeyToggleMusic;
1028  delete pKeyBack;
1029 }

Member Function Documentation

◆ AddElement()

void C4GUI::Container::AddElement ( Element pChild)
inherited

Definition at line 118 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, C4GUI::Element::pPrev, and C4GUI::Container::RemoveElement().

Referenced by C4Menu::Add(), C4GUI::Tabular::AddCustomSheet(), C4GUI::ListBox::AddElement(), C4ChartDialog::C4ChartDialog(), C4ChatControl::C4ChatControl(), C4ChatDlg::C4ChatDlg(), C4DownloadDlg::C4DownloadDlg(), C4GameOptionButtons::C4GameOptionButtons(), C4GameOverDlg::C4GameOverDlg(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4Menu::C4Menu(), C4Network2ClientListDlg::C4Network2ClientListDlg(), C4Network2StartWaitDlg::C4Network2StartWaitDlg(), C4StartupAboutDlg::C4StartupAboutDlg(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4StartupOptionsDlg(), C4StartupPlrColorPickerDlg::C4StartupPlrColorPickerDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextButton::ContextButton(), C4MapFolderData::CreateGUIElements(), C4GUI::InfoDialog::CreateSubComponents(), C4FileSelDlg::DefaultListItem::DefaultListItem(), C4GUI::FullscreenDialog::FullscreenDialog(), C4FileSelDlg::InitElements(), C4GUI::InputDialog::InputDialog(), C4GUI::Container::InsertElement(), C4GUI::LabeledEdit::LabeledEdit(), C4GameLobby::MainDlg::MainDlg(), C4GUI::MessageDialog::MessageDialog(), C4ChatControl::ChatSheet::NickItem::NickItem(), C4StartupPlrColorPickerDlg::OnClosed(), C4GUI::ProgressDialog::ProgressDialog(), C4GUI::ContextMenu::RemoveElement(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollWindow(), C4GUI::InputDialog::SetCustomEdit(), C4GUI::Dialog::SetTitle(), C4GUI::FullscreenDialog::SetTitle(), C4ChatControl::ChatSheet::NickItem::SortFunc(), C4GUI::TextWindow::TextWindow(), C4Network2ClientDlg::UpdateText(), and C4DownloadDlg::~C4DownloadDlg().

119  {
120  // safety
121  if (!pChild) return;
122  // remove from any previous container
123  if (pChild->pParent) pChild->pParent->RemoveElement(pChild);
124  // add to end of list
125  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
126  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
127  pChild->pParent = this;
128 
129  assert(pChild->pNext != pChild);
130  assert(pChild->pPrev != pChild);
131  assert(pChild->pParent != pChild);
132  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
Element * pNext
Definition: C4Gui.h:377
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AdvanceFocus()

void C4GUI::Dialog::AdvanceFocus ( bool  fBackwards)
inherited

Definition at line 580 of file C4GuiDialogs.cpp.

References C4GUI::Container::GetNextNestedElement(), C4GUI::Element::GetParent(), C4GUI::Element::IsFocusElement(), C4GUI::Container::IsSelectedChild(), C4GUI::Element::IsVisible(), C4GUI::Dialog::pActiveCtrl, and C4GUI::Dialog::SetFocus().

Referenced by C4GUI::Control::DisableFocus(), and C4ChatControl::OnLoginDataEnter().

581  {
582  // get element to start from
583  Element *pCurrElement = pActiveCtrl;
584  // find new control
585  for (;;)
586  {
587  // get next element
588  pCurrElement = GetNextNestedElement(pCurrElement, fBackwards);
589  // end reached: start from beginning
590  if (!pCurrElement && pActiveCtrl) if (!(pCurrElement = GetNextNestedElement(nullptr, fBackwards))) return;
591  // cycled?
592  if (pCurrElement == pActiveCtrl)
593  {
594  // but current is no longer a focus element? Then defocus it and return
595  if (pCurrElement && !pCurrElement->IsFocusElement())
596  SetFocus(nullptr, false);
597  return;
598  }
599  // for list elements, check whether the child can be selected
600  if (pCurrElement->GetParent() && !pCurrElement->GetParent()->IsSelectedChild(pCurrElement)) continue;
601  // check if this is a new control
602  Control *pFocusCtrl = pCurrElement->IsFocusElement();
603  if (pFocusCtrl && pFocusCtrl != pActiveCtrl && pFocusCtrl->IsVisible())
604  {
605  // set focus here...
606  SetFocus(pFocusCtrl, false);
607  // ...done!
608  return;
609  }
610  }
611  // never reached
612  }
bool IsVisible()
Definition: C4Gui.cpp:201
Control * pActiveCtrl
Definition: C4Gui.h:2080
C4GameControl Control
void SetFocus(Control *pCtrl, bool fByMouse)
Element * GetNextNestedElement(Element *pPrevElement, bool fBackwards)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ AfterElementRemoval()

virtual void C4GUI::Container::AfterElementRemoval ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::ListBox.

Definition at line 756 of file C4Gui.h.

Referenced by C4GUI::ListBox::AfterElementRemoval(), and C4GUI::Container::RemoveElement().

757  { if (pParent) pParent->AfterElementRemoval(); } // called by ScrollWindow to parent after an element has been removed
virtual void AfterElementRemoval()
Definition: C4Gui.h:756
Container * pParent
Definition: C4Gui.h:376
Here is the caller graph for this function:

◆ ApplyElementOffset()

void C4GUI::Dialog::ApplyElementOffset ( int32_t &  riX,
int32_t &  riY 
)
overridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 743 of file C4GuiDialogs.cpp.

References C4GUI::Window::ApplyElementOffset(), C4Viewport::GetOutputRect(), C4GUI::Dialog::GetViewport(), and C4Rect::x.

744  {
745  // inherited
746  Window::ApplyElementOffset(riX, riY);
747  // apply viewport offset, if a viewport is assigned
748  C4Viewport *pVP = GetViewport();
749  if (pVP)
750  {
751  C4Rect rcVP(pVP->GetOutputRect());
752  riX -= rcVP.x; riY -= rcVP.y;
753  }
754  }
Definition: C4Rect.h:27
virtual C4Viewport * GetViewport()
Definition: C4Gui.h:2171
C4Rect GetOutputRect()
Definition: C4Viewport.h:64
int32_t x
Definition: C4Rect.h:30
void ApplyElementOffset(int32_t &riX, int32_t &riY) override
Definition: C4Gui.h:866
Here is the call graph for this function:

◆ ApplyInvElementOffset()

void C4GUI::Dialog::ApplyInvElementOffset ( int32_t &  riX,
int32_t &  riY 
)
overridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 756 of file C4GuiDialogs.cpp.

References C4GUI::Window::ApplyInvElementOffset(), C4Viewport::GetOutputRect(), C4GUI::Dialog::GetViewport(), and C4Rect::x.

757  {
758  // inherited
760  // apply viewport offset, if a viewport is assigned
761  C4Viewport *pVP = GetViewport();
762  if (pVP)
763  {
764  C4Rect rcVP(pVP->GetOutputRect());
765  riX += rcVP.x; riY += rcVP.y;
766  }
767  }
void ApplyInvElementOffset(int32_t &riX, int32_t &riY) override
Definition: C4Gui.h:868
Definition: C4Rect.h:27
virtual C4Viewport * GetViewport()
Definition: C4Gui.h:2171
C4Rect GetOutputRect()
Definition: C4Viewport.h:64
int32_t x
Definition: C4Rect.h:30
Here is the call graph for this function:

◆ begin()

Iterator C4GUI::Container::begin ( )
inlineinherited

Definition at line 824 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::ClearPointers().

824 { return Iterator(pFirst); }
Element * pFirst
Definition: C4Gui.h:750
Here is the caller graph for this function:

◆ CharIn()

bool C4GUI::Dialog::CharIn ( const char *  c)
virtualinherited

Definition at line 519 of file C4GuiDialogs.cpp.

References C4GUI::Control::CharIn(), StdStrBuf::getData(), C4GUI::Dialog::GetDefaultControl(), StdStrBuf::getLength(), C4KeyCodeEx::Key, C4KeyCodeEx::KeyCode2String(), C4GUI::Container::OnHotkey(), C4GUI::Dialog::pActiveCtrl, C4GUI::Dialog::SetFocus(), and TOUPPERIFX11.

Referenced by C4GUI::Screen::CharIn().

520  {
521  // reroute to active control
522  if (pActiveCtrl && pActiveCtrl->CharIn(c)) return true;
523  // unprocessed: Focus default control
524  // Except for space, which may have been processed as a key already
525  // (changing focus here would render buttons unusable, because they switch on KeyUp)
526  Control *pDefCtrl = GetDefaultControl();
527  if (pDefCtrl && pDefCtrl != pActiveCtrl && (!c || *c != 0x20))
528  {
529  SetFocus(pDefCtrl, false);
530  if (pActiveCtrl && pActiveCtrl->CharIn(c))
531  return true;
532  }
533  return false;
534  }
Control * pActiveCtrl
Definition: C4Gui.h:2080
C4GameControl Control
virtual bool CharIn(const char *)
Definition: C4Gui.h:1051
void SetFocus(Control *pCtrl, bool fByMouse)
virtual class Control * GetDefaultControl()
Definition: C4Gui.h:2129
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CheckNameHotkey()

virtual bool C4GUI::Element::CheckNameHotkey ( const char *  )
inlineprotectedvirtualinherited

Reimplemented in C4StartupScenSelDlg::ScenListItem.

Definition at line 407 of file C4Gui.h.

Referenced by C4GUI::ListBox::CharIn().

407 { return false; }
Here is the caller graph for this function:

◆ Clear()

void C4GUI::Container::Clear ( )
inherited

Definition at line 63 of file C4GuiContainers.cpp.

References C4GUI::Container::ClearChildren().

Referenced by C4GUI::Screen::Clear(), C4GUI::ComboBox_FillCB::ClearEntries(), C4StartupNetListEntry::ClearRef(), C4Scoreboard::CompileFunc(), C4ClientList::CompileFunc(), C4ClientList::Init(), C4MapFolderData::Load(), C4StartupNetListEntry::SetReference(), C4ClientList::~C4ClientList(), C4MapFolderData::~C4MapFolderData(), C4MessageInput::~C4MessageInput(), C4GUI::Container::~Container(), and C4GUI::ContextMenu::~ContextMenu().

64  {
65  ClearChildren();
66  }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClearChildren()

void C4GUI::Container::ClearChildren ( )
inherited

Definition at line 68 of file C4GuiContainers.cpp.

References C4GUI::Element::IsOwnPtrElement(), C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Container::Clear(), C4ScriptGuiWindow::Close(), C4ScriptGuiWindow::RemoveChild(), C4GoalDisplay::SetGoals(), and C4ScriptGuiWindow::~C4ScriptGuiWindow().

69  {
70  // delete all items; dtor will update list
71  while (pFirst)
72  {
73  if (pFirst->IsOwnPtrElement())
74  {
75  // unlink from list
76  Element *pANext = pFirst->pNext;
77  pFirst->pPrev = pFirst->pNext = nullptr;
78  pFirst->pParent = nullptr;
79  if ((pFirst = pANext))
80  pFirst->pPrev = nullptr;
81  else
82  pLast = nullptr;
83  }
84  else
85  delete pFirst;
86  }
87  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
virtual bool IsOwnPtrElement()
Definition: C4Gui.h:401
Element * pNext
Definition: C4Gui.h:377
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClearFrameDeco()

void C4GUI::Dialog::ClearFrameDeco ( )
inlineinherited

Definition at line 2199 of file C4Gui.h.

References C4GUI::FrameDecoration::Deref().

Referenced by C4Menu::Clear().

2200  {if (pFrameDeco) pFrameDeco->Deref(); pFrameDeco = nullptr; }
FrameDecoration * pFrameDeco
Definition: C4Gui.h:2089
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ClientPos2ScreenPos()

void C4GUI::Element::ClientPos2ScreenPos ( int32_t &  riX,
int32_t &  riY 
)
inherited

Definition at line 231 of file C4Gui.cpp.

References C4GUI::Container::ApplyInvElementOffset(), and C4GUI::Element::GetParent().

Referenced by C4MapFolderData::CreateGUIElements(), C4GUI::Screen::DoContext(), and C4Menu::Draw().

232  {
233  // apply all parent offsets
234  Container *pCont = pParent;
235  while (pCont)
236  {
237  pCont->ApplyInvElementOffset(riX, riY);
238  pCont = pCont->GetParent();
239  }
240  // apply own offset
241  riX += rcBounds.x; riY += rcBounds.y;
242  }
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
Container * pParent
Definition: C4Gui.h:376
int32_t x
Definition: C4Rect.h:30
friend class Container
Definition: C4Gui.h:472
virtual void ApplyInvElementOffset(int32_t &riX, int32_t &riY)
Definition: C4Gui.h:841
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Close()

void C4GUI::Dialog::Close ( bool  fOK)
inherited

Definition at line 631 of file C4GuiDialogs.cpp.

References C4GUI::Screen::CloseDialog(), C4GUI::Dialog::DestroyConsoleWindow(), C4GUI::Dialog::fOK, C4GUI::Dialog::fShow, C4GUI::Element::GetScreen(), C4GUI::Dialog::OnClosed(), and C4GUI::Dialog::pWindow.

Referenced by C4MainMenu::ActivateMain(), C4Menu::Clear(), C4GUI::Screen::CloseAllDialogs(), C4FullScreen::CloseMenu(), C4Player::CloseMenu(), C4MessageInput::CloseTypeIn(), C4StartupScenSelDlg::DoBack(), C4Scoreboard::DoDlgShow(), C4Network2::DoLobby(), C4Menu::Enter(), C4Menu::Execute(), C4Scoreboard::HideDlg(), C4Network2::LeaguePlrAuth(), C4Network2::LeagueStart(), C4MainMenu::MenuCommand(), C4ChatInputDialog::OnChatInput(), C4GameLobby::MainDlg::OnExitBtn(), C4DownloadDlg::OnIdle(), C4Menu::Refill(), C4ChatDlg::StopChat(), C4Network2ClientListDlg::Toggle(), C4ChartDialog::Toggle(), C4ChatDlg::ToggleChat(), C4Menu::TryClose(), C4FileSelDlg::UserClose(), C4StartupPlrPropertiesDlg::UserClose(), and C4GameOverDlg::~C4GameOverDlg().

632  {
633  // already closed?
634  if (!fShow) return;
635  // set OK flag
636  this->fOK = fOK;
637  // get screen
638  Screen *pScreen = GetScreen();
639  if (pScreen) pScreen->CloseDialog(this, false); else fShow = false;
640  // developer mode: Remove window
642  // do callback - last call, because it might do perilous things
643  OnClosed(fOK);
644  }
void DestroyConsoleWindow()
bool fShow
Definition: C4Gui.h:2081
DialogWindow * pWindow
Definition: C4Gui.h:2088
bool fOK
Definition: C4Gui.h:2082
virtual void OnClosed(bool fOK)
friend class Screen
Definition: C4Gui.h:2216
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateConsoleWindow()

bool C4GUI::Dialog::CreateConsoleWindow ( )
protectedinherited

Definition at line 239 of file C4GuiDialogs.cpp.

References Application.

Referenced by C4GUI::Dialog::Show().

240  {
241 #ifdef WITH_QT_EDITOR
242  // TODO: Implement these as Qt editor windows.
243  // This currently creates an empty window in Windows and a segfault in Linux.
244  return false;
245 #endif
246  // already created?
247  if (pWindow) return true;
248  // create it!
249  pWindow = new DialogWindow();
251  {
252  delete pWindow;
253  pWindow = nullptr;
254  return false;
255  }
256  // create rendering context
258  pWindow->pDialog = this;
259  return true;
260  }
C4Surface * pSurface
Definition: C4Window.h:275
virtual const char * GetID()
Definition: C4Gui.h:2107
DialogWindow * pWindow
Definition: C4Gui.h:2088
C4Window * Init(C4AbstractApp *pApp, const char *Title, const C4Rect &rcBounds, const char *szID)
StdStrBuf TitleString
Definition: C4Gui.h:2086
Dialog * pDialog
Definition: C4Gui.h:2032
C4Rect rcBounds
Definition: C4Gui.h:385
const char * getData() const
Definition: StdBuf.h:442
C4Application Application
Definition: C4Globals.cpp:44
Here is the caller graph for this function:

◆ DestroyConsoleWindow()

void C4GUI::Dialog::DestroyConsoleWindow ( )
protectedinherited

Definition at line 262 of file C4GuiDialogs.cpp.

Referenced by C4GUI::Dialog::Close(), C4GUI::Dialog::OnClosed(), and C4GUI::Dialog::~Dialog().

263  {
264  if (pWindow)
265  {
266  delete pWindow->pSurface;
267  pWindow->Clear();
268  delete pWindow;
269  pWindow = nullptr;
270  }
271  }
C4Surface * pSurface
Definition: C4Window.h:275
DialogWindow * pWindow
Definition: C4Gui.h:2088
virtual void Clear()
Definition: C4AppT.cpp:102
Here is the caller graph for this function:

◆ DoBack()

void C4StartupOptionsDlg::DoBack ( )

Definition at line 1268 of file C4StartupOptionsDlg.cpp.

References C4Startup::Get(), SaveConfig(), C4Startup::SDID_Back, C4Startup::SDID_Main, and C4Startup::SwitchDialog().

Referenced by KeyBack(), OnBackBtn(), and OnEscape().

1269 {
1270  if (!SaveConfig(false, false)) return;
1271  // back 2 main
1273 }
class C4StartupDlg * SwitchDialog(DialogID eToDlg, bool fFade=true, const char *szSubDialog=nullptr)
Definition: C4Startup.cpp:137
bool SaveConfig(bool fForce, bool fKeepOpen)
static C4Startup * Get()
Definition: C4Startup.h:145
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoContext()

bool C4GUI::Element::DoContext ( )
inherited

Definition at line 417 of file C4Gui.cpp.

Referenced by C4GUI::ContextButton::MouseInput(), C4GUI::ListBox::OnGetFocus(), and C4GUI::ContextButton::~ContextButton().

418  {
419  if (!pContextHandler) return false;
420  return pContextHandler->OnContext(this, rcBounds.Wdt/2, rcBounds.Hgt/2);
421  }
ContextHandler * pContextHandler
Definition: C4Gui.h:381
int32_t Wdt
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
virtual bool OnContext(Element *pOnElement, int32_t iX, int32_t iY)=0
int32_t Hgt
Definition: C4Rect.h:30
Here is the caller graph for this function:

◆ DoDragging()

void C4GUI::Element::DoDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Reimplemented in C4GUI::Edit, and C4GUI::ScrollBar.

Definition at line 269 of file C4Gui.cpp.

Referenced by C4GUI::Screen::MouseInput().

270  {
271  // check if anything moved
272  if (pDragTarget && (iX != iDragX || iY != iDragY))
273  {
274  // move position, then
275  pDragTarget->rcBounds.x += iX-iDragX;
276  pDragTarget->rcBounds.y += iY-iDragY;
277  // drag X/Y is up-to-date if this is a child element of the drag target
279  }
280  }
int32_t iDragY
Definition: C4Gui.h:379
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
Window * pDragTarget
Definition: C4Gui.h:378
virtual void UpdatePos()
Definition: C4Gui.cpp:193
int32_t iDragX
Definition: C4Gui.h:379
Here is the caller graph for this function:

◆ DoModal()

bool C4GUI::Dialog::DoModal ( )
inherited

Definition at line 658 of file C4GuiDialogs.cpp.

References Application, C4GUI::Dialog::fOK, C4GUI::Dialog::fShow, Game, C4Application::IsQuittingGame(), C4Game::IsRunning, C4GUI::Dialog::OnIdle(), and StdScheduler::ScheduleProcs().

Referenced by C4DownloadDlg::ShowModal(), and C4GUI::Screen::ShowModalDlg().

659  {
660  // Cancel all dialogues if game is left (including e.g. league dialogues)
661  if (::Application.IsQuittingGame()) return false;
662  // main message loop
663  while (fShow)
664  {
665  // dialog idle proc
666  OnIdle();
667  // Modal dialogue during running game is tricky. Do not execute game!
668  bool fGameWasRunning = ::Game.IsRunning;
669  ::Game.IsRunning = false;
670  // handle messages - this may block until the next timer
671  if (!Application.ScheduleProcs())
672  return false; // game GUI and lobby will deleted in Game::Clear()
673  // reset game run state
674  if (fGameWasRunning) ::Game.IsRunning = true;
675  }
676  // return whether dlg was OK
677  return fOK;
678  }
bool IsRunning
Definition: C4Game.h:140
bool fShow
Definition: C4Gui.h:2081
C4Game Game
Definition: C4Globals.cpp:52
virtual void OnIdle()
Definition: C4Gui.h:2209
bool fOK
Definition: C4Gui.h:2082
bool IsQuittingGame() const
Definition: C4Application.h:70
bool ScheduleProcs(int iTimeout=1000/36)
C4Application Application
Definition: C4Globals.cpp:44
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DoPlacement()

bool C4GUI::FullscreenDialog::DoPlacement ( Screen pOnScreen,
const C4Rect rPreferredDlgRect 
)
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2244 of file C4Gui.h.

2244 { return true; } // fullscreen dlg already placed

◆ Draw()

void C4GUI::Dialog::Draw ( C4TargetFacet cgo)
overridevirtualinherited

Reimplemented from C4GUI::Window.

Reimplemented in C4Menu, and C4ScoreboardDlg.

Definition at line 435 of file C4GuiDialogs.cpp.

References C4Draw::ActivateBlitModulation(), C4GUI::Screen::ActivateDialog(), C4GUI_StandardBGColor, C4Draw::DeactivateBlitModulation(), C4GUI::Window::Draw(), C4GUI::ContextMenu::Draw(), C4Draw::DrawBoxDw(), C4GUI::Dialog::eFade, C4GUI::Dialog::fShow, C4GUI::Element::fVisible, C4GUI::Element::GetScreen(), C4GUI::ContextMenu::GetTargetDialog(), C4GUI::Screen::GetTopDialog(), C4Rect::Hgt, C4Facet::Hgt, C4GUI::Dialog::iFade, C4Surface::PageFlip(), pDraw, C4Window::pSurface, C4GUI::Dialog::pWindow, C4GUI::Screen::RecheckActiveDialog(), C4TargetFacet::Set(), C4Facet::Surface, C4Rect::Wdt, C4Facet::Wdt, C4Rect::x, C4Facet::X, C4Rect::y, and C4Facet::Y.

436  {
437  C4TargetFacet cgo; cgo.Set(cgo0);
438  // Dialogs with a window just ignore the cgo.
439  if (pWindow)
440  {
441  cgo.Surface = pWindow->pSurface;
442  cgo.X = 0; cgo.Y = 0; cgo.Wdt = rcBounds.Wdt; cgo.Hgt = rcBounds.Hgt;
443  }
444  Screen *pScreen;
445  // evaluate fading
446  switch (eFade)
447  {
448  case eFadeNone: break; // no fading
449  case eFadeIn:
450  // fade in
451  if ((iFade+=10) >= 100)
452  {
453  if ((pScreen = GetScreen()))
454  {
455  if (pScreen->GetTopDialog() == this)
456  pScreen->ActivateDialog(this);
457  }
458  eFade = eFadeNone;
459  }
460  break;
461  case eFadeOut:
462  // fade out
463  if ((iFade-=10) <= 0)
464  {
465  fVisible = fShow = false;
466  if ((pScreen = GetScreen()))
467  pScreen->RecheckActiveDialog();
468  eFade = eFadeNone;
469  }
470  }
471  // set fade
472  if (iFade < 100)
473  {
474  if (iFade <= 0) return;
475  pDraw->ActivateBlitModulation((iFade*255/100)<<24 | 0xffffff);
476  }
477  // separate window: Clear background
478  if (pWindow)
479  pDraw->DrawBoxDw(cgo.Surface, rcBounds.x, rcBounds.y, rcBounds.Wdt-1, rcBounds.Hgt-1, (0xff << 24) | (C4GUI_StandardBGColor & 0xffffff) );
480  // draw window + contents (evaluates IsVisible)
481  Window::Draw(cgo);
482  // reset blit modulation
484  // blit output to own window
485  if (pWindow)
486  {
487  // Draw context menu on editor window
488  ContextMenu *menu;
489  if ((menu = GetScreen()->pContext))
490  {
491  if (menu->GetTargetDialog() == this)
492  {
493  menu->Draw(cgo);
494  }
495  }
496  // Editor window: Blit to output
497  C4Rect rtSrc,rtDst;
498  rtSrc.x=rcBounds.x; rtSrc.y=rcBounds.y; rtSrc.Wdt=rcBounds.Wdt; rtSrc.Hgt=rcBounds.Hgt;
499  rtDst.x=0; rtDst.y=0; rtDst.Wdt=rcBounds.Wdt; rtDst.Hgt=rcBounds.Hgt;
500  pWindow->pSurface->PageFlip(&rtSrc, &rtDst);
501  }
502  }
#define C4GUI_StandardBGColor
Definition: C4Gui.h:66
Fade eFade
Definition: C4Gui.h:2084
float Y
Definition: C4Facet.h:118
bool fShow
Definition: C4Gui.h:2081
C4Surface * pSurface
Definition: C4Window.h:275
Definition: C4Rect.h:27
DialogWindow * pWindow
Definition: C4Gui.h:2088
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
bool PageFlip(C4Rect *pSrcRt=nullptr, C4Rect *pDstRt=nullptr)
Definition: C4Surface.cpp:310
void DrawBoxDw(C4Surface *sfcDest, int iX1, int iY1, int iX2, int iY2, DWORD dwClr)
Definition: C4Draw.cpp:846
C4Rect rcBounds
Definition: C4Gui.h:385
void Set(const C4Facet &cpy)
Definition: C4Facet.h:182
C4Draw * pDraw
Definition: C4Draw.cpp:42
void Draw(C4TargetFacet &cgo) override
int32_t x
Definition: C4Rect.h:30
float Hgt
Definition: C4Facet.h:118
bool fVisible
Definition: C4Gui.h:383
void DeactivateBlitModulation()
Definition: C4Draw.h:189
friend class Screen
Definition: C4Gui.h:2216
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
void ActivateBlitModulation(DWORD dwWithClr)
Definition: C4Draw.h:188
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float Wdt
Definition: C4Facet.h:118
float X
Definition: C4Facet.h:118
int32_t iFade
Definition: C4Gui.h:2083
Here is the call graph for this function:

◆ Draw3DFrame()

void C4GUI::Element::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 
)
protectedinherited

Definition at line 291 of file C4Gui.cpp.

References C4GUI_BorderColor1, C4GUI_BorderColor2, C4GUI_BorderColor3, C4Draw::DrawLineDw(), pDraw, C4Facet::Surface, C4TargetFacet::TargetX, and C4TargetFacet::TargetY.

Referenced by C4GUI::ProgressBar::DrawElement(), C4GUI::GroupBox::DrawElement(), C4GUI::Edit::DrawElement(), C4GUI::ListBox::DrawElement(), C4GUI::Tabular::DrawElement(), C4GUI::TextWindow::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::ComboBox::DrawElement(), and C4GUI::Dialog::DrawElement().

292  {
293  DWORD dwAlpha = byAlpha<<24;
294  int32_t x0 = cgo.TargetX + rcBounds.x + iLeftOff,
295  y0 = cgo.TargetY + rcBounds.y + iTopOff,
296  x1 = cgo.TargetX + rcBounds.x + rcBounds.Wdt - 1,
297  y1 = cgo.TargetY + rcBounds.y + rcBounds.Hgt - 1;
298  if (fDrawTop) pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y0,(float)x1,(float)y0, C4GUI_BorderColor1 | dwAlpha);
299  if (fDrawLeft) pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y0,(float)x0,(float)y1, C4GUI_BorderColor1 | dwAlpha);
300  if (fDrawTop) pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y0+1),(float)(x1-1),(float)(y0+1), C4GUI_BorderColor2 | dwAlpha);
301  if (fDrawLeft) pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y0+1),(float)(x0+1),(float)(y1-1), C4GUI_BorderColor2 | dwAlpha);
302  pDraw->DrawLineDw(cgo.Surface, (float)x0,(float)y1,(float)x1,(float)y1, C4GUI_BorderColor3 | dwAlpha);
303  pDraw->DrawLineDw(cgo.Surface, (float)x1,(float)y0,(float)x1,(float)y1, C4GUI_BorderColor3 | dwAlpha);
304  pDraw->DrawLineDw(cgo.Surface, (float)(x0+1),(float)(y1-1),(float)(x1-1),(float)(y1-1), C4GUI_BorderColor1 | dwAlpha);
305  pDraw->DrawLineDw(cgo.Surface, (float)(x1-1),(float)(y0+1),(float)(x1-1),(float)(y1-1), C4GUI_BorderColor1 | dwAlpha);
306  }
#define C4GUI_BorderColor2
Definition: C4Gui.h:86
void DrawLineDw(C4Surface *sfcTarget, float x1, float y1, float x2, float y2, DWORD dwClr, float width=1.0f)
Definition: C4Draw.cpp:614
int32_t Wdt
Definition: C4Rect.h:30
#define C4GUI_BorderColor1
Definition: C4Gui.h:85
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
C4Draw * pDraw
Definition: C4Draw.cpp:42
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
#define C4GUI_BorderColor3
Definition: C4Gui.h:87
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165
uint32_t DWORD
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawBackground()

void C4GUI::FullscreenDialog::DrawBackground ( C4TargetFacet cgo,
C4Facet rFromFct 
)
protectedinherited

Definition at line 836 of file C4GuiDialogs.cpp.

References C4Facet::DrawFullScreen().

Referenced by C4StartupScenSelDlg::DrawElement().

837  {
838  // draw across fullscreen bounds - zoom 1px border to prevent flashing borders by blit offsets
839  rFromFct.DrawFullScreen(cgo);
840  }
void DrawFullScreen(C4Facet &cgo)
Definition: C4Facet.cpp:184
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawBar()

void C4GUI::Element::DrawBar ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 308 of file C4Gui.cpp.

References C4Facet::Draw(), C4Facet::DrawX(), C4GUI::DynBarFacet::fctBegin, C4GUI::DynBarFacet::fctEnd, C4GUI::DynBarFacet::fctMiddle, C4Surface::Hgt, C4Facet::Hgt, C4Facet::Surface, C4TargetFacet::TargetX, C4TargetFacet::TargetY, C4Surface::Wdt, C4Facet::Wdt, and C4Facet::X.

Referenced by C4GUI::WoodenLabel::DrawElement(), and C4GUI::Button::DrawElement().

309  {
310  if (rcBounds.Hgt == rFacets.fctMiddle.Hgt)
311  {
312  // exact bar
313  int32_t x0=cgo.TargetX+rcBounds.x, y0=cgo.TargetY+rcBounds.y;
314  int32_t iX = rFacets.fctBegin.Wdt, w=rFacets.fctMiddle.Wdt, wLeft=rFacets.fctBegin.Wdt, wRight=rFacets.fctEnd.Wdt;
315  int32_t iRightShowLength = wRight/3;
316  bool fOverflow = (wLeft > rcBounds.Wdt);
317  if (fOverflow) rFacets.fctBegin.Wdt = rcBounds.Wdt;
318  rFacets.fctBegin.Draw(cgo.Surface, x0,y0);
319  if (fOverflow) rFacets.fctBegin.Wdt = wLeft;
320  while (iX < rcBounds.Wdt-iRightShowLength)
321  {
322  int32_t w2=std::min(w, rcBounds.Wdt-iRightShowLength-iX); rFacets.fctMiddle.Wdt=w2;
323  rFacets.fctMiddle.Draw(cgo.Surface, x0+iX, y0);
324  iX += w;
325  }
326  rFacets.fctMiddle.Wdt=w;
327  fOverflow = (wRight > rcBounds.Wdt);
328  if (fOverflow)
329  {
330  rFacets.fctEnd.X += wRight - rcBounds.Wdt;
331  rFacets.fctEnd.Wdt = rcBounds.Wdt;
332  }
333  rFacets.fctEnd.Draw(cgo.Surface, x0+rcBounds.Wdt-rFacets.fctEnd.Wdt, y0);
334  if (fOverflow)
335  {
336  rFacets.fctEnd.X -= wRight - rcBounds.Wdt;
337  rFacets.fctEnd.Wdt = wRight;
338  }
339  }
340  else
341  {
342  // zoomed bar
343  float fZoom = (float) rcBounds.Hgt / rFacets.fctMiddle.Hgt;
344  int32_t x0=cgo.TargetX+rcBounds.x, y0=cgo.TargetY+rcBounds.y;
345  int32_t iX = int32_t(fZoom*rFacets.fctBegin.Wdt), w=int32_t(fZoom*rFacets.fctMiddle.Wdt), wOld=rFacets.fctMiddle.Wdt;
346  int32_t iRightShowLength = rFacets.fctEnd.Wdt/3;
347  rFacets.fctBegin.DrawX(cgo.Surface, x0,y0,int32_t(fZoom*rFacets.fctBegin.Wdt),rcBounds.Hgt);
348  while (iX < rcBounds.Wdt-(fZoom*iRightShowLength))
349  {
350  int32_t w2=std::min<int32_t>(w, rcBounds.Wdt-int32_t(fZoom*iRightShowLength)-iX); rFacets.fctMiddle.Wdt=long(float(w2)/fZoom);
351  rFacets.fctMiddle.DrawX(cgo.Surface, x0+iX, y0, w2,rcBounds.Hgt);
352  iX += w;
353  }
354  rFacets.fctMiddle.Wdt=wOld;
355  rFacets.fctEnd.DrawX(cgo.Surface, x0+rcBounds.Wdt-int32_t(fZoom*rFacets.fctEnd.Wdt), y0,int32_t(fZoom*rFacets.fctEnd.Wdt),rcBounds.Hgt);
356  }
357  }
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
int32_t Hgt
Definition: C4Rect.h:30
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawElement()

void C4GUI::FullscreenDialog::DrawElement ( C4TargetFacet cgo)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Reimplemented in C4StartupScenSelDlg, C4StartupPlrSelDlg, C4StartupNetDlg, C4StartupMainDlg, and C4StartupAboutDlg.

Definition at line 823 of file C4GuiDialogs.cpp.

References C4Draw::BlitSurfaceTile(), C4GraphicsResource::fctUpperBoard, GraphicsResource, C4GUI::FullscreenDialog::HasUpperBoard(), C4Facet::Hgt, C4GUI::Dialog::iFade, pDraw, C4Facet::Surface, and C4Facet::Wdt.

Referenced by OnBackBtn().

824  {
825  // draw upper board
826  if (HasUpperBoard())
828  }
C4GraphicsResource GraphicsResource
virtual bool HasUpperBoard()
Definition: C4Gui.h:2241
bool BlitSurfaceTile(C4Surface *sfcSurface, C4Surface *sfcTarget, float iToX, float iToY, float iToWdt, float iToHgt, float iOffsetX, float iOffsetY, C4ShaderCall *shader_call)
Definition: C4Draw.cpp:535
C4Draw * pDraw
Definition: C4Draw.cpp:42
float Hgt
Definition: C4Facet.h:118
C4Surface * Surface
Definition: C4Facet.h:117
float Wdt
Definition: C4Facet.h:118
int32_t iFade
Definition: C4Gui.h:2083
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawHBarByVGfx()

void C4GUI::Element::DrawHBarByVGfx ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 365 of file C4Gui.cpp.

References C4BltTransform::SetRotate(), C4TargetFacet::TargetX, and C4TargetFacet::TargetY.

Referenced by C4GUI::ScrollBar::DrawElement().

366  {
367  C4DrawTransform trf;
368  float fOffX = cgo.TargetX + rcBounds.x + rcBounds.Hgt/2;
369  float fOffY = cgo.TargetY + rcBounds.y + rcBounds.Hgt/2;
370  trf.SetRotate(-90.0f, fOffX, fOffY);
371 
372  DrawHVBar(cgo, rFacets, trf, rcBounds.Wdt);
373  }
void DrawHVBar(C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
Definition: C4Gui.cpp:375
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
void SetRotate(float iAngle, float fOffX, float fOffY)
int32_t Hgt
Definition: C4Rect.h:30
float TargetY
Definition: C4Facet.h:165
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawHVBar()

void C4GUI::Element::DrawHVBar ( C4TargetFacet cgo,
DynBarFacet rFacets,
C4DrawTransform trf,
int32_t  iMiddleLength 
)
protectedinherited

Definition at line 375 of file C4Gui.cpp.

References C4Facet::DrawT(), C4GUI::DynBarFacet::fctBegin, C4GUI::DynBarFacet::fctEnd, C4GUI::DynBarFacet::fctMiddle, C4Facet::Hgt, C4Facet::Surface, C4TargetFacet::TargetX, and C4TargetFacet::TargetY.

376  {
377  int32_t y0 = cgo.TargetY + rcBounds.y;
378  int32_t x0 = cgo.TargetX + rcBounds.x;
379 
380  // draw up arrow
381  rFacets.fctBegin.DrawT(cgo.Surface, x0, y0, 0, 0, &trf);
382 
383  // draw middle part
384  int32_t h = rFacets.fctMiddle.Hgt;
385  int32_t barHeight = iMiddleLength - (rFacets.fctBegin.Hgt + rFacets.fctEnd.Hgt);
386 
387  for (int32_t iY = 0; iY <= barHeight; iY += h)
388  {
389  int32_t h2 = std::min(h, barHeight - iY);
390  rFacets.fctMiddle.Hgt = h2;
391  rFacets.fctMiddle.DrawT(cgo.Surface, x0, y0 + rFacets.fctBegin.Hgt + iY, 0, 0, &trf);
392  }
393  rFacets.fctMiddle.Hgt = h;
394 
395  // draw lower arrow
396  rFacets.fctEnd.DrawT(cgo.Surface, x0, y0 + iMiddleLength - rFacets.fctEnd.Hgt, 0, 0, &trf);
397  }
int Hgt
Definition: C4Surface.h:65
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
float TargetX
Definition: C4Facet.h:165
C4Surface * Surface
Definition: C4Facet.h:117
float TargetY
Definition: C4Facet.h:165
Here is the call graph for this function:

◆ DrawVBar()

void C4GUI::Element::DrawVBar ( C4TargetFacet cgo,
DynBarFacet rFacets 
)
protectedinherited

Definition at line 359 of file C4Gui.cpp.

Referenced by C4GUI::ScrollBar::DrawElement().

360  {
361  C4DrawTransform trf(1);
362  DrawHVBar(cgo, rFacets, trf, rcBounds.Hgt);
363  }
void DrawHVBar(C4TargetFacet &cgo, DynBarFacet &rFacets, C4DrawTransform &trf, int32_t iMiddleLength)
Definition: C4Gui.cpp:375
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t Hgt
Definition: C4Rect.h:30
Here is the caller graph for this function:

◆ ElementPosChanged()

virtual void C4GUI::Container::ElementPosChanged ( Element pOfElement)
inlineprotectedvirtualinherited

Reimplemented in C4GUI::Screen, C4GUI::ContextMenu, C4GUI::TextWindow, C4GUI::ListBox, and C4GUI::ScrollWindow.

Definition at line 754 of file C4Gui.h.

Referenced by C4GUI::ScrollWindow::ElementPosChanged().

754 { } // called when an element position is changed
Here is the caller graph for this function:

◆ ElementSizeChanged()

virtual void C4GUI::Container::ElementSizeChanged ( Element pOfElement)
inlineprotectedvirtualinherited

Reimplemented in C4GUI::ContextMenu, C4GUI::TextWindow, C4GUI::ListBox, and C4GUI::ScrollWindow.

Definition at line 753 of file C4Gui.h.

Referenced by C4GUI::ListBox::ElementPosChanged(), C4GUI::TextWindow::ElementPosChanged(), C4GUI::ContextMenu::ElementPosChanged(), C4GUI::ScrollWindow::ElementSizeChanged(), C4GUI::ListBox::ElementSizeChanged(), C4GUI::TextWindow::ElementSizeChanged(), and C4GUI::ContextMenu::ElementSizeChanged().

753 { } // called when an element size is changed
Here is the caller graph for this function:

◆ end()

Iterator C4GUI::Container::end ( )
inlineinherited

Definition at line 825 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::ClearPointers().

825 { return Iterator(nullptr); }
Here is the caller graph for this function:

◆ Execute()

bool C4GUI::Dialog::Execute ( )
inherited

Definition at line 680 of file C4GuiDialogs.cpp.

References Application, C4GUI::Dialog::fShow, and StdScheduler::ScheduleProcs().

Referenced by C4GUI::Dialog::Execute2(), C4Network2::FinalInit(), and C4Network2::RetrieveRes().

681  {
682  // process messages
683  if (!Application.ScheduleProcs(0))
684  return false;
685  // check status
686  if (!fShow) return false;
687  return true;
688  }
bool fShow
Definition: C4Gui.h:2081
bool ScheduleProcs(int iTimeout=1000/36)
C4Application Application
Definition: C4Globals.cpp:44
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Execute2()

bool C4GUI::Dialog::Execute2 ( )
inherited

Definition at line 690 of file C4GuiDialogs.cpp.

References C4GUI::Dialog::Execute().

691  {
692  // execute
693  if (Execute()) return true;
694  // delete self if closed
695  delete this;
696  return false;
697  }
Here is the call graph for this function:

◆ FadeIn()

bool C4GUI::Dialog::FadeIn ( Screen pOnScreen)
inherited

Definition at line 714 of file C4GuiDialogs.cpp.

References C4GUI::Dialog::eFade, C4GUI::Element::fVisible, C4GUI::Screen::GetScreenS(), C4GUI::Dialog::iFade, C4GUI::Dialog::OnShown(), and C4GUI::Screen::ShowDialog().

Referenced by C4Network2::DoLobby(), and C4Startup::SwitchDialog().

715  {
716  // default screen
717  if (!pOnScreen) pOnScreen = Screen::GetScreenS();
718  // fade in there
719  pOnScreen->ShowDialog(this, true);
720  iFade = 0;
721  eFade = eFadeIn;
722  fVisible = true;
723  OnShown();
724  // done, success
725  return true;
726  }
Fade eFade
Definition: C4Gui.h:2084
virtual void OnShown()
Definition: C4Gui.h:2208
static Screen * GetScreenS()
Definition: C4Gui.h:2626
bool fVisible
Definition: C4Gui.h:383
int32_t iFade
Definition: C4Gui.h:2083
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FadeOut()

void C4GUI::Dialog::FadeOut ( bool  fCloseWithOK)
inherited

Definition at line 728 of file C4GuiDialogs.cpp.

References C4GUI::Screen::CloseDialog(), C4GUI::Dialog::eFade, C4GUI::Dialog::fOK, C4GUI::Element::fVisible, C4GUI::Element::GetScreen(), C4GUI::Dialog::IsShown(), and C4GUI::Dialog::OnClosed().

729  {
730  // only if shown, or being faded in
731  if (!IsShown() && (!fVisible || eFade!=eFadeIn)) return;
732  // set OK flag
733  this->fOK = fCloseWithOK;
734  // fade out
735  Screen *pOnScreen = GetScreen();
736  if (!pOnScreen) return;
737  pOnScreen->CloseDialog(this, true);
738  eFade = eFadeOut;
739  // do callback - last call, because it might do perilous things
740  OnClosed(fCloseWithOK);
741  }
Fade eFade
Definition: C4Gui.h:2084
bool IsShown()
Definition: C4Gui.h:2147
bool fOK
Definition: C4Gui.h:2082
virtual void OnClosed(bool fOK)
bool fVisible
Definition: C4Gui.h:383
friend class Screen
Definition: C4Gui.h:2216
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
Here is the call graph for this function:

◆ GetBounds()

C4Rect& C4GUI::Element::GetBounds ( )
inlineinherited

Definition at line 445 of file C4Gui.h.

Referenced by C4GUI::ListBox::AddElement(), C4Menu::AdjustPosition(), C4GameOverDlg::C4GameOverDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextMenu::CheckOpenSubmenu(), C4GUI::ListBox::ContractToElementHeight(), C4MapFolderData::CreateGUIElements(), C4GUI::Screen::DoContext(), C4GUI::Window::Draw(), C4GUI::ListBox::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::TextWindow::ElementPosChanged(), C4GUI::TextWindow::ElementSizeChanged(), C4GUI::Dialog::GetMarginTop(), C4GUI::GetScreenHgt(), C4GUI::GetScreenWdt(), C4Menu::InitSize(), C4GUI::ListBox::InsertElement(), C4GUI::ScrollWindow::IsRangeInView(), C4StartupPlrSelDlg::PlayerListItem::Load(), C4GUI::Window::MouseInput(), C4GUI::ScrollBar::MouseInput(), C4GUI::ListBox::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::ContextMenu::MouseLeaveEntry(), OnBackBtn(), C4StartupScenSelDlg::OnClosed(), C4GUI::ListBox::OnGetFocus(), C4StartupPlrSelDlg::OnNewBtn(), C4GUI::ScrollBar::OnPosChanged(), C4StartupPlrSelDlg::OnPropertyBtn(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollBy(), C4GUI::ListBox::ScrollItemInView(), C4GUI::ScrollWindow::ScrollPages(), C4GUI::ScrollWindow::ScrollRangeInView(), C4GUI::ScrollWindow::ScrollToBottom(), C4GUI::ComboBox::SetComboCB(), C4GUI::Tabular::SetGfx(), C4GoalDisplay::SetGoals(), C4GUI::TextWindow::SetPicture(), C4GUI::Dialog::SetTitle(), C4LeagueSignupDialog::ShowModal(), C4GUI::ScrollBar::Update(), C4GUI::ScrollWindow::Update(), C4StartupNetListEntry::UpdateCollapsed(), C4StartupPlrSelDlg::PlayerListItem::UpdateCore(), C4GUI::ListBox::UpdateElementPosition(), C4Menu::UpdateElementPositions(), C4GUI::ListBox::UpdateElementPositions(), C4GUI::ScrollWindow::UpdateOwnPos(), C4Menu::UpdateScrollBar(), C4GUI::TextWindow::UpdateSize(), C4Network2ClientDlg::UpdateText(), and C4GameOverDlg::~C4GameOverDlg().

445 { return rcBounds; }
C4Rect rcBounds
Definition: C4Gui.h:385
Here is the caller graph for this function:

◆ GetClientRect()

C4Rect& C4GUI::Window::GetClientRect ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 864 of file C4Gui.h.

Referenced by C4ChartDialog::C4ChartDialog(), C4GameOverDlg::C4GameOverDlg(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg(), C4StartupPlrColorPickerDlg::C4StartupPlrColorPickerDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::ContextMenu::CheckOpenSubmenu(), C4GUI::ListBox::ContractToElementHeight(), C4MapFolderData::CreateGUIElements(), C4GUI::InfoDialog::CreateSubComponents(), C4GUI::ListBox::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::ListBox::GetItemWidth(), C4FileSelDlg::InitElements(), C4GUI::InputDialog::InputDialog(), C4GUI::LabeledEdit::LabeledEdit(), C4GameLobby::MainDlg::MainDlg(), C4GUI::MessageDialog::MessageDialog(), C4GUI::ContextMenu::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::ScrollBar::OnPosChanged(), C4GUI::ProgressDialog::ProgressDialog(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollBy(), C4GUI::ScrollWindow::ScrollRangeInView(), C4GUI::ScrollWindow::ScrollToBottom(), C4GUI::ScrollWindow::ScrollWindow(), C4GoalDisplay::SetGoals(), C4GUI::FullscreenDialog::SetTitle(), C4LeagueSignupDialog::ShowModal(), C4GUI::TextWindow::TextWindow(), C4GUI::ScrollBar::Update(), C4StartupNetListEntry::UpdateCollapsed(), C4GUI::ListBox::UpdateColumnCount(), C4GUI::TextWindow::UpdateSize(), and C4DownloadDlg::~C4DownloadDlg().

864 { return rcClientRect; }
C4Rect rcClientRect
Definition: C4Gui.h:851
Here is the caller graph for this function:

◆ GetContainedClientRect()

◆ GetContainer()

Container* C4GUI::Container::GetContainer ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 831 of file C4Gui.h.

831 { return this; } // returns parent for elements; this for containers

◆ GetContextHandler()

ContextHandler* C4GUI::Dialog::GetContextHandler ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 2211 of file C4Gui.h.

2212  { return pContextHandler; }
ContextHandler * pContextHandler
Definition: C4Gui.h:381

◆ GetDefaultControl()

virtual class Control* C4GUI::Dialog::GetDefaultControl ( )
inlinevirtualinherited

Reimplemented in C4ChatDlg, C4StartupNetDlg, and C4GameLobby::MainDlg.

Definition at line 2129 of file C4Gui.h.

Referenced by C4GUI::Dialog::CharIn(), and C4GUI::Tabular::KeyCloseTab().

2129 { return nullptr; }
Here is the caller graph for this function:

◆ GetDefaultTitleHeight()

int32_t C4GUI::Dialog::GetDefaultTitleHeight ( )
staticinherited

Definition at line 330 of file C4GuiDialogs.cpp.

References C4GUI_MinWoodBarHgt, CStdFont::GetLineHeight(), GraphicsResource, and C4GraphicsResource::TextFont.

331  {
332  // default title font
333  return std::min<int32_t>(::GraphicsResource.TextFont.GetLineHeight(), C4GUI_MinWoodBarHgt);
334  }
#define C4GUI_MinWoodBarHgt
Definition: C4Gui.h:158
C4GraphicsResource GraphicsResource
int GetLineHeight() const
Definition: C4FontLoader.h:125
Here is the call graph for this function:

◆ GetDialogWindow()

DialogWindow* C4GUI::Dialog::GetDialogWindow ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 2117 of file C4Gui.h.

2117 { return pWindow; }
DialogWindow * pWindow
Definition: C4Gui.h:2088

◆ GetDlg()

Dialog* C4GUI::Dialog::GetDlg ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 2116 of file C4Gui.h.

Referenced by C4GUI::Screen::CloseAllDialogs(), C4GUI::Screen::GetDialog(), C4GUI::Element::GetDlg(), C4GUI::Screen::GetFullscreenDialog(), C4GUI::Screen::GetMouseControlledDialogCount(), C4GUI::Screen::GetTopDialog(), and C4GUI::Screen::MouseInput().

2116 { return this; } // this is the dialog
Here is the caller graph for this function:

◆ GetElementByIndex()

Element * C4GUI::Container::GetElementByIndex ( int32_t  i)
inherited

Definition at line 223 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, and C4GUI::Element::pNext.

Referenced by C4Menu::GetItem(), and C4GUI::ContextMenu::SelectItem().

224  {
225  // get next until end of list or queried index is reached
226  // if i is negative or equal or larger than childcount, the loop will never break and nullptr returned
227  Element *pEl;
228  for (pEl = pFirst; i-- && pEl; pEl=pEl->pNext) {}
229  return pEl;
230  }
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377
Here is the caller graph for this function:

◆ GetElementCount()

int32_t C4GUI::Container::GetElementCount ( )
inherited

Definition at line 232 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, and C4GUI::Element::pNext.

Referenced by C4ScriptGuiWindow::ExecuteCommand(), and C4GUI::ListBox::SortElements().

233  {
234  int32_t cnt=0;
235  for (Element *pEl = pFirst; pEl; pEl=pEl->pNext) ++cnt;
236  return cnt;
237  }
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377
Here is the caller graph for this function:

◆ GetFirst()

◆ GetFirstContained()

Element* C4GUI::Container::GetFirstContained ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 773 of file C4Gui.h.

Referenced by C4GUI::ContextMenu::MouseLeaveEntry(), and C4GUI::ListBox::OnGetFocus().

773 { return pFirst; }
Element * pFirst
Definition: C4Gui.h:750
Here is the caller graph for this function:

◆ GetFirstNestedElement()

Element * C4GUI::Container::GetFirstNestedElement ( bool  fBackwards)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 204 of file C4GuiContainers.cpp.

References C4GUI::Element::GetFirstNestedElement(), C4GUI::Container::pFirst, and C4GUI::Container::pLast.

Referenced by C4GUI::Container::GetNextNestedElement().

205  {
206  // get first/last in own list
207  if (pFirst) return (fBackwards ? pLast : pFirst)->GetFirstNestedElement(fBackwards);
208  // no own list: return this one
209  return this;
210  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetFocus()

Control* C4GUI::Dialog::GetFocus ( )
inlineinherited

Definition at line 2115 of file C4Gui.h.

Referenced by C4StartupScenSelDlg::DeselectAll(), C4StartupNetDlg::DoOK(), C4GUI::Tabular::KeyCloseTab(), C4GUI::Control::MouseInput(), C4StartupNetDlg::OnBtnRecord(), C4GUI::RenameEdit::OnFinishInput(), C4GUI::RenameEdit::RenameEdit(), and C4GUI::Container::SetVisibility().

2115 { return pActiveCtrl; }
Control * pActiveCtrl
Definition: C4Gui.h:2080
Here is the caller graph for this function:

◆ GetFrameDecoration()

FrameDecoration* C4GUI::Dialog::GetFrameDecoration ( ) const
inlineinherited

Definition at line 2201 of file C4Gui.h.

2201 { return pFrameDeco; }
FrameDecoration * pFrameDeco
Definition: C4Gui.h:2089

◆ GetHeight()

int32_t C4GUI::Element::GetHeight ( )
inlineinherited

Definition at line 444 of file C4Gui.h.

References C4Rect::Hgt.

Referenced by C4GUI::Screen::ShowDialog().

444 { return rcBounds.Hgt; }
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t Hgt
Definition: C4Rect.h:30
Here is the caller graph for this function:

◆ GetID()

const char* C4GUI::FullscreenDialog::GetID ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2226 of file C4Gui.h.

Referenced by OnBackBtn().

2226 { return nullptr; } // no ID needed, because it's never created as a window
Here is the caller graph for this function:

◆ GetLast()

Element* C4GUI::Container::GetLast ( )
inlineinherited

Definition at line 830 of file C4Gui.h.

Referenced by C4GUI::ListBox::GetLast(), C4Menu::InitSize(), and C4Menu::UpdateScrollBar().

830 { return pLast; }
Element * pLast
Definition: C4Gui.h:750
Here is the caller graph for this function:

◆ GetLastContained()

virtual Element* C4GUI::Container::GetLastContained ( )
inlinevirtualinherited

Definition at line 774 of file C4Gui.h.

Referenced by C4GUI::ContextMenu::MouseLeaveEntry(), and C4GUI::ListBox::OnGetFocus().

774 { return pLast; }
Element * pLast
Definition: C4Gui.h:750
Here is the caller graph for this function:

◆ GetListItemTopSpacing()

virtual int32_t C4GUI::Element::GetListItemTopSpacing ( )
inlinevirtualinherited

Reimplemented in C4StartupNetListEntry.

Definition at line 461 of file C4Gui.h.

References C4GUI_DefaultListSpacing.

Referenced by C4GUI::ListBox::AddElement(), C4GUI::ListBox::DrawElement(), C4GUI::ContextMenu::MouseLeaveEntry(), OnBackBtn(), C4PlayerInfoListBox::ListItem::ID::operator==(), and C4GUI::ListBox::UpdateElementPositions().

461 { return C4GUI_DefaultListSpacing; }
#define C4GUI_DefaultListSpacing
Definition: C4Gui.h:123
Here is the caller graph for this function:

◆ GetListItemTopSpacingBar()

virtual bool C4GUI::Element::GetListItemTopSpacingBar ( )
inlinevirtualinherited

Definition at line 462 of file C4Gui.h.

Referenced by C4GUI::ListBox::DrawElement(), and C4PlayerInfoListBox::ListItem::ID::operator==().

462 { return false; }
Here is the caller graph for this function:

◆ GetMarginBottom()

int32_t C4GUI::FullscreenDialog::GetMarginBottom ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2249 of file C4Gui.h.

2249 { return iDlgMarginY; }

◆ GetMarginLeft()

int32_t C4GUI::FullscreenDialog::GetMarginLeft ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2247 of file C4Gui.h.

2247 { return iDlgMarginX; }

◆ GetMarginRight()

int32_t C4GUI::FullscreenDialog::GetMarginRight ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2248 of file C4Gui.h.

2248 { return iDlgMarginX; }

◆ GetMarginTop()

int32_t C4GUI::FullscreenDialog::GetMarginTop ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Reimplemented in C4StartupScenSelDlg, and C4StartupPlrSelDlg.

Definition at line 2246 of file C4Gui.h.

References C4GUI_FullscreenDlg_TitleHeight, and C4UpperBoardHeight.

Referenced by C4GUI::FullscreenDialog::FullscreenDialog(), and C4GUI::FullscreenDialog::SetTitle().

const int C4UpperBoardHeight
Definition: C4Constants.h:59
virtual bool HasUpperBoard()
Definition: C4Gui.h:2241
#define C4GUI_FullscreenDlg_TitleHeight
Definition: C4Gui.h:160
Here is the caller graph for this function:

◆ GetNext()

◆ GetNextNestedElement()

Element * C4GUI::Container::GetNextNestedElement ( Element pPrevElement,
bool  fBackwards 
)
inherited

Definition at line 171 of file C4GuiContainers.cpp.

References C4GUI::Element::GetFirstContained(), C4GUI::Element::GetFirstNestedElement(), C4GUI::Container::GetFirstNestedElement(), C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Dialog::AdvanceFocus().

172  {
173  if (fBackwards)
174  {
175  // this is last
176  if (pPrevElement == this) return nullptr;
177  // no previous given?
178  if (!pPrevElement)
179  // then use last nested for backwards search
180  return GetFirstNestedElement(true);
181  // get nested, previous element if present
182  if (pPrevElement->pPrev) return pPrevElement->pPrev->GetFirstNestedElement(true);
183  // if not, return parent (could be this)
184  return pPrevElement->pParent;
185  }
186  else
187  {
188  // forward search: first element is this
189  if (!pPrevElement) return this;
190  // check next nested
191  Element *pEl;
192  if ((pEl = pPrevElement->GetFirstContained())) return pEl;
193  // check next in list, going upwards until this container is reached
194  while (pPrevElement && pPrevElement != this)
195  {
196  if ((pEl = pPrevElement->pNext)) return pEl;
197  pPrevElement = pPrevElement->pParent;
198  }
199  // nothing found
200  }
201  return nullptr;
202  }
Element * GetFirstNestedElement(bool fBackwards) override
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetOwnToolTip()

const char* C4GUI::Element::GetOwnToolTip ( )
inlineinherited

Definition at line 440 of file C4Gui.h.

References StdStrBuf::getData().

440 { return ToolTip.getData(); } // return tooltip const char*, without fallback to parent
const char * getData() const
Definition: StdBuf.h:442
Here is the call graph for this function:

◆ GetParent()

◆ GetPrev()

Element* C4GUI::Element::GetPrev ( ) const
inlineinherited

Definition at line 450 of file C4Gui.h.

Referenced by C4GUI::ListBox::AddElement(), C4GUI::Screen::CloseAllDialogs(), C4GUI::Screen::GetDialog(), C4GUI::Screen::GetTopDialog(), C4GUI::Window::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::ContextMenu::MouseLeaveEntry(), C4GUI::ListBox::OnGetFocus(), and C4GUI::Container::ReverseIterator::operator++().

450 { return pPrev; }
Element * pPrev
Definition: C4Gui.h:377
Here is the caller graph for this function:

◆ GetScreen()

Screen * C4GUI::Element::GetScreen ( )
virtualinherited

Reimplemented in C4GUI::Screen, and C4GUI::ContextMenu.

Definition at line 289 of file C4Gui.cpp.

References C4GUI::Screen::GetScreen().

Referenced by C4GUI::Dialog::Close(), C4StartupScenSelDlg::DoOK(), C4GUI::Dialog::Draw(), C4StartupAboutDlg::DrawElement(), C4GUI::ContextButton::DrawElement(), C4GUI::ComboBox::DrawElement(), C4GUI::Dialog::FadeOut(), C4GUI::Control::HasDrawFocus(), C4GUI::Dialog::IsActive(), C4StartupScenSelDlg::KeyDelete(), C4GUI::ComboBox::MouseInput(), C4StartupPlrSelDlg::PlayerListItem::MoveFilename(), C4GameOptionButtons::OnBtnComment(), C4GameOptionButtons::OnBtnPassword(), C4StartupNetDlg::OnBtnRecord(), OnClosed(), C4StartupPlrPropertiesDlg::OnClosed(), C4StartupPlrPropertiesDlg::OnClrChangeCustom(), C4ChatControl::OnConnectBtn(), C4GUI::CBContextHandler< CBClass >::OnContext(), C4StartupPlrSelDlg::OnCrewBtn(), C4StartupPlrSelDlg::OnDelBtn(), C4StartupPlrSelDlg::OnDelBtnConfirm(), C4StartupPlrSelDlg::OnItemCheckChange(), C4StartupPlrSelDlg::OnNewBtn(), C4StartupPlrPropertiesDlg::OnPictureBtn(), C4StartupPlrSelDlg::OnPropertyBtn(), C4StartupMainDlg::OnShown(), C4StartupMainDlg::OnTODO(), RecreateDialog(), SaveConfig(), C4GUI::ComboBox::SetComboCB(), C4GameLobby::MainDlg::Start(), C4StartupScenSelDlg::StartScenario(), C4ScoreboardDlg::Update(), C4StartupPlrSelDlg::PlayerListItem::UpdateCore(), C4FileSelDlg::UserClose(), C4StartupPlrPropertiesDlg::UserClose(), C4ChatControl::UserQueryQuit(), and C4GUI::ContextButton::~ContextButton().

289 { if (pParent) return pParent->GetScreen(); return nullptr; }
Container * pParent
Definition: C4Gui.h:376
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetToolTip()

const char * C4GUI::Element::GetToolTip ( )
inherited

Definition at line 423 of file C4Gui.cpp.

Referenced by C4GUI::CMouse::Draw(), C4GameLobby::MainDlg::OnRightTabContext(), and C4GameLobby::MainDlg::UpdateRightTab().

424  {
425  // fallback to parent tooltip, if own is not assigned
426  return (!pParent || !ToolTip.isNull()) ? ToolTip.getData() : pParent->GetToolTip();
427  }
const char * GetToolTip()
Definition: C4Gui.cpp:423
bool isNull() const
Definition: StdBuf.h:441
Container * pParent
Definition: C4Gui.h:376
const char * getData() const
Definition: StdBuf.h:442
Here is the caller graph for this function:

◆ GetToprightCornerRect()

C4Rect C4GUI::Element::GetToprightCornerRect ( int32_t  iWidth = 16,
int32_t  iHeight = 16,
int32_t  iHIndent = 4,
int32_t  iVIndent = 4,
int32_t  iIndexX = 0 
)
inherited

Definition at line 399 of file C4Gui.cpp.

References C4Rect::Hgt, C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4GUI::ContextButton::ContextButton(), C4GUI::Dialog::SetTitle(), C4GUI::Dialog::UpdateSize(), and C4Network2ClientDlg::UpdateText().

400  {
401  // bounds by topright corner of element
402  C4Rect rtBounds = (GetContainer() != this) ? GetClientRect() : GetContainedClientRect();
403  rtBounds.x += rtBounds.Wdt - (iWidth + iHIndent) * (iIndexX + 1);
404  rtBounds.y += iVIndent;
405  rtBounds.Wdt = rtBounds.Hgt = iHeight;
406  return rtBounds;
407  }
virtual Container * GetContainer()
Definition: C4Gui.h:410
Definition: C4Rect.h:27
C4Rect GetContainedClientRect()
Definition: C4Gui.h:448
int32_t Wdt
Definition: C4Rect.h:30
int32_t y
Definition: C4Rect.h:30
int32_t x
Definition: C4Rect.h:30
virtual C4Rect & GetClientRect()
Definition: C4Gui.h:447
int32_t Hgt
Definition: C4Rect.h:30
Here is the caller graph for this function:

◆ GetViewport()

virtual C4Viewport* C4GUI::Dialog::GetViewport ( )
inlinevirtualinherited

Reimplemented in C4Menu.

Definition at line 2171 of file C4Gui.h.

Referenced by C4GUI::Dialog::ApplyElementOffset(), C4GUI::Dialog::ApplyInvElementOffset(), and C4GUI::Screen::MouseInput().

2171 { return nullptr; }
Here is the caller graph for this function:

◆ GetWidth()

int32_t C4GUI::Element::GetWidth ( )
inlineinherited

Definition at line 443 of file C4Gui.h.

References C4Rect::Wdt.

Referenced by C4GUI::Screen::ShowDialog().

443 { return rcBounds.Wdt; }
int32_t Wdt
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
Here is the caller graph for this function:

◆ GetZOrdering()

virtual int32_t C4GUI::Dialog::GetZOrdering ( )
inlinevirtualinherited

Reimplemented in C4GUI::MessageDialog, C4Menu, and C4ChatInputDialog.

Definition at line 2181 of file C4Gui.h.

References C4GUI_Z_DEFAULT.

Referenced by C4GUI::Screen::ActivateDialog(), and C4GUI::Screen::ShowDialog().

2181 { return C4GUI_Z_DEFAULT; }
#define C4GUI_Z_DEFAULT
Definition: C4Gui.h:154
Here is the caller graph for this function:

◆ HasBackground()

virtual bool C4GUI::Dialog::HasBackground ( )
inlinevirtualinherited

Reimplemented in C4StartupScenSelDlg, C4StartupPlrSelDlg, and C4StartupNetDlg.

Definition at line 2154 of file C4Gui.h.

Referenced by C4GUI::Screen::Draw().

2154 { return false; } // true if dlg draws screen background (fullscreen dialogs only)
Here is the caller graph for this function:

◆ HasUpperBoard()

virtual bool C4GUI::FullscreenDialog::HasUpperBoard ( )
inlineprotectedvirtualinherited

Definition at line 2241 of file C4Gui.h.

Referenced by C4GUI::FullscreenDialog::DrawElement(), C4GUI::FullscreenDialog::FullscreenDialog(), and C4GUI::FullscreenDialog::SetTitle().

2241 { return false; } // standard fullscreen dialog: UpperBoard no longer present
Here is the caller graph for this function:

◆ InsertElement()

void C4GUI::Container::InsertElement ( Element pChild,
Element pInsertBefore 
)
inherited

Definition at line 150 of file C4GuiContainers.cpp.

References C4GUI::Container::AddElement(), C4GUI::Container::pFirst, C4GUI::Element::pNext, C4GUI::Element::pParent, C4GUI::Element::pPrev, and C4GUI::Container::RemoveElement().

Referenced by C4ScriptGuiWindow::AddChild(), C4GUI::ListBox::InsertElement(), C4GUI::ContextMenu::RemoveElement(), and C4GUI::Screen::ShowDialog().

151  {
152  // add?
153  if (!pInsertBefore) { AddElement(pChild); return; }
154  // safety
155  if (!pChild || pInsertBefore->pParent != this) return;
156  // remove from any previous container
157  if (pChild->pParent) pChild->pParent->RemoveElement(pChild);
158  // add before given element
159  if ((pChild->pPrev = pInsertBefore->pPrev))
160  pInsertBefore->pPrev->pNext = pChild;
161  else
162  pFirst = pChild;
163  pChild->pNext = pInsertBefore; pInsertBefore->pPrev = pChild;
164  pChild->pParent = this;
165 
166  assert(pChild->pNext != pChild);
167  assert(pChild->pPrev != pChild);
168  assert(pChild->pParent != pChild);
169  }
Element * pFirst
Definition: C4Gui.h:750
void AddElement(Element *pChild)
Element * pPrev
Definition: C4Gui.h:377
Container * pParent
Definition: C4Gui.h:376
Element * pNext
Definition: C4Gui.h:377
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsAborted()

bool C4GUI::Dialog::IsAborted ( )
inlineinherited

Definition at line 2149 of file C4Gui.h.

References C4GUI::IsActive().

Referenced by C4Network2::DoLobby(), C4Network2::FinalInit(), and C4Network2::RetrieveRes().

2149 { return !fShow && !fOK; } // returns whether dialog has been aborted
bool fShow
Definition: C4Gui.h:2081
bool fOK
Definition: C4Gui.h:2082
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsActive()

bool C4GUI::Dialog::IsActive ( bool  fForKeyboard)
inherited

Definition at line 699 of file C4GuiDialogs.cpp.

References C4GUI::Element::GetScreen(), C4GUI::Screen::HasContext(), C4GUI::Screen::IsExclusive(), C4GUI::Dialog::IsFading(), C4GUI::Dialog::IsShown(), and C4GUI::Screen::pActiveDlg.

Referenced by C4GUI::Control::HasDrawFocus(), C4GUI::Element::IsInActiveDlg(), and C4StartupNetDlg::OnSec1Timer().

700  {
701  // must be fully visible
702  if (!IsShown() || IsFading()) return false;
703  // screen-less dialogs are always inactive (not yet added)
704  Screen *pScreen = GetScreen();
705  if (!pScreen) return false;
706  // no keyboard focus if screen is in context mode
707  if (fForKeyboard && pScreen->HasContext()) return false;
708  // always okay in shared mode: all dlgs accessible by mouse
709  if (!pScreen->IsExclusive() && !fForKeyboard) return true;
710  // exclusive mode or keyboard input: Only one dlg active
711  return pScreen->pActiveDlg == this;
712  }
bool IsShown()
Definition: C4Gui.h:2147
bool IsFading()
Definition: C4Gui.h:2151
friend class Screen
Definition: C4Gui.h:2216
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsBottomPlacementDialog()

virtual bool C4GUI::Dialog::IsBottomPlacementDialog ( )
inlinevirtualinherited

Reimplemented in C4ChatInputDialog.

Definition at line 2161 of file C4Gui.h.

Referenced by C4GUI::Screen::ShowDialog().

2161 { return false; }
Here is the caller graph for this function:

◆ IsComponentOutsideClientArea()

bool C4GUI::FullscreenDialog::IsComponentOutsideClientArea ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2239 of file C4Gui.h.

2239 { return true; }

◆ IsExclusiveDialog()

virtual bool C4GUI::Dialog::IsExclusiveDialog ( )
inlinevirtualinherited

Reimplemented in C4ChatDlg, C4GameOverDlg, C4ChatInputDialog, and C4AbortGameDialog.

Definition at line 2164 of file C4Gui.h.

Referenced by C4GUI::Screen::HasKeyboardFocus().

2164 { return false; }
Here is the caller graph for this function:

◆ IsExternalDrawDialog()

bool C4GUI::Dialog::IsExternalDrawDialog ( )
inlineoverridevirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4Menu.

Definition at line 2178 of file C4Gui.h.

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::Screen::ShowDialog().

2178 { return false; }
Here is the caller graph for this function:

◆ IsFading()

bool C4GUI::Dialog::IsFading ( )
inlineinherited

Definition at line 2151 of file C4Gui.h.

Referenced by C4GUI::Screen::CloseDialog(), C4GUI::Screen::GetFullscreenDialog(), C4GUI::Dialog::IsActive(), C4GUI::Screen::MouseInput(), and C4GUI::Screen::RecheckActiveDialog().

2151 { return eFade != eFadeNone; }
Fade eFade
Definition: C4Gui.h:2084
Here is the caller graph for this function:

◆ IsFocused()

bool C4GUI::Dialog::IsFocused ( Control pCtrl)
inlineoverridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 2113 of file C4Gui.h.

Referenced by C4GameLobby::MainDlg::KeyHistoryUpDown().

2113 { return pCtrl == pActiveCtrl; }
Control * pActiveCtrl
Definition: C4Gui.h:2080
Here is the caller graph for this function:

◆ IsFocusElement()

virtual Control* C4GUI::Element::IsFocusElement ( )
inlinevirtualinherited

Reimplemented in C4GUI::ComboBox, C4GUI::TextWindow, C4GUI::Tabular, C4GUI::ListBox, C4GUI::CheckBox, and C4GUI::Control.

Definition at line 432 of file C4Gui.h.

Referenced by C4GUI::Dialog::AdvanceFocus().

432 { return nullptr; }; // return control to gain focus in search-cycle
Here is the caller graph for this function:

◆ IsFreePlaceDialog()

virtual bool C4GUI::Dialog::IsFreePlaceDialog ( )
inlinevirtualinherited

Reimplemented in C4ChatDlg, C4GameOverDlg, C4ChatInputDialog, and C4AbortGameDialog.

Definition at line 2158 of file C4Gui.h.

Referenced by C4GUI::Screen::ShowDialog().

2158 { return false; }
Here is the caller graph for this function:

◆ IsFullscreenDialog()

bool C4GUI::FullscreenDialog::IsFullscreenDialog ( )
inlineoverrideprotectedvirtualinherited

Reimplemented from C4GUI::Dialog.

Definition at line 2243 of file C4Gui.h.

2243 { return true; }

◆ IsImmediateToolTip()

bool C4GUI::Element::IsImmediateToolTip ( ) const
inlineinherited

Definition at line 441 of file C4Gui.h.

Referenced by C4GUI::CMouse::Draw().

441 { return is_immediate_tooltip; }
Here is the caller graph for this function:

◆ IsInActiveDlg()

bool C4GUI::Element::IsInActiveDlg ( bool  fForKeyboard)
inherited

Definition at line 435 of file C4Gui.cpp.

References C4GUI::Dialog::IsActive().

Referenced by C4GUI::ControlKeyDlgCB< TargetClass >::CheckCondition(), C4GUI::Button::DrawElement(), C4GUI::IconButton::DrawElement(), C4GUI::ArrowButton::DrawElement(), C4GUI::FacetButton::DrawElement(), C4GUI::CheckBox::DrawElement(), and C4GUI::ContextButton::DrawElement().

436  {
437  // get dlg
438  Dialog *pDlg=GetDlg();
439  if (!pDlg) return false;
440  // check if dlg is active
441  return pDlg->IsActive(fForKeyboard);
442  }
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsMenu()

virtual bool C4GUI::Element::IsMenu ( )
inlineprotectedvirtualinherited

Reimplemented in C4GUI::ContextMenu, and C4GUI::ContextMenu::Entry.

Definition at line 403 of file C4Gui.h.

403 { return false; }

◆ IsMouseControlled()

virtual bool C4GUI::Dialog::IsMouseControlled ( )
inlinevirtualinherited

Reimplemented in C4Menu, C4ChatInputDialog, and C4ScoreboardDlg.

Definition at line 2168 of file C4Gui.h.

Referenced by C4GUI::Screen::GetMouseControlledDialogCount().

2168 { return true; }
Here is the caller graph for this function:

◆ IsOK()

bool C4GUI::Dialog::IsOK ( )
inlineinherited

Definition at line 2148 of file C4Gui.h.

2148 { return fOK; } // returns whether user pressed OK
bool fOK
Definition: C4Gui.h:2082

◆ IsOwnPtrElement()

virtual bool C4GUI::Element::IsOwnPtrElement ( )
inlineprotectedvirtualinherited

Reimplemented in C4Menu.

Definition at line 401 of file C4Gui.h.

Referenced by C4GUI::Container::ClearChildren().

401 { return false; } // if true is returned, item will not be deleted when container is cleared
Here is the caller graph for this function:

◆ IsParentOf()

bool C4GUI::Container::IsParentOf ( Element pEl)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 239 of file C4GuiContainers.cpp.

References C4GUI::Element::GetParent().

Referenced by C4GUI::Tabular::IsSelectedChild(), C4GUI::Control::MouseInput(), and C4GUI::Container::SetVisibility().

240  {
241  // return whether this is the parent container (directly or recursively) of the passed element
242  for (Container *pC = pEl->GetParent(); pC; pC = pC->GetParent())
243  if (pC == this) return true;
244  return false;
245  }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSelectedChild()

virtual bool C4GUI::Container::IsSelectedChild ( Element pChild)
inlinevirtualinherited

Reimplemented in C4GUI::Tabular, and C4GUI::ListBox.

Definition at line 837 of file C4Gui.h.

Referenced by C4GUI::Dialog::AdvanceFocus(), and C4StartupNetListEntry::DrawElement().

837 { return pParent ? pParent->IsSelectedChild(pChild) : true; } // whether the child element is selected - only false for list-box-containers which can have unselected children
virtual bool IsSelectedChild(Element *pChild)
Definition: C4Gui.h:837
Container * pParent
Definition: C4Gui.h:376
Here is the caller graph for this function:

◆ IsShown()

bool C4GUI::Dialog::IsShown ( )
inlineinherited

Definition at line 2147 of file C4Gui.h.

Referenced by C4Network2::DoLobby(), C4ScenarioListLoader::DoProcessCallback(), C4GUI::Dialog::FadeOut(), C4GUI::Screen::GetMouseControlledDialogCount(), C4GUI::Screen::GetTopDialog(), C4GUI::Dialog::IsActive(), C4GUI::Screen::MouseInput(), C4FileSelDlg::SetPath(), and C4ChatDlg::ToggleChat().

2147 { return fShow; } // returns whether dlg is on screen (may be invisible)
bool fShow
Definition: C4Gui.h:2081
Here is the caller graph for this function:

◆ IsViewportDialog()

bool C4GUI::Dialog::IsViewportDialog ( )
inlineinherited

Definition at line 2172 of file C4Gui.h.

Referenced by C4GUI::Dialog::SetTitle(), C4GUI::Dialog::Show(), and C4GUI::Screen::ShowDialog().

2172 { return fViewportDlg; }
bool fViewportDlg
Definition: C4Gui.h:2087
Here is the caller graph for this function:

◆ IsVisible()

◆ KeyAdvanceFocus()

bool C4GUI::Dialog::KeyAdvanceFocus ( bool  fBackwards)
inlineinherited

Definition at line 2138 of file C4Gui.h.

Referenced by C4StartupMainDlg::C4StartupMainDlg(), and C4GUI::Dialog::Dialog().

2138 { AdvanceFocus(fBackwards); return true; }
void AdvanceFocus(bool fBackwards)
Here is the caller graph for this function:

◆ KeyBack()

bool C4StartupOptionsDlg::KeyBack ( )
inlineprotected

Definition at line 40 of file C4StartupOptionsDlg.h.

References DoBack(), C4GUI::Dialog::fOK, and OnClosed().

Referenced by C4StartupOptionsDlg().

40 { DoBack(); return true; }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ KeyEnter()

bool C4GUI::Dialog::KeyEnter ( )
inlineinherited

Definition at line 2133 of file C4Gui.h.

Referenced by C4FileSelDlg::C4FileSelDlg(), and C4GUI::Dialog::Dialog().

2133 { return OnEnter(); }
virtual bool OnEnter()
Definition: C4Gui.h:2132
Here is the caller graph for this function:

◆ KeyEscape()

bool C4GUI::Dialog::KeyEscape ( )
inlineinherited

Definition at line 2135 of file C4Gui.h.

Referenced by C4ChatInputDialog::C4ChatInputDialog(), and C4GUI::Dialog::Dialog().

2135 { return OnEscape(); }
virtual bool OnEscape()
Definition: C4Gui.h:2134
Here is the caller graph for this function:

◆ KeyMusicToggle()

bool C4StartupOptionsDlg::KeyMusicToggle ( )
protected

Definition at line 1474 of file C4StartupOptionsDlg.cpp.

References Application, Config, C4ConfigSound::FEMusic, C4Application::MusicSystem, C4GUI::CheckBox::SetChecked(), C4Config::Sound, and C4MusicSystem::ToggleOnOff().

Referenced by C4StartupOptionsDlg(), and OnBackBtn().

1475 {
1476  // do toggle
1478  // reflect in checkbox
1479  pFEMusicCheck->SetChecked(!!Config.Sound.FEMusic);
1480  // key processed
1481  return true;
1482 }
C4Config Config
Definition: C4Config.cpp:833
int32_t FEMusic
Definition: C4Config.h:128
void SetChecked(bool fToVal)
Definition: C4Gui.h:1476
C4ConfigSound Sound
Definition: C4Config.h:254
C4Application Application
Definition: C4Globals.cpp:44
C4MusicSystem MusicSystem
Definition: C4Application.h:41
Here is the call graph for this function:
Here is the caller graph for this function:

◆ MakeLastElement()

void C4GUI::Container::MakeLastElement ( Element pChild)
inherited

Definition at line 106 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::Screen::ActivateDialog().

107  {
108  // must be from same container
109  if (pChild->pParent != this) return;
110  // unlink from list
111  if (pChild->pPrev) pChild->pPrev->pNext = pChild->pNext; else pFirst = pChild->pNext;
112  if (pChild->pNext) pChild->pNext->pPrev = pChild->pPrev; else pLast = pChild->pPrev;
113  // readd to front of list
114  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
115  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
116  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Element * pNext
Definition: C4Gui.h:377
Here is the caller graph for this function:

◆ MouseEnter()

virtual void C4GUI::Element::MouseEnter ( CMouse rMouse)
inlinevirtualinherited

Reimplemented in C4GUI::ComboBox, C4GUI::ContextButton, C4GUI::CheckBox, C4GUI::Button, C4ScriptGuiWindow, and C4MenuItem.

Definition at line 413 of file C4Gui.h.

Referenced by C4GUI::Button::MouseEnter(), C4GUI::CheckBox::MouseEnter(), C4GUI::ContextButton::MouseEnter(), C4GUI::ComboBox::MouseEnter(), and C4GUI::Screen::MouseInput().

413 {}; // called when mouse cursor enters element region
Here is the caller graph for this function:

◆ MouseInput()

void C4GUI::Dialog::MouseInput ( CMouse rMouse,
int32_t  iButton,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
overridevirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 557 of file C4GuiDialogs.cpp.

References C4GUI::Window::MouseInput().

Referenced by C4GUI::Screen::MouseInput(), and OnBackBtn().

558  {
559  // inherited will do...
560  Window::MouseInput(rMouse, iButton, iX, iY, dwKeyParam);
561  }
void MouseInput(CMouse &rMouse, int32_t iButton, int32_t iX, int32_t iY, DWORD dwKeyParam) override
Here is the call graph for this function:
Here is the caller graph for this function:

◆ MouseLeave()

virtual void C4GUI::Element::MouseLeave ( CMouse rMouse)
inlinevirtualinherited

Reimplemented in C4GUI::ComboBox, C4GUI::ContextButton, C4GUI::ContextMenu::Entry, C4GUI::Tabular, C4GUI::CheckBox, C4GUI::Button, C4GUI::ScrollBar, and C4ScriptGuiWindow.

Definition at line 414 of file C4Gui.h.

Referenced by C4GUI::Screen::MouseInput(), C4GUI::ScrollBar::MouseLeave(), C4GUI::Button::MouseLeave(), C4GUI::CheckBox::MouseLeave(), C4GUI::Tabular::MouseLeave(), C4GUI::ContextButton::MouseLeave(), C4GUI::ComboBox::MouseLeave(), C4GUI::CMouse::ReleaseElements(), and C4GUI::CMouse::RemoveElement().

414 {}; // called when mouse cursor leaves element region
Here is the caller graph for this function:

◆ OnBackBtn()

void C4StartupOptionsDlg::OnBackBtn ( C4GUI::Control btn)
inlineprotected

Definition at line 45 of file C4StartupOptionsDlg.h.

References C4MaxKey, DoBack(), C4GUI::FullscreenDialog::DrawElement(), FormatString(), C4GUI::Element::GetBounds(), C4PlayerControlAssignment::GetGUIGroup(), C4GUI::FullscreenDialog::GetID(), C4GUI::Element::GetListItemTopSpacing(), C4Rect::Hgt, KeyMusicToggle(), C4GUI::Dialog::MouseInput(), OnEnter(), OnKeyboardLayoutChanged(), C4GUI::Element::rcBounds, RecreateDialog(), SaveConfig(), and SetSubscreen().

Referenced by C4StartupOptionsDlg().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnClosed()

void C4StartupOptionsDlg::OnClosed ( bool  fOK)
overrideprotectedvirtual

Reimplemented from C4GUI::Dialog.

Definition at line 1031 of file C4StartupOptionsDlg.cpp.

References C4GUI::ComboBox_FillCB::AddEntry(), StdStrBuf::Append(), StdStrBuf::AppendChar(), Application, C4GUI::MessageDialog::btnYesNo, CStdGLCtx::Clear(), C4GUI::ComboBox_FillCB::ClearEntries(), C4Draw::COLOR_DEPTH, Config, StdStrBuf::Copy(), C4Config::Default(), C4Window::EnumerateMultiSamples(), C4Config::fConfigLoaded, C4GraphicsResource::Files, C4GUI::ComboBox_FillCB::FindEntry(), StdStrBuf::Format(), FormatString(), C4Config::General, C4Application::GetConfigHeight(), C4Application::GetConfigWidth(), StdStrBuf::getData(), C4AbstractApp::GetIndexedDisplayMode(), C4AbstractApp::GetLastError(), C4GUI::Element::GetScreen(), C4Config::Graphics, GraphicsResource, C4GUI::Ico_Clonk, C4GUI::Ico_Notify, CStdGLCtx::Init(), CStdGL::InitShaders(), C4TexMgr::IntLock(), C4TexMgr::IntUnlock(), C4Draw::InvalidateDeviceObjects(), LoadResStr(), C4ConfigGraphics::Monitor, C4ConfigGraphics::MultiSampling, C4GUI::Dialog::OnClosed(), pDraw, pGL, CStdGL::pMainCtx, pTexMgr, C4AbstractApp::pWindow, C4Application::Quit(), RecreateDialog(), C4ConfigGraphics::RefreshRate, C4Window::ReInit(), C4Draw::RestoreDeviceObjects(), C4ConfigGraphics::ResX, C4ConfigGraphics::ResY, C4ConfigGeneral::RXFontName, C4ConfigGeneral::RXFontSize, SaveConfig(), C4Application::SetGameFont(), C4GUI::ComboBox::SetText(), C4AbstractApp::SetVideoMode(), C4GUI::Screen::ShowMessage(), C4GUI::Screen::ShowModalDlg(), C4ScriptGuiWindowPropertyName::text, and C4ConfigGraphics::Windowed.

Referenced by KeyBack().

1032 {
1033  // callback when dlg got closed - save config
1034  SaveConfig(true, false);
1036 }
bool fOK
Definition: C4Gui.h:2082
bool SaveConfig(bool fForce, bool fKeepOpen)
virtual void OnClosed(bool fOK)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnEnter()

bool C4StartupOptionsDlg::OnEnter ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GUI::FullscreenDialog.

Definition at line 38 of file C4StartupOptionsDlg.h.

Referenced by OnBackBtn().

38 { return false; } // Enter ignored
Here is the caller graph for this function:

◆ OnEscape()

bool C4StartupOptionsDlg::OnEscape ( )
inlineoverrideprotectedvirtual

Reimplemented from C4GUI::Dialog.

Definition at line 39 of file C4StartupOptionsDlg.h.

References DoBack().

39 { DoBack(); return true; }
Here is the call graph for this function:

◆ OnHotkey()

bool C4GUI::Container::OnHotkey ( uint32_t  cHotkey)
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4GUI::CheckBox, and C4GUI::Button.

Definition at line 212 of file C4GuiContainers.cpp.

References C4GUI::Element::IsVisible(), C4GUI::Container::pFirst, and C4GUI::Element::pNext.

Referenced by C4GUI::Dialog::CharIn().

213  {
214  if (!IsVisible()) return false;
215  // check all nested elements
216  for (Element *pEl = pFirst; pEl; pEl=pEl->pNext)
217  if (pEl->fVisible)
218  if (pEl->OnHotkey(cHotkey)) return true;
219  // no match found
220  return false;
221  }
bool IsVisible()
Definition: C4Gui.cpp:201
Element * pFirst
Definition: C4Gui.h:750
Element * pNext
Definition: C4Gui.h:377
Here is the call graph for this function:
Here is the caller graph for this function:

◆ OnIdle()

virtual void C4GUI::Dialog::OnIdle ( )
inlinevirtualinherited

Reimplemented in C4PortraitSelDlg, and C4DownloadDlg.

Definition at line 2209 of file C4Gui.h.

Referenced by C4GUI::Dialog::DoModal().

2209 {} // idle proc in DoModal
Here is the caller graph for this function:

◆ OnKeyboardLayoutChanged()

void C4StartupOptionsDlg::OnKeyboardLayoutChanged ( )
overridevirtual

Reimplemented from C4StartupDlg.

Definition at line 1484 of file C4StartupOptionsDlg.cpp.

Referenced by OnBackBtn().

1485 {
1486  // keyboard layout changed and thus some keys might have been updated from scan codes
1487  // update display in control set
1488  pControlConfigArea->UpdateCtrlSet();
1489 }
Here is the caller graph for this function:

◆ OnLeagueOptionChanged()

virtual void C4StartupDlg::OnLeagueOptionChanged ( )
inlinevirtualinherited

Reimplemented in C4StartupScenSelDlg.

Definition at line 102 of file C4Startup.h.

102 {}

◆ OnShown()

virtual void C4GUI::Dialog::OnShown ( )
inlinevirtualinherited

Reimplemented in C4StartupScenSelDlg, C4ChatDlg, C4DefinitionSelDlg, C4StartupNetDlg, C4FileSelDlg, C4GameOverDlg, C4StartupMainDlg, and C4AbortGameDialog.

Definition at line 2208 of file C4Gui.h.

Referenced by C4GUI::Dialog::FadeIn(), C4FileSelDlg::OnShown(), C4StartupNetDlg::OnShown(), C4StartupScenSelDlg::OnShown(), and C4GUI::Dialog::Show().

2208 {} // callback when shown - should not delete the dialog
Here is the caller graph for this function:

◆ OnUserClose()

void C4GUI::Dialog::OnUserClose ( C4GUI::Control btn)
inlineinherited

Definition at line 2204 of file C4Gui.h.

Referenced by C4GUI::Dialog::SetTitle().

2205  { UserClose(false); }
virtual void UserClose(bool fOK)
Definition: C4Gui.h:2206
Here is the caller graph for this function:

◆ rbegin()

ReverseIterator C4GUI::Container::rbegin ( )
inlineinherited

Definition at line 826 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::MouseInput(), and C4ScriptGuiWindow::ProcessMouseInput().

826 { return ReverseIterator(pLast); }
Element * pLast
Definition: C4Gui.h:750
Here is the caller graph for this function:

◆ ReaddElement()

void C4GUI::Container::ReaddElement ( Element pChild)
inherited

Definition at line 134 of file C4GuiContainers.cpp.

References C4GUI::Container::pFirst, C4GUI::Container::pLast, C4GUI::Element::pNext, C4GUI::Element::pParent, and C4GUI::Element::pPrev.

Referenced by C4GUI::ListBox::SortElements().

135  {
136  // safety
137  if (!pChild || pChild->pParent != this) return;
138  // remove from any previous container
139  if (pChild->pPrev) pChild->pPrev->pNext = pChild->pNext; else pFirst = pChild->pNext;
140  if (pChild->pNext) pChild->pNext->pPrev = pChild->pPrev; else pLast = pChild->pPrev;
141  // add to end of list
142  if (pLast) pLast->pNext = pChild; else pFirst = pChild;
143  pChild->pPrev = pLast; pChild->pNext = nullptr; pLast = pChild;
144 
145  assert(pChild->pNext != pChild);
146  assert(pChild->pPrev != pChild);
147  assert(pChild->pParent != pChild);
148  }
Element * pLast
Definition: C4Gui.h:750
Element * pFirst
Definition: C4Gui.h:750
Element * pPrev
Definition: C4Gui.h:377
Element * pNext
Definition: C4Gui.h:377
Here is the caller graph for this function:

◆ RecreateDialog()

void C4StartupOptionsDlg::RecreateDialog ( bool  fFade)

Definition at line 1411 of file C4StartupOptionsDlg.cpp.

References Application, C4SoundSystem::Clear(), Config, C4ConfigSound::FEMusic, C4ConfigSound::FESamples, C4Startup::Get(), C4GUI::Tabular::GetActiveSheetIndex(), C4GUI::Element::GetScreen(), C4GUI::Ico_Error, C4SoundSystem::Init(), LoadResStr(), C4Application::MusicSystem, C4ConfigSound::MusicVolume, C4MusicSystem::Play(), C4ConfigSound::RXSound, C4Startup::SDID_Options, C4GUI::Tabular::SelectSheet(), C4GUI::Screen::ShowMessage(), C4Config::Sound, C4Application::SoundSystem, C4ConfigSound::SoundVolume, StartSoundEffect(), C4MusicSystem::Stop(), C4Startup::SwitchDialog(), and C4MusicSystem::UpdateVolume().

Referenced by OnBackBtn(), OnClosed(), and SetSubscreen().

1412 {
1413  // MUST fade for now, or calling function will fail because dialog is deleted immediately
1414  fFade = true;
1415  // this actually breaks the possibility to go back :(
1416  int32_t iPage = pOptionsTabular->GetActiveSheetIndex();
1418  pNewDlg->pOptionsTabular->SelectSheet(iPage, false);
1419  pNewDlg->fCanGoBack = false;
1420 }
void SelectSheet(int32_t iIndex, bool fByUser)
class C4StartupDlg * SwitchDialog(DialogID eToDlg, bool fFade=true, const char *szSubDialog=nullptr)
Definition: C4Startup.cpp:137
static C4Startup * Get()
Definition: C4Startup.h:145
int32_t GetActiveSheetIndex()
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveElement()

void C4GUI::Dialog::RemoveElement ( Element pChild)
overridevirtualinherited

Reimplemented from C4GUI::Container.

Definition at line 427 of file C4GuiDialogs.cpp.

References C4GUI::Dialog::pActiveCtrl, and C4GUI::Container::RemoveElement().

428  {
429  // inherited
430  Window::RemoveElement(pChild);
431  // clear ptr
432  if (pChild == pActiveCtrl) pActiveCtrl = nullptr;
433  }
Control * pActiveCtrl
Definition: C4Gui.h:2080
void RemoveElement(Element *pChild) override
Here is the call graph for this function:

◆ rend()

ReverseIterator C4GUI::Container::rend ( )
inlineinherited

Definition at line 827 of file C4Gui.h.

Referenced by C4ScriptGuiWindow::MouseInput(), and C4ScriptGuiWindow::ProcessMouseInput().

827 { return ReverseIterator(nullptr); }
Here is the caller graph for this function:

◆ SaveConfig()

bool C4StartupOptionsDlg::SaveConfig ( bool  fForce,
bool  fKeepOpen 
)
protected

Definition at line 1230 of file C4StartupOptionsDlg.cpp.

References StdStrBuf::Clear(), Config, StdStrBuf::getData(), C4Config::GetRegistrationData(), C4GUI::Element::GetScreen(), C4GUI::Ico_Error, LoadResStr(), C4Config::Network, C4ConfigNetwork::Nick, C4Config::Save(), SEqual(), and C4GUI::Screen::ShowMessage().

Referenced by DoBack(), OnBackBtn(), OnClosed(), and UserClose().

1231 {
1232  // prevent double save
1233  if (fConfigSaved) return true;
1234  // save any config fields that are not stored directly; return whether all values are OK
1235  // check port validity
1236  if (!fForce)
1237  {
1238  StdCopyStrBuf strError(LoadResStr("IDS_ERR_CONFIG"));
1239  if (pPortCfgTCP->GetPort()>0 && pPortCfgTCP->GetPort() == pPortCfgRef->GetPort())
1240  {
1241  GetScreen()->ShowMessage(LoadResStr("IDS_NET_ERR_PORT_TCPREF"), strError.getData(), C4GUI::Ico_Error);
1242  return false;
1243  }
1244  if (pPortCfgUDP->GetPort()>0 && pPortCfgUDP->GetPort() == pPortCfgDsc->GetPort())
1245  {
1246  GetScreen()->ShowMessage(LoadResStr("IDS_NET_ERR_PORT_UDPDISC"), strError.getData(), C4GUI::Ico_Error);
1247  return false;
1248  }
1249  }
1250  // store some config values
1251  pPortCfgTCP->SavePort();
1252  pPortCfgUDP->SavePort();
1253  pPortCfgRef->SavePort();
1254  pPortCfgDsc->SavePort();
1255  pLeagueServerCfg->Save2Config();
1256  pNetworkNickEdit->Save2Config();
1257  // if nick is same as default by registry, don't save in config
1258  // so regkey updates will change the nick as well
1259  const char *szRegNick = Config.GetRegistrationData("Nick");
1260  if (SEqual(Config.Network.Nick.getData(), szRegNick)) Config.Network.Nick.Clear();
1261  // make sure config is saved, in case the game crashes later on or another instance is started
1262  Config.Save();
1263  if (!fKeepOpen) fConfigSaved = true;
1264  // done; config OK
1265  return true;
1266 }
C4Config Config
Definition: C4Config.cpp:833
void Clear()
Definition: StdBuf.h:466
bool SEqual(const char *szStr1, const char *szStr2)
Definition: Standard.h:93
ValidatedStdCopyStrBuf< C4InVal::VAL_NameAllowEmpty > Nick
Definition: C4Config.h:156
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
const char * GetRegistrationData(const char *strField)
Definition: C4Config.h:281
C4ConfigNetwork Network
Definition: C4Config.h:255
const char * getData() const
Definition: StdBuf.h:442
bool ShowMessage(const char *szMessage, const char *szCaption, Icons icoIcon, int32_t *piConfigDontShowAgainSetting=nullptr)
bool Save()
Definition: C4Config.cpp:400
virtual Screen * GetScreen()
Definition: C4Gui.cpp:289
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ScreenPos2ClientPos()

void C4GUI::Element::ScreenPos2ClientPos ( int32_t &  riX,
int32_t &  riY 
)
inherited

Definition at line 218 of file C4Gui.cpp.

References C4GUI::Container::ApplyElementOffset(), and C4GUI::Element::GetParent().

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::CMouse::ReleaseElements().

219  {
220  // apply all parent offsets
221  Container *pCont = pParent;
222  while (pCont)
223  {
224  pCont->ApplyElementOffset(riX, riY);
225  pCont = pCont->GetParent();
226  }
227  // apply own offset
228  riX -= rcBounds.x; riY -= rcBounds.y;
229  }
int32_t y
Definition: C4Rect.h:30
virtual void ApplyElementOffset(int32_t &riX, int32_t &riY)
Definition: C4Gui.h:840
C4Rect rcBounds
Definition: C4Gui.h:385
Container * pParent
Definition: C4Gui.h:376
int32_t x
Definition: C4Rect.h:30
friend class Container
Definition: C4Gui.h:472
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetBounds()

void C4GUI::Element::SetBounds ( const C4Rect rcNewBound)
inlineinherited

Definition at line 446 of file C4Gui.h.

Referenced by C4GameOptionButtons::C4GameOptionButtons(), C4GoalDisplay::C4GoalDisplay(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupNetListEntry::C4StartupNetListEntry(), C4GUI::ContextButton::ContextButton(), C4GUI::ListBox::ContractToElementHeight(), C4GUI::Control::Control(), C4GUI::Dialog::Dialog(), C4ChatDlg::DoPlacement(), C4StartupPlrSelDlg::DrawElement(), C4StartupNetListEntry::Execute(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::Screen::Init(), C4Menu::InitSize(), C4GUI::LabeledEdit::LabeledEdit(), C4StartupScenSelDlg::OnClosed(), C4Game::OnResolutionChanged(), C4GameLobby::ScenDesc::ScenDesc(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::ScrollWindow::ScrollWindow(), C4DefinitionSelDlg::SelectDefinitions(), C4GUI::InputDialog::SetCustomEdit(), C4GUI::Tabular::SetGfx(), C4GoalDisplay::SetGoals(), C4StartupNetListEntry::SetReference(), C4StartupNetListEntry::SetRefQuery(), C4GUI::Tabular::Sheet::Sheet(), C4GUI::TextWindow::TextWindow(), C4ScoreboardDlg::Update(), C4StartupNetListEntry::UpdateCollapsed(), C4Menu::UpdateElementPositions(), C4GUI::ListBox::UpdateElementPositions(), C4ChatControl::ChatSheet::NickItem::UpdateOwnPos(), C4FileSelDlg::DefaultListItem::UpdateOwnPos(), C4GUI::ScrollWindow::UpdateOwnPos(), C4ChatControl::UpdateSize(), C4ChatDlg::UpdateSize(), C4GUI::TextWindow::UpdateSize(), C4GUI::Dialog::UpdateSize(), C4Network2ClientDlg::UpdateText(), and C4DownloadDlg::~C4DownloadDlg().

446 { rcBounds=rcNewBound; UpdatePos(); UpdateSize(); }
virtual void UpdateSize()
Definition: C4Gui.cpp:185
C4Rect rcBounds
Definition: C4Gui.h:385
virtual void UpdatePos()
Definition: C4Gui.cpp:193
Here is the caller graph for this function:

◆ SetClientSize()

void C4GUI::Dialog::SetClientSize ( int32_t  iToWdt,
int32_t  iToHgt 
)
inherited

Definition at line 769 of file C4GuiDialogs.cpp.

References C4GUI::Dialog::GetMarginBottom(), C4GUI::Dialog::GetMarginLeft(), C4GUI::Dialog::GetMarginRight(), C4GUI::Dialog::GetMarginTop(), C4Rect::Hgt, C4GUI::Dialog::UpdatePos(), C4Rect::Wdt, C4Rect::x, and C4Rect::y.

Referenced by C4LeagueSignupDialog::C4LeagueSignupDialog(), C4GUI::MessageDialog::MessageDialog(), C4LeagueSignupDialog::ShowModal(), and C4DownloadDlg::~C4DownloadDlg().

770  {
771  // calc new bounds
772  iToWdt += GetMarginLeft()+GetMarginRight();
773  iToHgt += GetMarginTop()+GetMarginBottom();
774  rcBounds.x += (rcBounds.Wdt - iToWdt)/2;
775  rcBounds.y += (rcBounds.Hgt - iToHgt)/2;
776  rcBounds.Wdt = iToWdt; rcBounds.Hgt = iToHgt;
777  // reflect changes
778  UpdatePos();
779  }
int32_t Wdt
Definition: C4Rect.h:30
int32_t GetMarginTop() override
Definition: C4Gui.h:2140
int32_t y
Definition: C4Rect.h:30
int32_t GetMarginBottom() override
Definition: C4Gui.h:2143
int32_t GetMarginLeft() override
Definition: C4Gui.h:2141
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
void UpdatePos() override
int32_t Hgt
Definition: C4Rect.h:30
int32_t GetMarginRight() override
Definition: C4Gui.h:2142
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetContextHandler()

void C4GUI::Element::SetContextHandler ( ContextHandler pNewHd)
inlineinherited

Definition at line 465 of file C4Gui.h.

References C4GUI::ContextHandler::Ref().

Referenced by C4StartupMainDlg::C4StartupMainDlg(), C4GUI::ContextButton::ContextButton(), and C4GUI::Edit::Edit().

466  {
468  if ((pContextHandler = pNewHd)) pNewHd->Ref();
469  }
ContextHandler * pContextHandler
Definition: C4Gui.h:381
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDelOnClose()

void C4GUI::Dialog::SetDelOnClose ( bool  fToVal = true)
inlineinherited

Definition at line 2190 of file C4Gui.h.

Referenced by C4ChatDlg::C4ChatDlg(), C4ChatInputDialog::C4ChatInputDialog(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4GUI::ConfirmationDialog::ConfirmationDialog(), C4GUI::InputDialog::InputDialog(), C4Network2::OpenSurrenderDialog(), C4Network2::OpenVoteDialog(), C4Network2::QueryClientPassword(), C4Game::ShowGameOverDlg(), and C4GUI::Screen::ShowRemoveDlg().

2190 { fDelOnClose=fToVal; } // dialog will delete itself when closed
bool fDelOnClose
Definition: C4Gui.h:2085
Here is the caller graph for this function:

◆ SetDragTarget()

void C4GUI::Element::SetDragTarget ( Window pToWindow)
inlineinherited

Definition at line 464 of file C4Gui.h.

Referenced by C4GUI::Dialog::SetTitle().

464 { pDragTarget = pToWindow; }
Window * pDragTarget
Definition: C4Gui.h:378
Here is the caller graph for this function:

◆ SetFocus()

void C4GUI::Dialog::SetFocus ( Control pCtrl,
bool  fByMouse 
)
inherited

Definition at line 563 of file C4GuiDialogs.cpp.

References C4GUI::Control::OnGetFocus(), C4GUI::Control::OnLooseFocus(), and C4GUI::Dialog::pActiveCtrl.

Referenced by C4GUI::Dialog::AdvanceFocus(), C4ChatDlg::C4ChatDlg(), C4GameOverDlg::C4GameOverDlg(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::Dialog::CharIn(), C4StartupScenSelDlg::DeselectAll(), C4StartupNetDlg::DoOK(), C4FileSelDlg::InitElements(), C4StartupScenSelDlg::KeyCheat2(), C4GUI::Tabular::KeyCloseTab(), C4GameLobby::MainDlg::MainDlg(), C4GUI::MessageDialog::MessageDialog(), C4GUI::Label::MouseInput(), C4GUI::Control::MouseInput(), C4StartupNetDlg::OnBtnRecord(), C4StartupScenSelDlg::OnButtonScenario(), C4ChatControl::OnConnectBtn(), C4GUI::RenameEdit::OnFinishInput(), C4GUI::Label::OnHotkey(), C4StartupMainDlg::OnShown(), C4StartupScenSelDlg::OpenFolder(), C4GUI::RenameEdit::RenameEdit(), C4GUI::InputDialog::SetCustomEdit(), C4GUI::Container::SetVisibility(), C4LeagueSignupDialog::UserClose(), and C4GameOverDlg::~C4GameOverDlg().

564  {
565  // no change?
566  if (pCtrl == pActiveCtrl) return;
567  // leave old focus
568  if (pActiveCtrl)
569  {
570  Control *pC = pActiveCtrl;
571  pActiveCtrl = nullptr;
572  pC->OnLooseFocus();
573  // if leaving the old focus set a new one, abort here because it looks like the control didn't want to lose focus
574  if (pActiveCtrl) return;
575  }
576  // set new
577  if ((pActiveCtrl = pCtrl)) pCtrl->OnGetFocus(fByMouse);
578  }
Control * pActiveCtrl
Definition: C4Gui.h:2080
virtual void OnLooseFocus()
Definition: C4Gui.h:1057
C4GameControl Control
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetFrameDeco()

void C4GUI::Dialog::SetFrameDeco ( FrameDecoration pNewDeco)
inlineinherited

Definition at line 2193 of file C4Gui.h.

References C4GUI::FrameDecoration::Deref(), and C4GUI::FrameDecoration::Ref().

2194  {
2195  if (pFrameDeco) pFrameDeco->Deref();
2196  if ((pFrameDeco = pNewDeco)) pNewDeco->Ref();
2197  UpdateOwnPos(); // margin may have changed; might need to reposition stuff
2198  }
FrameDecoration * pFrameDeco
Definition: C4Gui.h:2089
void UpdateOwnPos() override
Here is the call graph for this function:

◆ SetPos()

void C4GUI::Window::SetPos ( int32_t  iXPos,
int32_t  iYPos 
)
inlineinherited

Definition at line 860 of file C4Gui.h.

Referenced by C4ScoreboardDlg::DoPlacement(), C4Menu::InitLocation(), C4StartupPlrSelDlg::OnNewBtn(), C4StartupPlrSelDlg::OnPropertyBtn(), C4Menu::SetLocation(), C4GUI::Screen::ShowDialog(), and C4LeagueSignupDialog::ShowModal().

861  { rcBounds.x=iXPos; rcBounds.y=iYPos; UpdatePos(); }
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
virtual void UpdatePos()
Definition: C4Gui.cpp:193
Here is the caller graph for this function:

◆ SetSubscreen()

bool C4StartupOptionsDlg::SetSubscreen ( const char *  szToScreen)
overridevirtual

Reimplemented from C4StartupDlg.

Definition at line 1275 of file C4StartupOptionsDlg.cpp.

References C4GUI::ComboBox_FillCB::AddEntry(), C4DEFAULT_FONT_NAME, C4LanguageInfo::Code, Config, DefaultFonts, C4LanguageInfo::Fallback, C4Language::FindInfo(), StdStrBuf::Format(), FormatString(), Game, C4Config::General, StdStrBuf::getData(), C4Language::GetInfo(), C4Language::GetInfoCount(), C4ConfigGeneral::GetLanguageSequence(), C4LanguageInfo::Info, C4ConfigGeneral::Language, C4ConfigGeneral::LanguageEx, Languages, C4Language::LoadLanguage(), LoadResStr(), C4LanguageInfo::Name, RecreateDialog(), C4ConfigGeneral::RXFontName, C4ConfigGeneral::RXFontSize, SAppend(), SAppendChar(), SCopy(), C4GUI::Tabular::SelectSheet(), SEqualNoCase(), C4GUI::Label::SetText(), C4GUI::ComboBox::SetText(), SLen(), SSearch(), and C4Game::UpdateLanguage().

Referenced by OnBackBtn().

1276 {
1277  // go to specified property sheet
1278  // option sheets do not have a good identifier associated to them - just lookup from a static array
1279  const char *page_names[] = { "general", "graphics", "sound", "controls", "network", nullptr };
1280  int32_t i = 0;
1281  while (page_names[i])
1282  {
1283  if (SEqualNoCase(szToScreen, page_names[i])) break;
1284  ++i;
1285  }
1286  // page name does not match?
1287  if (!page_names[i]) return false;
1288  // page name OK; switch it
1289  pOptionsTabular->SelectSheet(i, false);
1290  return true;
1291 }
bool SEqualNoCase(const char *szStr1, const char *szStr2, int iLen)
Definition: Standard.cpp:207
void SelectSheet(int32_t iIndex, bool fByUser)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetTitle() [1/2]

void C4GUI::Dialog::SetTitle ( const char *  szToTitle,
bool  fShowCloseButton = true 
)
inherited

Definition at line 336 of file C4GuiDialogs.cpp.

References C4GUI::Container::AddElement(), ALeft, Application, C4GUI_CaptionFontClr, C4GUI_TitleAutoScrollTime, StdStrBuf::Copy(), C4GUI::Element::GetBounds(), C4GUI::WoodenLabel::GetDefaultHeight(), C4GUI::Dialog::GetMarginLeft(), C4GUI::Label::GetText(), C4GUI::Element::GetToprightCornerRect(), GraphicsResource, C4GUI::Ico_Close, C4Application::isEditor, C4GUI::Dialog::IsViewportDialog(), LoadResStr(), C4GUI::Dialog::OnUserClose(), C4GUI::Dialog::pCloseBtn, C4GUI::Dialog::pTitle, C4GUI::Dialog::pWindow, SEqual(), C4GUI::WoodenLabel::SetAutoScrollTime(), C4GUI::Element::SetDragTarget(), C4GUI::WoodenLabel::SetRightIndent(), C4GUI::Label::SetText(), C4Window::SetTitle(), C4GUI::Element::SetToolTip(), C4GraphicsResource::TextFont, C4GUI::Dialog::TitleString, and C4Rect::Wdt.

Referenced by C4FileSelDlg::CreateListItem(), C4GUI::Dialog::Dialog(), C4Menu::DoInitRefSym(), C4ChatDlg::OnChatTitleChange(), C4Menu::SetSelection(), C4ScoreboardDlg::Update(), and C4Menu::UpdateElementPositions().

337  {
338  // always keep local copy of title
339  TitleString.Copy(szTitle);
340  // console mode dialogs: Use window bar
342  {
343  if (pWindow) pWindow->SetTitle(szTitle ? szTitle : "");
344  return;
345  }
346  // set new
347  if (szTitle && *szTitle)
348  {
350  if (pTitle)
351  {
352  pTitle->GetBounds() = C4Rect(-GetMarginLeft(), -iTextHgt, rcBounds.Wdt, iTextHgt);
353  // noupdate if title is same - this is necessary to prevent scrolling reset when refilling internal menus
354  if (SEqual(pTitle->GetText(), szTitle)) return;
355  pTitle->SetText(szTitle);
356  }
357  else
358  AddElement(pTitle = new WoodenLabel(szTitle, C4Rect(-GetMarginLeft(), -iTextHgt, rcBounds.Wdt, iTextHgt), C4GUI_CaptionFontClr, &::GraphicsResource.TextFont, ALeft, false));
359  pTitle->SetToolTip(szTitle);
360  pTitle->SetDragTarget(this);
362  if (fShowCloseButton)
363  {
364  pTitle->SetRightIndent(20); // for close button
365  if (!pCloseBtn)
366  {
367  AddElement(pCloseBtn = new CallbackButton<Dialog, IconButton>(Ico_Close, pTitle->GetToprightCornerRect(16,16,4,4,0), '\0', &Dialog::OnUserClose));
368  pCloseBtn->SetToolTip(LoadResStr("IDS_MNU_CLOSE"));
369  }
370  else
371  pCloseBtn->GetBounds() = pTitle->GetToprightCornerRect(16,16,4,4,0);
372  }
373  }
374  else
375  {
376  if (pTitle) { delete pTitle; pTitle=nullptr; }
377  if (pCloseBtn) { delete pCloseBtn; pCloseBtn = nullptr; }
378  }
379  }
#define C4GUI_CaptionFontClr
Definition: C4Gui.h:37
#define C4GUI_TitleAutoScrollTime
Definition: C4Gui.h:146
void SetToolTip(const char *szNewTooltip, bool is_immediate=false)
Definition: C4Gui.cpp:409
void SetTitle(const char *Title)
Definition: C4AppT.cpp:114
Definition: C4Rect.h:27
DialogWindow * pWindow
Definition: C4Gui.h:2088
void AddElement(Element *pChild)
bool IsViewportDialog()
Definition: C4Gui.h:2172
CallbackButton< Dialog, C4GUI::IconButton > * pCloseBtn
Definition: C4Gui.h:2079
C4GraphicsResource GraphicsResource
bool SEqual(const char *szStr1, const char *szStr2)
Definition: Standard.h:93
const char * LoadResStr(const char *id)
Definition: C4Language.h:83
int32_t Wdt
Definition: C4Rect.h:30
StdStrBuf TitleString
Definition: C4Gui.h:2086
static int32_t GetDefaultHeight(CStdFont *pUseFont=nullptr)
int32_t GetMarginLeft() override
Definition: C4Gui.h:2141
C4Rect GetToprightCornerRect(int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
Definition: C4Gui.cpp:399
C4Rect rcBounds
Definition: C4Gui.h:385
void OnUserClose(C4GUI::Control *btn)
Definition: C4Gui.h:2204
C4Rect & GetBounds()
Definition: C4Gui.h:445
void SetDragTarget(Window *pToWindow)
Definition: C4Gui.h:464
const char * GetText()
Definition: C4Gui.h:503
WoodenLabel * pTitle
Definition: C4Gui.h:2078
void SetAutoScrollTime(uint32_t tDelay)
Definition: C4Gui.h:537
const int ALeft
Definition: C4Surface.h:41
void SetRightIndent(int32_t iNewIndent)
Definition: C4Gui.h:540
void Copy()
Definition: StdBuf.h:467
C4Application Application
Definition: C4Globals.cpp:44
void SetText(const char *szToText, bool fAllowHotkey=true)
Definition: C4GuiLabels.cpp:74
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetTitle() [2/2]

void C4GUI::FullscreenDialog::SetTitle ( const char *  szToTitle)
inherited

Definition at line 806 of file C4GuiDialogs.cpp.

References ACenter, C4GUI::Container::AddElement(), ALeft, C4GUI_CaptionFontClr, C4GUI_FullscreenCaptionFontClr, C4UpperBoardHeight, C4GUI::Window::GetClientRect(), CStdFont::GetLineHeight(), C4GUI::FullscreenDialog::GetMarginTop(), GraphicsResource, C4GUI::FullscreenDialog::HasUpperBoard(), C4GUI::FullscreenDialog::pFullscreenTitle, C4GUI::Element::SetToolTip(), and C4GraphicsResource::TitleFont.

Referenced by C4StartupPlrSelDlg::DrawElement(), and C4GUI::FullscreenDialog::FullscreenDialog().

807  {
808  if (pFullscreenTitle) { delete pFullscreenTitle; pFullscreenTitle=nullptr; }
809  // change title text; creates or removes title bar if necessary
810  if (szTitle && *szTitle)
811  {
812  // not using dlg label, which is a wooden label
813  if (HasUpperBoard())
815  else
816  // non-woodbar: Title is centered and in big font
818  AddElement(pFullscreenTitle);
819  pFullscreenTitle->SetToolTip(szTitle);
820  }
821  }
#define C4GUI_CaptionFontClr
Definition: C4Gui.h:37
#define C4GUI_FullscreenCaptionFontClr
Definition: C4Gui.h:161
Label * pFullscreenTitle
Definition: C4Gui.h:2223
void AddElement(Element *pChild)
const int C4UpperBoardHeight
Definition: C4Constants.h:59
C4GraphicsResource GraphicsResource
virtual bool HasUpperBoard()
Definition: C4Gui.h:2241
const int ACenter
Definition: C4Surface.h:41
int32_t GetMarginTop() override
Definition: C4Gui.h:2246
C4Rect & GetClientRect() override
Definition: C4Gui.h:864
const int ALeft
Definition: C4Surface.h:41
int GetLineHeight() const
Definition: C4FontLoader.h:125
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetToolTip()

void C4GUI::Element::SetToolTip ( const char *  szNewTooltip,
bool  is_immediate = false 
)
inherited

Definition at line 409 of file C4Gui.cpp.

Referenced by C4GUI::ContextMenu::AddItem(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4MenuItem::C4MenuItem(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4GUI::InfoDialog::CreateSubComponents(), C4StartupScenSelDlg::DoRefresh(), C4StartupPlrSelDlg::DrawElement(), C4GUI::FullscreenDialog::FullscreenDialog(), C4GUI::IconButton::IconButton(), C4GUI::InputDialog::InputDialog(), C4GameLobby::MainDlg::MainDlg(), C4StartupScenSelDlg::OnClosed(), C4GUI::ProgressDialog::ProgressDialog(), C4StartupScenSelDlg::ScenListItem::ScenListItem(), C4GUI::InputDialog::SetCustomEdit(), C4StartupPlrSelDlg::SetSelection(), C4GUI::Dialog::SetTitle(), C4GUI::FullscreenDialog::SetTitle(), C4StartupNetListEntry::SetVisibility(), C4ChatControl::ChatSheet::NickItem::SortFunc(), C4ChatControl::ChatSheet::NickItem::Update(), C4StartupNetListEntry::UpdateCollapsed(), C4GameLobby::MainDlg::UpdateRightTab(), C4Network2ClientDlg::UpdateText(), and C4DownloadDlg::~C4DownloadDlg().

410  {
411  // store tooltip
412  if (szNewTooltip) ToolTip.Copy(szNewTooltip); else ToolTip.Clear();
413  // store immediate flag
414  is_immediate_tooltip = is_immediate;
415  }
void Clear()
Definition: StdBuf.h:466
void Copy()
Definition: StdBuf.h:467
Here is the caller graph for this function:

◆ SetVisibility()

void C4GUI::Container::SetVisibility ( bool  fToValue)
overridevirtualinherited

Reimplemented from C4GUI::Element.

Reimplemented in C4StartupNetListEntry.

Definition at line 247 of file C4GuiContainers.cpp.

References C4GUI::Element::GetDlg(), C4GUI::Dialog::GetFocus(), C4GUI::Container::IsParentOf(), C4GUI::Dialog::SetFocus(), and C4GUI::Element::SetVisibility().

Referenced by C4GUI::Tabular::AddCustomSheet(), C4LeagueSignupDialog::C4LeagueSignupDialog(), C4Menu::C4Menu(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4Menu::Draw(), C4StartupPlrSelDlg::DrawElement(), C4Menu::InitLocation(), C4StartupNetDlg::OnBtnRecord(), C4StartupScenSelDlg::OnClosed(), C4StartupNetListEntry::SetVisibility(), C4LeagueSignupDialog::ShowModal(), and C4GameOverDlg::~C4GameOverDlg().

248  {
249  // inherited
250  Element::SetVisibility(fToValue);
251  // remove focus from contained elements
252  if (!fToValue)
253  {
254  Dialog *pDlg = GetDlg();
255  if (pDlg)
256  {
257  Control *pFocus = pDlg->GetFocus();
258  if (pFocus)
259  {
260  if (IsParentOf(pFocus))
261  {
262  pDlg->SetFocus(nullptr, false);
263  }
264  }
265  }
266  }
267  }
bool IsParentOf(Element *pEl) override
virtual void SetVisibility(bool fToValue)
Definition: C4Gui.cpp:207
C4GameControl Control
virtual class Dialog * GetDlg()
Definition: C4Gui.cpp:288
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Show()

bool C4GUI::Dialog::Show ( Screen pOnScreen,
bool  fCB 
)
inherited

Definition at line 614 of file C4GuiDialogs.cpp.

References Application, C4GUI::Dialog::CreateConsoleWindow(), C4GUI::Dialog::fShow, C4GUI::Element::fVisible, C4GUI::Screen::GetScreenS(), C4Application::isEditor, C4GUI::Dialog::IsViewportDialog(), C4GUI::Dialog::OnShown(), and C4GUI::Screen::ShowDialog().

Referenced by C4Network2::FinalInit(), C4Network2::OpenSurrenderDialog(), C4Network2::OpenVoteDialog(), C4Network2::RetrieveRes(), C4ChatDlg::ShowChat(), C4Game::ShowGameOverDlg(), C4DownloadDlg::ShowModal(), C4GUI::Screen::ShowModalDlg(), C4GUI::Screen::ShowProgressDlg(), C4GUI::Screen::ShowRemoveDlg(), and C4Startup::SwitchDialog().

615  {
616  // already shown?
617  if (fShow) return false;
618  // default screen
619  if (!pOnScreen) if (!(pOnScreen = Screen::GetScreenS())) return false;
620  // show there
621  pOnScreen->ShowDialog(this, false);
622  fVisible = true;
623  // developer mode: Create window
625  if (!CreateConsoleWindow()) return false;
626  // CB
627  if (fCB) OnShown();
628  return true;
629  }
bool fShow
Definition: C4Gui.h:2081
virtual void OnShown()
Definition: C4Gui.h:2208
static Screen * GetScreenS()
Definition: C4Gui.h:2626
bool IsViewportDialog()
Definition: C4Gui.h:2172
bool CreateConsoleWindow()
bool fVisible
Definition: C4Gui.h:383
C4Application Application
Definition: C4Globals.cpp:44
Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartDragging()

void C4GUI::Element::StartDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Definition at line 259 of file C4Gui.cpp.

References C4GUI::CMouse::pDragElement.

Referenced by C4MenuItem::MouseInput().

260  {
261  // set flag
262  fDragging = true;
263  // set drag start pos
264  iDragX = iX; iDragY = iY;
265  // mark drag in mouse
266  rMouse.pDragElement = this;
267  }
int32_t iDragY
Definition: C4Gui.h:379
bool fDragging
Definition: C4Gui.h:380
int32_t iDragX
Definition: C4Gui.h:379
Here is the caller graph for this function:

◆ StopDragging()

void C4GUI::Element::StopDragging ( CMouse rMouse,
int32_t  iX,
int32_t  iY,
DWORD  dwKeyParam 
)
virtualinherited

Definition at line 282 of file C4Gui.cpp.

Referenced by C4GUI::Screen::MouseInput(), and C4GUI::CMouse::ReleaseElements().

283  {
284  // move element pos
285  DoDragging(rMouse, iX, iY, dwKeyParam);
286  }
virtual void DoDragging(CMouse &rMouse, int32_t iX, int32_t iY, DWORD dwKeyParam)
Definition: C4Gui.cpp:269
Here is the caller graph for this function:

◆ UpdateOwnPos()

void C4GUI::FullscreenDialog::UpdateOwnPos ( )
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Window.

Definition at line 830 of file C4GuiDialogs.cpp.

References C4GUI::Window::UpdateOwnPos().

831  {
832  // inherited to update client rect
834  }
void UpdateOwnPos() override
Here is the call graph for this function:

◆ UpdatePos()

void C4GUI::Dialog::UpdatePos ( )
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 416 of file C4GuiDialogs.cpp.

References C4GUI::Dialog::pWindow, C4GUI::Element::UpdatePos(), C4Rect::x, and C4Rect::y.

Referenced by C4GUI::Dialog::SetClientSize().

417  {
418  // Dialogs with their own windows can only be at 0/0
419  if (pWindow)
420  {
421  rcBounds.x = 0;
422  rcBounds.y = 0;
423  }
425  }
DialogWindow * pWindow
Definition: C4Gui.h:2088
int32_t y
Definition: C4Rect.h:30
C4Rect rcBounds
Definition: C4Gui.h:385
int32_t x
Definition: C4Rect.h:30
virtual void UpdatePos()
Definition: C4Gui.cpp:193
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateSize()

void C4GUI::Dialog::UpdateSize ( )
overrideprotectedvirtualinherited

Reimplemented from C4GUI::Element.

Definition at line 398 of file C4GuiDialogs.cpp.

References C4GUI::WoodenLabel::GetDefaultHeight(), C4GUI::Dialog::GetMarginLeft(), C4GUI::Element::GetToprightCornerRect(), GraphicsResource, C4Rect::Hgt, C4GUI::Dialog::pCloseBtn, C4GUI::Dialog::pTitle, C4GUI::Dialog::pWindow, C4GUI::Element::SetBounds(), C4Window::SetSize(), C4GraphicsResource::TextFont, C4GUI::Element::UpdateSize(), and C4Rect::Wdt.

Referenced by C4StartupAboutDlg::C4StartupAboutDlg(), C4StartupNetDlg::C4StartupNetDlg(), C4StartupOptionsDlg(), C4StartupPlrPropertiesDlg::C4StartupPlrPropertiesDlg(), C4StartupPlrSelDlg::C4StartupPlrSelDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), and C4FileSelDlg::InitElements().

399  {
400  // update title bar position
401  if (pTitle)
402  {
404  pTitle->SetBounds(C4Rect(-GetMarginLeft(), -iTextHgt, rcBounds.Wdt, iTextHgt));
405  if (pCloseBtn) pCloseBtn->SetBounds(pTitle->GetToprightCornerRect(16,16,4,4,0));
406  }
407  // inherited
409  // update assigned window
410  if (pWindow)
411  {
413  }
414  }
Definition: C4Rect.h:27
DialogWindow * pWindow
Definition: C4Gui.h:2088
virtual void UpdateSize()
Definition: C4Gui.cpp:185
CallbackButton< Dialog, C4GUI::IconButton > * pCloseBtn
Definition: C4Gui.h:2079
C4GraphicsResource GraphicsResource
int32_t Wdt
Definition: C4Rect.h:30
void SetSize(unsigned int cx, unsigned int cy)
Definition: C4AppT.cpp:113
static int32_t GetDefaultHeight(CStdFont *pUseFont=nullptr)
int32_t GetMarginLeft() override
Definition: C4Gui.h:2141
C4Rect GetToprightCornerRect(int32_t iWidth=16, int32_t iHeight=16, int32_t iHIndent=4, int32_t iVIndent=4, int32_t iIndexX=0)
Definition: C4Gui.cpp:399
C4Rect rcBounds
Definition: C4Gui.h:385
WoodenLabel * pTitle
Definition: C4Gui.h:2078
void SetBounds(const C4Rect &rcNewBound)
Definition: C4Gui.h:446
int32_t Hgt
Definition: C4Rect.h:30
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UserClose()

void C4StartupOptionsDlg::UserClose ( bool  fOK)
inlineoverrideprotectedvirtual

Reimplemented from C4GUI::Dialog.

Definition at line 42 of file C4StartupOptionsDlg.h.

References SaveConfig().

43  { if (fOK) SaveConfig(false, true); }
bool fOK
Definition: C4Gui.h:2082
bool SaveConfig(bool fForce, bool fKeepOpen)
Here is the call graph for this function:

Member Data Documentation

◆ eFade

Fade C4GUI::Dialog::eFade
protectedinherited

◆ fDelOnClose

bool C4GUI::Dialog::fDelOnClose
protectedinherited

Definition at line 2085 of file C4Gui.h.

Referenced by C4GUI::Dialog::OnClosed(), and C4GUI::Dialog::~Dialog().

◆ fDragging

bool C4GUI::Element::fDragging {false}
protectedinherited

Definition at line 380 of file C4Gui.h.

◆ fOK

◆ fShow

◆ fViewportDlg

bool C4GUI::Dialog::fViewportDlg
protectedinherited

Definition at line 2087 of file C4Gui.h.

◆ fVisible

◆ iDlgMarginX

int32_t C4GUI::FullscreenDialog::iDlgMarginX
protectedinherited

Definition at line 2224 of file C4Gui.h.

Referenced by C4GUI::FullscreenDialog::FullscreenDialog().

◆ iDlgMarginY

int32_t C4GUI::FullscreenDialog::iDlgMarginY
protectedinherited

Definition at line 2224 of file C4Gui.h.

Referenced by C4GUI::FullscreenDialog::FullscreenDialog().

◆ iDragX

int32_t C4GUI::Element::iDragX
protectedinherited

Definition at line 379 of file C4Gui.h.

◆ iDragY

int32_t C4GUI::Element::iDragY
protectedinherited

Definition at line 379 of file C4Gui.h.

◆ iFade

int32_t C4GUI::Dialog::iFade
protectedinherited

◆ pActiveCtrl

Control* C4GUI::Dialog::pActiveCtrl
protectedinherited

◆ pCloseBtn

CallbackButton<Dialog, C4GUI::IconButton>* C4GUI::Dialog::pCloseBtn
protectedinherited

Definition at line 2079 of file C4Gui.h.

Referenced by C4GUI::Dialog::SetTitle(), and C4GUI::Dialog::UpdateSize().

◆ pContextHandler

ContextHandler* C4GUI::Element::pContextHandler {nullptr}
protectedinherited

Definition at line 381 of file C4Gui.h.

◆ pDragTarget

Window* C4GUI::Element::pDragTarget {nullptr}
protectedinherited

Definition at line 378 of file C4Gui.h.

◆ pFirst

◆ pFrameDeco

FrameDecoration* C4GUI::Dialog::pFrameDeco
protectedinherited

Definition at line 2089 of file C4Gui.h.

Referenced by C4GUI::Dialog::DrawElement(), and C4GUI::Dialog::~Dialog().

◆ pFullscreenTitle

Label* C4GUI::FullscreenDialog::pFullscreenTitle
protectedinherited

Definition at line 2223 of file C4Gui.h.

Referenced by C4GUI::FullscreenDialog::SetTitle().

◆ pLast

◆ pNext

◆ pParent

◆ pPrev

◆ pSubTitle

Label * C4GUI::FullscreenDialog::pSubTitle
protectedinherited

◆ pTitle

WoodenLabel* C4GUI::Dialog::pTitle
protectedinherited

◆ pWindow

◆ rcBounds

C4Rect C4GUI::Element::rcBounds
protectedinherited

Definition at line 385 of file C4Gui.h.

Referenced by C4Chart::C4Chart(), C4ScriptGuiWindow::C4ScriptGuiWindow(), C4StartupMainDlg::C4StartupMainDlg(), C4StartupScenSelDlg::C4StartupScenSelDlg(), C4ScriptGuiWindow::Close(), C4GUI::ContextMenu::ContextMenu(), C4GUI::ContextMenu::CtxMouseInput(), C4FileSelDlg::DefaultListItem::DefaultListItem(), C4ScoreboardDlg::DoPlacement(), C4ScriptGuiWindow::Draw(), C4ScriptGuiWindow::DrawChildren(), C4StartupMainDlg::DrawElement(), C4MenuItem::DrawElement(), C4StartupNetListEntry::DrawElement(), C4Chart::DrawElement(), C4StartupPlrPropertiesDlg::DrawElement(), C4Menu::DrawElement(), C4GUI::Label::DrawElement(), C4GUI::WoodenLabel::DrawElement(), C4GUI::MultilineLabel::DrawElement(), C4GUI::ProgressBar::DrawElement(), C4GUI::HorizontalLine::DrawElement(), C4GUI::Picture::DrawElement(), C4GUI::OverlayPicture::DrawElement(), C4GUI::ScrollBar::DrawElement(), C4GUI::GroupBox::DrawElement(), C4GUI::PaintBox::DrawElement(), C4GUI::Button::DrawElement(), C4GUI::IconButton::DrawElement(), C4GUI::ArrowButton::DrawElement(), C4GUI::FacetButton::DrawElement(), C4GUI::Edit::DrawElement(), C4GUI::CheckBox::DrawElement(), C4GUI::ListBox::DrawElement(), C4GUI::Tabular::DrawElement(), C4GUI::TextWindow::DrawElement(), C4GUI::ContextMenu::Entry::DrawElement(), C4GUI::ContextMenu::DrawElement(), C4GUI::ContextButton::DrawElement(), C4GUI::ComboBox::DrawElement(), C4GUI::ContextMenu::Entry::Entry(), C4ScriptGuiWindow::GetClippingRect(), C4PlayerInfoListBox::GetCustomFont(), C4StartupPlrSelDlg::GetMarginTop(), C4StartupScenSelDlg::GetMarginTop(), C4Menu::InitLocation(), C4Menu::InitSize(), C4GUI::Edit::InsertText(), C4GUI::Tabular::KeyCloseTab(), C4GUI::Label::Label(), C4ScriptGuiWindow::MouseInput(), C4GUI::Window::MouseInput(), C4GUI::CheckBox::MouseInput(), C4GUI::Tabular::MouseInput(), C4GUI::ContextMenu::MouseInput(), C4GUI::Screen::MouseInput(), C4GUI::ContextMenu::MouseLeaveEntry(), C4GUI::MultilineLabel::MultilineLabel(), C4ChatControl::ChatSheet::NickItem::NickItem(), OnBackBtn(), C4ScriptGuiWindow::OnMouseIn(), C4GUI::ContextMenu::Open(), C4GUI::Picture::Picture(), C4ScriptGuiWindow::ProcessMouseInput(), C4GUI::Screen::Render(), C4GUI::ScrollBar::ScrollBar(), C4DefinitionSelDlg::SelectDefinitions(), C4GUI::ComboBox::SetComboCB(), C4GUI::Tabular::SetGfx(), C4GUI::Label::SetText(), C4GUI::Label::SetX0(), C4ScoreboardDlg::Update(), C4GUI::ScrollWindow::Update(), C4StartupNetListEntry::UpdateCollapsed(), C4GUI::MultilineLabel::UpdateHeight(), C4ScriptGuiWindow::UpdateLayout(), C4ScriptGuiWindow::UpdateLayoutGrid(), C4ScriptGuiWindow::UpdateLayoutTightGrid(), C4ScriptGuiWindow::UpdateLayoutVertical(), C4GUI::Label::UpdateOwnPos(), C4GUI::Window::UpdateOwnPos(), C4GUI::MultilineLabel::UpdateSize(), and C4GUI::ContextButton::~ContextButton().

◆ rcClientRect

◆ TitleString

StdStrBuf C4GUI::Dialog::TitleString
protectedinherited

Definition at line 2086 of file C4Gui.h.

Referenced by C4GUI::Dialog::SetTitle().


The documentation for this class was generated from the following files: