HelpDialog.cpp   HelpDialog.cpp 
skipping to change at line 33 skipping to change at line 33
#include <QWidget> #include <QWidget>
#include <QFrame> #include <QFrame>
#include <QResizeEvent> #include <QResizeEvent>
#include <QSize> #include <QSize>
#include <QMultiMap> #include <QMultiMap>
#include <QList> #include <QList>
#include <QSet> #include <QSet>
#include <QPair> #include <QPair>
#include <QtAlgorithms> #include <QtAlgorithms>
#include <QDebug> #include <QDebug>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QFileInfo> #include <QFileInfo>
#include <QFile> #include <QFile>
#include <QDir> #include <QDir>
#include <QProcess> #include <QProcess>
#include <QSysInfo> #include <QSysInfo>
#include <QGLFormat> #include <QGLFormat>
#include "ui_helpDialogGui.h" #include "ui_helpDialogGui.h"
#include "HelpDialog.hpp" #include "HelpDialog.hpp"
#include "StelUtils.hpp" #include "StelUtils.hpp"
#include "StelApp.hpp" #include "StelApp.hpp"
#include "StelFileMgr.hpp" #include "StelFileMgr.hpp"
#include "StelGui.hpp" #include "StelGui.hpp"
#include "StelGuiItems.hpp" #include "StelGuiItems.hpp"
#include "StelLocaleMgr.hpp" #include "StelLocaleMgr.hpp"
#include "StelLogger.hpp" #include "StelLogger.hpp"
#include "StelStyle.hpp" #include "StelStyle.hpp"
#include "StelActionMgr.hpp" #include "StelActionMgr.hpp"
#include "StelJsonParser.hpp"
HelpDialog::HelpDialog(QObject* parent) HelpDialog::HelpDialog(QObject* parent)
: StelDialog(parent) : StelDialog(parent)
, updateState(CompleteNoUpdates)
, downloadMgr(NULL)
{ {
ui = new Ui_helpDialogForm; ui = new Ui_helpDialogForm;
conf = StelApp::getInstance().getSettings();
setUpdatesEnabled(conf->value("main/check_updates_enabled", true).to
Bool()); // Enable check for updates by default
QString lang = conf->value("localization/app_locale", "en").toString
();
if (lang=="system" || lang=="C")
lang = "en";
updateUrl = QString("http://www.stellarium.org/%1/updates.php").arg(
lang);
currentVersion = StelUtils::getApplicationVersion();
conf->setValue("main/check_updates_enabled", getUpdatesEnabled());
} }
HelpDialog::~HelpDialog() HelpDialog::~HelpDialog()
{ {
delete ui; delete ui;
ui = NULL; ui = NULL;
} }
void HelpDialog::retranslate() void HelpDialog::retranslate()
{ {
skipping to change at line 105 skipping to change at line 90
} }
void HelpDialog::createDialogContent() void HelpDialog::createDialogContent()
{ {
ui->setupUi(dialog); ui->setupUi(dialog);
connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SL OT(retranslate())); connect(&StelApp::getInstance(), SIGNAL(languageChanged()), this, SL OT(retranslate()));
ui->stackedWidget->setCurrentIndex(0); ui->stackedWidget->setCurrentIndex(0);
ui->stackListWidget->setCurrentRow(0); ui->stackListWidget->setCurrentRow(0);
connect(ui->closeStelWindow, SIGNAL(clicked()), this, SLOT(close())) ; connect(ui->closeStelWindow, SIGNAL(clicked()), this, SLOT(close())) ;
setUpdatesMessage(false);
if (getUpdatesEnabled())
{
StelFileMgr::makeSureDirExistsAndIsWritable(StelFileMgr::get
UserDir()+"/data");
jsonDataPath = StelFileMgr::findFile("data", (StelFileMgr::F
lags)(StelFileMgr::Directory|StelFileMgr::Writable)) + "/updates.json";
// If the json file does not already exist, create it from t
he resource in the Qt resource
if(!QFileInfo(jsonDataPath).exists())
{
//qDebug() << "HelpDialog::createDialogContent() upd
ates.json does not exist - copying default file to " << QDir::toNativeSepar
ators(jsonDataPath);
restoreDefaultJsonFile();
}
//qDebug() << "HelpDialog::createDialogContent() using file:
" << QDir::toNativeSeparators(jsonDataPath);
// Set up download manager and the update schedule
downloadMgr = new QNetworkAccessManager(this);
connect(downloadMgr, SIGNAL(finished(QNetworkReply*)), this,
SLOT(updateDownloadComplete(QNetworkReply*)));
updateState = CompleteNoUpdates;
updateJSON();
}
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
//Kinetic scrolling for tablet pc and pc //Kinetic scrolling for tablet pc and pc
QList<QWidget *> addscroll; QList<QWidget *> addscroll;
addscroll << ui->helpBrowser << ui->aboutBrowser << ui->logBrowser; addscroll << ui->helpBrowser << ui->aboutBrowser << ui->logBrowser;
installKineticScrolling(addscroll); installKineticScrolling(addscroll);
#endif #endif
// Help page // Help page
updateText(); updateText();
connect(ui->editShortcutsButton, SIGNAL(clicked()), this, SLOT(showS hortcutsWindow())); connect(ui->editShortcutsButton, SIGNAL(clicked()), this, SLOT(showS hortcutsWindow()));
// Log page // Log page
ui->logPathLabel->setText(QString("%1/log.txt:").arg(StelFileMgr::ge tUserDir())); ui->logPathLabel->setText(QString("%1/log.txt:").arg(StelFileMgr::ge tUserDir()));
connect(ui->stackedWidget, SIGNAL(currentChanged(int)), this, SLOT(u pdateLog(int))); connect(ui->stackedWidget, SIGNAL(currentChanged(int)), this, SLOT(u pdateLog(int)));
connect(ui->refreshButton, SIGNAL(clicked()), this, SLOT(refreshLog( ))); connect(ui->refreshButton, SIGNAL(clicked()), this, SLOT(refreshLog( )));
connect(ui->stackListWidget, SIGNAL(currentItemChanged(QListWidgetIt em *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWi dgetItem*))); connect(ui->stackListWidget, SIGNAL(currentItemChanged(QListWidgetIt em *, QListWidgetItem *)), this, SLOT(changePage(QListWidgetItem *, QListWi dgetItem*)));
} }
void HelpDialog::updateDownloadComplete(QNetworkReply *reply)
{
// check the download worked, and save the data to file if this is t
he case.
if (reply->error() != QNetworkReply::NoError)
{
qWarning() << "HelpDialog::updateDownloadComplete() FAILED t
o download" << reply->url() << " Error: " << reply->errorString();
}
else
{
// download completed successfully.
QString jsonFilePath = StelFileMgr::findFile("data", StelFil
eMgr::Flags(StelFileMgr::Writable|StelFileMgr::Directory)) + "/updates.json
";
if (jsonFilePath.isEmpty())
{
qWarning() << "HelpDialog::updateDownloadComplete():
cannot write JSON data to file data/updates.json";
return;
}
QFile jsonFile(jsonFilePath);
if (jsonFile.exists())
jsonFile.remove();
if(jsonFile.open(QIODevice::WriteOnly | QIODevice::Text))
{
jsonFile.write(reply->readAll());
jsonFile.close();
}
}
}
void HelpDialog::updateJSON(void)
{
if (updateState==HelpDialog::Updating)
{
qWarning() << "HelpDialog: already updating... will not sta
rt again current update is complete.";
return;
}
updateState = HelpDialog::Updating;
emit(updateStateChanged(updateState));
// Get info about operating system
QString OS = StelUtils::getOperatingSystemInfo();
if (OS.contains("Linux"))
OS = "Linux";
// Set user agent as "Stellarium/$version$ ($platform$)"
QString UserAgent = QString("Stellarium/%1 (%2)").arg(currentVersion
).arg(OS);
QNetworkRequest request;
request.setUrl(QUrl(updateUrl));
request.setRawHeader("User-Agent", UserAgent.toUtf8());
downloadMgr->get(request);
updateState = HelpDialog::CompleteUpdates;
emit(updateStateChanged(updateState));
readJsonFile();
}
QString HelpDialog::getLatestVersionFromJson()
{
QString jsonVersion("unknown");
QFile jsonDataFile(jsonDataPath);
if (!jsonDataFile.open(QIODevice::ReadOnly))
{
qWarning() << "HelpDialog::getLatestVersionFromJson() cannot
open " << QDir::toNativeSeparators(jsonDataPath);
return jsonVersion;
}
QVariantMap map;
try
{
map = StelJsonParser::parse(&jsonDataFile).toMap();
if (map.contains("latestVersion"))
{
jsonVersion = map.value("latestVersion").toString();
}
jsonDataFile.close();
}
catch(std::runtime_error& e)
{
qDebug() << "HelpDialog::getLatestVersionFromJson() error:"
<< e.what();
}
//qDebug() << "HelpDialog::getLatestVersionFromJson() latest version
from file:" << jsonVersion;
return jsonVersion;
}
int HelpDialog::getRequiredOpenGLVersionFromJson()
{
int jsonVersion = 0;
QFile jsonDataFile(jsonDataPath);
if (!jsonDataFile.open(QIODevice::ReadOnly))
{
qWarning() << "HelpDialog::getRequiredOpenGLVersionFromJson(
) cannot open " << QDir::toNativeSeparators(jsonDataPath);
return jsonVersion;
}
QVariantMap map;
try
{
map = StelJsonParser::parse(&jsonDataFile).toMap();
if (map.contains("requiredOpenGLVersion"))
{
jsonVersion = map.value("requiredOpenGLVersion").toI
nt();
}
jsonDataFile.close();
}
catch(std::runtime_error& e)
{
qDebug() << "HelpDialog::getRequiredOpenGLVersionFromJson()
error:" << e.what();
}
//qDebug() << "HelpDialog::getRequiredOpenGLVersionFromJson() requir
ed OpenGL version from file:" << jsonVersion;
return jsonVersion;
}
/*
Replace the JSON file with the default from the compiled-in resource
*/
void HelpDialog::restoreDefaultJsonFile(void)
{
QFile src(StelFileMgr::findFile("data/updates.json"));
if (!src.copy(jsonDataPath))
{
qWarning() << "HelpDialog::restoreDefaultJsonFile() cannot c
opy json resource to " + QDir::toNativeSeparators(jsonDataPath);
}
else
{
//qDebug() << "HelpDialog::restoreDefaultJsonFile() copied d
efault updates.json to " << QDir::toNativeSeparators(jsonDataPath);
// The resource is read only, and the new file inherits this
... make sure the new file
// is writable by the Stellarium process so that updates can
be done.
QFile dest(jsonDataPath);
dest.setPermissions(dest.permissions() | QFile::WriteOwner);
}
}
void HelpDialog::readJsonFile()
{
QString version = getLatestVersionFromJson();
unsigned int OpenGLversion = getRequiredOpenGLVersionFromJson();
if (version!=currentVersion)
{
setUpdatesMessage(true, version, OpenGLversion);
}
}
void HelpDialog::setUpdatesMessage(bool hasUpdates, QString version, int Op
enGL)
{
if (version.contains("unknown"))
{
// TRANSLATORS: This message will be displayed for users if
Stellarium can't get info about version from stellarium.org
updatesMessage = q_("Oops... Stellarium can't check latest v
ersion.");
return;
}
int cVMajor = 0, cVMinor = 0, cVPatch = 0, rVMajor = 0, rVMinor = 0,
rVPatch = 0;
QRegExp vRx("(\\d+)\\.(\\d+)\\.(\\d+)");
if (vRx.exactMatch(currentVersion))
{
cVMajor = vRx.capturedTexts().at(1).toInt();
cVMinor = vRx.capturedTexts().at(2).toInt();
cVPatch = vRx.capturedTexts().at(3).toInt();
}
if (vRx.exactMatch(version))
{
rVMajor = vRx.capturedTexts().at(1).toInt();
rVMinor = vRx.capturedTexts().at(2).toInt();
rVPatch = vRx.capturedTexts().at(3).toInt();
}
if (hasUpdates)
{
if ((cVMajor>rVMajor) || (cVMinor>rVMinor) || (cVPatch>rVPat
ch))
{
// TRANSLATORS: This message will be displayed for u
sers if current version of Stellarium is bigger than version from stellariu
m.org
updatesMessage = q_("Looks like you are using the de
velopment version of Stellarium.");
}
else
{
// TRANSLATORS: This message will be displayed for u
sers if current version of Stellarium is smaller than version from stellari
um.org
updatesMessage = q_("This version of Stellarium is o
utdated! Latest version is %1.").arg(version);
if (!(QGLFormat::openGLVersionFlags() & OpenGL))
{
updatesMessage.append(q_(" Sorry, your hardw
are is not compatible with newest version of Stellarium!"));
}
}
}
else
{
// TRANSLATORS: This message will be displayed for users if
current version of Stellarium is equals with version from stellarium.org
updatesMessage = q_("This is latest stable version of Stella
rium.");
}
}
QString HelpDialog::getUpdatesMessage()
{
return updatesMessage;
}
void HelpDialog::showShortcutsWindow() void HelpDialog::showShortcutsWindow()
{ {
StelAction* action = StelApp::getInstance().getStelActionManager()-> findAction("actionShow_Shortcuts_Window_Global"); StelAction* action = StelApp::getInstance().getStelActionManager()-> findAction("actionShow_Shortcuts_Window_Global");
if (action) if (action)
action->setChecked(true); action->setChecked(true);
} }
void HelpDialog::updateLog(int) void HelpDialog::updateLog(int)
{ {
if (ui->stackedWidget->currentWidget() == ui->pageLog) if (ui->stackedWidget->currentWidget() == ui->pageLog)
skipping to change at line 486 skipping to change at line 255
void HelpDialog::updateText(void) void HelpDialog::updateText(void)
{ {
QString newHtml = getHelpText(); QString newHtml = getHelpText();
ui->helpBrowser->clear(); ui->helpBrowser->clear();
StelGui* gui = dynamic_cast<StelGui*>(StelApp::getInstance().getGui( )); StelGui* gui = dynamic_cast<StelGui*>(StelApp::getInstance().getGui( ));
Q_ASSERT(gui); Q_ASSERT(gui);
ui->helpBrowser->document()->setDefaultStyleSheet(QString(gui->getSt elStyle().htmlStyleSheet)); ui->helpBrowser->document()->setDefaultStyleSheet(QString(gui->getSt elStyle().htmlStyleSheet));
ui->helpBrowser->insertHtml(newHtml); ui->helpBrowser->insertHtml(newHtml);
ui->helpBrowser->scrollToAnchor("top"); ui->helpBrowser->scrollToAnchor("top");
QStringList contributors;
contributors << "Vladislav Bataron" << "Barry Gerdes" << "Peter Wals
er" << "Michal Sojka"
<< "Nick Fedoseev" << "Clement Sommelet" << "Ivan Marti
-Vidal" << "Nicolas Martignoni"
<< "Oscar Roig Felius" << "M.S. Adityan" << "Tomasz Buc
hert" << "Adam Majer"
<< "Roland Bosa" << "Łukasz 'sil2100' Zemczak" << "Gábo
r Péterffy"
<< "Mircea Lite" << "Alexey Dokuchaev" << "William Form
yduval" << "Daniel De Mickey"
<< "François Scholder" << "Anton Samoylov" << "Mykyta S
ytyi" << "Shantanu Agarwal"
<< "Teemu Nätkinniemi" << "Kutaibaa Akraa" << "J.L.Cana
les" << "Froenchenko Leonid"
<< "Peter Mousley" << "Greg Alexander" << "Yuri Chornoi
van" << "Daniel Michalik"
<< "Hleb Valoshka" << "Matthias Drochner" << "Kenan Der
višević" << "Alex Gamper"
<< "Volker Hören" << "Max Digruber" << "Dan Smale" << "
Victor Reijs"
<< "Tanmoy Saha" << "Oleg Ginzburg" << "Peter Hickey" <
< "Bernd Kreuss"
<< "Alexander Miller" << "Maciej Serylak" << "Eleni Mar
ia Stea" << "Kirill Snezhko"
<< "Simon Parzer" << "Peter Neubauer" << "Andrei Borza"
<< "Florian Schaukowitsch"
<< "Allan Johnson" << "Felix Zeltner" << "Paolo Cancedd
a" << "Ross Mitchell"
<< "David Baucum" << "Maciej Serylak" << "Adriano Steff
ler" << "Sibi Antony"
<< "Tony Furr";
contributors.sort();
// populate About tab // populate About tab
newHtml = "<h1>" + StelUtils::getApplicationName() + "</h1>"; newHtml = "<h1>" + StelUtils::getApplicationName() + "</h1>";
// Note: this legal notice is not suitable for traslation // Note: this legal notice is not suitable for traslation
newHtml += "<h3>Copyright &copy; 2000-2014 Stellarium Developers</h3 >"; newHtml += "<h3>Copyright &copy; 2000-2014 Stellarium Developers</h3 >";
if (getUpdatesEnabled())
newHtml += "<p><strong>" + getUpdatesMessage() + "</strong><
/p>";
newHtml += "<p>This program is free software; you can redistribute i t and/or "; newHtml += "<p>This program is free software; you can redistribute i t and/or ";
newHtml += "modify it under the terms of the GNU General Public Lice nse "; newHtml += "modify it under the terms of the GNU General Public Lice nse ";
newHtml += "as published by the Free Software Foundation; either ver sion 2 "; newHtml += "as published by the Free Software Foundation; either ver sion 2 ";
newHtml += "of the License, or (at your option) any later version.</ p>"; newHtml += "of the License, or (at your option) any later version.</ p>";
newHtml += "<p>This program is distributed in the hope that it will be useful, "; newHtml += "<p>This program is distributed in the hope that it will be useful, ";
newHtml += "but WITHOUT ANY WARRANTY; without even the implied "; newHtml += "but WITHOUT ANY WARRANTY; without even the implied ";
newHtml += "warranty of MERCHANTABILITY or FITNESS FOR A "; newHtml += "warranty of MERCHANTABILITY or FITNESS FOR A ";
newHtml += "PARTICULAR PURPOSE. See the GNU General Public "; newHtml += "PARTICULAR PURPOSE. See the GNU General Public ";
newHtml += "License for more details.</p>"; newHtml += "License for more details.</p>";
newHtml += "<p>You should have received a copy of the GNU General Pu blic "; newHtml += "<p>You should have received a copy of the GNU General Pu blic ";
skipping to change at line 519 skipping to change at line 305
newHtml += "<li>" + q_("Doc author/developer: %1").arg(QString("Matt hew Gates")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Doc author/developer: %1").arg(QString("Matt hew Gates")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Bogdan Marinov" )).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Bogdan Marinov" )).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Timothy Reaves" )).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Timothy Reaves" )).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Guillaume Ch%1r eau").arg(QChar(0x00E9))).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Guillaume Ch%1r eau").arg(QChar(0x00E9))).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Georg Zotti")). toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Georg Zotti")). toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Alexander Wolf" )).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Alexander Wolf" )).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Marcos Cardinot ")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Marcos Cardinot ")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Ferdinand Majer ech")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Ferdinand Majer ech")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Jörg Müller")). toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Jörg Müller")). toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Continuous Integration: %1").arg(QString("Ha ns Lambermont")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Continuous Integration: %1").arg(QString("Ha ns Lambermont")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Tester: %1").arg(QString("Barry Gerdes")).to HtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Tester: %1").arg(QString("Khalid AlAjaji")). toHtmlEscaped() + "</li></ul>"; newHtml += "<li>" + q_("Tester: %1").arg(QString("Khalid AlAjaji")). toHtmlEscaped() + "</li></ul>";
newHtml += "<h3>" + q_("Past Developers").toHtmlEscaped() + "</h3>"; newHtml += "<h3>" + q_("Past Developers").toHtmlEscaped() + "</h3>";
newHtml += "<p>" + q_("Several people have made significant contrib utions, but are no longer active. Their work has made a big difference to t he project:").toHtmlEscaped() + "</p><ul>"; newHtml += "<p>" + q_("Several people have made significant contrib utions, but are no longer active. Their work has made a big difference to t he project:").toHtmlEscaped() + "</p><ul>";
newHtml += "<li>" + q_("Graphic/other designer: %1").arg(QString("Jo han Meuris")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Graphic/other designer: %1").arg(QString("Jo han Meuris")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Johannes Gajdos ik")).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Johannes Gajdos ik")).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Rob Spearman")) .toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Rob Spearman")) .toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Andr%1s Mohari" ).arg(QChar(0x00E1))).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Andr%1s Mohari" ).arg(QChar(0x00E1))).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("Developer: %1").arg(QString("Mike Storm")).t oHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("Developer: %1").arg(QString("Mike Storm")).t oHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("OSX Developer: %1").arg(QString("Nigel Kerr" )).toHtmlEscaped() + "</li>"; newHtml += "<li>" + q_("OSX Developer: %1").arg(QString("Nigel Kerr" )).toHtmlEscaped() + "</li>";
newHtml += "<li>" + q_("OSX Developer: %1").arg(QString("Diego Marco s")).toHtmlEscaped() + "</li></ul>"; newHtml += "<li>" + q_("OSX Developer: %1").arg(QString("Diego Marco s")).toHtmlEscaped() + "</li></ul>";
newHtml += "<h3>" + q_("Contributors").toHtmlEscaped() + "</h3>";
newHtml += "<p>" + q_("Several people have made contributions to th
e project and their work has made Stellarium better (sorted alphabetically)
: %1.").arg(contributors.join(", ")).toHtmlEscaped() + "</p>";
newHtml += "<p>"; newHtml += "<p>";
ui->aboutBrowser->clear(); ui->aboutBrowser->clear();
ui->aboutBrowser->document()->setDefaultStyleSheet(QString(gui->getS telStyle().htmlStyleSheet)); ui->aboutBrowser->document()->setDefaultStyleSheet(QString(gui->getS telStyle().htmlStyleSheet));
ui->aboutBrowser->insertHtml(newHtml); ui->aboutBrowser->insertHtml(newHtml);
ui->aboutBrowser->scrollToAnchor("top"); ui->aboutBrowser->scrollToAnchor("top");
} }
void HelpDialog::changePage(QListWidgetItem *current, QListWidgetItem *prev ious) void HelpDialog::changePage(QListWidgetItem *current, QListWidgetItem *prev ious)
{ {
if (!current) if (!current)
 End of changes. 10 change blocks. 
277 lines changed or deleted 38 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/