Wt examples 3.3.12
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Form Class Reference

A simple Form. More...

#include <Form.h>

Inheritance diagram for Form:
Inheritance graph
[legend]

Public Member Functions

 Form (WContainerWidget *parent=0)
 Instantiate a new form.
 
- Public Member Functions inherited from Wt::WTable
 WTable (WContainerWidget *parent=0)
 
virtual ~WTable ()
 
WTableCellelementAt (int row, int column)
 
WTableRowrowAt (int row)
 
WTableColumncolumnAt (int column)
 
void removeCell (WTableCell *item)
 
virtual void removeCell (int row, int column)
 
virtual WTableRowinsertRow (int row, WTableRow *tableRow=0)
 
virtual void deleteRow (int row)
 
virtual WTableColumninsertColumn (int column, WTableColumn *tableColumn=0)
 
virtual void deleteColumn (int column)
 
virtual void clear ()
 
int rowCount () const
 
int columnCount () const
 
void setHeaderCount (int count, Orientation orientation=Horizontal)
 
int headerCount (Orientation orientation=Horizontal)
 
virtual void moveRow (int from, int to)
 
virtual void moveColumn (int from, int to)
 
- Public Member Functions inherited from Wt::WInteractWidget
 WInteractWidget (WContainerWidget *parent=0)
 
EventSignal< WKeyEvent > & keyWentDown ()
 
EventSignal< WKeyEvent > & keyPressed ()
 
EventSignal< WKeyEvent > & keyWentUp ()
 
EventSignalenterPressed ()
 
EventSignalescapePressed ()
 
EventSignal< WMouseEvent > & clicked ()
 
EventSignal< WMouseEvent > & doubleClicked ()
 
EventSignal< WMouseEvent > & mouseWentDown ()
 
EventSignal< WMouseEvent > & mouseWentUp ()
 
EventSignal< WMouseEvent > & mouseWentOut ()
 
EventSignal< WMouseEvent > & mouseWentOver ()
 
EventSignal< WMouseEvent > & mouseMoved ()
 
EventSignal< WMouseEvent > & mouseDragged ()
 
EventSignal< WMouseEvent > & mouseWheel ()
 
EventSignal< WTouchEvent > & touchStarted ()
 
EventSignal< WTouchEvent > & touchEnded ()
 
EventSignal< WTouchEvent > & touchMoved ()
 
EventSignal< WGestureEvent > & gestureStarted ()
 
EventSignal< WGestureEvent > & gestureChanged ()
 
EventSignal< WGestureEvent > & gestureEnded ()
 
void setDraggable (const std::string &mimeType, WWidget *dragWidget=0, bool isDragWidgetOnly=false, WObject *sourceWidget=0)
 
void unsetDraggable ()
 
void setMouseOverDelay (int delay)
 
int mouseOverDelay () const
 
virtual void setPopup (bool popup)
 
virtual void load ()
 
virtual bool isEnabled () const
 
- Public Member Functions inherited from Wt::WWebWidget
 WWebWidget (WContainerWidget *parent=0)
 
virtual void setPositionScheme (PositionScheme scheme)
 
virtual PositionScheme positionScheme () const
 
virtual void setOffsets (const WLength &offset, WFlags< Side > sides=All)
 
virtual WLength offset (Side s) const
 
virtual void resize (const WLength &width, const WLength &height)
 
virtual WLength width () const
 
virtual WLength height () const
 
virtual void setMinimumSize (const WLength &width, const WLength &height)
 
virtual WLength minimumWidth () const
 
virtual WLength minimumHeight () const
 
virtual void setMaximumSize (const WLength &width, const WLength &height)
 
virtual WLength maximumWidth () const
 
virtual WLength maximumHeight () const
 
virtual void setLineHeight (const WLength &height)
 
virtual WLength lineHeight () const
 
virtual void setFloatSide (Side s)
 
virtual Side floatSide () const
 
virtual void setClearSides (WFlags< Side > sides)
 
virtual WFlags< SideclearSides () const
 
virtual void setMargin (const WLength &margin, WFlags< Side > sides=All)
 
virtual WLength margin (Side side) const
 
virtual void setHiddenKeepsGeometry (bool enabled)
 
virtual bool hiddenKeepsGeometry () const
 
