00001
00002
00003
00004
00005
00006
00007 #include "HelpBrowser.h"
00008 #include "HelpWindow.h"
00009 #include "Logger.h"
00010 #include <QApplication>
00011 #include <QDir>
00012 #include <QFileInfo>
00013 #include <QHelpContentWidget>
00014 #include <QHelpEngine>
00015 #include <QHelpIndexWidget>
00016 #include <QSplitter>
00017 #include <QTabWidget>
00018
00019 const int MIN_WIDTH = 600;
00020 const int MIN_HEIGHT = 600;
00021
00022 HelpWindow::HelpWindow(QWidget *parent) :
00023 QDockWidget (parent)
00024 {
00025 setMinimumWidth (MIN_WIDTH);
00026 setMinimumHeight (MIN_HEIGHT);
00027
00028 QHelpEngine *helpEngine = new QHelpEngine (helpPath());
00029 helpEngine->setupData();
00030
00031 QTabWidget *tabs = new QTabWidget;
00032 tabs->addTab (helpEngine->contentWidget(),
00033 tr ("Contents"));
00034 tabs->addTab (helpEngine->indexWidget(),
00035 tr ("Index"));
00036
00037 HelpBrowser *browser = new HelpBrowser (helpEngine);
00038
00039
00040 browser->setSource (QUrl ("qthelp://engaugedigitizer.net/doc/index.html"));
00041
00042 connect (helpEngine->contentWidget (), SIGNAL (linkActivated (QUrl)), browser, SLOT (setSource (QUrl)));
00043 connect (helpEngine->indexWidget (), SIGNAL (linkActivated (QUrl, QString)), browser, SLOT (setSource (QUrl)));
00044
00045 QSplitter *splitter = new QSplitter (Qt::Horizontal);
00046 splitter->insertWidget (0, tabs);
00047 splitter->insertWidget (1, browser);
00048
00049 setWidget (splitter);
00050 }
00051
00052 QString HelpWindow::helpPath() const
00053 {
00054
00055
00056
00057 QStringList paths;
00058 #ifdef HELPDIR
00059 #define QUOTE(string) _QUOTE(string)
00060 #define _QUOTE(string) #string
00061 QString path = QString ("%1/engauge.qhc")
00062 .arg (QUOTE (HELPDIR));
00063 paths << path;
00064 #endif
00065 #ifdef OSX
00066 paths << "/../Resources/engauge.qhc";
00067 #else
00068 paths << "/documentation/engauge.qhc";
00069 paths << "/../share/doc/engauge-digitizer/engauge.qhc";
00070 #endif
00071
00072 QStringList::iterator itr;
00073 for (itr = paths.begin(); itr != paths.end(); itr++) {
00074
00075 QString pathAsIs = *itr;
00076
00077 QFileInfo fileAsIs (pathAsIs);
00078 if (fileAsIs.exists()) {
00079 return pathAsIs;
00080 }
00081
00082 QString pathWithPrefix = QApplication::applicationDirPath() + pathAsIs;
00083
00084 QFileInfo fileWithPrefix (pathWithPrefix);
00085 if (fileWithPrefix.exists()) {
00086 return pathWithPrefix;
00087 }
00088 }
00089
00090 return "";
00091 }
00092