You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
2.3 KiB
104 lines
2.3 KiB
5 years ago
|
//========= 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 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 <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
|