#include #include"vgui_ControlConfigPanel.h" #include #include #include #include #include #include #include #include using namespace vgui; namespace { class FooTablePanel : public TablePanel { private: Label* _label; TextEntry* _textEntry; ControlConfigPanel* _controlConfigPanel; public: FooTablePanel(ControlConfigPanel* controlConfigPanel,int x,int y,int wide,int tall,int columnCount) : TablePanel(x,y,wide,tall,columnCount) { _controlConfigPanel=controlConfigPanel; _label=new Label("You are a dumb monkey",0,0,100,20); _label->setBgColor(Scheme::sc_primary3); _label->setFgColor(Scheme::sc_primary1); _label->setFont(Scheme::sf_primary3); _textEntry=new TextEntry("",0,0,100,20); //_textEntry->setFont(Scheme::sf_primary3); } public: virtual int getRowCount() { return _controlConfigPanel->GetCVarCount(); } virtual int getCellTall(int row) { return 12; } virtual Panel* getCellRenderer(int column,int row,bool columnSelected,bool rowSelected,bool cellSelected) { char cvar[128],desc[128],bind[128],bindAlt[128]; _controlConfigPanel->GetCVar(row,cvar,128,desc,128); if(cellSelected) { _label->setBgColor(Scheme::sc_primary1); _label->setFgColor(Scheme::sc_primary3); } else if(rowSelected) { _label->setBgColor(Scheme::sc_primary2); _label->setFgColor(Scheme::sc_primary1); } else { _label->setBgColor(Scheme::sc_primary3); _label->setFgColor(Scheme::sc_primary1); } switch(column) { case 0: { _label->setText(desc); _label->setContentAlignment(Label::a_west); break; } case 1: { _controlConfigPanel->GetCVarBind(cvar,bind,128,bindAlt,128); _label->setText(bind); _label->setContentAlignment(Label::a_center); break; } case 2: { _controlConfigPanel->GetCVarBind(cvar,bind,128,bindAlt,128); _label->setText(bindAlt); _label->setContentAlignment(Label::a_center); break; } default: { _label->setText(""); break; } } return _label; } virtual Panel* startCellEditing(int column,int row) { _textEntry->setText("Goat",(int)strlen("Goat")); _textEntry->requestFocus(); return _textEntry; } }; } ControlConfigPanel::ControlConfigPanel(int x,int y,int wide,int tall) : Panel(x,y,wide,tall) { setPaintBorderEnabled(false); setPaintBackgroundEnabled(false); setPaintEnabled(false); _actionLabel=new Label("Action"); _actionLabel->setBgColor(Scheme::sc_primary3); _actionLabel->setFgColor(Scheme::sc_primary3); _keyButtonLabel=new Label("Key / Button"); _keyButtonLabel->setBgColor(Scheme::sc_primary3); _keyButtonLabel->setFgColor(Scheme::sc_primary3); _alternateLabel=new Label("Alternate"); _alternateLabel->setBgColor(Scheme::sc_primary3); _alternateLabel->setFgColor(Scheme::sc_primary3); _headerPanel=new HeaderPanel(0,0,wide,20); _headerPanel->setParent(this); _headerPanel->addSectionPanel(_actionLabel); _headerPanel->addSectionPanel(_keyButtonLabel); _headerPanel->addSectionPanel(_alternateLabel); _headerPanel->setSliderPos( 0, wide/2 ); _headerPanel->setSliderPos( 1, (wide/2) + (wide/4) ); _headerPanel->setSliderPos( 2, wide ); _scrollPanel=new ScrollPanel(0,20,wide,tall-20); _scrollPanel->setParent(this); _scrollPanel->setPaintBorderEnabled(false); _scrollPanel->setPaintBackgroundEnabled(false); _scrollPanel->setPaintEnabled(false); _scrollPanel->getClient()->setPaintBorderEnabled(false); _scrollPanel->getClient()->setPaintBackgroundEnabled(false); _scrollPanel->getClient()->setPaintEnabled(false); _scrollPanel->setScrollBarVisible(false,true); _tablePanel=new FooTablePanel(this,0,0,_scrollPanel->getClient()->getWide(),800, 3); _tablePanel->setParent(_scrollPanel->getClient()); _tablePanel->setHeaderPanel(_headerPanel); _tablePanel->setBgColor(Color(200,0,0,255)); _tablePanel->setFgColor(Color(Scheme::sc_primary2)); _tablePanel->setGridVisible(true,true); _tablePanel->setGridSize(1,1); } void ControlConfigPanel::AddCVar(const char* cvar,const char* desc) { _cvarDar.addElement(vgui_strdup(cvar)); _descDar.addElement(vgui_strdup(desc)); } int ControlConfigPanel::GetCVarCount() { return _cvarDar.getCount(); } void ControlConfigPanel::GetCVar(int index,char* cvar,int cvarLen,char* desc,int descLen) { vgui_strcpy(cvar,cvarLen,_cvarDar[index]); vgui_strcpy(desc,descLen,_descDar[index]); } void ControlConfigPanel::AddCVarFromInputStream(InputStream* is) { if(is==null) { return; } DataInputStream dis(is); bool success; while(1) { char buf[256],cvar[128],desc[128]; dis.readLine(buf,256,success); if(!success) { break; } if(sscanf(buf,"\"%[^\"]\" \"%[^\"]\"",cvar,desc)==2) { AddCVar(cvar,desc); } } } void ControlConfigPanel::GetCVarBind(const char* cvar,char* bind,int bindLen,char* bindAlt,int bindAltLen) { sprintf(bind,"%s : Bind",cvar); sprintf(bindAlt,"%s : BindAlt",cvar); } void ControlConfigPanel::SetCVarBind(const char* cvar,const char* bind,const char* bindAlt) { }