|
Wt examples
3.3.5
|
00001 /* 00002 * Copyright (C) 2011 Emweb bvba, Heverlee, Belgium 00003 * 00004 * See the LICENSE file for terms of use. 00005 */ 00006 00007 #include "LettersWidget.h" 00008 00009 #include <Wt/WPushButton> 00010 #include <Wt/WTable> 00011 #include <Wt/WApplication> 00012 #include <Wt/WEvent> 00013 00014 using namespace Wt; 00015 00016 LettersWidget::LettersWidget(WContainerWidget *parent) 00017 : WCompositeWidget(parent) 00018 { 00019 setImplementation(impl_ = new WTable()); 00020 00021 impl_->resize(13*30, WLength::Auto); 00022 00023 for (unsigned int i = 0; i < 26; ++i) { 00024 std::string c(1, 'A' + i); 00025 WPushButton *character = new WPushButton(c, 00026 impl_->elementAt(i / 13, i % 13)); 00027 letterButtons_.push_back(character); 00028 character->resize(WLength(30), WLength::Auto); 00029 00030 character->clicked().connect 00031 (boost::bind(&LettersWidget::processButton, this, character)); 00032 00033 WApplication::instance()->globalKeyPressed().connect 00034 (boost::bind(&LettersWidget::processButtonPushed, this, _1, character)); 00035 } 00036 } 00037 00038 void LettersWidget::processButton(WPushButton *b) 00039 { 00040 b->disable(); 00041 letterPushed_.emit(b->text().toUTF8()[0]); 00042 } 00043 00044 void LettersWidget::processButtonPushed(const WKeyEvent &e, WPushButton *b) 00045 { 00046 if(isHidden()) 00047 return; 00048 00049 if(e.key() == b->text().toUTF8()[0]) 00050 processButton(b); 00051 } 00052 00053 void LettersWidget::reset() 00054 { 00055 for (unsigned int i = 0; i < letterButtons_.size(); ++i) 00056 letterButtons_[i]->enable(); 00057 00058 show(); 00059 }
1.7.6.1