//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef BUILDMODEDIALOG_H #define BUILDMODEDIALOG_H #ifdef _WIN32 #pragma once #endif #include struct PanelItem_t; namespace vgui { //----------------------------------------------------------------------------- // Purpose: Dialog for use in build mode editing //----------------------------------------------------------------------------- class BuildModeDialog : public Frame { DECLARE_CLASS_SIMPLE(BuildModeDialog, Frame); public: BuildModeDialog(BuildGroup *buildGroup); ~BuildModeDialog(); // Set the current control to edit MESSAGE_FUNC_PTR(SetActiveControl, "SetActiveControl", panelPtr); // Update the current control with the current resource settings. MESSAGE_FUNC_PTR(UpdateControlData, "UpdateControlData", panel); // Store the current settings of all panels in the build group. virtual KeyValues *StoreSettings(); // Store the current settings of the current panel MESSAGE_FUNC(StoreUndoSettings, "StoreUndo"); /* CUSTOM MESSAGE HANDLING "SetActiveControl" input: "PanelPtr" - panel to set active control to edit to */ MESSAGE_FUNC(OnShowNewControlMenu, "ShowNewControlMenu"); protected: virtual void PerformLayout(); virtual void OnClose(); virtual void OnCommand(const char *command); virtual void ApplySchemeSettings(vgui::IScheme *pScheme); virtual bool IsBuildGroupEnabled(); private: void CreateControls(); void OnKeyCodeTyped(KeyCode code); MESSAGE_FUNC(ApplyDataToControls, "ApplyDataToControls"); MESSAGE_FUNC_PTR(OnTextChanged, "TextChanged", panel); MESSAGE_FUNC(OnDeletePanel, "DeletePanel"); void ExitBuildMode(); Panel *OnNewControl(const char *name, int x = 0, int y = 0); MESSAGE_FUNC(DoUndo, "Undo"); MESSAGE_FUNC(DoCopy, "Copy"); MESSAGE_FUNC(DoPaste, "Paste"); MESSAGE_FUNC(EnableSaveButton, "EnableSaveButton"); void RevertToSaved(); void ShowHelp(); MESSAGE_FUNC(ShutdownBuildMode, "Close"); MESSAGE_FUNC(OnPanelMoved, "PanelMoved"); MESSAGE_FUNC(OnTextKillFocus, "TextKillFocus"); MESSAGE_FUNC(OnReloadLocalization, "ReloadLocalization"); MESSAGE_FUNC_CHARPTR(OnCreateNewControl, "CreateNewControl", text); MESSAGE_FUNC_CHARPTR(OnSetClipboardText, "SetClipboardText", text); MESSAGE_FUNC_INT(OnChangeChild, "OnChangeChild", direction); Panel *m_pCurrentPanel; BuildGroup *m_pBuildGroup; Label *m_pStatusLabel; ComboBox *m_pFileSelectionCombo; Divider *m_pDivider; class PanelList; PanelList *m_pPanelList; Button *m_pSaveButton; Button *m_pApplyButton; Button *m_pExitButton; Button *m_pDeleteButton; Button *m_pReloadLocalization; MenuButton *m_pVarsButton; bool _autoUpdate; ComboBox *m_pAddNewControlCombo; // combo box for adding new controls KeyValues *_undoSettings; // settings for the Undo command KeyValues *_copySettings; // settings for the Copy/Paste command char _copyClassName[255]; int m_nClick[2]; void RemoveAllControls(void); void UpdateEditControl(PanelItem_t &panelItem, const char *datstring); enum { TYPE_STRING, TYPE_INTEGER, TYPE_COLOR, TYPE_ALIGNMENT, TYPE_AUTORESIZE, TYPE_CORNER, TYPE_LOCALIZEDSTRING, }; vgui::DHANDLE m_hContextMenu; ComboBox *m_pEditableParents; ComboBox *m_pEditableChildren; Button *m_pNextChild; Button *m_pPrevChild; friend class PanelList; }; } // namespace vgui #endif // BUILDMODEDIALOG_H