source-engine/public/vgui_controls/BuildModeDialog.h

137 lines
3.5 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef BUILDMODEDIALOG_H
#define BUILDMODEDIALOG_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui_controls/Frame.h>
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