void HangmanWidget::createAlphabet(WContainerWidget *parent) { LetterButtonLayout = new WTable(parent); // The default width of a table is 100%... LetterButtonLayout->resize(WLength(13*30), WLength()); WSignalMapper<WPushButton *> *mapper = new WSignalMapper<WPushButton *>(this); for(unsigned int i = 0; i < 26; ++i) { std::wstring c(1, 'A' + i); WPushButton *character = new WPushButton(c, LetterButtonLayout->elementAt(i / 13, i % 13)); LetterButtons.push_back(character); character->resize(WLength(30), WLength()); mapper->mapConnect(character->clicked, character); } mapper->mapped.connect(SLOT(this, HangmanWidget::processButton)); }
WWidget *Cms::Layout() { Div *container = new Div("Cms", "cms-layout container-fluid"); Div *noScript = new Div(container); noScript->addWidget(new WText(tr("no-script"))); CgiRoot *cgiRoot = static_cast<CgiRoot *>(WApplication::instance()); CgiEnv *cgiEnv = cgiRoot->GetCgiEnvInstance(); string htmlData; string file; if (cgiEnv->GetCurrentLanguage() == CgiEnv::Language::Fa) { file = "../templates/cms-fa.wtml"; } else { file = "../templates/cms.wtml"; } if (CoreLib::FileSystem::Read(file, htmlData)) { WTemplate *tmpl = new WTemplate(container); tmpl->setTemplateText(WString::fromUTF8(htmlData), TextFormat::XHTMLUnsafeText); tmpl->bindWidget("brand-title", new WText(tr("cms-page-title"))); WText *dashboard = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-dashboard fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard")), TextFormat::XHTMLUnsafeText); WText *newsletter = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-newspaper-o fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-newsletter")), TextFormat::XHTMLUnsafeText); WText *subscribers = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-users fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-subscribers")), TextFormat::XHTMLUnsafeText); WText *contacts = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-envelope-o fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-contacts")), TextFormat::XHTMLUnsafeText); WText *settings = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-gears fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-settings")), TextFormat::XHTMLUnsafeText); WText *changeEmail = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-envelope-o fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-admin-change-email")), TextFormat::XHTMLUnsafeText); WText *changePassword = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-key fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-admin-change-password")), TextFormat::XHTMLUnsafeText); WText *sysmon = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-line-chart fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-system-monitor")), TextFormat::XHTMLUnsafeText); WText *switchLanguage = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-refresh fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-switch-language")), TextFormat::XHTMLUnsafeText); WText *exit = new WText( WString("<div><a href=\"javascript:;\"><i class=\"fa fa-sign-out fa-lg\"></i> {1}</a></div>") .arg(tr("cms-dashboard-exit")), TextFormat::XHTMLUnsafeText); dashboard->setId("menu-item-dashboard"); newsletter->setId("menu-item-newsletter"); subscribers->setId("menu-item-subscribers"); contacts->setId("menu-item-contacts"); settings->setId("menu-item-settings"); changeEmail->setId("menu-item-change-email"); changePassword->setId("menu-item-change-password"); sysmon->setId("menu-item-system-monitor"); switchLanguage->setId("menu-item-switch-language"); exit->setId("menu-item-exit"); tmpl->bindWidget("dashboard", dashboard); tmpl->bindWidget("newsletter", newsletter); tmpl->bindWidget("subscribers", subscribers); tmpl->bindWidget("contacts", contacts); tmpl->bindWidget("settings", settings); tmpl->bindWidget("admin", new WText(tr("cms-dashboard-admin"))); tmpl->bindWidget("change-email", changeEmail); tmpl->bindWidget("change-password", changePassword); tmpl->bindWidget("system-monitor", sysmon); tmpl->bindWidget("switch-language", switchLanguage); tmpl->bindWidget("exit", exit); m_pimpl->Contents = new Wt::WStackedWidget(); m_pimpl->Contents->addWidget(new CmsDashboard()); m_pimpl->Contents->addWidget(new CmsNewsletter()); m_pimpl->Contents->addWidget(new CmsSubscribers()); m_pimpl->Contents->addWidget(new CmsContacts()); m_pimpl->Contents->addWidget(new CmsSettings()); m_pimpl->Contents->addWidget(new CmsChangeEmail()); m_pimpl->Contents->addWidget(new CmsChangePassword()); m_pimpl->SystemMonitor = new SysMon(); m_pimpl->Contents->addWidget(m_pimpl->SystemMonitor); tmpl->bindWidget("stcked-widget", m_pimpl->Contents); WSignalMapper<WText *, WStackedWidget *> *menuItemSignalMapper = new WSignalMapper<WText *, WStackedWidget *>(m_pimpl.get()); menuItemSignalMapper->mapped().connect(m_pimpl.get(), &Cms::Impl::OnMenuItemPressed); menuItemSignalMapper->mapConnect(dashboard->clicked(), dashboard); menuItemSignalMapper->mapConnect(newsletter->clicked(), newsletter); menuItemSignalMapper->mapConnect(subscribers->clicked(), subscribers); menuItemSignalMapper->mapConnect(contacts->clicked(), contacts); menuItemSignalMapper->mapConnect(settings->clicked(), settings); menuItemSignalMapper->mapConnect(changeEmail->clicked(), changeEmail); menuItemSignalMapper->mapConnect(changePassword->clicked(), changePassword); menuItemSignalMapper->mapConnect(sysmon->clicked(), sysmon); menuItemSignalMapper->mapConnect(switchLanguage->clicked(), switchLanguage); menuItemSignalMapper->mapConnect(exit->clicked(), exit); } return container; }
WWidget *RootLogin::Layout() { m_cgiRoot->setTitle(m_lang->GetString("ROOT_LOGIN_TITLE")); Div *root = new Div("RootLogin"); Div *dvNoScript = new Div(root, "dvNoScript"); new WText(m_lang->GetString("WARN_NO_SCRIPT"), dvNoScript); Div *dvLogin = new Div(root, "dvLogin"); new WText(m_lang->GetString("ROOT_LOGIN_FORM_TITLE"), dvLogin); Div *dvLangBar = new Div(dvLogin, "dvLangBar"); new WText(L"<span style=\"color: #333; font-family: Tahoma !important; letter-spacing: 1px;\">" "<a href=\"?enroot\" style=\"color: #666; text-decoration: none;\">EN</a>" " | " "<a href=\"?faroot\" style=\"color: #666; text-decoration: none;\">فا</a>" "</span>", dvLangBar); Div *dvLoginForm = new Div(dvLogin, "dvLoginForm", "form"); WGridLayout *dvLoginFormLayout = new WGridLayout(); m_loginUserEdit = new WLineEdit(); m_loginPwdEdit = new WLineEdit(); m_loginPwdEdit->setEchoMode(WLineEdit::Password); m_loginCaptchaEdit = new WLineEdit(); dvLoginFormLayout->addWidget(new WText(m_lang->GetString("ROOT_LOGIN_FORM_USER_TEXT")), 0, 0, AlignLeft | AlignMiddle); dvLoginFormLayout->addWidget(m_loginUserEdit, 0, 1); dvLoginFormLayout->addWidget(new WText(m_lang->GetString("ROOT_LOGIN_FORM_PWD_TEXT")), 1, 0, AlignLeft | AlignMiddle); dvLoginFormLayout->addWidget(m_loginPwdEdit, 1, 1); dvLoginFormLayout->addWidget(new WText(m_lang->GetString("ROOT_LOGIN_FORM_CAPTCHA_TEXT")), 2, 0, AlignLeft | AlignMiddle); dvLoginFormLayout->addWidget(m_loginCaptchaEdit, 2, 1); dvLoginFormLayout->setVerticalSpacing(11); dvLoginFormLayout->setColumnStretch(0, 100); dvLoginFormLayout->setColumnStretch(1, 200); dvLoginForm->resize(300, WLength::Auto); dvLoginForm->setLayout(dvLoginFormLayout); m_loginCaptchaImage = m_captcha->GenCap(); dvLogin->addWidget(m_loginCaptchaImage); m_errLoginText = new WText(dvLogin); WPushButton *loginBtn = new WPushButton(m_lang->GetString("ROOT_LOGIN_FORM_LOGIN_TEXT"), dvLogin); loginBtn->setStyleClass("formButton"); WText *forgotLink = new WText( L"<p style=\"text-align: right !important; margin-top: 25px;\">" + m_lang->GetString("ROOT_LOGIN_FORM_FORGOT_TEXT") + L"</p>", dvLogin); forgotLink->setStyleClass("link"); m_dvForgot = new Div(dvLogin, "dvForgot"); m_forgotFormFlag = false; Div *dvCopyright = new Div(root, "dvCopyright"); new WText(Base::Copyright(m_cgiEnv->CurrentLang), dvCopyright); WSignalMapper<WText *> *forgotMap = new WSignalMapper<WText *>(this); forgotMap->mapped().connect(this, &RootLogin::ForgotForm); forgotMap->mapConnect(forgotLink->clicked(), forgotLink); WLengthValidator *loginUserValidator = new WLengthValidator(Base::MIN_USERNAME_LENGTH, Base::MAX_USERNAME_LENGTH); loginUserValidator->setMandatory(true); m_loginUserEdit->setValidator(loginUserValidator); WLengthValidator *loginPwdValidator = new WLengthValidator(Base::MIN_PASSWORD_LENGTH, Base::MAX_PASSWORD_LENGTH); loginPwdValidator->setMandatory(true); m_loginPwdEdit->setValidator(loginPwdValidator); m_loginCaptchaValidator = new WIntValidator(m_captcha->Result, m_captcha->Result); m_loginCaptchaValidator->setMandatory(true); m_loginCaptchaEdit->setValidator(m_loginCaptchaValidator); m_loginUserEdit->enterPressed().connect(this, &RootLogin::LoginOK); m_loginPwdEdit->enterPressed().connect(this, &RootLogin::LoginOK); m_loginCaptchaEdit->enterPressed().connect(this, &RootLogin::LoginOK); loginBtn->clicked().connect(this, &RootLogin::LoginOK); return root; }