virtual void setHidden (bool hidden, const WAnimation &animation=WAnimation())
 
virtual bool isHidden () const
 
virtual bool isVisible () const
 
virtual void setDisabled (bool disabled)
 
virtual bool isDisabled () const
 
virtual bool isPopup () const
 
virtual void setInline (bool isInline)
 
virtual bool isInline () const
 
virtual void setDecorationStyle (const WCssDecorationStyle &style)
 
virtual WCssDecorationStyledecorationStyle ()
 
virtual void setStyleClass (const WString &styleClass)
 
virtual WString styleClass () const
 
virtual void addStyleClass (const WString &styleClass, bool force=false)
 
virtual void removeStyleClass (const WString &styleClass, bool force=false)
 
virtual bool hasStyleClass (const WString &styleClass) const
 
virtual void setVerticalAlignment (AlignmentFlag alignment, const WLength &length=WLength())
 
virtual AlignmentFlag verticalAlignment () const
 
virtual WLength verticalAlignmentLength () const
 
virtual void setToolTip (const WString &text, TextFormat textFormat=PlainText)
 
virtual void setDeferredToolTip (bool enable, TextFormat textFormat=PlainText)
 
virtual WString toolTip () const
 
virtual void refresh ()
 
virtual void setAttributeValue (const std::string &name, const WString &value)
 
virtual WString attributeValue (const std::string &name) const
 
virtual void setJavaScriptMember (const std::string &name, const std::string &value)
 
virtual std::string javaScriptMember (const std::string &name) const
 
virtual void callJavaScriptMember (const std::string &name, const std::string &args)
 
virtual bool loaded () const
 
virtual void setId (const std::string &id)
 
virtual WWidgetfind (const std::string &name)
 
virtual WWidgetfindById (const std::string &id)
 
virtual void setSelectable (bool selectable)
 
virtual void doJavaScript (const std::string &javascript)
 
virtual const std::string id () const
 
void setLoadLaterWhenInvisible (bool)
 
std::string htmlTagName () const
 
void setHtmlTagName (const std::string &tag)
 
const std::vector< WWidget * > & children () const
 
SignalchildrenChanged ()
 
virtual void setCanReceiveFocus (bool enabled)
 
virtual bool canReceiveFocus () const
 
virtual bool setFirstFocus ()
 
virtual void setFocus (bool focus)
 
virtual bool hasFocus () const
 
virtual void setTabIndex (int index)
 
virtual int tabIndex () const
 
EventSignalblurred ()
 
EventSignalfocussed ()
 
virtual bool scrollVisibilityEnabled () const WT_CXX11ONLY(final override)
 
virtual void setScrollVisibilityEnabled (bool enabled) WT_CXX11ONLY(final override)
 
virtual int scrollVisibilityMargin () const WT_CXX11ONLY(final override)
 
virtual void setScrollVisibilityMargin (int margin) WT_CXX11ONLY(final override)
 
virtual Signal< bool > & scrollVisibilityChanged () WT_CXX11ONLY(final override)
 
virtual bool isScrollVisible () const WT_CXX11ONLY(final override)
 
virtual void setThemeStyleEnabled (bool enabled)
 
virtual bool isThemeStyleEnabled () const
 
virtual void removeChild (WObject *child)
 
void setFocus ()
 
virtual void setFocus (bool focus)=0
 
- Public Member Functions inherited from Wt::WWidget
virtual ~WWidget ()
 
WWidgetparent () const
 
void setWidth (const WLength &width)
 
void setHeight (const WLength &height)
 
virtual void positionAt (const WWidget *widget, Orientation orientation=Vertical)
 
virtual void toggleStyleClass (const WString &styleClass, bool add, bool force=false)
 
std::string jsRef () const
 
void setFocus ()
 
virtual void acceptDrops (const std::string &mimeType, const WString &hoverStyleClass=WString())
 
virtual void stopAcceptDrops (const std::string &mimeType)
 
virtual void setObjectName (const std::string &name)
 
virtual void htmlText (std::ostream &out)
 
bool isRendered () const
 
void hide ()
 
void animateHide (const WAnimation &animation)
 
void show ()
 
void animateShow (const WAnimation &animation)
 
void enable ()
 
void disable ()
 
bool layoutSizeAware () const
 
- Public Member Functions inherited from Wt::WObject
 WObject (WObject *parent=0)
 
