Project

General

Profile

Bug #307 » Main.cpp

The main source code fragment - Vincenzo Romano, 02/26/2010 03:37 PM

 
#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
(1-1/5)