Wt examples  4.2.2
LettersWidget.C
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2011 Emweb bv, Herent, 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 
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 
47 {
48  b->disable();
49  letterPushed_.emit(b->text().toUTF8()[0]);
50 }
51 
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 }
LettersWidget::connections_
std::vector< Wt::Signals::connection > connections_
Definition: LettersWidget.h:34
Wt
LettersWidget::LettersWidget
LettersWidget()
Definition: LettersWidget.C:17
Wt::WPushButton::text
const WString & text() const
Wt::WPushButton
LettersWidget::letterButtons_
std::vector< WPushButton * > letterButtons_
Definition: LettersWidget.h:33
LettersWidget::impl_
WTable * impl_
Definition: LettersWidget.h:32
LettersWidget::letterPushed_
Signal< char > letterPushed_
Definition: LettersWidget.h:36
LettersWidget::~LettersWidget
virtual ~LettersWidget()
Definition: LettersWidget.C:40
LettersWidget::reset
void reset()
Definition: LettersWidget.C:61
Wt::WWebWidget::resize
virtual void resize(const WLength &width, const WLength &height) override
Wt::WWidget::show
void show()
Wt::WKeyEvent
Wt::WContainerWidget::addWidget
virtual void addWidget(std::unique_ptr< WWidget > widget)
Wt::WWidget::disable
void disable()
Wt::Key
Key
LettersWidget::processButton
void processButton(WPushButton *b)
Definition: LettersWidget.C:46
Wt::WInteractWidget::clicked
EventSignal< WMouseEvent > & clicked()
Wt::WTable
LettersWidget::processButtonPushed
void processButtonPushed(const WKeyEvent &e, WPushButton *b)
Definition: LettersWidget.C:52
Wt::EventSignal::connect
Wt::Signals::connection connect(F function)
Wt::WString::toUTF8
std::string toUTF8() const
Wt::WLength
Wt::WKeyEvent::key
Key key() const
LettersWidget.h
Wt::WCompositeWidget::isHidden
virtual bool isHidden() const override
Wt::WTable::elementAt
WTableCell * elementAt(int row, int column)
Wt::Signal::emit
void emit(A... args) const
Wt::WCompositeWidget
Wt::WCompositeWidget::setImplementation
void setImplementation(std::unique_ptr< WWidget > widget)

Generated on Fri Mar 20 2020 for the C++ Web Toolkit (Wt) by doxygen 1.8.17