virtual ~WObject ()
 
virtual std::string objectName () const
 
void resetLearnedSlots ()
 
void resetLearnedSlot (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)())
 
WStatelessSlot * implementStateless (void(T::*method)(), void(T::*undoMethod)())
 
void isNotStateless ()
 
WStatelessSlot * implementJavaScript (void(T::*method)(), const std::string &jsCode)
 
void addChild (WObject *child)
 
const std::vector< WObject * > & children () const
 
WObjectparent () const
 

Private Member Functions

void countryChanged ()
 The user selected a new country: adjust the cities combo box.
 
void submit ()
 Submit the form.
 
void createUI ()
 
void addValidationStatus (int row, WFormWidget *field)
 Add a validation feedback for a field.
 
bool validate ()
 Validate the form, and return whether succesfull.
 
bool checkValid (WFormWidget *edit, const WString &text)
 Validate a single form field.
 

Private Attributes

WContainerWidgetfeedbackMessages_
 
WLineEditnameEdit_
 
WLineEditfirstNameEdit_
 
WComboBoxcountryEdit_
 
WComboBoxcityEdit_
 
WDateEditbirthDateEdit_
 
WLineEditchildCountEdit_
 
WLineEditweightEdit_
 
WTextArearemarksEdit_
 

Additional Inherited Members

- Public Types inherited from Wt::WObject
typedef void(WObject::* Method) ()
 
- Static Public Member Functions inherited from Wt::WWebWidget
static WString escapeText (const WString &text, bool newlinesToo=false)
 
static std::string & escapeText (std::string &text, bool newlinestoo=false)
 
static bool removeScript (WString &text)
 
static std::string jsStringLiteral (const std::string &v, char delimiter='\'')
 
- Static Public Member Functions inherited from Wt::WWidget
static WString tr (const char *key)
 
- Protected Member Functions inherited from Wt::WTable
virtual WTableCellcreateCell (int row, int column)
 
virtual WTableRowcreateRow (int row)
 
virtual WTableColumncreateColumn (int column)
 
- Protected Member Functions inherited from Wt::WInteractWidget
virtual void propagateSetEnabled (bool enabled)
 
- Protected Member Functions inherited from Wt::WWebWidget
virtual void enableAjax ()
 
virtual WStatelessSlot * getStateless (Method method)
 
virtual void render (WFlags< RenderFlag > flags)
 
- Protected Member Functions inherited from Wt::WWidget
void setLayoutSizeAware (bool sizeAware)
 
virtual void layoutSizeChanged (int width, int height)
 
 WWidget (WContainerWidget *parent=0)
 
virtual void dropEvent (WDropEvent dropEvent)
 
virtual int boxPadding (Orientation orientation) const
 
virtual int boxBorder (Orientation orientation) const
 
void scheduleRender (WFlags< RepaintFlag > flags=0)
 
- Static Protected Member Functions inherited from Wt::WObject
static WObjectsender ()
 

Detailed Description

A simple Form.

Shows how a simple form can made, with an emphasis on how to handle validation.

Definition at line 35 of file Form.h.

Constructor & Destructor Documentation

◆ Form()

Form::Form ( WContainerWidget parent = 0)

Instantiate a new form.

Definition at line 17 of file Form.C.

18 : WTable(parent)
19{
20 createUI();
21}
void createUI()
Definition Form.C:23
WWidget * parent() const

Member Function Documentation

◆ addValidationStatus()

void Form::addValidationStatus ( int  row,
WFormWidget field 
)
private

Add a validation feedback for a field.

◆ checkValid()

bool Form::checkValid ( WFormWidget edit,
const WString text 
)
private

Validate a single form field.

Checks the given field, and appends the given text to the error messages on problems.

Definition at line 158 of file Form.C.

159{
160 if (edit->validate() != WValidator::Valid) {
164 edit->setStyleClass("Wt-invalid");
165
166 return false;
167 } else {
169 edit->setStyleClass("");
170
171 return true;
172 }
173}
WContainerWidget * feedbackMessages_
Definition Form.h:53
virtual void addWidget(WWidget *widget)
void setForegroundColor(WColor color)
WLabel * label() const
virtual WValidator::State validate()
virtual WCssDecorationStyle & decorationStyle()
virtual void setStyleClass(const WString &styleClass)

