Added fceux help page viewer using QHelpEngine.
This commit is contained in:
parent
fa52003d37
commit
6762a1bb7c
|
@ -13,13 +13,13 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if ( ${QT6} )
|
if ( ${QT6} )
|
||||||
find_package( Qt6 COMPONENTS Widgets OpenGL OpenGLWidgets REQUIRED)
|
find_package( Qt6 COMPONENTS Widgets Help OpenGL OpenGLWidgets REQUIRED)
|
||||||
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
|
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6Help_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
|
||||||
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
|
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Help_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
|
||||||
else()
|
else()
|
||||||
find_package( Qt5 COMPONENTS Widgets OpenGL REQUIRED)
|
find_package( Qt5 COMPONENTS Widgets OpenGL Help REQUIRED)
|
||||||
add_definitions( ${Qt5Widgets_DEFINITIONS} )
|
add_definitions( ${Qt5Widgets_DEFINITIONS} ${Qt5Help_DEFINITIONS} )
|
||||||
include_directories( ${Qt5Widgets_INCLUDE_DIRS} )
|
include_directories( ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Help_INCLUDE_DIRS} )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
|
@ -534,6 +534,7 @@ endif()
|
||||||
|
|
||||||
target_link_libraries( ${APP_NAME}
|
target_link_libraries( ${APP_NAME}
|
||||||
${${Qt}Widgets_LIBRARIES}
|
${${Qt}Widgets_LIBRARIES}
|
||||||
|
${${Qt}Help_LIBRARIES}
|
||||||
${${Qt}OpenGL_LIBRARIES}
|
${${Qt}OpenGL_LIBRARIES}
|
||||||
${${Qt}OpenGLWidgets_LIBRARIES}
|
${${Qt}OpenGLWidgets_LIBRARIES}
|
||||||
${OPENGL_LDFLAGS}
|
${OPENGL_LDFLAGS}
|
||||||
|
|
|
@ -23,6 +23,12 @@
|
||||||
#include <QFile>
|
#include <QFile>
|
||||||
#include <QFileDialog>
|
#include <QFileDialog>
|
||||||
#include <QStandardPaths>
|
#include <QStandardPaths>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QAction>
|
||||||
|
#include <QHelpEngine>
|
||||||
|
#include <QHelpIndexModel>
|
||||||
|
#include <QHelpContentWidget>
|
||||||
|
|
||||||
#include "driver.h"
|
#include "driver.h"
|
||||||
#include "Qt/HelpPages.h"
|
#include "Qt/HelpPages.h"
|
||||||
|
@ -92,7 +98,12 @@ void consoleWin_t::OpenHelpWindow(std::string subpage)
|
||||||
std::string helpFileViewer;
|
std::string helpFileViewer;
|
||||||
g_config->getOption ("SDL.HelpFileViewer", &helpFileViewer );
|
g_config->getOption ("SDL.HelpFileViewer", &helpFileViewer );
|
||||||
|
|
||||||
helpWin = forkHelpFileViewer( helpFileViewer.c_str(), helpFileName.c_str() );
|
//helpWin = forkHelpFileViewer( helpFileViewer.c_str(), helpFileName.c_str() );
|
||||||
|
|
||||||
|
HelpDialog *win = new HelpDialog(this);
|
||||||
|
|
||||||
|
win->show();
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,3 +214,112 @@ static int forkHelpFileViewer( const char *chmViewer, const char *filepath )
|
||||||
return pid;
|
return pid;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
//--- Help Page Dialog
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
HelpDialog::HelpDialog(QWidget *parent)
|
||||||
|
: QDialog(parent, Qt::Window)
|
||||||
|
{
|
||||||
|
int useNativeMenuBar;
|
||||||
|
QMenu *fileMenu;
|
||||||
|
QMenuBar *menuBar;
|
||||||
|
QAction *act;
|
||||||
|
QVBoxLayout *mainLayoutv;
|
||||||
|
|
||||||
|
mainLayoutv = new QVBoxLayout();
|
||||||
|
|
||||||
|
setLayout( mainLayoutv );
|
||||||
|
|
||||||
|
menuBar = new QMenuBar(this);
|
||||||
|
mainLayoutv->setMenuBar( menuBar );
|
||||||
|
|
||||||
|
// This is needed for menu bar to show up on MacOS
|
||||||
|
g_config->getOption( "SDL.UseNativeMenuBar", &useNativeMenuBar );
|
||||||
|
|
||||||
|
menuBar->setNativeMenuBar( useNativeMenuBar ? true : false );
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Menu Start
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// File
|
||||||
|
fileMenu = menuBar->addMenu(tr("&File"));
|
||||||
|
|
||||||
|
// File -> Close
|
||||||
|
act = new QAction(tr("&Close"), this);
|
||||||
|
act->setShortcut(QKeySequence::Close);
|
||||||
|
act->setStatusTip(tr("Close Window"));
|
||||||
|
connect(act, SIGNAL(triggered()), this, SLOT(closeWindow(void)) );
|
||||||
|
|
||||||
|
fileMenu->addAction(act);
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Menu End
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
|
||||||
|
helpEngine = new QHelpEngine(
|
||||||
|
QApplication::applicationDirPath() +
|
||||||
|
"/fceux.qhc", this);
|
||||||
|
helpEngine->setupData();
|
||||||
|
|
||||||
|
hsplitter = new QSplitter( Qt::Horizontal );
|
||||||
|
tabWgt = new QTabWidget();
|
||||||
|
textViewer = new HelpBrowser( helpEngine );
|
||||||
|
|
||||||
|
textViewer->setSource(
|
||||||
|
QUrl("qthelp://TasVideos.fceux/doc/../web/help/fceux.html"));
|
||||||
|
|
||||||
|
tabWgt->addTab( helpEngine->contentWidget(), tr("Contents") );
|
||||||
|
tabWgt->addTab( helpEngine->indexWidget() , tr("Index") );
|
||||||
|
|
||||||
|
hsplitter->addWidget( tabWgt );
|
||||||
|
hsplitter->addWidget( textViewer );
|
||||||
|
|
||||||
|
mainLayoutv->addWidget( hsplitter );
|
||||||
|
|
||||||
|
connect(helpEngine->contentWidget(),
|
||||||
|
SIGNAL(linkActivated(QUrl)),
|
||||||
|
textViewer, SLOT(setSource(QUrl)));
|
||||||
|
|
||||||
|
connect(helpEngine->indexWidget(),
|
||||||
|
SIGNAL(linkActivated(QUrl, QString)),
|
||||||
|
textViewer, SLOT(setSource(QUrl)));
|
||||||
|
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
HelpDialog::~HelpDialog(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
void HelpDialog::closeEvent(QCloseEvent *event)
|
||||||
|
{
|
||||||
|
//printf("Help Dialog Close Window Event\n");
|
||||||
|
done(0);
|
||||||
|
deleteLater();
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
void HelpDialog::closeWindow(void)
|
||||||
|
{
|
||||||
|
//printf("Close Window\n");
|
||||||
|
done(0);
|
||||||
|
deleteLater();
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
//---- Help Browser Class
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
HelpBrowser::HelpBrowser(QHelpEngine* helpEngine,
|
||||||
|
QWidget* parent):QTextBrowser(parent),
|
||||||
|
helpEngine(helpEngine)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
QVariant HelpBrowser::loadResource(int type, const QUrl &name)
|
||||||
|
{
|
||||||
|
if (name.scheme() == "qthelp")
|
||||||
|
return QVariant(helpEngine->fileData(name));
|
||||||
|
else
|
||||||
|
return QTextBrowser::loadResource(type, name);
|
||||||
|
}
|
||||||
|
//-----------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -1,2 +1,38 @@
|
||||||
// HelpPages.h
|
// HelpPages.h
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QSplitter>
|
||||||
|
#include <QTabWidget>
|
||||||
|
#include <QTextBrowser>
|
||||||
|
#include <QCloseEvent>
|
||||||
|
#include <QHelpEngine>
|
||||||
|
|
||||||
|
class HelpBrowser : public QTextBrowser
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
HelpBrowser(QHelpEngine* helpEngine, QWidget* parent = 0);
|
||||||
|
QVariant loadResource (int type, const QUrl& name);
|
||||||
|
private:
|
||||||
|
QHelpEngine* helpEngine;
|
||||||
|
};
|
||||||
|
|
||||||
|
class HelpDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
HelpDialog( QWidget *parent = 0);
|
||||||
|
~HelpDialog(void);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void closeEvent(QCloseEvent *event);
|
||||||
|
|
||||||
|
QHelpEngine *helpEngine;
|
||||||
|
QSplitter *hsplitter;
|
||||||
|
QTabWidget *tabWgt;
|
||||||
|
HelpBrowser *textViewer;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void closeWindow(void);
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue