Wt examples 4.5.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
15using 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(std::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
46void LettersWidget::processButton(WPushButton *b)
47{
48 b->disable();
49 letterPushed_.emit(b->text().toUTF8()[0]);
50}
51
52void 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]))
59}
60
62{
63 for (auto& letterButton : letterButtons_)
64 letterButton->enable();
65
66 show();
67}
WTable * impl_
Definition: LettersWidget.h:32
std::vector< Wt::Signals::connection > connections_
Definition: LettersWidget.h:34
virtual ~LettersWidget()
Definition: LettersWidget.C:40
void processButton(WPushButton *b)
Definition: LettersWidget.C:46
Signal< char > letterPushed_
Definition: LettersWidget.h:36
void processButtonPushed(const WKeyEvent &e, WPushButton *b)
Definition: LettersWidget.C:52
std::vector< WPushButton * > letterButtons_
Definition: LettersWidget.h:33

Generated on Wed Jan 12 2022 for the C++ Web Toolkit (Wt) by doxygen 1.9.3