diff options
Diffstat (limited to 'utils/hlfaceposer/tabwindow.h')
| -rw-r--r-- | utils/hlfaceposer/tabwindow.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/utils/hlfaceposer/tabwindow.h b/utils/hlfaceposer/tabwindow.h new file mode 100644 index 0000000..28a0447 --- /dev/null +++ b/utils/hlfaceposer/tabwindow.h @@ -0,0 +1,102 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TABWINDOW_H +#define TABWINDOW_H +#ifdef _WIN32 +#pragma once +#endif + +#include <mxtk/mx.h> +#include "utlvector.h" + +class CChoreoWidgetDrawHelper; + +//----------------------------------------------------------------------------- +// Purpose: A custom tab control for handling expression class strings +//----------------------------------------------------------------------------- +class CTabWindow : public mxWindow +{ +public: + enum + { + COLOR_BG = 0, + COLOR_FG, + COLOR_FG_SELECTED, + COLOR_HILITE, + COLOR_HILITE_SELECTED, + COLOR_TEXT, + COLOR_TEXT_SELECTED, + + NUM_COLORS + }; + + CTabWindow( mxWindow *parent, int x, int y, int w, int h, int id = 0, int style = 0 ); + virtual ~CTabWindow ( void ); + + virtual void redraw( void ); + virtual int handleEvent (mxEvent *event); + + // MANIPULATORS + virtual void add (const char *item); + virtual void select (int index); + virtual void remove (int index); + virtual void removeAll (); + virtual void setPrefix( int item, char const *prefix ); + + // ACCESSORS + virtual int getItemCount () const; + virtual int getSelectedIndex () const; + + virtual char const *getLabel( int item ); + virtual char const *getPrefix( int item ); + virtual void ShowRightClickMenu( int mx, int my ) = 0; + + void SetColor( int index, COLORREF clr ); + + void SetInverted( bool invert ); + void SetRightJustify( bool rightjustify ); + + int GetBestHeight( int width ); + void SetRowHeight( int rowheight ); + +protected: + void GetTabRect( const RECT& rcClient, RECT& tabRect, int tabNum ); + virtual void DrawTab( CChoreoWidgetDrawHelper& drawHelper, RECT& rcClient, int tabnum, bool selected = false ); + + int RecomputeLayout( int windowWidth, bool dolayout = true ); + + class CETItem + { + public: + enum + { + MAX_ET_STRING_LENGTH = 64 + }; + + char m_szString[ MAX_ET_STRING_LENGTH ]; + char m_szPrefix[ MAX_ET_STRING_LENGTH ]; + RECT rect; + }; + + int GetItemUnderMouse( int mx, int my ); + + CUtlVector <CETItem> m_Items; + int m_nRowsRequired; + + int m_nSelected; + + int m_nTabWidth; + int m_nPixelDelta; + bool m_bInverted; + bool m_bRightJustify; + + COLORREF m_Colors[ NUM_COLORS ]; + + int m_nRowHeight; +}; +#endif // TABWINDOW_H |