ribi::WtAboutDialog::WtAboutDialog( const About& about_original, const bool display_close_button) : m_signal_close{}, m_button_close(new Wt::WPushButton) { About about = about_original; about.AddLibrary("Wt version: " + GetWtVersion()); about.AddLibrary("WtAboutDialog version: " + GetVersion()); this->setContentAlignment(Wt::AlignCenter); const int min_width = 800; //Display the general about text { const std::vector<std::string> v = about.CreateAboutText(); for(const auto s: v) { new Wt::WLabel(s.c_str(),this); this->addWidget(new Wt::WBreak); } } this->addWidget(new Wt::WBreak); //Display the libraries used text { Wt::WTextArea * text = new Wt::WTextArea; { const std::vector<std::string> v = about.CreateLibrariesUsedText(); std::string s; for(const auto t: v) { s+=t; s+="\n"; } text->setText(s); } text->setMinimumSize(min_width,100); text->setReadOnly(true); this->addWidget(text); } this->addWidget(new Wt::WBreak); //Display the version history { Wt::WTextArea * text = new Wt::WTextArea; { const std::vector<std::string> v = about.CreateVersionHistory(); std::string s; for(const auto t: v) { s+=t; s+="\n"; } text->setText(s); } text->setMinimumSize(min_width,100); text->setReadOnly(true); this->addWidget(text); } this->addWidget(new Wt::WBreak); //Display the licence text { Wt::WTextArea * text = new Wt::WTextArea; { const std::vector<std::string> v = about.CreateLicenceText(); std::string s; for(const auto t: v) { s+=t; s+="\n"; } text->setText(s); } text->setMinimumSize(min_width,100); text->setReadOnly(true); this->addWidget(text); } addWidget(new Wt::WBreak); { const std::string s = std::string("Source code built at ") + std::string(__DATE__) + std::string(" ") + std::string(__TIME__); new Wt::WLabel(s.c_str(),this); this->addWidget(new Wt::WBreak); } if (display_close_button) { this->addWidget(new Wt::WBreak); this->addWidget(m_button_close); m_button_close->setText("Close"); m_button_close->clicked().connect( this,&ribi::WtAboutDialog::OnClose); } }