summaryrefslogtreecommitdiff
path: root/public/dme_controls/AttributeFilePickerPanel.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /public/dme_controls/AttributeFilePickerPanel.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'public/dme_controls/AttributeFilePickerPanel.h')
-rw-r--r--public/dme_controls/AttributeFilePickerPanel.h82
1 files changed, 82 insertions, 0 deletions
diff --git a/public/dme_controls/AttributeFilePickerPanel.h b/public/dme_controls/AttributeFilePickerPanel.h
new file mode 100644
index 0000000..61d6db0
--- /dev/null
+++ b/public/dme_controls/AttributeFilePickerPanel.h
@@ -0,0 +1,82 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//=============================================================================//
+
+#ifndef ATTRIBUTEFILEPICKERPANEL_H
+#define ATTRIBUTEFILEPICKERPANEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "dme_controls/AttributeBasePickerPanel.h"
+#include "vgui_controls/PHandle.h"
+
+
+//-----------------------------------------------------------------------------
+// Forward declarations
+//-----------------------------------------------------------------------------
+class CDmElement;
+
+namespace vgui
+{
+ class FileOpenDialog;
+}
+
+
+//-----------------------------------------------------------------------------
+// CAttributeFilePickerPanel
+//-----------------------------------------------------------------------------
+class CAttributeFilePickerPanel : public CAttributeBasePickerPanel
+{
+ DECLARE_CLASS_SIMPLE( CAttributeFilePickerPanel, CAttributeBasePickerPanel );
+
+public:
+ CAttributeFilePickerPanel( vgui::Panel *parent, const AttributeWidgetInfo_t &info );
+ ~CAttributeFilePickerPanel();
+
+private:
+ MESSAGE_FUNC_CHARPTR( OnFileSelected, "FileSelected", fullpath );
+ virtual void ShowPickerDialog();
+ virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog ) = 0;
+};
+
+
+//-----------------------------------------------------------------------------
+// Macro to quickly make new attribute types
+//-----------------------------------------------------------------------------
+#define DECLARE_ATTRIBUTE_FILE_PICKER( _className ) \
+ class _className : public CAttributeFilePickerPanel \
+ { \
+ DECLARE_CLASS_SIMPLE( _className, CAttributeFilePickerPanel ); \
+ public: \
+ _className( vgui::Panel *parent, const AttributeWidgetInfo_t &info ) : \
+ BaseClass( parent, info ) {} \
+ private: \
+ virtual void SetupFileOpenDialog( vgui::FileOpenDialog *pDialog ); \
+ }
+
+#define IMPLEMENT_ATTRIBUTE_FILE_PICKER( _className, _popupTitle, _assetType, _assetExt ) \
+ void _className::SetupFileOpenDialog( vgui::FileOpenDialog *pDialog ) \
+ { \
+ pDialog->SetTitle( _popupTitle, true ); \
+ pDialog->AddFilter( "*." _assetExt, _assetType " (*." _assetExt ")", true ); \
+ pDialog->AddFilter( "*.*", "All Files (*.*)", false ); \
+ }
+
+
+//-----------------------------------------------------------------------------
+// File picker types
+//-----------------------------------------------------------------------------
+DECLARE_ATTRIBUTE_FILE_PICKER( CAttributeTgaFilePickerPanel );
+DECLARE_ATTRIBUTE_FILE_PICKER( CAttributeDmeFilePickerPanel );
+DECLARE_ATTRIBUTE_FILE_PICKER( CAttributeAviFilePickerPanel );
+DECLARE_ATTRIBUTE_FILE_PICKER( CAttributeShtFilePickerPanel );
+DECLARE_ATTRIBUTE_FILE_PICKER( CAttributeRawFilePickerPanel );
+
+
+#endif // ATTRIBUTEFILEPICKERPANEL_H