◆ countryChanged()

void Form::countryChanged ( )
private

The user selected a new country: adjust the cities combo box.

Definition at line 124 of file Form.C.

125{
126 cityEdit_->clear();
127 cityEdit_->addItem("");
129
130 switch (countryEdit_->currentIndex()) {
131 case 0:
132 break;
133 case 1:
134 cityEdit_->addItem("Antwerp");
135 cityEdit_->addItem("Brussels");
136 cityEdit_->addItem("Oekene");
137 break;
138 case 2:
139 cityEdit_->addItem("Amsterdam");
140 cityEdit_->addItem("Den Haag");
141 cityEdit_->addItem("Rotterdam");
142 break;
143 case 3:
144 cityEdit_->addItem("London");
145 cityEdit_->addItem("Bristol");
146 cityEdit_->addItem("Oxford");
147 cityEdit_->addItem("Stonehenge");
148 break;
149 case 4:
150 cityEdit_->addItem("Boston");
151 cityEdit_->addItem("Chicago");
152 cityEdit_->addItem("Los Angeles");
153 cityEdit_->addItem("New York");
154 break;
155 }
156}
WComboBox * cityEdit_
Definition Form.h:59
WComboBox * countryEdit_
Definition Form.h:58
int currentIndex() const
void setCurrentIndex(int index)
void addItem(const WString &text)

◆ createUI()

void Form::createUI ( )
private

Definition at line 23 of file Form.C.

24{
25 WLabel *label;
26 int row = 0;
27
28 // Title
29 elementAt(row, 0)->setColumnSpan(3);
31 elementAt(row, 0)->setPadding(10);
32 WText *title = new WText(tr("example.form"),
33 elementAt(row, 0));
35
36 // error messages
37 ++row;
38 elementAt(row, 0)->setColumnSpan(3);
41
43 errorStyle.setForegroundColor(Wt::red);
44 errorStyle.font().setSize(WFont::Smaller);
45 errorStyle.font().setWeight(WFont::Bold);
46 errorStyle.font().setStyle(WFont::Italic);
47
48 // Name
49 ++row;
50 nameEdit_ = new WLineEdit(elementAt(row, 2));
51 label = new WLabel(tr("example.name"), elementAt(row, 0));
52 label->setBuddy(nameEdit_);
55
56 // First name
57 ++row;
58 firstNameEdit_ = new WLineEdit(elementAt(row, 2));
59 label = new WLabel(tr("example.firstname"), elementAt(row,0));
61
62 // Country
63 ++row;
64 countryEdit_ = new WComboBox(elementAt(row, 2));
66 countryEdit_->addItem("Belgium");
67 countryEdit_->addItem("Netherlands");
68 countryEdit_->addItem("United Kingdom");
69 countryEdit_->addItem("United States");
70 label = new WLabel(tr("example.country"), elementAt(row, 0));
71 label->setBuddy(countryEdit_);
74
75 // City
76 ++row;
77 cityEdit_ = new WComboBox(elementAt(row, 2));
78 cityEdit_->addItem(tr("example.choosecountry"));
79 label = new WLabel(tr("example.city"), elementAt(row, 0));
80 label->setBuddy(cityEdit_);
81
82 // Birth date
83 ++row;
84
85 birthDateEdit_ = new WDateEdit(elementAt(row, 2));
86 birthDateEdit_->setBottom(WDate(1900, 1, 1));
88 label = new WLabel(tr("example.birthdate"), elementAt(row, 0));
90 birthDateEdit_->setFormat("dd/MM/yyyy");
92
93 // Child count
94 ++row;
95 childCountEdit_ = new WLineEdit("0", elementAt(row, 2));
96 label = new WLabel(tr("example.childcount"),
97 elementAt(row, 0));
101
102 ++row;
103 remarksEdit_ = new WTextArea(elementAt(row, 2));
106 label = new WLabel(tr("example.remarks"),
107 elementAt(row, 0));
108 label->setBuddy(remarksEdit_);
109
110 // Submit
111 ++row;
112 WPushButton *submit = new WPushButton(tr("submit"),
113 elementAt(row, 0));
114 submit->clicked().connect(this, &Form::submit);
115 submit->setMargin(15, Top);
116 elementAt(row, 0)->setColumnSpan(3);
118
119 // Set column widths for label and validation icon
121 elementAt(2, 1)->resize(20, WLength::Auto);
122}
WLineEdit * firstNameEdit_
Definition Form.h:56
WDateEdit * birthDateEdit_
Definition Form.h:61
void countryChanged()
The user selected a new country: adjust the cities combo box.
Definition Form.C:124
void submit()
Submit the form.
Definition Form.C:192
WLineEdit * childCountEdit_
Definition Form.h:62
WLineEdit * nameEdit_
Definition Form.h:55
WTextArea * remarksEdit_
Definition Form.h:65
Wt::Signals::connection connect(const F &function)
void setContentAlignment(WFlags< AlignmentFlag > contentAlignment)
void setPadding(const WLength &padding, WFlags< Side > sides=All)
void setBottom(const WDate &bottom)
void setFormat(const WString &format)
virtual WDateValidator * validator() const
void setTop(const WDate &top)
static WDate currentDate()
void setStyle(Style style)
void setSize(Size size, const WLength &length)
void setWeight(Weight weight, int value=400)
virtual WValidator * validator() const
EventSignal & changed()
void setValidator(WValidator *validator)
EventSignal & enterPressed()
void setBuddy(WFormWidget *buddy)
static WLength Auto
void setColumnSpan(int colSpan)
WTableCell * elementAt(int row, int column)
void setRows(int rows)
void setColumns(int cols)
void setMandatory(bool how)
virtual void resize(const WLength &width, const WLength &height)
static WString tr(const char *key)
AlignCenter
AlignTop

