MainPage::MainPage( const WEnvironment& env) : WApplication(env) { setTitle("Main page"); this->useStyleSheet(AppPaths::cssFile); // Remove this 2 lines??? userList = new WContainerWidget(root()); userList->setStyleClass("list"); // Remove it? WContainerWidget *t = new WContainerWidget(); t->setInline(false); t->show(); t->setStyleClass("big"); // Remove it? WStackedWidget *main = new WStackedWidget(root()); main->setStyleClass(""); root()->removeWidget(main); Wt::WHBoxLayout *loginLayout = new Wt::WHBoxLayout(root()); LoginWidget *login = new LoginWidget(); loginLayout->addWidget(login); login->loggedIn().connect(this,&MainPage::setMainPage); }
Tester::Tester(const Wt::WEnvironment& env) : Wt::WApplication(env) { setTheme(new Wt::WBootstrapTheme()); useStyleSheet("resources/lpeg_tester.css"); Wt::WContainerWidget* container = new Wt::WContainerWidget(); container->setStyleClass("page"); Wt::WVBoxLayout* vbox = new Wt::WVBoxLayout(); container->setLayout(vbox); vbox->addWidget(Title(), 1); Wt::WHBoxLayout* hbox = new Wt::WHBoxLayout(); vbox->addLayout(hbox); hbox->addWidget(Input(), 1); hbox->addWidget(Result(), 1); root()->addWidget(container); HandleInternalPath(internalPath()); internalPathChanged().connect(this, &Tester::HandleInternalPath); }
/*! * \brief Конструктор класса сайта. * \param[in] Класс хранения окружения сайта */ CompanyesApplication(const Wt::WEnvironment& env) : Wt::WApplication(env) { this->messageResourceBundle().use(this->appRoot() + "rus_locale"); this->useStyleSheet(this->appRoot() + "main.css"); this->setTitle(Wt::WString::tr("Title")); Wt::WApplication *app = Wt::WApplication::instance(); app->setLoadingIndicator(new Wt::WOverlayLoadingIndicator()); app->styleSheet().addRule("body", "margin: 0px"); Wt::WStackedWidget* contents = new Wt::WStackedWidget(); contents->setOverflow(Wt::WContainerWidget::OverflowAuto); contents->setPositionScheme(Wt::Relative); Wt::WMenu* menu = new Wt::WMenu(contents, Wt::Vertical, 0); menu->setRenderAsList(true); menu->setStyleClass("menu"); std::string absolute_path = boost::filesystem::system_complete(boost::filesystem::path(".")).string(); new RegionsCreator(absolute_path, contents, menu); Wt::WHBoxLayout* hlayout = new Wt::WHBoxLayout(); hlayout->addWidget(menu, 0); hlayout->addWidget(contents, 1); Wt::WVBoxLayout* vlayout = new Wt::WVBoxLayout(this->root()); vlayout->addWidget(new Wt::WText(Wt::WString::tr("Header")), 0); vlayout->addLayout(hlayout, 1); }
HeightLines::HeightLines() { museums.set("mapbox://mapbox.2opop9hr"); contours.set("mapbox://mapbox.mapbox-terrain-v2"); museumLayer.set(&museums); museumLayer.sourceLayer("museum-cusco"); museumLayer.radius(8); museumLayer.color(Wt::WColor(55, 148, 179)); contourLayer.set(&contours); contourLayer.sourceLayer("contour"); contourLayer.join(MapBox::JOIN::Round); contourLayer.cap(MapBox::CAP::Round); contourLayer.color(Wt::WColor("#877b59")); contourLayer.width(1); resize(250, 100); Wt::WVBoxLayout * vbox = new Wt::WVBoxLayout(); setLayout(vbox); Wt::WHBoxLayout * hbox = new Wt::WHBoxLayout(); vbox->addLayout(hbox); Wt::WText * t = new Wt::WText("Width: ", this); t->setMargin(10); hbox->addWidget(t); Wt::WSlider * slider = new Wt::WSlider(this); slider->resize(200, 12); slider->setMinimum(1); slider->setMaximum(10); slider->setValue(1); hbox->addWidget(slider); slider->valueChanged().connect(std::bind([=]() { contourLayer.width(slider->value()); })); hbox = new Wt::WHBoxLayout(); vbox->addLayout(hbox); t = new Wt::WText("Blur: ", this); t->setMargin(10); hbox->addWidget(t); slider = new Wt::WSlider(this); slider->resize(200, 12); slider->setMinimum(0); slider->setMaximum(10); slider->setValue(0); hbox->addWidget(slider); slider->valueChanged().connect(std::bind([=]() { contourLayer.blur(slider->value()); })); }
Wt::WContainerWidget* WidgetsCommon::CreateWidget() { PhidgetsInfo* item = ::GetPhidgetManager()->FindPhidgetBySerial(GetSerial()); if (!item) return NULL; CPhidgetHandle handle = item->m_phidget->GetHandle(); Wt::WContainerWidget* tab_container = new Wt::WContainerWidget(); Wt::WHBoxLayout* hbox = new Wt::WHBoxLayout(tab_container); Wt::WTable* table = new Wt::WTable(); hbox->addWidget(table); table->columnAt(0)->setWidth(GetLeftColumnWidth()); table->columnAt(1)->setWidth(Wt::WLength::Auto); int row = 0; const char* string_value; int int_value; if (EPHIDGET_OK == CPhidget_getDeviceName(handle, &string_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("DeviceName"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString(string_value, Wt::UTF8))); } if (EPHIDGET_OK == CPhidget_getSerialNumber(handle, &int_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("SerialNumber"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString("{1}").arg(int_value))); } if (EPHIDGET_OK == CPhidget_getDeviceVersion(handle, &int_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("DeviceVersion"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString("{1}").arg(int_value))); } if (EPHIDGET_OK == CPhidget_getDeviceStatus(handle, &int_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("DeviceStatus"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString("{1}").arg(int_value))); } if (EPHIDGET_OK == CPhidget_getDeviceType(handle, &string_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("DeviceType"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString(string_value, Wt::UTF8))); } if (EPHIDGET_OK == CPhidget_getDeviceLabel(handle, &string_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("DeviceLabel"))); table->elementAt(row++, 1)->addWidget(new Wt::WText(Wt::WString(string_value, Wt::UTF8))); } return tab_container; }
Wt::WApplication *createApplication(const Wt::WEnvironment& env) { Wt::WApplication* app = new Wt::WApplication(env); if (app->appRoot().empty()) { std::cerr << "!!!!!!!!!!" << std::endl << "!! Warning: read the README.md file for hints on deployment," << " the approot looks suspect!" << std::endl << "!!!!!!!!!!" << std::endl; } // app->setLayoutDirection(Wt::RightToLeft); // Choice of theme: defaults to bootstrap3 but can be overridden using // a theme parameter (for testing) const std::string *themePtr = env.getParameter("theme"); std::string theme; if (!themePtr) theme = "bootstrap3"; else theme = *themePtr; if (theme == "bootstrap3") { Wt::WBootstrapTheme *bootstrapTheme = new Wt::WBootstrapTheme(app); bootstrapTheme->setVersion(Wt::WBootstrapTheme::Version3); bootstrapTheme->setResponsive(true); app->setTheme(bootstrapTheme); // load the default bootstrap3 (sub-)theme app->useStyleSheet("resources/themes/bootstrap/3/bootstrap-theme.min.css"); } else if (theme == "bootstrap2") { Wt::WBootstrapTheme *bootstrapTheme = new Wt::WBootstrapTheme(app); bootstrapTheme->setResponsive(true); app->setTheme(bootstrapTheme); } else app->setTheme(new Wt::WCssTheme(theme)); // load text bundles (for the tr() function) app->messageResourceBundle().use(app->appRoot() + "report"); app->messageResourceBundle().use(app->appRoot() + "text"); app->messageResourceBundle().use(app->appRoot() + "src"); Wt::WHBoxLayout *layout = new Wt::WHBoxLayout(app->root()); layout->setContentsMargins(0, 0, 0, 0); layout->addWidget(new WidgetGallery()); app->setTitle("Wt Widget Gallery"); app->useStyleSheet("style/everywidget.css"); app->useStyleSheet("style/dragdrop.css"); app->useStyleSheet("style/combostyle.css"); app->useStyleSheet("style/pygments.css"); app->useStyleSheet("style/layout.css"); app->useStyleSheet("style/filedrop.css"); return app; }
void WHexDump::init() { Wt::WVBoxLayout *vbox = new Wt::WVBoxLayout; setLayout(vbox); Wt::WContainerWidget *actionsBox = new Wt::WContainerWidget; vbox->addWidget(actionsBox); { new Wt::WText("Goto: ", actionsBox); wAddressEdit_ = new Wt::WLineEdit(actionsBox); wAddressEdit_->enterPressed().connect(this, &WHexDump::handleGoto); new Wt::WBreak(actionsBox); new Wt::WText("Search: ", actionsBox); wSearchEdit_ = new Wt::WLineEdit(actionsBox); wSearchEdit_->keyPressed().connect(this, &WHexDump::resetSearch); wSearchNext_ = new Wt::WPushButton("Find", actionsBox); wSearchNext_->clicked().connect(this, &WHexDump::handleSearch); wSearchResults_ = new Wt::WText("Enter a big-endian hexadecimal value", actionsBox); } Wt::WContainerWidget *tableContainer = new Wt::WContainerWidget; vbox->addWidget(tableContainer, 1 /*stretch*/); Wt::WHBoxLayout *hbox = new Wt::WHBoxLayout; // so the table scrolls horizontally tableContainer->setLayout(hbox); model_ = new HexDumpModel; tableView_ = new Wt::WTableView; tableView_->setModel(model_); tableView_->setRowHeaderCount(1); // this must be first property set tableView_->setHeaderHeight(28); tableView_->setSortingEnabled(false); tableView_->setAlternatingRowColors(false); // true interferes with our blacking out unmapped addresses tableView_->setColumnResizeEnabled(true); tableView_->setSelectionMode(Wt::SingleSelection); tableView_->setEditTriggers(Wt::WAbstractItemView::NoEditTrigger); tableView_->setColumnWidth(addressColumn, Wt::WLength(6, Wt::WLength::FontEm)); tableView_->setColumnWidth(sep1Column, Wt::WLength(1, Wt::WLength::FontEm)); tableView_->setColumnWidth(sep2Column, Wt::WLength(1, Wt::WLength::FontEm)); for (size_t i=0; i<bytesPerRow; ++i) { int extra = 7==i%8 && i+1<bytesPerRow ? 1 : 0; tableView_->setColumnWidth(bytesColumn + i, Wt::WLength(2+extra, Wt::WLength::FontEm)); tableView_->setColumnWidth(asciiColumn + i, Wt::WLength(2+extra, Wt::WLength::FontEm)); } tableView_->clicked().connect(boost::bind(&WHexDump::handleClick, this, _1)); hbox->addWidget(tableView_); }
Wt::WMenuItem *WidgetGallery::addToMenu(Wt::WMenu *menu, const Wt::WString& name, TopicWidget *topic) { Wt::WContainerWidget *result = new Wt::WContainerWidget(); Wt::WContainerWidget *pane = new Wt::WContainerWidget(); Wt::WVBoxLayout *vLayout = new Wt::WVBoxLayout(result); vLayout->setContentsMargins(0, 0, 0, 0); vLayout->addWidget(topic); vLayout->addWidget(pane, 1); Wt::WHBoxLayout *hLayout = new Wt::WHBoxLayout(pane); Wt::WMenuItem *item = new Wt::WMenuItem(name, result); menu->addItem(item); Wt::WStackedWidget *subStack = new Wt::WStackedWidget(); subStack->addStyleClass("contents"); subStack->setOverflow(WContainerWidget::OverflowAuto); /* Wt::WAnimation animation(Wt::WAnimation::Fade, Wt::WAnimation::Linear, 100); subStack->setTransitionAnimation(animation, true); */ Wt::WMenu *subMenu = new Wt::WMenu(subStack); subMenu->addStyleClass("nav-pills nav-stacked"); subMenu->setWidth(200); hLayout->addWidget(subMenu); hLayout->addWidget(subStack,1); subMenu->setInternalPathEnabled(); subMenu->setInternalBasePath("/" + item->pathComponent()); topic->populateSubMenu(subMenu); return item; }
Wt::WContainerWidget* SensorWidget::CreateWidget() { Wt::WContainerWidget* sensor_container = new Wt::WContainerWidget(); Wt::WHBoxLayout* hbox = new Wt::WHBoxLayout(sensor_container); m_raw_value_edit = new Wt::WLineEdit(); m_raw_value_edit->setEnabled(false); hbox->addWidget(m_raw_value_edit); m_function_dropdown = new Wt::WComboBox(); ::GetSensorFunctions()->PopulateDropdown(m_function_dropdown, m_ratiometric); m_function_dropdown->activated().connect(boost::bind(&SensorWidget::OnWtFunctionChanged, this)); hbox->addWidget(m_function_dropdown); m_converted_value_edit = new Wt::WLineEdit(); m_converted_value_edit->setEnabled(false); hbox->addWidget(m_converted_value_edit); return sensor_container; }
void MainPage::setMainPage(){ Wt::WHBoxLayout *mainLayout = new Wt::WHBoxLayout(); root()->setLayout(mainLayout); mainLayout->setContentsMargins(0, 10, 0, 0); mainLayout->setSpacing(0); Wt::WStackedWidget *contents = new Wt::WStackedWidget(0); contents->setOverflow(WContainerWidget::OverflowAuto); contents->setStyleClass("contentsp"); contents->setPositionScheme(Relative); // without needs testing on IE... // create a menu Wt::WMenu *menu = new Wt::WMenu(contents, Wt::Vertical, 0); menu->setRenderAsList(true); menu->addStyleClass("menu"); mainLayout->addWidget(menu); mainLayout->addWidget(contents,1); mainLayout->addWidget(new Notification()); TabWidget *ftp = new TabWidget(); ftp->addTab("General options", new Wt::WText("Not yet available")); ftp->addTab("Users management", new FtpUserController()); TabWidget *samba = new TabWidget(); samba->addTab("General options", new Wt::WText("Not yet available")); samba->addTab("More options", new Wt::WText("Not yet available")); menu->addItem("FTP", ftp); menu->addItem("Samba", samba); std::vector<WWidget*>::const_iterator a; for(a = root()->children().begin(); a < (root()->children().end()); a++){ if (dynamic_cast<WText*>(*a) != NULL) { std::cout << dynamic_cast<WText*>(*a)->text() << std::endl; } } }
void studentPasswords::create() { Wt::WPanel * panel = new Wt::WPanel(this); panel->setStyleClass("panel panel-primary"); panel->setTitle("<h3>Wachtwoorden Administratie</h3>"); panel->setMinimumSize(800, 800); panel->setMaximumSize(800, Wt::WLength::Auto); panel->setMargin("0 auto"); Wt::WContainerWidget * content = new Wt::WContainerWidget(); panel->setCentralWidget(content); content->setPadding("1%"); buttons = new Wt::WContainerWidget(content); Wt::WHBoxLayout * buttonLayout = new Wt::WHBoxLayout(); buttons->setLayout(buttonLayout); Wt::WPopupMenu * popup = new Wt::WPopupMenu(); Wt::WPushButton * button = new Wt::WPushButton(); button->setMenu(popup); button->setText("Selecteer een klas"); buttonLayout->addWidget(button); Wt::WPushButton * button2 = new Wt::WPushButton(); button2->setText("Selectie Aanpassen"); button2->setStyleClass("btn btn-success"); buttonLayout->addWidget(button2); button2->clicked().connect(this, &studentPasswords::changePasswords); Wt::WContainerWidget * tableContent = new Wt::WContainerWidget(content); table = new Wt::WTable(tableContent); // add classes Wt::WPopupMenu * subMenu[7]; for(int i = 0; i < 7; i++) { subMenu[i] = new Wt::WPopupMenu(); if(i == 0) { popup->addMenu("1ste jaar", subMenu[i]); } else { string s = string(i+1) + "de jaar"; popup->addMenu(s.wt(), subMenu[i]); } } CLASSES & classes = server->getClasses(); for(int i = 0; i < classes.elms(); i++) { string name = classes[i].cn().get(); if(name.empty()) continue; int year = -1; switch(name[0]) { case '1': year = 0; break; case '2': year = 1; break; case '3': year = 2; break; case '4': year = 3; break; case '5': year = 4; break; case '6': year = 5; break; case '7': year = 6; break; } if(year < 0) continue; subMenu[year]->addItem(name.wt())->triggered().connect(std::bind([=] () { showClass(name); })); } progress = new Wt::WProgressBar(content); progress->hide(); anchor = new Wt::WAnchor(Wt::WLink(&pfile), "Download passwords", content); anchor->setTarget(Wt::TargetNewWindow); anchor->clicked().connect(this, &studentPasswords::reset); anchor->hide(); }
// The env argument contains information about the new session, and the initial request. // It must be passed to the WApplication // constructor so it is typically also an argument // for your custom application constructor. DensityApp::DensityApp(const WEnvironment& env, RInside & R) : WApplication(env), R_(R) { setTitle("Witty WebApp With RInside"); // application title std::string tfcmd = "tfile <- tempfile(pattern=\"img\", tmpdir=\"/tmp\", fileext=\".png\")"; tempfile_ = Rcpp::as<std::string>(R_.parseEval(tfcmd)); // assign to 'tfile' in R, and report back bw_ = 100; kernel_ = 0; // parameters used to estimate the density cmd_ = "c(rnorm(100,0,1), rnorm(50,5,1))"; // random draw command string Wt::WGroupBox *wc = new Wt::WGroupBox("Density Estimation", root()); Wt::WHBoxLayout *layout = new Wt::WHBoxLayout(); Wt::WContainerWidget *midbox = new Wt::WContainerWidget(root()); layout->addWidget(midbox); Wt::WContainerWidget *container = new Wt::WContainerWidget(root()); layout->addWidget(container); wc->setLayout(layout, AlignTop | AlignJustify); midbox->addWidget(new WText("Density estimation scale factor (div. by 100)")); midbox->addWidget(new WBreak()); // insert a line break spin_ = new WSpinBox(midbox); spin_->setRange(5, 200); spin_->setValue(bw_); spin_->valueChanged().connect(this, &DensityApp::reportSpinner); midbox->addWidget(new WBreak()); // insert a line break midbox->addWidget(new WText("R Command for data generation")); // show some text midbox->addWidget(new WBreak()); // insert a line break codeEdit_ = new WLineEdit(midbox); // allow text input codeEdit_->setTextSize(30); codeEdit_->setText(cmd_); codeEdit_->setFocus(); // give focus codeEdit_->enterPressed().connect(this, &DensityApp::reportEdit); group_ = new Wt::WButtonGroup(container); // use button group to arrange radio buttons Wt::WRadioButton *button; button = new Wt::WRadioButton("Gaussian", container); new Wt::WBreak(container); group_->addButton(button, Gaussian); button = new Wt::WRadioButton("Epanechnikov", container); new Wt::WBreak(container); group_->addButton(button, Epanechnikov); button = new Wt::WRadioButton("Rectangular", container); new Wt::WBreak(container); group_->addButton(button, Rectangular); button = new Wt::WRadioButton("Triangular", container); new Wt::WBreak(container); group_->addButton(button, Triangular); button = new Wt::WRadioButton("Cosine", container); new Wt::WBreak(container); group_->addButton(button, Cosine); group_->setCheckedButton(group_->button(kernel_)); group_->checkedChanged().connect(this, &DensityApp::reportButton); Wt::WGroupBox *botbox = new Wt::WGroupBox("Resulting chart", root()); imgfile_ = new Wt::WFileResource("image/png", tempfile_); imgfile_->suggestFileName("density.png"); // name the clients sees of datafile img_ = new Wt::WImage(imgfile_, "PNG version", botbox); Wt::WGroupBox *stbox = new Wt::WGroupBox("Status", root()); greeting_ = new WText(stbox); // empty text greeting_->setText("Setting up..."); reportEdit(); // create a new RNG draw in Yvec_ plot(); // and draw a new density plot }
RSWappSearchFilesPage::RSWappSearchFilesPage(Wt::WContainerWidget *parent,RsFiles *mfiles) : WCompositeWidget(parent),mFiles(mfiles) { setImplementation(_impl = new Wt::WContainerWidget()) ; //_treeView = new Wt::WTreeView(_impl); _tableView = new Wt::WTableView(_impl); Wt::WVBoxLayout *layout = new Wt::WVBoxLayout() ; _impl->setLayout(layout) ; search_box = new Wt::WLineEdit(_impl) ; search_box->setText("mp3") ; search_box->enterPressed().connect(this,&RSWappSearchFilesPage::searchClicked) ; //search_box->setHeight(50) ; localcb = new Wt::WCheckBox(Wt::WString("Search Local"),_impl) ; remotecb = new Wt::WCheckBox(Wt::WString("Search Remote"),_impl) ; distantcb = new Wt::WCheckBox(Wt::WString("Search Distant"),_impl) ; localcb->setChecked(false); remotecb->setChecked(true); distantcb->setChecked(true); Wt::WPushButton *btn = new Wt::WPushButton("Search!") ; btn->clicked().connect(this,&RSWappSearchFilesPage::searchClicked) ; Wt::WContainerWidget *hSearchBox = new Wt::WContainerWidget(); Wt::WHBoxLayout *hSearchLayout = new Wt::WHBoxLayout ; hSearchBox->setLayout(hSearchLayout); hSearchLayout->addWidget(search_box) ; hSearchLayout->addWidget(localcb); hSearchLayout->addWidget(distantcb); hSearchLayout->addWidget(remotecb); hSearchLayout->addWidget(btn) ; layout->addWidget(hSearchBox) ; search_box->setWidth(1000); _tableView->setAlternatingRowColors(true); _tableView->setSelectionMode(Wt::ExtendedSelection); _tableView->setDragEnabled(true); _tableView->setColumnWidth(0, 250); _tableView->setColumnWidth(1, 150); _tableView->setColumnWidth(2, 250); _tableView->setColumnWidth(3, 150); _tableView->setColumnWidth(4, 150); _tableView->setColumnWidth(5, 100); _shared_files_model = new LocalSearchFilesModel(mfiles) ; _tableView->setModel(_shared_files_model) ; _tableView->doubleClicked().connect(this,&RSWappSearchFilesPage::tableClicked) ; layout->addWidget(_tableView,1) ; _tableView->setHeight(300) ; Wt::WPushButton *dlbtn = new Wt::WPushButton("Download selected") ; dlbtn->clicked().connect(this,&RSWappSearchFilesPage::searchClicked) ; layout->addWidget(dlbtn) ; _timer = new Wt::WTimer(this) ; _timer->setInterval(5000) ; _timer->timeout().connect(this,&RSWappSearchFilesPage::refresh) ; _timer->start() ; }
Wt::WContainerWidget* WidgetsInterfaceKit::CreateWidget() { Wt::WContainerWidget* tab_container = new Wt::WContainerWidget(); Wt::WVBoxLayout* vbox = new Wt::WVBoxLayout(tab_container); Wt::WGroupBox* spesific_box = new Wt::WGroupBox(Wt::WString::tr("PhidgetInterfaceKit")); vbox->addWidget(spesific_box); Wt::WHBoxLayout* hbox = new Wt::WHBoxLayout(spesific_box); Wt::WTable* table = new Wt::WTable(); hbox->addWidget(table); table->columnAt(0)->setWidth(GetLeftColumnWidth()); table->columnAt(1)->setWidth(Wt::WLength::Auto); int row = 0; int i, int_value; bool ratiometric = true; /* Ratiometric */ table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Ratiometric"))); m_ratiometric_checkbox = new Wt::WCheckBox(); table->elementAt(row++, 1)->addWidget(m_ratiometric_checkbox); m_ratiometric_checkbox->changed().connect(boost::bind(&WidgetsInterfaceKit::OnWtRatiometricStateChanged, this, m_ratiometric_checkbox)); if (EPHIDGET_OK == CPhidgetInterfaceKit_getRatiometric(m_phidget->GetNativeHandle(), &int_value)) { ratiometric = (PTRUE == int_value); m_ratiometric_checkbox->setChecked(ratiometric); } /* Sensors */ if (EPHIDGET_OK == CPhidgetInterfaceKit_getSensorCount(m_phidget->GetNativeHandle(), &int_value)) { m_sensor_widget_array_length = int_value; m_sensor_widget_array = new SensorWidget*[m_sensor_widget_array_length]; for (i=0; i<m_sensor_widget_array_length; i++) { m_sensor_widget_array[i] = new SensorWidget(m_phidget, i, ratiometric); table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("SensorArgs").arg(i))); table->elementAt(row++, 1)->addWidget(m_sensor_widget_array[i]->CreateWidget()); } } /* Input */ if (EPHIDGET_OK == CPhidgetInterfaceKit_getInputCount(m_phidget->GetNativeHandle(), &int_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Input"))); Wt::WTable* input_table = new Wt::WTable(); table->elementAt(row++, 1)->addWidget(input_table); m_input_checkbox_array_length = int_value; m_input_checkbox_array = new Wt::WCheckBox*[m_input_checkbox_array_length]; for (i=0; i<m_input_checkbox_array_length; i++) { m_input_checkbox_array[i] = new Wt::WCheckBox(); Wt::WTableCell* cell = input_table->elementAt(0, i); cell->addWidget(m_input_checkbox_array[i]); cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle); cell = input_table->elementAt(1, i); cell->addWidget(new Wt::WText(Wt::WString::tr("GeneralArg").arg(i))); cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle); int input_state; if (EPHIDGET_OK == CPhidgetInterfaceKit_getInputState(m_phidget->GetNativeHandle(), i, &input_state)) { m_input_checkbox_array[i]->setChecked(PTRUE == input_state); } m_input_checkbox_array[i]->setEnabled(false); } } /* Output */ if (EPHIDGET_OK == CPhidgetInterfaceKit_getOutputCount(m_phidget->GetNativeHandle(), &int_value)) { table->elementAt(row, 0)->addWidget(new Wt::WText(Wt::WString::tr("Output"))); Wt::WTable* output_table = new Wt::WTable(); table->elementAt(row++, 1)->addWidget(output_table); m_output_checkbox_array_length = int_value; m_output_checkbox_array = new Wt::WCheckBox*[m_output_checkbox_array_length]; for (i=0; i<m_output_checkbox_array_length; i++) { m_output_checkbox_array[i] = new Wt::WCheckBox(); m_output_checkbox_array[i]->changed().connect(boost::bind(&WidgetsInterfaceKit::OnWtOutputStateChanged, this, m_output_checkbox_array[i])); Wt::WTableCell* cell = output_table->elementAt(0, i); cell->addWidget(m_output_checkbox_array[i]); cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle); cell = output_table->elementAt(1, i); cell->addWidget(new Wt::WText(Wt::WString::tr("GeneralArg").arg(i))); cell->setContentAlignment(Wt::AlignCenter|Wt::AlignMiddle); int output_state; if (EPHIDGET_OK == CPhidgetInterfaceKit_getOutputState(m_phidget->GetNativeHandle(), i, &output_state)) { m_output_checkbox_array[i]->setChecked(PTRUE == output_state); } } } Wt::WGroupBox* generic_box = new Wt::WGroupBox(Wt::WString::tr("Phidget (Common)")); vbox->addWidget(generic_box); generic_box->addWidget(WidgetsCommon::CreateWidget()); return tab_container; }
void SimpleWebWidget::login() { clear(); btnGroundPower_ = new Wt::WPushButton("Ground Power\nconnect/disconnect"); btnGroundAir_ = new Wt::WPushButton("Ground Air\n connect/disconnect"); btnDoor1_ = new Wt::WPushButton("Open/Close\n Door1"); btnDoor2_ = new Wt::WPushButton("Open/Close\n Door2"); btnDoor3_ = new Wt::WPushButton("Open/Close\n Door3"); btnPushBack1_ = new Wt::WPushButton("Start Pushback\nTail Left"); btnPushBack2_ = new Wt::WPushButton("Start Pushback\nStraight"); btnPushBack3_ = new Wt::WPushButton("Start Pushback\nTail Right"); btnPushBack4_ = new Wt::WPushButton("STOP\nPushBack"); btnVirtualKey1_ = new Wt::WPushButton("Send 1"); btnVirtualKey2_ = new Wt::WPushButton("Send 2"); btnVirtualKey3_ = new Wt::WPushButton("Send 3"); btnVirtualKey4_ = new Wt::WPushButton("Send 4"); btnVirtualKey5_ = new Wt::WPushButton("Send 5"); btnVirtualKey6_ = new Wt::WPushButton("Send 6"); btnVirtualKey7_ = new Wt::WPushButton("Send 7"); btnVirtualKey8_ = new Wt::WPushButton("Send 8"); btnVirtualKey9_ = new Wt::WPushButton("Send 9"); btnVirtualKey0_ = new Wt::WPushButton("Send 0"); btnVirtualKeyF12_ = new Wt::WPushButton("Send F12"); txtWxrDep = new Wt::WText("DEPARTURE AIRPORT IS NOT SET"); txtWxrTafDep = new Wt::WText("DEPARTURE AIRPORT IS NOT SET"); txtWxrArr = new Wt::WText("ARRIVAL AIRPORT IS NOT SET"); txtWxrTafArr = new Wt::WText("ARRIVAL AIRPORT IS NOT SET"); txtGSXText = new Wt::WText(""); btnGroundPower_->setStyleClass("btn-danger"); btnGroundAir_->setStyleClass("btn-danger"); btnDoor1_->setStyleClass("btn-danger"); btnDoor2_->setStyleClass("btn-danger"); btnDoor3_->setStyleClass("btn-danger"); btnPushBack1_->setStyleClass("btn-danger"); btnPushBack2_->setStyleClass("btn-danger"); btnPushBack3_->setStyleClass("btn-danger"); btnPushBack4_->setStyleClass("btn-danger"); dialog = new Wt::WDialog("No connection"); Wt::WLabel *label = new Wt::WLabel("Waiting for simulator connection with iFly 737NG", dialog->contents()); Wt::WNavigationBar *navigation = new Wt::WNavigationBar(); Wt::WStackedWidget *contentsStack = new Wt::WStackedWidget(); Wt::WContainerWidget *groundContainer = new Wt::WContainerWidget(); Wt::WContainerWidget *weatherContainer = new Wt::WContainerWidget(); Wt::WContainerWidget *mapContainer = new Wt::WContainerWidget(); Wt::WContainerWidget *infoContainer = new Wt::WContainerWidget(); Wt::WContainerWidget *gsxContainer = new Wt::WContainerWidget(); Wt::WContainerWidget *statusContainer = new Wt::WContainerWidget(); Wt::WVBoxLayout *mainVLayout = new WVBoxLayout(); setLayout(mainVLayout); // Create a navigation bar with a link to a web page. navigation->setTitle("737ng.kapsi.fi", "http://737ng.kapsi.fi"); navigation->setResponsive(true); // Setup a Left-aligned menu. contentsStack->addStyleClass("contents"); Wt::WMenu *leftMenu = new Wt::WMenu(contentsStack); navigation->addMenu(leftMenu); leftMenu->addItem("Ground", groundContainer); leftMenu->addItem("Weather", weatherContainer); leftMenu->addItem("Map", mapContainer); leftMenu->addItem("Info", infoContainer); leftMenu->addItem("GSX", gsxContainer); mainVLayout->addWidget(navigation, 0); mainVLayout->addWidget(contentsStack, 1); mainVLayout->addWidget(statusContainer, 0); Wt::WGroupBox *groundBox = new Wt::WGroupBox("Ground Equipment"); groundBox->addStyleClass("fieldset-header"); groundBox->addWidget(btnGroundPower_); groundBox->addWidget(btnGroundAir_); groundContainer->addWidget(groundBox); Wt::WGroupBox *doorBox = new Wt::WGroupBox("Aircraft Doors"); doorBox->addStyleClass("fieldset-header"); doorBox->addWidget(btnDoor1_); doorBox->addWidget(btnDoor2_); doorBox->addWidget(btnDoor3_); groundContainer->addWidget(doorBox); Wt::WGroupBox *pushBox = new Wt::WGroupBox("Default Pushback"); pushBox->addStyleClass("fieldset-header"); pushBox->addWidget(btnPushBack1_); pushBox->addWidget(btnPushBack2_); pushBox->addWidget(btnPushBack3_); pushBox->addWidget(new WBreak()); pushBox->addWidget(new WBreak()); pushBox->addWidget(btnPushBack4_); groundContainer->addWidget(pushBox); Wt::WGroupBox *wxrDepMetarBox = new Wt::WGroupBox("Departure Metar"); Wt::WGroupBox *wxrDepTafBox = new Wt::WGroupBox("Departure TAF"); Wt::WGroupBox *wxrArrMetarBox = new Wt::WGroupBox("Arrival Metar"); Wt::WGroupBox *wxrArrTafBox = new Wt::WGroupBox("Arrival TAF"); wxrDepMetarBox->addStyleClass("fieldset-header"); wxrDepTafBox->addStyleClass("fieldset-header"); wxrArrMetarBox->addStyleClass("fieldset-header"); wxrArrTafBox->addStyleClass("fieldset-header"); wxrDepMetarBox->addWidget(txtWxrDep); wxrDepTafBox->addWidget(txtWxrTafDep); wxrArrMetarBox->addWidget(txtWxrArr); wxrArrTafBox->addWidget(txtWxrTafArr); weatherContainer->addWidget(wxrDepMetarBox); weatherContainer->addWidget(wxrDepTafBox); weatherContainer->addWidget(wxrArrMetarBox); weatherContainer->addWidget(wxrArrTafBox); // Map tab //Google map test. No key needed for localhost. map = new Wt::WGoogleMap(Wt::WGoogleMap::Version3); map->setMapTypeControl(Wt::WGoogleMap::DefaultControl); map->enableScrollWheelZoom(); // settings here Wt::WFitLayout* mapBoxLayout = new Wt::WFitLayout(); mapContainer->setLayout(mapBoxLayout); Wt::WGroupBox *mapBox = new Wt::WGroupBox("Map"); mapBox->addStyleClass("fieldset-header"); mapBoxLayout->addWidget(mapBox); Wt::WFitLayout* mapLayout = new Wt::WFitLayout(); mapBox->setLayout(mapLayout); mapLayout->addWidget(map); // Flight info data tab starts here Wt::WContainerWidget *infoFirstRowContainer = new Wt::WContainerWidget(); Wt::WHBoxLayout *infoFirstRowHLayout = new WHBoxLayout(); infoFirstRowContainer->setLayout(infoFirstRowHLayout); Wt::WContainerWidget *infoSecondRowContainer = new Wt::WContainerWidget(); Wt::WHBoxLayout *infoSecondRowHLayout = new WHBoxLayout(); infoSecondRowContainer->setLayout(infoSecondRowHLayout); infoContainer->addWidget(infoFirstRowContainer); infoContainer->addWidget(infoSecondRowContainer); // infobox with flight no and dep and arr icao codes if available txtAlt = new Wt::WText("32013"); txtSpeed = new Wt::WText("450"); txtTemperature = new Wt::WText("-55"); txtOnGround = new Wt::WText("Yes/No"); Wt::WContainerWidget *flightInfoContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *flightInfoContainer2 = new Wt::WContainerWidget(); Wt::WContainerWidget *flightInfoContainer3 = new Wt::WContainerWidget(); Wt::WContainerWidget *flightInfoContainer4 = new Wt::WContainerWidget(); flightInfoContainer1->addWidget(new Wt::WText("Alt: ")); flightInfoContainer1->addWidget(new WBreak()); flightInfoContainer1->addWidget(new Wt::WText("Speed: ")); flightInfoContainer2->addWidget(txtAlt); flightInfoContainer2->addWidget(new WBreak()); flightInfoContainer2->addWidget(txtSpeed); flightInfoContainer3->addWidget(new Wt::WText("Temp: ")); flightInfoContainer3->addWidget(new WBreak()); flightInfoContainer3->addWidget(new Wt::WText("On ground: ")); flightInfoContainer4->addWidget(txtTemperature); flightInfoContainer4->addWidget(new WBreak()); flightInfoContainer4->addWidget(txtOnGround); Wt::WHBoxLayout *flightInfoHLayout = new WHBoxLayout(); flightInfoHLayout->addWidget(flightInfoContainer1); flightInfoHLayout->addWidget(flightInfoContainer2); flightInfoHLayout->addWidget(flightInfoContainer3); flightInfoHLayout->addWidget(flightInfoContainer4); Wt::WContainerWidget *flightInfoContainer = new Wt::WContainerWidget(); flightInfoContainer->setLayout(flightInfoHLayout); infoBox = new Wt::WGroupBox(" ( - )"); infoBox->addStyleClass("fieldset-header"); infoBox->addWidget(flightInfoContainer); // OOOI box with out off on in times if available txtOut = new Wt::WText("00:00"); txtOff = new Wt::WText("00:00"); txtOn = new Wt::WText("00:00"); txtIn = new Wt::WText("00:00"); Wt::WContainerWidget *oooiContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *oooiContainer2 = new Wt::WContainerWidget(); Wt::WContainerWidget *oooiContainer3 = new Wt::WContainerWidget(); Wt::WContainerWidget *oooiContainer4 = new Wt::WContainerWidget(); oooiContainer1->addWidget(new Wt::WText("Out: ")); oooiContainer1->addWidget(new WBreak()); oooiContainer1->addWidget(new Wt::WText("Off: ")); oooiContainer2->addWidget(txtOut); oooiContainer2->addWidget(new WBreak()); oooiContainer2->addWidget(txtOff); oooiContainer3->addWidget(new Wt::WText("On: ")); oooiContainer3->addWidget(new WBreak()); oooiContainer3->addWidget(new Wt::WText("In: ")); oooiContainer4->addWidget(txtOn); oooiContainer4->addWidget(new WBreak()); oooiContainer4->addWidget(txtIn); Wt::WHBoxLayout *oooiHLayout = new WHBoxLayout(); oooiHLayout->addWidget(oooiContainer1); oooiHLayout->addWidget(oooiContainer2); oooiHLayout->addWidget(oooiContainer3); oooiHLayout->addWidget(oooiContainer4); Wt::WContainerWidget *oooiContainer = new Wt::WContainerWidget(); oooiContainer->setLayout(oooiHLayout); Wt::WGroupBox *oooiBox = new Wt::WGroupBox("OOOI"); oooiBox->addStyleClass("fieldset-header"); oooiBox->addWidget(oooiContainer); // Destination box txtDestinationDTG = new Wt::WText("345"); txtDestinationETA = new Wt::WText("23:59:03"); txtDestinationFuel = new Wt::WText("2900"); Wt::WContainerWidget *destinationContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *destinationContainer2 = new Wt::WContainerWidget(); Wt::WContainerWidget *destinationContainer3 = new Wt::WContainerWidget(); Wt::WContainerWidget *destinationContainer4 = new Wt::WContainerWidget(); destinationContainer1->addWidget(new Wt::WText("ETA: ")); destinationContainer1->addWidget(new WBreak()); destinationContainer1->addWidget(new Wt::WText("DTG: ")); destinationContainer2->addWidget(txtDestinationETA); destinationContainer2->addWidget(new WBreak()); destinationContainer2->addWidget(txtDestinationDTG); destinationContainer3->addWidget(new Wt::WText("Fuel: ")); destinationContainer4->addWidget(txtDestinationFuel); Wt::WHBoxLayout *destinationHLayout = new WHBoxLayout(); destinationHLayout->addWidget(destinationContainer1); destinationHLayout->addWidget(destinationContainer2); destinationHLayout->addWidget(destinationContainer3); destinationHLayout->addWidget(destinationContainer4); Wt::WContainerWidget *destinationContainer = new Wt::WContainerWidget(); destinationContainer->setLayout(destinationHLayout); Wt::WGroupBox *destinationBox = new Wt::WGroupBox("Destination"); destinationBox->addStyleClass("fieldset-header"); destinationBox->addWidget(destinationContainer); // Last waypoint box Wt::WContainerWidget *lastWptContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *lastWptContainer2 = new Wt::WContainerWidget(); txtLastName = new Wt::WText("ROVIL"); txtLastAlt = new Wt::WText("FL280"); txtLastATA = new Wt::WText("20:38:51"); txtLastFuel = new Wt::WText("4300"); lastWptContainer1->addWidget(new Wt::WText("Name: ")); lastWptContainer1->addWidget(new WBreak()); lastWptContainer1->addWidget(new Wt::WText("ATA: ")); lastWptContainer1->addWidget(new WBreak()); lastWptContainer1->addWidget(new Wt::WText("Fuel: ")); lastWptContainer1->addWidget(new WBreak()); lastWptContainer1->addWidget(new Wt::WText("Alt: ")); lastWptContainer2->addWidget(txtLastName); lastWptContainer2->addWidget(new WBreak()); lastWptContainer2->addWidget(txtLastATA); lastWptContainer2->addWidget(new WBreak()); lastWptContainer2->addWidget(txtLastFuel); lastWptContainer2->addWidget(new WBreak()); lastWptContainer2->addWidget(txtLastAlt); Wt::WHBoxLayout *lastWptHLayout = new WHBoxLayout(); lastWptHLayout->addWidget(lastWptContainer1); lastWptHLayout->addWidget(lastWptContainer2); Wt::WContainerWidget *lastWpContainer = new Wt::WContainerWidget(); lastWpContainer->setLayout(lastWptHLayout); Wt::WGroupBox *progressLastBox = new Wt::WGroupBox("Last WPT"); progressLastBox->addStyleClass("fieldset-header"); progressLastBox->addWidget(lastWpContainer); // Actual waypoint box Wt::WContainerWidget *actWpContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *actWpContainer2 = new Wt::WContainerWidget(); txtActName = new Wt::WText("TESTI"); txtActETA = new Wt::WText("20:48:32"); txtActFuel = new Wt::WText("4000"); txtActDTG = new Wt::WText("23"); actWpContainer1->addWidget(new Wt::WText("Name: ")); actWpContainer1->addWidget(new WBreak()); actWpContainer1->addWidget(new Wt::WText("ETA: ")); actWpContainer1->addWidget(new WBreak()); actWpContainer1->addWidget(new Wt::WText("Fuel: ")); actWpContainer1->addWidget(new WBreak()); actWpContainer1->addWidget(new Wt::WText("DTG: ")); actWpContainer2->addWidget(txtActName); actWpContainer2->addWidget(new WBreak()); actWpContainer2->addWidget(txtActETA); actWpContainer2->addWidget(new WBreak()); actWpContainer2->addWidget(txtActFuel); actWpContainer2->addWidget(new WBreak()); actWpContainer2->addWidget(txtActDTG); Wt::WHBoxLayout *actWptHLayout = new WHBoxLayout(); actWptHLayout->addWidget(actWpContainer1); actWptHLayout->addWidget(actWpContainer2); Wt::WContainerWidget *actWpContainer = new Wt::WContainerWidget(); actWpContainer->setLayout(actWptHLayout); Wt::WGroupBox *progressActBox = new Wt::WGroupBox("Actual WPT"); progressActBox->addStyleClass("fieldset-header"); progressActBox->addWidget(actWpContainer); // Next Waypoint Box Wt::WContainerWidget *nextWpContainer1 = new Wt::WContainerWidget(); Wt::WContainerWidget *nextWpContainer2 = new Wt::WContainerWidget(); txtNextName = new Wt::WText("FIXME"); txtNextETA = new Wt::WText("21:02:22"); txtNextFuel = new Wt::WText("3700"); txtNextDTG = new Wt::WText("46"); nextWpContainer1->addWidget(new Wt::WText("Name: ")); nextWpContainer1->addWidget(new WBreak()); nextWpContainer1->addWidget(new Wt::WText("ETA: ")); nextWpContainer1->addWidget(new WBreak()); nextWpContainer1->addWidget(new Wt::WText("Fuel: ")); nextWpContainer1->addWidget(new WBreak()); nextWpContainer1->addWidget(new Wt::WText("DTG: ")); nextWpContainer2->addWidget(txtNextName); nextWpContainer2->addWidget(new WBreak()); nextWpContainer2->addWidget(txtNextETA); nextWpContainer2->addWidget(new WBreak()); nextWpContainer2->addWidget(txtNextFuel); nextWpContainer2->addWidget(new WBreak()); nextWpContainer2->addWidget(txtNextDTG); Wt::WHBoxLayout *nextWptHLayout = new WHBoxLayout(); nextWptHLayout->addWidget(nextWpContainer1); nextWptHLayout->addWidget(nextWpContainer2); Wt::WContainerWidget *nextWpContainer = new Wt::WContainerWidget(); nextWpContainer->setLayout(nextWptHLayout); Wt::WGroupBox *progressNextBox = new Wt::WGroupBox("Next WPT"); progressNextBox->addStyleClass("fieldset-header"); progressNextBox->addWidget(nextWpContainer); // add groupboxes to Layouts infoFirstRowHLayout->addWidget(infoBox); infoFirstRowHLayout->addWidget(oooiBox); infoFirstRowHLayout->addWidget(destinationBox); infoSecondRowHLayout->addWidget(progressLastBox); infoSecondRowHLayout->addWidget(progressActBox); infoSecondRowHLayout->addWidget(progressNextBox); // GSX tab starts here gsxBox = new Wt::WGroupBox("GSX Menu"); gsxBox->addStyleClass("fieldset-header"); gsxContainer->addWidget(gsxBox); Wt::WTable* gsxTable = new Wt::WTable(); gsxTable->setWidth(Wt::WLength("100%")); btnVirtualKeyF12_->addStyleClass("buttongsx"); btnVirtualKey1_->addStyleClass("buttongsx"); btnVirtualKey2_->addStyleClass("buttongsx"); btnVirtualKey3_->addStyleClass("buttongsx"); btnVirtualKey4_->addStyleClass("buttongsx"); btnVirtualKey5_->addStyleClass("buttongsx"); btnVirtualKey6_->addStyleClass("buttongsx"); btnVirtualKey7_->addStyleClass("buttongsx"); btnVirtualKey8_->addStyleClass("buttongsx"); btnVirtualKey9_->addStyleClass("buttongsx"); btnVirtualKey0_->addStyleClass("buttongsx"); btnVirtualKey1_->hide(); btnVirtualKey2_->hide(); btnVirtualKey3_->hide(); btnVirtualKey4_->hide(); btnVirtualKey5_->hide(); btnVirtualKey6_->hide(); btnVirtualKey7_->hide(); btnVirtualKey8_->hide(); btnVirtualKey9_->hide(); btnVirtualKey0_->hide(); gsxTable->elementAt(0, 0)->addWidget(btnVirtualKey1_); gsxTable->elementAt(0, 1)->addWidget(btnVirtualKey6_); gsxTable->elementAt(1, 0)->addWidget(btnVirtualKey2_); gsxTable->elementAt(1, 1)->addWidget(btnVirtualKey7_); gsxTable->elementAt(2, 0)->addWidget(btnVirtualKey3_); gsxTable->elementAt(2, 1)->addWidget(btnVirtualKey8_); gsxTable->elementAt(3, 0)->addWidget(btnVirtualKey4_); gsxTable->elementAt(3, 1)->addWidget(btnVirtualKey9_); gsxTable->elementAt(4, 0)->addWidget(btnVirtualKey5_); gsxTable->elementAt(4, 1)->addWidget(btnVirtualKey0_); gsxTable->elementAt(6, 0)->addWidget(btnVirtualKeyF12_); gsxBox->addWidget(gsxTable); // Bottom statuscontaier with GSX text txtGSXText->addStyleClass("gsxtext"); statusContainer->addWidget(txtGSXText); // Bind the C++ and JavaScript event handlers. btnGroundPower_->clicked().connect(this, &SimpleWebWidget::pressedGroundPower); btnGroundAir_->clicked().connect(this, &SimpleWebWidget::pressedGroundAir); btnDoor1_->clicked().connect(this, &SimpleWebWidget::pressedButtonDoor1); btnDoor2_->clicked().connect(this, &SimpleWebWidget::pressedButtonDoor2); btnDoor3_->clicked().connect(this, &SimpleWebWidget::pressedButtonDoor3); btnPushBack1_->clicked().connect(this, &SimpleWebWidget::pressedPushBack1); btnPushBack2_->clicked().connect(this, &SimpleWebWidget::pressedPushBack2); btnPushBack3_->clicked().connect(this, &SimpleWebWidget::pressedPushBack3); btnPushBack4_->clicked().connect(this, &SimpleWebWidget::pressedPushBack4); btnVirtualKey1_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey1); btnVirtualKey2_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey2); btnVirtualKey3_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey3); btnVirtualKey4_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey4); btnVirtualKey5_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey5); btnVirtualKey6_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey6); btnVirtualKey7_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey7); btnVirtualKey8_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey8); btnVirtualKey9_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey9); btnVirtualKey0_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKey0); btnVirtualKeyF12_->clicked().connect(this, &SimpleWebWidget::pressedVirtualKeyF12); // setup a timer which calls MyClass::timeout() every 60 seconds, until timer->stop() is called. Wt::WTimer *timer = new Wt::WTimer(); timer->setInterval(60000); timer->timeout().connect(this, &SimpleWebWidget::timerTimeout); timer->start(); connect(); }