Added movie menu logic to gui.
This commit is contained in:
parent
f2dc2c5755
commit
b3c51ef4b1
|
@ -7,6 +7,7 @@
|
||||||
|
|
||||||
#include "../../fceu.h"
|
#include "../../fceu.h"
|
||||||
#include "../../fds.h"
|
#include "../../fds.h"
|
||||||
|
#include "../../movie.h"
|
||||||
|
|
||||||
#ifdef _S9XLUA_H
|
#ifdef _S9XLUA_H
|
||||||
#include "../../fceulua.h"
|
#include "../../fceulua.h"
|
||||||
|
@ -395,6 +396,44 @@ void consoleWin_t::createMainMenu(void)
|
||||||
|
|
||||||
subMenu->addAction(fdsLoadBiosAct);
|
subMenu->addAction(fdsLoadBiosAct);
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Movie
|
||||||
|
movieMenu = menuBar()->addMenu(tr("Movie"));
|
||||||
|
|
||||||
|
// Movie -> Open
|
||||||
|
openMovAct = new QAction(tr("Open"), this);
|
||||||
|
openMovAct->setShortcut( QKeySequence(tr("Shift+F7")));
|
||||||
|
openMovAct->setStatusTip(tr("Open Movie File"));
|
||||||
|
connect(openMovAct, SIGNAL(triggered()), this, SLOT(openMovie(void)) );
|
||||||
|
|
||||||
|
movieMenu->addAction(openMovAct);
|
||||||
|
|
||||||
|
// Movie -> Stop
|
||||||
|
stopMovAct = new QAction(tr("Stop"), this);
|
||||||
|
//stopMovAct->setShortcut( QKeySequence(tr("Shift+F7")));
|
||||||
|
stopMovAct->setStatusTip(tr("Stop Movie Recording"));
|
||||||
|
connect(stopMovAct, SIGNAL(triggered()), this, SLOT(stopMovie(void)) );
|
||||||
|
|
||||||
|
movieMenu->addAction(stopMovAct);
|
||||||
|
|
||||||
|
movieMenu->addSeparator();
|
||||||
|
|
||||||
|
// Movie -> Record
|
||||||
|
recMovAct = new QAction(tr("Record"), this);
|
||||||
|
recMovAct->setShortcut( QKeySequence(tr("Shift+F5")));
|
||||||
|
recMovAct->setStatusTip(tr("Record Movie"));
|
||||||
|
connect(recMovAct, SIGNAL(triggered()), this, SLOT(recordMovie(void)) );
|
||||||
|
|
||||||
|
movieMenu->addAction(recMovAct);
|
||||||
|
|
||||||
|
// Movie -> Record As
|
||||||
|
recAsMovAct = new QAction(tr("Record As"), this);
|
||||||
|
//recAsMovAct->setShortcut( QKeySequence(tr("Shift+F5")));
|
||||||
|
recAsMovAct->setStatusTip(tr("Record Movie"));
|
||||||
|
connect(recAsMovAct, SIGNAL(triggered()), this, SLOT(recordMovieAs(void)) );
|
||||||
|
|
||||||
|
movieMenu->addAction(recAsMovAct);
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
// Help
|
// Help
|
||||||
helpMenu = menuBar()->addMenu(tr("Help"));
|
helpMenu = menuBar()->addMenu(tr("Help"));
|
||||||
|
@ -1046,6 +1085,142 @@ void consoleWin_t::fdsLoadBiosFile(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::openMovie(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
QString filename;
|
||||||
|
std::string last;
|
||||||
|
QFileDialog dialog(this, tr("Open FM2 Movie") );
|
||||||
|
|
||||||
|
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||||
|
|
||||||
|
dialog.setNameFilter(tr("FM2 Movies (*.fm2) ;; All files (*)"));
|
||||||
|
|
||||||
|
dialog.setViewMode(QFileDialog::List);
|
||||||
|
|
||||||
|
g_config->getOption ("SDL.LastOpenFile", &last );
|
||||||
|
|
||||||
|
dialog.setDirectory( tr(last.c_str()) );
|
||||||
|
|
||||||
|
// the gnome default file dialog is not playing nice with QT.
|
||||||
|
// TODO make this a config option to use native file dialog.
|
||||||
|
dialog.setOption(QFileDialog::DontUseNativeDialog, true);
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
ret = dialog.exec();
|
||||||
|
|
||||||
|
if ( ret )
|
||||||
|
{
|
||||||
|
QStringList fileList;
|
||||||
|
fileList = dialog.selectedFiles();
|
||||||
|
|
||||||
|
if ( fileList.size() > 0 )
|
||||||
|
{
|
||||||
|
filename = fileList[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( filename.isNull() )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
qDebug() << "selected file path : " << filename.toUtf8();
|
||||||
|
|
||||||
|
int pauseframe;
|
||||||
|
g_config->getOption ("SDL.PauseFrame", &pauseframe);
|
||||||
|
g_config->setOption ("SDL.PauseFrame", 0);
|
||||||
|
|
||||||
|
FCEUI_printf ("Playing back movie located at %s\n", filename.toStdString().c_str() );
|
||||||
|
|
||||||
|
fceuWrapperLock();
|
||||||
|
if (FCEUI_LoadMovie( filename.toStdString().c_str(),
|
||||||
|
false, pauseframe ? pauseframe : false) == false)
|
||||||
|
{
|
||||||
|
printf("Error: Could not open movie file: %s \n", filename.toStdString().c_str() );
|
||||||
|
}
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::stopMovie(void)
|
||||||
|
{
|
||||||
|
fceuWrapperLock();
|
||||||
|
FCEUI_StopMovie();
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::recordMovie(void)
|
||||||
|
{
|
||||||
|
fceuWrapperLock();
|
||||||
|
if (fceuWrapperGameLoaded())
|
||||||
|
{
|
||||||
|
std::string name = FCEU_MakeFName (FCEUMKF_MOVIE, 0, 0);
|
||||||
|
FCEUI_printf ("Recording movie to %s\n", name.c_str ());
|
||||||
|
FCEUI_SaveMovie (name.c_str (), MOVIE_FLAG_NONE, L"");
|
||||||
|
}
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void consoleWin_t::recordMovieAs(void)
|
||||||
|
{
|
||||||
|
int ret;
|
||||||
|
QString filename;
|
||||||
|
std::string last;
|
||||||
|
QFileDialog dialog(this, tr("Save FM2 Movie for Recording") );
|
||||||
|
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
|
||||||
|
dialog.setNameFilter(tr("FM2 Movies (*.fm2) ;; All files (*)"));
|
||||||
|
|
||||||
|
dialog.setViewMode(QFileDialog::List);
|
||||||
|
|
||||||
|
g_config->getOption ("SDL.LastOpenFile", &last );
|
||||||
|
|
||||||
|
dialog.setDirectory( tr(last.c_str()) );
|
||||||
|
|
||||||
|
// the gnome default file dialog is not playing nice with QT.
|
||||||
|
// TODO make this a config option to use native file dialog.
|
||||||
|
dialog.setOption(QFileDialog::DontUseNativeDialog, true);
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
ret = dialog.exec();
|
||||||
|
|
||||||
|
if ( ret )
|
||||||
|
{
|
||||||
|
QStringList fileList;
|
||||||
|
fileList = dialog.selectedFiles();
|
||||||
|
|
||||||
|
if ( fileList.size() > 0 )
|
||||||
|
{
|
||||||
|
filename = fileList[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( filename.isNull() )
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
qDebug() << "selected file path : " << filename.toUtf8();
|
||||||
|
|
||||||
|
int pauseframe;
|
||||||
|
g_config->getOption ("SDL.PauseFrame", &pauseframe);
|
||||||
|
g_config->setOption ("SDL.PauseFrame", 0);
|
||||||
|
|
||||||
|
FCEUI_printf ("Recording movie to %s\n", filename.toStdString().c_str() );
|
||||||
|
|
||||||
|
fceuWrapperLock();
|
||||||
|
std::string s = GetUserText ("Author name");
|
||||||
|
std::wstring author (s.begin (), s.end ());
|
||||||
|
|
||||||
|
FCEUI_SaveMovie ( filename.toStdString().c_str(), MOVIE_FLAG_NONE, author);
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
void consoleWin_t::aboutFCEUX(void)
|
void consoleWin_t::aboutFCEUX(void)
|
||||||
{
|
{
|
||||||
AboutWindow *aboutWin;
|
AboutWindow *aboutWin;
|
||||||
|
|
|
@ -50,6 +50,7 @@ class consoleWin_t : public QMainWindow
|
||||||
QMenu *fileMenu;
|
QMenu *fileMenu;
|
||||||
QMenu *optMenu;
|
QMenu *optMenu;
|
||||||
QMenu *emuMenu;
|
QMenu *emuMenu;
|
||||||
|
QMenu *movieMenu;
|
||||||
QMenu *helpMenu;
|
QMenu *helpMenu;
|
||||||
|
|
||||||
QAction *openROM;
|
QAction *openROM;
|
||||||
|
@ -80,6 +81,10 @@ class consoleWin_t : public QMainWindow
|
||||||
QAction *fdsSwitchAct;
|
QAction *fdsSwitchAct;
|
||||||
QAction *fdsEjectAct;
|
QAction *fdsEjectAct;
|
||||||
QAction *fdsLoadBiosAct;
|
QAction *fdsLoadBiosAct;
|
||||||
|
QAction *openMovAct;
|
||||||
|
QAction *stopMovAct;
|
||||||
|
QAction *recMovAct;
|
||||||
|
QAction *recAsMovAct;
|
||||||
|
|
||||||
QTimer *gameTimer;
|
QTimer *gameTimer;
|
||||||
emulatorThread_t *emulatorThread;
|
emulatorThread_t *emulatorThread;
|
||||||
|
@ -134,6 +139,10 @@ class consoleWin_t : public QMainWindow
|
||||||
void fdsSwitchDisk(void);
|
void fdsSwitchDisk(void);
|
||||||
void fdsEjectDisk(void);
|
void fdsEjectDisk(void);
|
||||||
void fdsLoadBiosFile(void);
|
void fdsLoadBiosFile(void);
|
||||||
|
void openMovie(void);
|
||||||
|
void stopMovie(void);
|
||||||
|
void recordMovie(void);
|
||||||
|
void recordMovieAs(void);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -318,6 +318,11 @@ int fceuWrapperTogglePause(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool fceuWrapperGameLoaded(void)
|
||||||
|
{
|
||||||
|
return (isloaded ? true : false);
|
||||||
|
}
|
||||||
|
|
||||||
int fceuWrapperInit( int argc, char *argv[] )
|
int fceuWrapperInit( int argc, char *argv[] )
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
|
|
|
@ -32,4 +32,5 @@ void fceuWrapperUnLock(void);
|
||||||
int fceuWrapperSoftReset(void);
|
int fceuWrapperSoftReset(void);
|
||||||
int fceuWrapperHardReset(void);
|
int fceuWrapperHardReset(void);
|
||||||
int fceuWrapperTogglePause(void);
|
int fceuWrapperTogglePause(void);
|
||||||
|
bool fceuWrapperGameLoaded(void);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue