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 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
00029 QHelpEngine *helpEngine = new QHelpEngine (helpPath());
00030 helpEngine->setupData();
00031
00032 QTabWidget *tabs = new QTabWidget;
00033 tabs->addTab (helpEngine->contentWidget(),
00034 tr ("Contents"));
00035 tabs->addTab (helpEngine->indexWidget(),
00036 tr ("Index"));
00037
00038 HelpBrowser *browser = new HelpBrowser (helpEngine);
00039
00040
00041
00042
00043
00044 browser->setSource (QUrl ("qthelp://engaugedigitizer.net/doc/index.html"));
00045
00046 connect (helpEngine->contentWidget (), SIGNAL (linkActivated (QUrl)), browser, SLOT (setSource (QUrl)));
00047 connect (helpEngine->indexWidget (), SIGNAL (linkActivated (QUrl, QString)), browser, SLOT (setSource (QUrl)));
00048
00049 QSplitter *splitter = new QSplitter (Qt::Horizontal);
00050 splitter->insertWidget (0, tabs);
00051 splitter->insertWidget (1, browser);
00052
00053 setWidget (splitter);
00054 #endif
00055 }
00056
00057 #if !defined(OSX_DEBUG) && !defined(OSX_RELEASE)
00058 QString HelpWindow::helpPath() const
00059 {
00060
00061
00062
00063 QStringList paths;
00064 #ifdef HELPDIR
00065 #define QUOTE(string) _QUOTE(string)
00066 #define _QUOTE(string) #string
00067 QString path = QString ("%1/engauge.qhc")
00068 .arg (QUOTE (HELPDIR));
00069 paths << path;
00070 #endif
00071 paths << "/documentation/engauge.qhc";
00072 paths << "/../share/doc/engauge-digitizer/engauge.qhc";
00073 paths << "/usr/share/engauge-digitizer-doc/engauge.qhc";
00074
00075 QStringList::iterator itr;
00076 for (itr = paths.begin(); itr != paths.end(); itr++) {
00077
00078 QString pathAsIs = *itr;
00079
00080 QFileInfo fileAsIs (pathAsIs);
00081 if (fileAsIs.exists()) {
00082 return pathAsIs;
00083 }
00084
00085 QString pathWithPrefix = QApplication::applicationDirPath() + pathAsIs;
00086
00087 QFileInfo fileWithPrefix (pathWithPrefix);
00088 if (fileWithPrefix.exists()) {
00089 return pathWithPrefix;
00090 }
00091 }
00092
00093 return "";
00094 }
00095 #endif