//========= 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< Menu > m_hContextMenu; ComboBox *m_pEditableParents; ComboBox *m_pEditableChildren; Button *m_pNextChild; Button *m_pPrevChild; friend class PanelList; }; } // namespace vgui #endif // BUILDMODEDIALOG_H