Added fceux help page viewer using QHelpEngine.
This commit is contained in:
parent
fa52003d37
commit
6762a1bb7c
|
@ -13,13 +13,13 @@ else()
|
|||
endif()
|
||||
|
||||
if ( ${QT6} )
|
||||
find_package( Qt6 COMPONENTS Widgets OpenGL OpenGLWidgets REQUIRED)
|
||||
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
|
||||
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
|
||||
find_package( Qt6 COMPONENTS Widgets Help OpenGL OpenGLWidgets REQUIRED)
|
||||
add_definitions( ${Qt6Widgets_DEFINITIONS} ${Qt6Help_DEFINITIONS} ${Qt6OpenGLWidgets_DEFINITIONS} )
|
||||
include_directories( ${Qt6Widgets_INCLUDE_DIRS} ${Qt6Help_INCLUDE_DIRS} ${Qt6OpenGLWidgets_INCLUDE_DIRS} )
|
||||
else()
|
||||
find_package( Qt5 COMPONENTS Widgets OpenGL REQUIRED)
|
||||
add_definitions( ${Qt5Widgets_DEFINITIONS} )
|
||||
include_directories( ${Qt5Widgets_INCLUDE_DIRS} )
|
||||
find_package( Qt5 COMPONENTS Widgets OpenGL Help REQUIRED)
|
||||
add_definitions( ${Qt5Widgets_DEFINITIONS} ${Qt5Help_DEFINITIONS} )
|
||||
include_directories( ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Help_INCLUDE_DIRS} )
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
|
@ -534,6 +534,7 @@ endif()
|
|||
|
||||
target_link_libraries( ${APP_NAME}
|
||||
${${Qt}Widgets_LIBRARIES}
|
||||
${${Qt}Help_LIBRARIES}
|
||||
${${Qt}OpenGL_LIBRARIES}
|
||||
${${Qt}OpenGLWidgets_LIBRARIES}
|
||||
${OPENGL_LDFLAGS}
|
||||
|
|
|
@ -23,6 +23,12 @@
|
|||
#include <QFile>
|
||||
#include <QFileDialog>
|
||||
#include <QStandardPaths>
|
||||
#include <QMenuBar>
|
||||
#include <QMenu>
|
||||
#include <QAction>
|
||||
#include <QHelpEngine>
|
||||
#include <QHelpIndexModel>
|
||||
#include <QHelpContentWidget>
|
||||
|
||||
#include "driver.h"
|
||||
#include "Qt/HelpPages.h"
|
||||
|
@ -92,7 +98,12 @@ void consoleWin_t::OpenHelpWindow(std::string subpage)
|
|||
std::string 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
|
||||
}
|
||||
|
||||
|
@ -203,3 +214,112 @@ static int forkHelpFileViewer( const char *chmViewer, const char *filepath )
|
|||
return pid;
|
||||
}
|
||||
#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
|
||||
#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