aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/vgui_controls/perforcefilelistframe.h
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/vgui_controls/perforcefilelistframe.h
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/vgui_controls/perforcefilelistframe.h')
-rw-r--r--mp/src/public/vgui_controls/perforcefilelistframe.h151
1 files changed, 151 insertions, 0 deletions
diff --git a/mp/src/public/vgui_controls/perforcefilelistframe.h b/mp/src/public/vgui_controls/perforcefilelistframe.h
new file mode 100644
index 00000000..4b4dca29
--- /dev/null
+++ b/mp/src/public/vgui_controls/perforcefilelistframe.h
@@ -0,0 +1,151 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// List of perforce files and operations
+//
+//=============================================================================
+
+#ifndef PERFORCEFILELISTFRAME_H
+#define PERFORCEFILELISTFRAME_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "vgui_controls/Frame.h"
+#include "tier1/utlvector.h"
+#include "tier1/utlstring.h"
+#include "p4lib/ip4.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+
+
+//-----------------------------------------------------------------------------
+// Enumeration of operation dialog ids
+//-----------------------------------------------------------------------------
+enum
+{
+ OPERATION_DIALOG_ID_PERFORCE = 0,
+
+ OPERATION_DIALOG_STANDARD_ID_COUNT,
+ OPERATION_DIALOG_STANDARD_ID_MAX = OPERATION_DIALOG_STANDARD_ID_COUNT - 1,
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Modal dialog for a list of files + an operation to perform
+//-----------------------------------------------------------------------------
+class COperationFileListFrame : public vgui::Frame
+{
+ DECLARE_CLASS_SIMPLE( COperationFileListFrame, vgui::Frame );
+
+public:
+ // NOTE: The dialog ID is used to allow dialogs to have different configurations saved
+ COperationFileListFrame( vgui::Panel *pParent, const char *pTitle, const char *pColumnHeader, bool bShowDescription, bool bShowOkOnly = false, int nDialogID = 1 );
+ virtual ~COperationFileListFrame();
+
+ // Command handler
+ virtual void OnCommand( const char *pCommand );
+ virtual void PerformLayout();
+
+ // Adds files to the frame
+ void ClearAllOperations();
+ void AddOperation( const char *pOperation, const char *pFileName );
+ void AddOperation( const char *pOperation, const char *pFileName, const Color& clr );
+
+ // Resizes the operation column to fit the operation text
+ void ResizeOperationColumnToContents();
+
+ // Sets the column header for the 'operation' column
+ void SetOperationColumnHeaderText( const char *pText );
+
+ // Shows the panel
+ void DoModal( KeyValues *pContextKeyValues = NULL, const char *pMessage = NULL );
+
+ // Retrieves the number of files, the file names, and operations
+ int GetOperationCount();
+ const char *GetFileName( int i );
+ const char *GetOperation( int i );
+
+ // Retreives the description (only if it was shown)
+ const char *GetDescription();
+
+private:
+ virtual bool PerformOperation() { return true; }
+ const char *CompletionMessage();
+ void CleanUpMessage();
+
+ vgui::ListPanel *m_pFileBrowser;
+ vgui::Splitter *m_pSplitter;
+ vgui::TextEntry *m_pDescription;
+ vgui::Button *m_pYesButton;
+ vgui::Button *m_pNoButton;
+ KeyValues *m_pContextKeyValues;
+ CUtlString m_MessageName;
+ char *m_pText;
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Modal dialog for picker
+//-----------------------------------------------------------------------------
+enum PerforceAction_t
+{
+ PERFORCE_ACTION_NONE = -1,
+ PERFORCE_ACTION_FILE_ADD = 0,
+ PERFORCE_ACTION_FILE_EDIT,
+ PERFORCE_ACTION_FILE_DELETE,
+ PERFORCE_ACTION_FILE_REVERT,
+ PERFORCE_ACTION_FILE_SUBMIT,
+};
+
+
+//-----------------------------------------------------------------------------
+// Purpose: Modal dialog for picker
+//-----------------------------------------------------------------------------
+class CPerforceFileListFrame : public COperationFileListFrame
+{
+ DECLARE_CLASS_SIMPLE( CPerforceFileListFrame, COperationFileListFrame );
+
+public:
+ CPerforceFileListFrame( vgui::Panel *pParent, const char *pTitle, const char *pColumnHeader, PerforceAction_t action );
+ virtual ~CPerforceFileListFrame();
+
+ // Adds files to the frame
+ void ClearAllFiles();
+ void AddFile( const char *pFullPath );
+ void AddFile( const char *pRelativePath, const char *pPathId );
+
+ void DoModal( KeyValues *pContextKeys = NULL, const char *pMessage = NULL );
+
+private:
+ virtual bool PerformOperation();
+
+ // Adds files for open, submit
+ void AddFileForOpen( const char *pFullPath );
+ void AddFileForSubmit( const char *pFullPath, P4FileState_t state );
+
+ // Does the perforce operation
+ void PerformPerforceAction( );
+
+ PerforceAction_t m_Action;
+ CUtlVector< P4File_t > m_OpenedFiles;
+ CUtlString m_LastOpenedFilePathId;
+};
+
+
+//-----------------------------------------------------------------------------
+// Show the perforce query dialog
+// The specified keyvalues message will be sent either
+// 1) If you open the file for add/edit
+// 2) If you indicate to not add a file for add but don't hit cancel
+// If a specific perforce action is specified, then the dialog will only
+// be displayed if that action is appropriate
+//-----------------------------------------------------------------------------
+void ShowPerforceQuery( vgui::Panel *pParent, const char *pFileName, vgui::Panel *pActionSignalTarget, KeyValues *pKeyValues, PerforceAction_t actionFilter = PERFORCE_ACTION_NONE );
+
+
+#endif // PERFORCEFILELISTFRAME_H
+