|
#include <Wt/WApplication>
|
|
#include <Wt/WText>
|
|
#include <Wt/WLogger>
|
|
#include <Wt/WHBoxLayout>
|
|
#include <Wt/WVBoxLayout>
|
|
#include <Wt/WContainerWidget>
|
|
#include <Wt/WPushButton>
|
|
#include <Wt/WStandardItemModel>
|
|
#include <Wt/WStandardItem>
|
|
#include <Wt/WTreeView>
|
|
|
|
#include <Wt/Ext/TableView>
|
|
|
|
#include <boost/lexical_cast.hpp>
|
|
|
|
using namespace Wt;
|
|
|
|
struct WebApp: public WApplication {
|
|
WebApp( const WEnvironment& env );
|
|
|
|
WContainerWidget* head;
|
|
WContainerWidget* menu;
|
|
WContainerWidget* main;
|
|
WContainerWidget* tail;
|
|
WContainerWidget* time;
|
|
|
|
void clicked();
|
|
void makeMenu();
|
|
};
|
|
|
|
WebApp::WebApp( const WEnvironment& env ):
|
|
WApplication( env )
|
|
{
|
|
head = new WContainerWidget();
|
|
head->setId( "head" );
|
|
head->setStyleClass( "lean" );
|
|
|
|
menu = new WContainerWidget();
|
|
menu->setId( "menu" );
|
|
menu->setStyleClass( "lean" );
|
|
|
|
main = new WContainerWidget();
|
|
main->setId( "main" );
|
|
main->setStyleClass( "lean" );
|
|
|
|
tail = new WContainerWidget();
|
|
tail->setId( "tail" );
|
|
tail->setStyleClass( "lean" );
|
|
|
|
time = new WContainerWidget();
|
|
time->setId( "time" );
|
|
root()->addWidget( time );
|
|
|
|
WVBoxLayout* vb1 = new WVBoxLayout();
|
|
vb1->addWidget( head,2 );
|
|
vb1->addWidget( menu,8 );
|
|
WVBoxLayout* vb2 = new WVBoxLayout();
|
|
vb2->addWidget( main,9 );
|
|
vb2->addWidget( tail,1 );
|
|
|
|
WHBoxLayout* hbl = new WHBoxLayout();
|
|
hbl->addLayout( vb1,3 );
|
|
hbl->addLayout( vb2,7 );
|
|
root()->setLayout( hbl );
|
|
|
|
WPushButton *butt = new WPushButton( "Go!",menu );
|
|
butt->clicked().connect( this,&WebApp::clicked );
|
|
// Comment out the two alines above and
|
|
// uncomment the one below
|
|
// clicked();
|
|
}
|
|
|
|
void WebApp::clicked() {
|
|
log( "info" ) << "Clicked!";
|
|
WHBoxLayout* hbl = new WHBoxLayout();
|
|
main->setLayout( hbl );
|
|
|
|
int rows = 32;
|
|
int cols = 4;
|
|
WStandardItemModel *model = new WStandardItemModel( rows,cols );
|
|
|
|
for( int col=0; col<cols; col++ )
|
|
model->setHeaderData( col,boost::any( "COL "+boost::lexical_cast<std::string>( col ) ) );
|
|
for( int row=0; row<rows; ++row ) {
|
|
for( int col = 0; col<cols; col++ ) {
|
|
WStandardItem *item = new WStandardItem();
|
|
item->setText( "Item "+boost::lexical_cast<std::string>( row )+"."+boost::lexical_cast<std::string>( col ) );
|
|
model->setItem( row,col,item );
|
|
}
|
|
}
|
|
|
|
Ext::TableView *table = new Ext::TableView();
|
|
table->setModel( model );
|
|
table->setAlternatingRowColors( true );
|
|
table->setHighlightMouseOver( true );
|
|
table->setColumnAlignment( 2,AlignRight );
|
|
hbl->addWidget( table );
|
|
}
|
|
|
|
WApplication* ApplicationFactory( const WEnvironment& env ) {
|
|
WebApp* wa = new WebApp( env );
|
|
wa->useStyleSheet( "acss.css" );
|
|
wa->setTitle( "Window's title" );
|
|
wa->head->addWidget( new WText( "This is the activity panel" ) );
|
|
wa->refresh();
|
|
return wa;
|
|
}
|
|
|
|
int main( int argc, char* argv[] ) {
|
|
return WRun( argc,argv,&ApplicationFactory );
|
|
}
|
|
|
|
//EOF
|