Wt examples 3.3.12
FormExample.C
Go to the documentation of this file.
1/*
2 * Copyright (C) 2008 Emweb bvba, Kessel-Lo, Belgium.
3 *
4 * See the LICENSE file for terms of use.
5 */
6
7#include "FormExample.h"
8#include "Form.h"
9
10#include <Wt/WApplication>
11#include <Wt/WText>
12#include <Wt/WStringUtil>
13
15 : WContainerWidget(parent)
16{
17 WContainerWidget *langLayout = new WContainerWidget(this);
19 new WText(tr("language"), langLayout);
20
21 const char *lang[] = { "en", "nl" };
22
23 for (int i = 0; i < 2; ++i) {
24 WText *t = new WText(widen(lang[i]), langLayout);
25 t->setMargin(5);
26 t->clicked().connect(this, &FormExample::changeLanguage);
27
28 languageSelects_.push_back(t);
29 }
30
31 /*
32 * Start with the reported locale, if available
33 */
34 setLanguage(wApp->locale().name());
35
36 Form *form = new Form(this);
37 form->setMargin(20);
38}
39
40void FormExample::setLanguage(const std::string lang)
41{
42 bool haveLang = false;
43
44 for (unsigned i = 0; i < languageSelects_.size(); ++i) {
45 WText *t = languageSelects_[i];
46
47 // prefix match, e.g. en matches en-us.
48 bool isLang = lang.find(narrow(t->text().value())) == 0;
49 t->setStyleClass(isLang ? L"langcurrent" : L"lang");
50
51 haveLang = haveLang || isLang;
52 }
53
54 if (!haveLang) {
55 languageSelects_[0]->setStyleClass(L"langcurrent");
56 WApplication::instance()
57 ->setLocale(narrow(languageSelects_[0]->text().value()));
58 } else
59 WApplication::instance()->setLocale(lang);
60}
61
63{
64 WText *t = (WText *)sender();
65 setLanguage(narrow(t->text().value()));
66}
67
69{
70 WApplication *app = new WApplication(env);
71 app->messageResourceBundle().use(WApplication::appRoot() + "form-example");
72 app->setTitle("Form example");
73
74 app->root()->addWidget(new FormExample());
75
76 WCssDecorationStyle langStyle;
77 langStyle.font().setSize(WFont::Smaller);
79 langStyle.setForegroundColor(blue);
81 app->styleSheet().addRule(".lang", langStyle);
82
83 langStyle.setCursor(ArrowCursor);
84 langStyle.font().setWeight(WFont::Bold);
85 app->styleSheet().addRule(".langcurrent", langStyle);
86
87 return app;
88}
89
90int main(int argc, char **argv)
91{
92 return WRun(argc, argv, &createApplication);
93}
94
WApplication * createApplication(const WEnvironment &env)
Definition FormExample.C:68
int main(int argc, char **argv)
Definition FormExample.C:90
Main widget for the Form example.
Definition FormExample.h:30
void changeLanguage()
Change the language.
Definition FormExample.C:62
FormExample(WContainerWidget *parent=0)
Instantiate a new form example.
Definition FormExample.C:14
void setLanguage(const std::string lang)
Definition FormExample.C:40
std::vector< WText * > languageSelects_
Definition FormExample.h:37
A simple Form.
Definition Form.h:36
WCssStyleSheet & styleSheet()
WMessageResourceBundle & messageResourceBundle()
WContainerWidget * root() const
void setTitle(const WString &title)
virtual void addWidget(WWidget *widget)
void setContentAlignment(WFlags< AlignmentFlag > contentAlignment)
void setForegroundColor(WColor color)
void setTextDecoration(WFlags< TextDecoration > decoration)
void setCursor(Cursor c)
WCssTextRule * addRule(const std::string &selector, const WString &declarations, const std::string &ruleName=std::string())
void setSize(Size size, const WLength &length)
void setWeight(Weight weight, int value=400)
EventSignal< WMouseEvent > & clicked()
void use(const std::string &path, bool loadInMemory=true)
static WObject * sender()
std::wstring value() const
const WString & text() const
virtual WWidget * find(const std::string &name)
virtual void setMargin(const WLength &margin, WFlags< Side > sides=All)
virtual void setStyleClass(const WString &styleClass)
static WString tr(const char *key)
ArrowCursor
PointingHandCursor
AlignRight

Generated on Fri May 17 2024 for the C++ Web Toolkit (Wt) by doxygen 1.9.8