diff --git a/src/Gui/CommandStd.cpp b/src/Gui/CommandStd.cpp index 1d6bd6467..9c2d0ae58 100644 --- a/src/Gui/CommandStd.cpp +++ b/src/Gui/CommandStd.cpp @@ -430,7 +430,7 @@ StdCmdOnlineHelp::StdCmdOnlineHelp() void StdCmdOnlineHelp::activated(int iMsg) { - Gui::getMainWindow()->showDocumentation(); + Gui::getMainWindow()->showDocumentation(QString()); } //=========================================================================== diff --git a/src/Gui/Language/Translator.cpp b/src/Gui/Language/Translator.cpp index 4783148e8..17bd01e1e 100644 --- a/src/Gui/Language/Translator.cpp +++ b/src/Gui/Language/Translator.cpp @@ -211,6 +211,16 @@ std::string Translator::activeLanguage() const return d->activatedLanguage; } +std::string Translator::locale(const std::string& lang) const +{ + std::string loc; + std::map::const_iterator tld = d->mapLanguageTopLevelDomain.find(lang); + if (tld != d->mapLanguageTopLevelDomain.end()) + loc = tld->second; + + return loc; +} + QStringList Translator::directories() const { QStringList list; diff --git a/src/Gui/Language/Translator.h b/src/Gui/Language/Translator.h index 30f4543c1..8214295bd 100644 --- a/src/Gui/Language/Translator.h +++ b/src/Gui/Language/Translator.h @@ -64,6 +64,8 @@ public: void refresh(); /** Returns the currently installed language. If no language is installed an empty string is returned. */ std::string activeLanguage() const; + /** Returns the locale (e.g. "de") to the given language name. */ + std::string locale(const std::string&) const; /** Returns a list of supported languages. */ TStringList supportedLanguages() const; /** Returns a map of supported languages/locales. */ diff --git a/src/Gui/MainWindow.cpp b/src/Gui/MainWindow.cpp index b38d930b6..1dbdeb5d5 100644 --- a/src/Gui/MainWindow.cpp +++ b/src/Gui/MainWindow.cpp @@ -31,6 +31,7 @@ # include # include # include +# include # include # include # include @@ -548,12 +549,17 @@ void MainWindow::whatsThis() QWhatsThis::enterWhatsThisMode(); } -void MainWindow::showDocumentation(const char* Article) +void MainWindow::showDocumentation(const QString& help) { - QString help; - if (Article && Article[0] != '\0') - help = QString::fromUtf8("%1.html").arg(QLatin1String(Article)); - d->assistant->showDocumentation(help); + QUrl url(help); + if (url.scheme().isEmpty()) { + QString page; + page = QString::fromUtf8("%1.html").arg(help); + d->assistant->showDocumentation(page); + } + else { + QDesktopServices::openUrl(url); + } } bool MainWindow::event(QEvent *e) @@ -576,7 +582,7 @@ bool MainWindow::event(QEvent *e) } else if (e->type() == QEvent::WhatsThisClicked) { QWhatsThisClickedEvent* wt = static_cast(e); - showDocumentation((const char*)wt->href().toUtf8()); + showDocumentation(wt->href()); } else if (e->type() == QEvent::ApplicationWindowIconChange) { // if application icon changes apply it to the main window and the "About..." dialog diff --git a/src/Gui/MainWindow.h b/src/Gui/MainWindow.h index 5de7e0b3e..cf68763c1 100644 --- a/src/Gui/MainWindow.h +++ b/src/Gui/MainWindow.h @@ -134,7 +134,7 @@ public: /** Shows the Tip-of-the-day dialog after startup. */ void showTipOfTheDay(bool force=false); /** Shows the online documentation. */ - void showDocumentation(const char* Article=0); + void showDocumentation(const QString& help); //@} /** @name Layout Methods