//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef TABWINDOW_H #define TABWINDOW_H #ifdef _WIN32 #pragma once #endif #include #include "utlvector.h" class CDrawHelper; //----------------------------------------------------------------------------- // 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( CDrawHelper& 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 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