Wt examples  4.0.3
LettersWidget.C
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2011 Emweb bvba, Heverlee, Belgium
3  *
4  * See the LICENSE file for terms of use.
5  */
6 
7 #include "LettersWidget.h"
8 
9 #include <Wt/WPushButton.h>
10 #include <Wt/WTable.h>
11 #include <Wt/WApplication.h>
12 #include <Wt/WEvent.h>
13 #include <Wt/WAny.h>
14 
15 using namespace Wt;
16 
18  : WCompositeWidget()
19 {
20  impl_ = new WTable();
21  setImplementation(std::unique_ptr<WTable>(impl_));
22 
23  impl_->resize(13*30, WLength::Auto);
24 
25  for (unsigned int i = 0; i < 26; ++i) {
26  std::string c(1, 'A' + i);
27  WPushButton *character
28  = impl_->elementAt(i / 13, i % 13)->addWidget(cpp14::make_unique<WPushButton>(c));
29  letterButtons_.push_back(character);
30  character->resize(WLength(30), WLength::Auto);
31 
32  character->clicked().connect
33  (std::bind(&LettersWidget::processButton, this, character));
34 
35  connections_.push_back(WApplication::instance()->globalKeyPressed().connect
36  (std::bind(&LettersWidget::processButtonPushed, this, std::placeholders::_1, character)));
37  }
38 }
39 
41 {
42  for (auto &connection : connections_)
43  connection.disconnect();
44 }
45 
46 void LettersWidget::processButton(WPushButton *b)
47 {
48  b->disable();
49  letterPushed_.emit(b->text().toUTF8()[0]);
50 }
51 
52 void LettersWidget::processButtonPushed(const WKeyEvent &e, WPushButton *b)
53 {
54  if (isHidden())
55  return;
56 
57  if(e.key() == static_cast<Key>(b->text().toUTF8()[0]))
58  processButton(b);
59 }
60 
62 {
63  for (auto& letterButton : letterButtons_)
64  letterButton->enable();
65 
66  show();
67 }
void processButton(WPushButton *b)
Definition: LettersWidget.C:46
Signal< char > letterPushed_
Definition: LettersWidget.h:36
std::vector< Wt::Signals::connection > connections_
Definition: LettersWidget.h:34
void processButtonPushed(const WKeyEvent &e, WPushButton *b)
Definition: LettersWidget.C:52
virtual ~LettersWidget()
Definition: LettersWidget.C:40
std::vector< WPushButton * > letterButtons_
Definition: LettersWidget.h:33
WTable * impl_
Definition: LettersWidget.h:32

Generated on Mon Jul 23 2018 for the C++ Web Toolkit (Wt) by doxygen 1.8.14