Added CDL File load/save logic.
This commit is contained in:
parent
445b17104a
commit
63933a1821
|
@ -1,6 +1,7 @@
|
||||||
// CodeDataLogger.cpp
|
// CodeDataLogger.cpp
|
||||||
//
|
//
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
#include <QFileDialog>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
|
|
||||||
|
@ -133,12 +134,15 @@ CodeDataLoggerDialog_t::CodeDataLoggerDialog_t(QWidget *parent)
|
||||||
|
|
||||||
btn = new QPushButton( tr("Save") );
|
btn = new QPushButton( tr("Save") );
|
||||||
grid->addWidget( btn, 0, 2, Qt::AlignCenter );
|
grid->addWidget( btn, 0, 2, Qt::AlignCenter );
|
||||||
|
connect( btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFile(void)));
|
||||||
|
|
||||||
btn = new QPushButton( tr("Load") );
|
btn = new QPushButton( tr("Load") );
|
||||||
grid->addWidget( btn, 1, 0, Qt::AlignCenter );
|
grid->addWidget( btn, 1, 0, Qt::AlignCenter );
|
||||||
|
connect( btn, SIGNAL(clicked(void)), this, SLOT(loadCdlFile(void)));
|
||||||
|
|
||||||
btn = new QPushButton( tr("Save As") );
|
btn = new QPushButton( tr("Save As") );
|
||||||
grid->addWidget( btn, 1, 2, Qt::AlignCenter );
|
grid->addWidget( btn, 1, 2, Qt::AlignCenter );
|
||||||
|
connect( btn, SIGNAL(clicked(void)), this, SLOT(saveCdlFileAs(void)));
|
||||||
|
|
||||||
hbox = new QHBoxLayout();
|
hbox = new QHBoxLayout();
|
||||||
vbox1->addLayout( hbox );
|
vbox1->addLayout( hbox );
|
||||||
|
@ -287,18 +291,142 @@ void CodeDataLoggerDialog_t::StartPauseCDLogClicked(void)
|
||||||
{
|
{
|
||||||
if ( FCEUI_GetLoggingCD() )
|
if ( FCEUI_GetLoggingCD() )
|
||||||
{
|
{
|
||||||
printf("CD Logging Paused\n");
|
//printf("CD Logging Paused\n");
|
||||||
PauseCDLogging();
|
PauseCDLogging();
|
||||||
startPauseButton->setText( tr("Start") );
|
startPauseButton->setText( tr("Start") );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("CD Logging Started\n");
|
//printf("CD Logging Started\n");
|
||||||
StartCDLogging();
|
StartCDLogging();
|
||||||
startPauseButton->setText( tr("Pause") );
|
startPauseButton->setText( tr("Pause") );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
void CodeDataLoggerDialog_t::saveCdlFile(void)
|
||||||
|
{
|
||||||
|
SaveCDLogFile();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------
|
||||||
|
void CodeDataLoggerDialog_t::saveCdlFileAs(void)
|
||||||
|
{
|
||||||
|
int ret, useNativeFileDialogVal;
|
||||||
|
QString filename;
|
||||||
|
const char *romFile;
|
||||||
|
QFileDialog dialog(this, tr("Save CDL To File") );
|
||||||
|
|
||||||
|
dialog.setFileMode(QFileDialog::AnyFile);
|
||||||
|
|
||||||
|
dialog.setNameFilter(tr("CDL Files (*.cdl *.CDL) ;; All files (*)"));
|
||||||
|
|
||||||
|
dialog.setViewMode(QFileDialog::List);
|
||||||
|
dialog.setFilter( QDir::AllEntries | QDir::Hidden );
|
||||||
|
dialog.setLabelText( QFileDialog::Accept, tr("Save") );
|
||||||
|
dialog.setDefaultSuffix( tr(".cdl") );
|
||||||
|
|
||||||
|
romFile = getRomFile();
|
||||||
|
|
||||||
|
if ( romFile != NULL )
|
||||||
|
{
|
||||||
|
char dir[512], base[256];
|
||||||
|
|
||||||
|
parseFilepath( romFile, dir, base );
|
||||||
|
|
||||||
|
strcat( base, ".cdl");
|
||||||
|
|
||||||
|
dialog.setDirectory( tr(dir) );
|
||||||
|
|
||||||
|
dialog.selectFile( tr(base) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check config option to use native file dialog or not
|
||||||
|
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
|
||||||
|
|
||||||
|
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
fceuWrapperLock();
|
||||||
|
strcpy( loadedcdfile, filename.toStdString().c_str() );
|
||||||
|
SaveCDLogFile();
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------
|
||||||
|
void CodeDataLoggerDialog_t::loadCdlFile(void)
|
||||||
|
{
|
||||||
|
int ret, useNativeFileDialogVal;
|
||||||
|
QString filename;
|
||||||
|
char dir[512];
|
||||||
|
const char *romFile;
|
||||||
|
QFileDialog dialog(this, tr("Load CDL File") );
|
||||||
|
|
||||||
|
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||||
|
|
||||||
|
dialog.setNameFilter(tr("CDL files (*.cdl *.CDL) ;; All files (*)"));
|
||||||
|
|
||||||
|
dialog.setViewMode(QFileDialog::List);
|
||||||
|
dialog.setFilter( QDir::AllEntries | QDir::Hidden );
|
||||||
|
dialog.setLabelText( QFileDialog::Accept, tr("Load") );
|
||||||
|
|
||||||
|
romFile = getRomFile();
|
||||||
|
|
||||||
|
if ( romFile )
|
||||||
|
{
|
||||||
|
getDirFromFile( romFile, dir );
|
||||||
|
|
||||||
|
dialog.setDirectory( tr(dir) );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check config option to use native file dialog or not
|
||||||
|
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
|
||||||
|
|
||||||
|
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
fceuWrapperLock();
|
||||||
|
LoadCDLog ( filename.toStdString().c_str() );
|
||||||
|
fceuWrapperUnLock();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//----------------------------------------------------
|
||||||
static int getDefaultCDLFile( char *filepath )
|
static int getDefaultCDLFile( char *filepath )
|
||||||
{
|
{
|
||||||
const char *romFile;
|
const char *romFile;
|
||||||
|
@ -399,7 +527,9 @@ bool LoadCDLog(const char* nameo)
|
||||||
|
|
||||||
FP = fopen(nameo, "rb");
|
FP = fopen(nameo, "rb");
|
||||||
if (FP == NULL)
|
if (FP == NULL)
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
for(i = 0;i < (int)cdloggerdataSize;i++)
|
for(i = 0;i < (int)cdloggerdataSize;i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -45,6 +45,9 @@ class CodeDataLoggerDialog_t : public QDialog
|
||||||
public slots:
|
public slots:
|
||||||
void closeWindow(void);
|
void closeWindow(void);
|
||||||
private slots:
|
private slots:
|
||||||
|
void loadCdlFile(void);
|
||||||
|
void saveCdlFile(void);
|
||||||
|
void saveCdlFileAs(void);
|
||||||
void updatePeriodic(void);
|
void updatePeriodic(void);
|
||||||
void ResetCDLogClicked(void);
|
void ResetCDLogClicked(void);
|
||||||
void StartPauseCDLogClicked(void);
|
void StartPauseCDLogClicked(void);
|
||||||
|
|
|
@ -88,7 +88,9 @@ int parseFilepath( const char *filepath, char *dir, char *base, char *suffix )
|
||||||
int i=0,j=0,end=0;
|
int i=0,j=0,end=0;
|
||||||
if ( filepath == NULL )
|
if ( filepath == NULL )
|
||||||
{
|
{
|
||||||
base[0] = 0;
|
if ( dir ) dir[0] = 0;
|
||||||
|
if ( base ) base[0] = 0;
|
||||||
|
if ( suffix) suffix[0] = 0;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
i=0; j=0;
|
i=0; j=0;
|
||||||
|
|
Loading…
Reference in New Issue