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); }
About::About() { WContainerWidget *cw = new WContainerWidget(); cw->addWidget(new WBreak()); cw->addWidget(new WBreak()); this->addWidget(cw); Wt::WContainerWidget *j = new Wt::WContainerWidget(this); j->resize(WLength::Auto, 200); Wt::WGridLayout *lay = new Wt::WGridLayout(); store="<p>jonny jonny yes papa," " Eating sugar no papa " "Telling lie, no papa " "Open your mouth .</p>haha. "; //lay->addWidget(new Wt::WText("this site is made by parvinder rajput. \n who are pursuing is b.tech from gndec ludhiana."),0,0); // lay->addWidget(new Wt::WText("this is dean of consultancy cell"), 0, 2); //lay->addWidget(new Wt::WText("Hello"), 0, 0); //lay->addWidget(new Wt::WImage("/images/Footer.jpg"), 0,0); lay->addWidget(new Wt::WText(store ), 0,3); lay->addWidget(new Wt::WImage("/images/jj.jpg"), 0,0); lay->addWidget(new Wt::WImage("/images/uu.gif"), 0,2); j->setLayout(lay); }
void CommentContainerWidget::onTokenReady(uint32_t token, bool ok) { if(ok) { clear(); std::vector<RsGxsComment> comments; //_CommentService->getRelatedComments(token, comments); _CommentService->getCommentData(token, comments); for(std::vector<RsGxsComment>::iterator vit = comments.begin(); vit != comments.end(); vit++) { RsGxsComment& comment = *vit; Wt::WContainerWidget* outerContainer = new Wt::WContainerWidget(this); Wt::WBorderLayout *layout = new Wt::WBorderLayout(); outerContainer->setLayout(layout); AvatarWidgetWt* avatar = new AvatarWidgetWt(true); avatar->setIdentity(comment.mMeta.mAuthorId); layout->addWidget(avatar, Wt::WBorderLayout::West); Wt::WLabel* text = new Wt::WLabel(Wt::WString::fromUTF8(comment.mComment)); layout->addWidget(text, Wt::WBorderLayout::Center); } // note: the widgets the pointers where pointing to where deleted by clear() _TextArea = new Wt::WTextArea(this); _TextArea->setEmptyText("your comment"); //_IdChooser = new GxsIdChooserWt(this); _SubmitButton = new Wt::WPushButton("submit", this); _SubmitButton->clicked().connect(this, &CommentContainerWidget::onSubmitComment); } else { clear(); new Wt::WLabel("FAIL", this); } }
/** Constructor for View /usr/lib/Wt/examples/widgetgallery/examples/ComboBoxModel.cpp https://www.webtoolkit.eu/widgets/forms/combo-box https://www.webtoolkit.eu/wt/doc/reference/html/classWt_1_1WComboBox.html */ View::View(const Wt::WEnvironment& env) : Wt::WApplication(env) { setTitle("DropDown Demo"); log("info") << "Test"; // This is the container for the full screen. Wt::WContainerWidget *pScreenContainer = new Wt::WContainerWidget(); pScreenContainer->resize(Wt::WLength::Auto, Wt::WLength::Auto); // Add the primary container to the root widget? root()->addWidget(pScreenContainer); // Choose the grid layout. Wt::WGridLayout *pScreenLayout = new Wt::WGridLayout(); pScreenContainer->setLayout(pScreenLayout); int nRow = 0; int nColoumn = 0; // Create the label Wt::WText *lblSeriesChoice = new Wt::WText("Series:"); // set right align the label lblSeriesChoice->setTextAlignment(Wt::AlignRight); pScreenLayout->addWidget(lblSeriesChoice, nRow, nColoumn+0); // Create the dropdown Wt::WComboBox *cbSeries = new Wt::WComboBox(); cbSeries->addItem(""); cbSeries->addItem("New"); cbSeries->addItem("Krakken awoke"); cbSeries->addItem("Appocalypse survival"); cbSeries->setCurrentIndex(0); // Empty string pScreenLayout->addWidget(cbSeries, nRow, nColoumn+1); // Create the connection cbSeries->activated().connect(this, &View::DropDownSelectionChangeOtherDropDown); cbSeries->activated().connect(this, &View::DropDownSelectionChangeTab); /* Signals connect to Slots. * You may specify up to 6 arguments which may be of arbitrary types that are Copyable, that may be passed through the signal to connected slots. * https://www.webtoolkit.eu/wt/doc/reference/html/group__signalslot.html * I think the * first parm - is a pointer to the target class. * second parm - is the name of the method? * * See: Wt::Signal. */ /* * Let row 1 and column 1 take the excess space.? */ pScreenLayout->setRowStretch(0, 0); pScreenLayout->setColumnStretch(0, 0); } // end
void AdsEditor::renderUI() { AdsApplication *app = AdsApplication::adsApplication(); cppdb::session &db = app->db_; clear(); WPushButton *btn = new WPushButton("Criar Anuncio", this); btn->clicked().connect(this, &AdsEditor::novoAnuncio); WPushButton *update = new WPushButton("Atualiza", this); update->clicked().connect(this, &AdsEditor::renderUI); new WBreak(this); new WBreak(this); new WText("<h3>Lista de Anuncios</h3>",this); Wt::WContainerWidget *w = new Wt::WContainerWidget(this); w->resize(600, WLength::Auto); WVBoxLayout *layout = new Wt::WVBoxLayout(); cppdb::result res = db << "select id, titulo, url, imagem, texto, ativo " " from anuncio"; while(res.next()) { WContainerWidget *cont = new WContainerWidget(); AdsAnuncio *anuncio = new AdsAnuncio(cont); res >> anuncio->id >> anuncio->titulo_ >> anuncio->link_ >> anuncio->imagem_ >> anuncio->texto_ >> anuncio->ativo_; WPushButton *tituloBtn = new WPushButton("Titulo",cont); tituloBtn->clicked().connect(anuncio, &AdsAnuncio::editarTitulo); WPushButton *urlBtn = new WPushButton("URL",cont); urlBtn->clicked().connect(anuncio, &AdsAnuncio::editarURL); WPushButton *imagemBtn = new WPushButton("Imagem",cont); imagemBtn->clicked().connect(anuncio, &AdsAnuncio::editarImagem); WPushButton *textoBtn = new WPushButton("Texto",cont); textoBtn->clicked().connect(anuncio, &AdsAnuncio::editarTexto); WCheckBox *ativoCheck = new Wt::WCheckBox("Ativo",cont); if(anuncio->ativo_ == 1) ativoCheck->setChecked(true); else ativoCheck->setChecked(false); ativoCheck->changed().connect(anuncio, &AdsAnuncio::changeAtiva); WPushButton *deletaBtn = new WPushButton("Deleta",cont); deletaBtn->clicked().connect(anuncio, &AdsAnuncio::deletaAnuncio); anuncio->renderUI(); layout->addWidget(cont); } w->setLayout(layout); }
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_); }
PresetFilterPanel::PresetFilterPanel(org::esb::hive::PresetReader::FilterList &filter) :_filterlist(filter), Wt::Ext::Panel() { setLayout(new Wt::WFitLayout()); Wt::WContainerWidget * main = new Wt::WContainerWidget(); grid = new Wt::WGridLayout(); main->setLayout(grid); layout()->addWidget(main); grid->addWidget(filter_table = new PresetFilterTable(filter), 0, 0); _cont=new Wt::WContainerWidget(); _cont->setLayout(new Wt::WBorderLayout()); _cont->resize(600,300); grid->addWidget(_cont, 1, 0); filter_table->itemSelectionChanged().connect(SLOT(this,PresetFilterPanel::filterSelected)); }
Home::Home() { Wt::WContainerWidget *p = new Wt::WContainerWidget(this); p->resize(WLength::Auto, 200); Wt::WGridLayout *lay = new Wt::WGridLayout(); //lay->addWidget(new Wt::WText("this site is made by parvinder rajput. \n who are pursuing is b.tech from gndec ludhiana."),0,0); // lay->addWidget(new Wt::WText("this is dean of consultancy cell"), 0, 2); //lay->addWidget(new Wt::WText("Hello"), 0, 0); //lay->addWidget(new Wt::WImage("/images/Footer.jpg"), 0,0); lay->addWidget(new Wt::WText("HERE GOES A SMALL RHYMES WEBSITE FOR NURSERY KIDS TO MAKE THEIR LEARNING INTERESTING."), 0,0); lay->addWidget(new Wt::WImage("/images/images.jpeg"), 0,2); lay->addWidget(new Wt::WImage("/images/images8.jpeg"), 0,1); p->setLayout(lay); }
MainPage::MainPage(Wt::WApplication* app): WContainerWidget() { app_ = app; contentsStack_ = new Wt::WStackedWidget(); contentsStack_->setOverflow(WContainerWidget::OverflowAuto); contentsStack_->setStyleClass("contents"); /* * Setup the menu (and submenus) */ Wt::WMenu *menu = new Wt::WMenu(contentsStack_, Wt::Vertical, 0); menu->setRenderAsList(true); menu->setStyleClass("menu"); menu->setInternalPathEnabled(); menu->setInternalBasePath("/"); menu->itemSelected().connect(this, &MainPage::selectedMenuItem); Wt::WContainerWidget *w = new Wt::WContainerWidget(this); Wt::WBorderLayout *layout = new Wt::WBorderLayout(); layout->addWidget(new Wt::WText("North-side is best"), Wt::WBorderLayout::North); layout->addWidget(new Wt::WText("South-side is best"), Wt::WBorderLayout::South); layout->addWidget(menu, Wt::WBorderLayout::West); layout->addWidget(contentsStack_, Wt::WBorderLayout::Center); // use layout but do not justify vertically w->setLayout(layout, Wt::AlignTop | Wt::AlignJustify); menu->addItem("Basics", new ClientsPage(this, &session_)); menu->addItem("Form Widgets", new CommonPage(this, &session_)); menu->addItem("Form Validators", new CommonPage(this, &session_)); Wt::WSubMenuItem *smi = new Wt::WSubMenuItem("Sub menu", new CommonPage(this, &session_)); Wt::WMenu *subMenu = new Wt::WMenu(contentsStack_, Wt::Vertical, 0); subMenu->setRenderAsList(true); smi->setSubMenu(subMenu); menu->addItem(smi); subMenu->setInternalPathEnabled(); subMenu->setInternalBasePath("/" + smi->pathComponent()); subMenu->setStyleClass("menu submenu"); subMenu->itemSelected().connect(this, &MainPage::selectedMenuItem); subMenu->addItem("Sub Item 1", new CommonPage(this, &session_)); subMenu->addItem("Sub Item 2", new CommonPage(this, &session_)); }
VideoPanel::VideoPanel(std::map<std::string, std::string>& p) : _parameter(p), Wt::Ext::Panel() { // setLayout(new Wt::WFitLayout()); Wt::WBorderLayout*l = new Wt::WBorderLayout(); setLayout(l); std::set<std::string> avail_codecs; if (_parameter.count("available_codecs") > 0) { LOGDEBUG("Available codes" << _parameter["available_codecs"]); org::esb::util::StringTokenizer st(_parameter["available_codecs"], ","); while (st.hasMoreTokens()) { std::string codec_id = st.nextToken(); avail_codecs.insert(codec_id); LOGDEBUG("avalable codec list" << codec_id); } } /* * Combobox for the Codec Selector */ KeyValueModel * codec_model = new KeyValueModel(); codec_model->addModelData("novideo", "No Video"); codec_model->addModelData("copy", "Stream Copy"); AVCodec *codec = NULL; int a = 0; while ((codec = av_codec_next(codec))) { if (codec->encode && codec->type == AVMEDIA_TYPE_VIDEO) { if (avail_codecs.count(codec->name) > 0) { codec_model->addModelData(codec->name, codec->long_name); } else { if (avail_codecs.size() == 0) codec_model->addModelData(codec->name, codec->long_name); } } } codec_model->sort(1); _codec = new ComboBox(); _codec->setModel(codec_model); _codec->setModelColumn(1); _codec->setSelectedEntry(_parameter["codec_id"]); _codec->setTextSize(50); _codec->resize(300, Wt::WLength()); _codec->activated().connect(SLOT(this, VideoPanel::codecSelected)); main_panel = new Wt::Ext::Panel(); Wt::WFitLayout * fit = new Wt::WFitLayout(); main_panel->setLayout(fit); //main_panel->setBorder(false); l->addWidget(main_panel, Wt::WBorderLayout::Center); Wt::Ext::Panel * top_panel = new Wt::Ext::Panel(); top_panel->resize(Wt::WLength(), 40); top_panel->setLayout(new Wt::WFitLayout()); top_panel->setBorder(false); // top_panel->layout()->addWidget(_codec); Wt::WContainerWidget *top = new Wt::WContainerWidget(); top_panel->layout()->addWidget(top); Wt::WGridLayout * grid = new Wt::WGridLayout(); top->setLayout(grid); top->resize(Wt::WLength(), 40); l->addWidget(top_panel, Wt::WBorderLayout::North); Wt::WLabel * label = new Wt::WLabel("Codec:"); label->setBuddy(_codec); grid->addWidget(label, 0, 0); grid->addWidget(_codec, 0, 1); grid->addWidget(new Wt::WText(""), 0, 2); grid->setColumnStretch(1, 1); setCodecGui(_parameter["codec_id"]); //l->addWidget(builder,Wt::WBorderLayout::Center); // return; }
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* Application::instantiateMainTabs() { Wt::WContainerWidget *mainTabContainer = new Wt::WContainerWidget; Wt::WVBoxLayout *vbox = new Wt::WVBoxLayout; mainTabContainer->setLayout(vbox); wMainTabs_ = new Wt::WTabWidget; wMainTabs_->currentChanged().connect(boost::bind(&Application::changeTab2, this, _1)); vbox->addWidget(wMainTabs_, 1 /*stretch*/); for (size_t i=0; i<NMainTabs; ++i) { Wt::WString tabName; Wt::WContainerWidget *tabContent = NULL; switch ((MainTab)i) { case PartitionerTab: { tabName = "Partitioner"; tabContent = wPartitioner_ = new WPartitioner(ctx_); wPartitioner_->specimenParsed().connect(boost::bind(&Application::handleSpecimenParsed, this, _1)); wPartitioner_->specimenLoaded().connect(boost::bind(&Application::handleSpecimenLoaded, this, _1)); wPartitioner_->specimenPartitioned().connect(boost::bind(&Application::handleSpecimenPartitioned, this, _1)); break; } case MemoryMapTab: { tabName = "Memory Map"; tabContent = wMemoryMap_ = new WMemoryMap; wMemoryMap_->mapChanged().connect(boost::bind(&Application::memoryMapChanged, this)); wMemoryMap_->allowDownloads(ctx_.settings.allowDownloads); break; } case FunctionListTab: { tabName = "Functions"; tabContent = wFunctionList_ = new WFunctionList(ctx_); wFunctionList_->functionChanged().connect(boost::bind(&Application::changeFunction, this, _1)); wFunctionList_->functionRowDoubleClicked() .connect(boost::bind(&Application::changeFunctionDoubleClick, this, _1)); break; } case FunctionSummaryTab: { tabName = "Summary"; tabContent = wFunctionSummary_ = new WFunctionSummary(ctx_); break; } case FunctionCfgTab: { tabName = "CFG"; tabContent = wFunctionCfg_ = new WFunctionCfg(ctx_); wFunctionCfg_->functionChanged().connect(boost::bind(&Application::changeFunction, this, _1)); wFunctionCfg_->functionClicked().connect(boost::bind(&Application::changeFunction, this, _1)); wFunctionCfg_->addressClicked().connect(boost::bind(&Application::showHexDumpAtAddress, this, _1)); wFunctionCfg_->basicBlockClicked().connect(boost::bind(&Application::changeBasicBlock, this, _1)); break; } case AssemblyTab: { tabName = "Assembly"; tabContent = wAssembly_ = new WAssemblyListing(ctx_); break; } case HexDumpTab: { tabName = "Hexdump"; tabContent = wHexDump_ = new WHexDump; wHexDump_->byteClicked().connect(boost::bind(&Application::updateAddressCrossReferences, this, _1)); break; } case MagicTab: { tabName = "Magic"; tabContent = wMagic_ = new WMagic; break; } case StringsTab: { tabName = "Strings"; tabContent = wStrings_ = new WStrings; wStrings_->stringClicked().connect(boost::bind(&Application::updateStringCrossReferences, this, _1)); break; } case StatusTab: { tabName = "Status"; tabContent = wStatus_ = new WStatus(ctx_); break; } default: ASSERT_not_reachable("invalid main tab"); } ASSERT_not_null(tabContent); ASSERT_forbid(tabName.empty()); wMainTabs_->addTab(tabContent, tabName); } return mainTabContainer; }
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(); }