◆ submit()

void Form::submit ( )
private

Submit the form.

Definition at line 192 of file Form.C.

193{
194 if (validate()) {
195 // do something useful with the data...
196 std::wstring name
197 = firstNameEdit_->text() + L" " + nameEdit_->text();
198
199 std::wstring remarks
200 = remarksEdit_->text();
201
202 clear();
203
204 new WText(WString::fromUTF8("<p>Thank you, {1}, "
205 "for all this precious data.</p>").arg(name),
206 elementAt(0, 0));
207
208 if (!remarks.empty())
209 new WText("<p>You had some remarks. Splendid !</p>", elementAt(0, 0));
210
211 wApp->quit();
212 }
213}
bool validate()
Validate the form, and return whether succesfull.
Definition Form.C:175
const WString & text() const
static WString fromUTF8(const std::string &value, bool checkValid=false)
virtual void clear()
const WString & text() const

◆ validate()

bool Form::validate ( )
private

Validate the form, and return whether succesfull.

Definition at line 175 of file Form.C.

176{
178 bool valid = true;
179
180 if (!checkValid(nameEdit_, tr("error.name")))
181 valid = false;
182 if (!checkValid(countryEdit_, tr("error.country")))
183 valid = false;
184 if (!checkValid(birthDateEdit_, tr("error.birthdate")))
185 valid = false;
186 if (!checkValid(childCountEdit_, tr("error.childcount")))
187 valid = false;
188
189 return valid;
190}
bool checkValid(WFormWidget *edit, const WString &text)
Validate a single form field.
Definition Form.C:158
virtual void clear()

Member Data Documentation

◆ birthDateEdit_

WDateEdit* Form::birthDateEdit_
private

Definition at line 61 of file Form.h.

◆ childCountEdit_

WLineEdit* Form::childCountEdit_
private

Definition at line 62 of file Form.h.

◆ cityEdit_

WComboBox* Form::cityEdit_
private

Definition at line 59 of file Form.h.

◆ countryEdit_

WComboBox* Form::countryEdit_
private

Definition at line 58 of file Form.h.

◆ feedbackMessages_

WContainerWidget* Form::feedbackMessages_
private

Definition at line 53 of file Form.h.

◆ firstNameEdit_

WLineEdit* Form::firstNameEdit_
private

Definition at line 56 of file Form.h.

◆ nameEdit_

WLineEdit* Form::nameEdit_
private

Definition at line 55 of file Form.h.

◆ remarksEdit_

WTextArea* Form::remarksEdit_
private

Definition at line 65 of file Form.h.

◆ weightEdit_

WLineEdit* Form::weightEdit_
private

Definition at line 63 of file Form.h.


The documentation for this class was generated from the following files:

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