WWidget *FormWidgets::wPopupMenu() { WContainerWidget *result = new WContainerWidget(); topic("WPopupMenu", "WPopupMenuItem", result); addText(tr("formwidgets-WPopupMenu"), result); WPopupMenu *popup = new WPopupMenu(); popup->setAutoHide(true, 1000); popup->addItem("icons/house.png", "Build a house"); popup->addItem("Roof included")->setCheckable(true); popup->addItem("Add a door")->setDisabled(true); popup->addSeparator(); popup->addItem("Add a window"); WPopupMenu *subMenu = new WPopupMenu(); subMenu->addItem("Add a chair"); subMenu->addItem("Add a table"); popup->addMenu("Add furniture", subMenu); popup->aboutToHide().connect(boost::bind(&FormWidgets::popupAction, this, popup)); WLabel* clickMe = new WLabel("Clicking here will show a popup menu.", result); clickMe->setStyleClass("popupmenuLabel"); clickMe->clicked().connect(popup, &WPopupMenu::popup); return result; }
/// // Constructor // LoginPage::LoginPage(WContainerWidget *parent) : WContainerWidget(parent), mLoggedIn(false), mLogoutRequested(false) { setStyleClass("maindiv"); WLabel* loginText = new WLabel("Enter username and password:"******""); WText *userNameText = new WText("User Name:"); mPasswordLineEdit = new WLineEdit(""); mPasswordLineEdit->setEchoMode(WLineEdit::Password); WText *passwordText = new WText("Password:"******"Login"); WGridLayout *loginLayout = new WGridLayout(); loginLayout->addWidget(userNameText, 0, 0, AlignRight); loginLayout->addWidget(mUserNameLineEdit, 0, 1, AlignLeft); loginLayout->addWidget(passwordText, 1, 0, AlignRight); loginLayout->addWidget(mPasswordLineEdit, 1, 1, AlignLeft); WGridLayout *textLayout = new WGridLayout(); textLayout->addWidget(loginText, 0, 0, AlignCenter); WGridLayout *buttonLayout = new WGridLayout(); buttonLayout->addWidget(loginButton, 0, 0, AlignCenter | AlignMiddle); WImage *chbLogo = new WImage(tr("logo-image").toUTF8()); WGridLayout *chbLogoLayout = new WGridLayout(); chbLogoLayout->addWidget(chbLogo, 0, 0, AlignCenter); WLabel *titleLabel = new WLabel(tr("page-top-text")); titleLabel->setStyleClass("logintitlediv"); WGridLayout *titleLayout = new WGridLayout(); titleLayout->addWidget(titleLabel, 0, 0, AlignCenter); WContainerWidget *loginContainer = new WContainerWidget(); loginContainer->setStyleClass("logindiv"); mFailureLabel = new WLabel("Invalid username and/or password. Try again."); mFailureLabel->setStyleClass("redtext"); WVBoxLayout *layout = new WVBoxLayout(); layout->addLayout(chbLogoLayout, AlignCenter); layout->addLayout(titleLayout, AlignCenter); layout->addLayout(textLayout, AlignCenter); layout->addLayout(loginLayout); layout->addWidget(mFailureLabel); layout->addLayout(buttonLayout, AlignCenter | AlignMiddle); mFailureLabel->hide(); loginContainer->setLayout(layout, AlignTop); WVBoxLayout *pageLayout = new WVBoxLayout(); pageLayout->addWidget(loginContainer); pageLayout->addWidget(new WText(tr("login-page-text"))); setLayout(pageLayout, AlignMiddle | AlignCenter); loginButton->clicked().connect(SLOT(this, LoginPage::login)); mPasswordLineEdit->enterPressed().connect(SLOT(this, LoginPage::login)); resetAll(); }