/** * \file GuiAbout.cpp * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Kalle Dalheimer * * Full author contact details are available in file CREDITS. */ #include #include "GuiAbout.h" #include "qt_helpers.h" #include "gettext.h" #include "support/lstrings.h" #include #include #include #include #include using lyx::support::prefixIs; using std::getline; using std::istringstream; using std::ostringstream; using std::string; namespace lyx { namespace frontend { GuiAboutDialog::GuiAboutDialog(LyXView & lv) : GuiDialog(lv, "aboutlyx") { setupUi(this); setViewTitle(_("About LyX")); setController(new ControlAboutlyx(*this)); connect(closePB, SIGNAL(clicked()), this, SLOT(reject())); connect(closePB, SIGNAL(clicked()), this, SLOT(slotClose())); copyrightTB->setPlainText(toqstr(controller().getCopyright())); copyrightTB->append(""); copyrightTB->append(toqstr(controller().getLicense())); copyrightTB->append(""); copyrightTB->append(toqstr(controller().getDisclaimer())); versionLA->setText(toqstr(controller().getVersion())); // The code below should depend on a autoconf test. (Lgb) #if 1 // There are a lot of buggy stringstream implementations..., but the // code below will work on all of them (I hope). The drawback with // this solutions os the extra copying. (Lgb) ostringstream in; controller().getCredits(in); istringstream ss(in.str()); string s; ostringstream out; while (getline(ss, s)) { if (prefixIs(s, "@b")) out << "" << s.substr(2) << ""; else if (prefixIs(s, "@i")) out << "" << s.substr(2) << ""; else out << s; out << "
"; } #else // Good stringstream implementations can handle this. It avoids // some copying, and should thus be faster and use less memory. (Lgb) // I'll make this the default for a short while to see if anyone // see the error... stringstream in; controller().getCredits(in); in.seekg(0); string s; ostringstream out; while (getline(in, s)) { if (prefixIs(s, "@b")) out << "" << s.substr(2) << ""; else if (prefixIs(s, "@i")) out << "" << s.substr(2) << ""; else out << s; out << "
"; } #endif creditsTB->setHtml(toqstr(out.str())); // try to resize to a good size copyrightTB->hide(); setMinimumSize(copyrightTB->sizeHint()); copyrightTB->show(); setMinimumSize(sizeHint()); // Manage the cancel/close button bc().setPolicy(ButtonPolicy::OkCancelPolicy); bc().setCancel(closePB); bc().refresh(); } ControlAboutlyx & GuiAboutDialog::controller() const { return static_cast(Dialog::controller()); } } // namespace frontend } // namespace lyx #include "GuiAbout_moc.cpp"