commit
92724b50d3
|
@ -389,6 +389,8 @@ set(SRC_DRIVERS_SDL
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/GamePadConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/HotKeyConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/PaletteConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/GuiConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/LuaControl.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleVideoConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/ConsoleSoundConf.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/drivers/Qt/AboutWindow.cpp
|
||||
|
|
|
@ -20,6 +20,8 @@
|
|||
#include "Qt/GamePadConf.h"
|
||||
#include "Qt/HotKeyConf.h"
|
||||
#include "Qt/PaletteConf.h"
|
||||
#include "Qt/GuiConf.h"
|
||||
#include "Qt/LuaControl.h"
|
||||
#include "Qt/ConsoleSoundConf.h"
|
||||
#include "Qt/ConsoleVideoConf.h"
|
||||
#include "Qt/AboutWindow.h"
|
||||
|
@ -294,6 +296,14 @@ void consoleWin_t::createMainMenu(void)
|
|||
|
||||
optMenu->addAction(paletteConfig);
|
||||
|
||||
// Options -> GUI Config
|
||||
guiConfig = new QAction(tr("GUI Config"), this);
|
||||
//guiConfig->setShortcut( QKeySequence(tr("Ctrl+C")));
|
||||
guiConfig->setStatusTip(tr("GUI Configure"));
|
||||
connect(guiConfig, SIGNAL(triggered()), this, SLOT(openGuiConfWin(void)) );
|
||||
|
||||
optMenu->addAction(guiConfig);
|
||||
|
||||
// Options -> Auto-Resume
|
||||
autoResume = new QAction(tr("Auto-Resume Play"), this);
|
||||
//autoResume->setShortcut( QKeySequence(tr("Ctrl+C")));
|
||||
|
@ -510,7 +520,7 @@ int consoleWin_t::getDirFromFile( const char *path, char *dir )
|
|||
|
||||
void consoleWin_t::openROMFile(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -518,7 +528,7 @@ void consoleWin_t::openROMFile(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("NES files (*.nes)(*.NES) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("NES files (*.nes *.NES) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -528,9 +538,10 @@ void consoleWin_t::openROMFile(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -571,7 +582,7 @@ void consoleWin_t::closeROMCB(void)
|
|||
|
||||
void consoleWin_t::loadNSF(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -579,7 +590,7 @@ void consoleWin_t::loadNSF(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("NSF Sound Files (*.nsf)(*.NSF) ;; Zip Files (*.zip)(*.ZIP) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("NSF Sound Files (*.nsf *.NSF) ;; Zip Files (*.zip *.ZIP) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -589,9 +600,10 @@ void consoleWin_t::loadNSF(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -622,7 +634,7 @@ void consoleWin_t::loadNSF(void)
|
|||
|
||||
void consoleWin_t::loadStateFrom(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -630,7 +642,7 @@ void consoleWin_t::loadStateFrom(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("FCS Files (*.fc?)(*.FC?) ;; SAV Files (*.sav)(*.SAV) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("FCS Files (*.fc? *.FC?) ;; SAV Files (*.sav *.SAV) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -640,9 +652,10 @@ void consoleWin_t::loadStateFrom(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -673,7 +686,7 @@ void consoleWin_t::loadStateFrom(void)
|
|||
|
||||
void consoleWin_t::saveStateAs(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -681,7 +694,7 @@ void consoleWin_t::saveStateAs(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::AnyFile);
|
||||
|
||||
dialog.setNameFilter(tr("FCS Files (*.fc?)(*.FC?) ;; SAV Files (*.sav)(*.SAV) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("SAV Files (*.sav *.SAV) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -691,9 +704,10 @@ void consoleWin_t::saveStateAs(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -816,61 +830,18 @@ void consoleWin_t::takeScreenShot(void)
|
|||
void consoleWin_t::loadLua(void)
|
||||
{
|
||||
#ifdef _S9XLUA_H
|
||||
int ret;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
QFileDialog dialog(this, tr("Open LUA Script") );
|
||||
LuaControlDialog_t *luaCtrlWin;
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
//printf("Open Lua Control Window\n");
|
||||
|
||||
dialog.setNameFilter(tr("LUA Scripts (*.lua)(*.LUA) ;; All files (*)"));
|
||||
luaCtrlWin = new LuaControlDialog_t(this);
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
luaCtrlWin->show();
|
||||
luaCtrlWin->exec();
|
||||
|
||||
g_config->getOption ("SDL.LastLoadLua", &last );
|
||||
delete luaCtrlWin;
|
||||
|
||||
if ( last.size() == 0 )
|
||||
{
|
||||
last.assign( "/usr/share/fceux/luaScripts" );
|
||||
}
|
||||
|
||||
getDirFromFile( last.c_str(), dir );
|
||||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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();
|
||||
|
||||
g_config->setOption ("SDL.LastLoadLua", filename.toStdString().c_str() );
|
||||
|
||||
fceuWrapperLock();
|
||||
if ( 0 == FCEU_LoadLuaCode( filename.toStdString().c_str() ) )
|
||||
{
|
||||
printf("Error: Could not open the selected lua script: '%s'\n", filename.toStdString().c_str() );
|
||||
}
|
||||
fceuWrapperUnLock();
|
||||
//printf("Lua Control Window Destroyed\n");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -956,6 +927,22 @@ void consoleWin_t::openPaletteConfWin(void)
|
|||
//printf("Palette Config Window Destroyed\n");
|
||||
}
|
||||
|
||||
void consoleWin_t::openGuiConfWin(void)
|
||||
{
|
||||
GuiConfDialog_t *guiConfWin;
|
||||
|
||||
//printf("Open GUI Config Window\n");
|
||||
|
||||
guiConfWin = new GuiConfDialog_t(this);
|
||||
|
||||
guiConfWin->show();
|
||||
guiConfWin->exec();
|
||||
|
||||
delete guiConfWin;
|
||||
|
||||
//printf("GUI Config Window Destroyed\n");
|
||||
}
|
||||
|
||||
void consoleWin_t::toggleAutoResume(void)
|
||||
{
|
||||
//printf("Auto Resume: %i\n", autoResume->isChecked() );
|
||||
|
@ -1024,7 +1011,7 @@ void consoleWin_t::toggleGameGenie(bool checked)
|
|||
|
||||
void consoleWin_t::loadGameGenieROM(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -1032,7 +1019,7 @@ void consoleWin_t::loadGameGenieROM(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("GG ROM File (gg.rom)(*Genie*.nes) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("GG ROM File (gg.rom *Genie*.nes) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -1042,9 +1029,10 @@ void consoleWin_t::loadGameGenieROM(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -1104,7 +1092,7 @@ void consoleWin_t::fdsEjectDisk(void)
|
|||
|
||||
void consoleWin_t::fdsLoadBiosFile(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -1112,7 +1100,7 @@ void consoleWin_t::fdsLoadBiosFile(void)
|
|||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("ROM files (*.rom)(*.ROM) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("ROM files (*.rom *.ROM) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
|
@ -1122,9 +1110,10 @@ void consoleWin_t::fdsLoadBiosFile(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -1168,7 +1157,7 @@ void consoleWin_t::fdsLoadBiosFile(void)
|
|||
|
||||
void consoleWin_t::openMovie(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -1186,9 +1175,10 @@ void consoleWin_t::openMovie(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
@ -1250,7 +1240,7 @@ void consoleWin_t::recordMovie(void)
|
|||
|
||||
void consoleWin_t::recordMovieAs(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
char dir[512];
|
||||
|
@ -1268,9 +1258,10 @@ void consoleWin_t::recordMovieAs(void)
|
|||
|
||||
dialog.setDirectory( tr(dir) );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
|
|
@ -68,6 +68,7 @@ class consoleWin_t : public QMainWindow
|
|||
QAction *gameVideoConfig;
|
||||
QAction *hotkeyConfig;
|
||||
QAction *paletteConfig;
|
||||
QAction *guiConfig;
|
||||
QAction *autoResume;
|
||||
QAction *fullscreen;
|
||||
QAction *aboutAct;
|
||||
|
@ -118,6 +119,7 @@ class consoleWin_t : public QMainWindow
|
|||
void openGameVideoConfWin(void);
|
||||
void openHotkeyConfWin(void);
|
||||
void openPaletteConfWin(void);
|
||||
void openGuiConfWin(void);
|
||||
void toggleAutoResume(void);
|
||||
void toggleFullscreen(void);
|
||||
void updatePeriodic(void);
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
// PaletteConf.cpp
|
||||
//
|
||||
#include <QTextEdit>
|
||||
|
||||
#include "Qt/GuiConf.h"
|
||||
#include "Qt/main.h"
|
||||
#include "Qt/input.h"
|
||||
#include "Qt/config.h"
|
||||
#include "Qt/keyscan.h"
|
||||
#include "Qt/fceuWrapper.h"
|
||||
|
||||
//----------------------------------------------------
|
||||
GuiConfDialog_t::GuiConfDialog_t(QWidget *parent)
|
||||
: QDialog( parent )
|
||||
{
|
||||
int useNativeFileDialogVal;
|
||||
QVBoxLayout *mainLayout;
|
||||
|
||||
//resize( 512, 600 );
|
||||
|
||||
// sync with config
|
||||
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
|
||||
|
||||
setWindowTitle( tr("GUI Config") );
|
||||
|
||||
mainLayout = new QVBoxLayout();
|
||||
|
||||
useNativeFileDialog = new QCheckBox( tr("Use Native OS File Dialog") );
|
||||
|
||||
useNativeFileDialog->setChecked( useNativeFileDialogVal );
|
||||
|
||||
connect(useNativeFileDialog , SIGNAL(stateChanged(int)), this, SLOT(useNativeFileDialogChanged(int)) );
|
||||
|
||||
mainLayout->addWidget( useNativeFileDialog );
|
||||
|
||||
setLayout( mainLayout );
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
GuiConfDialog_t::~GuiConfDialog_t(void)
|
||||
{
|
||||
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GuiConfDialog_t::closeWindow(void)
|
||||
{
|
||||
//printf("Close Window\n");
|
||||
done(0);
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void GuiConfDialog_t::useNativeFileDialogChanged(int state)
|
||||
{
|
||||
int value = (state == Qt::Unchecked) ? 0 : 1;
|
||||
|
||||
g_config->setOption ("SDL.UseNativeFileDialog", value);
|
||||
|
||||
}
|
||||
//----------------------------------------------------
|
|
@ -0,0 +1,37 @@
|
|||
// GuiConf.h
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
#include <QDialog>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QComboBox>
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QFrame>
|
||||
#include <QGroupBox>
|
||||
#include <QLineEdit>
|
||||
|
||||
#include "Qt/main.h"
|
||||
|
||||
class GuiConfDialog_t : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
GuiConfDialog_t(QWidget *parent = 0);
|
||||
~GuiConfDialog_t(void);
|
||||
|
||||
protected:
|
||||
QCheckBox *useNativeFileDialog;
|
||||
private:
|
||||
|
||||
public slots:
|
||||
void closeWindow(void);
|
||||
private slots:
|
||||
void useNativeFileDialogChanged(int v);
|
||||
|
||||
};
|
|
@ -0,0 +1,252 @@
|
|||
// LuaControl.cpp
|
||||
//
|
||||
#include <list>
|
||||
|
||||
#include <QTextEdit>
|
||||
#include <QFileDialog>
|
||||
|
||||
#include "../../fceu.h"
|
||||
|
||||
#ifdef _S9XLUA_H
|
||||
#include "../../fceulua.h"
|
||||
#endif
|
||||
|
||||
#include "Qt/LuaControl.h"
|
||||
#include "Qt/main.h"
|
||||
#include "Qt/input.h"
|
||||
#include "Qt/config.h"
|
||||
#include "Qt/keyscan.h"
|
||||
#include "Qt/fceuWrapper.h"
|
||||
|
||||
static bool luaScriptRunning = false;
|
||||
|
||||
static std::string luaOutputText;
|
||||
static std::list <LuaControlDialog_t*> winList;
|
||||
//----------------------------------------------------
|
||||
LuaControlDialog_t::LuaControlDialog_t(QWidget *parent)
|
||||
: QDialog( parent )
|
||||
{
|
||||
QVBoxLayout *mainLayout;
|
||||
QHBoxLayout *hbox;
|
||||
QLabel *lbl;
|
||||
std::string filename;
|
||||
|
||||
resize( 512, 512 );
|
||||
|
||||
setWindowTitle( tr("Lua Script Control") );
|
||||
|
||||
mainLayout = new QVBoxLayout();
|
||||
|
||||
lbl = new QLabel( tr("Script File:") );
|
||||
|
||||
scriptPath = new QLineEdit();
|
||||
scriptArgs = new QLineEdit();
|
||||
|
||||
g_config->getOption ("SDL.LastLoadLua", &filename );
|
||||
|
||||
scriptPath->setText( filename.c_str() );
|
||||
|
||||
luaOutput = new QTextEdit();
|
||||
luaOutput->setReadOnly(true);
|
||||
|
||||
hbox = new QHBoxLayout();
|
||||
|
||||
browseButton = new QPushButton( tr("Browse") );
|
||||
stopButton = new QPushButton( tr("Stop") );
|
||||
|
||||
if ( luaScriptRunning )
|
||||
{
|
||||
startButton = new QPushButton( tr("Restart") );
|
||||
}
|
||||
else
|
||||
{
|
||||
startButton = new QPushButton( tr("Start") );
|
||||
}
|
||||
|
||||
stopButton->setEnabled( luaScriptRunning );
|
||||
|
||||
connect(browseButton , SIGNAL(clicked()), this, SLOT(openLuaScriptFile(void)) );
|
||||
connect(stopButton , SIGNAL(clicked()), this, SLOT(stopLuaScript(void)) );
|
||||
connect(startButton , SIGNAL(clicked()), this, SLOT(startLuaScript(void)) );
|
||||
|
||||
hbox->addWidget( browseButton );
|
||||
hbox->addWidget( stopButton );
|
||||
hbox->addWidget( startButton );
|
||||
|
||||
mainLayout->addWidget( lbl );
|
||||
mainLayout->addWidget( scriptPath );
|
||||
mainLayout->addLayout( hbox );
|
||||
|
||||
hbox = new QHBoxLayout();
|
||||
lbl = new QLabel( tr("Arguments:") );
|
||||
|
||||
hbox->addWidget( lbl );
|
||||
hbox->addWidget( scriptArgs );
|
||||
|
||||
mainLayout->addLayout( hbox );
|
||||
|
||||
lbl = new QLabel( tr("Output Console:") );
|
||||
mainLayout->addWidget( lbl );
|
||||
mainLayout->addWidget( luaOutput );
|
||||
|
||||
//connect(useNativeFileDialog , SIGNAL(stateChanged(int)), this, SLOT(useNativeFileDialogChanged(int)) );
|
||||
|
||||
setLayout( mainLayout );
|
||||
|
||||
winList.push_back( this );
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
LuaControlDialog_t::~LuaControlDialog_t(void)
|
||||
{
|
||||
std::list <LuaControlDialog_t*>::iterator it;
|
||||
|
||||
for (it = winList.begin(); it != winList.end(); it++)
|
||||
{
|
||||
if ( (*it) == this )
|
||||
{
|
||||
winList.erase(it);
|
||||
//printf("Removing Lua Window\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void LuaControlDialog_t::closeWindow(void)
|
||||
{
|
||||
//printf("Close Window\n");
|
||||
done(0);
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void LuaControlDialog_t::openLuaScriptFile(void)
|
||||
{
|
||||
#ifdef _S9XLUA_H
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
std::string last;
|
||||
//char dir[512];
|
||||
QFileDialog dialog(this, tr("Open LUA Script") );
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("LUA Scripts (*.lua *.LUA) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
g_config->getOption ("SDL.LastLoadLua", &last );
|
||||
|
||||
if ( last.size() == 0 )
|
||||
{
|
||||
last.assign( "/usr/share/fceux/luaScripts" );
|
||||
}
|
||||
|
||||
//getDirFromFile( last.c_str(), dir );
|
||||
|
||||
dialog.setDirectory( tr("/usr/share/fceux/luaScripts") );
|
||||
|
||||
// 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();
|
||||
|
||||
g_config->setOption ("SDL.LastLoadLua", filename.toStdString().c_str() );
|
||||
|
||||
scriptPath->setText( filename.toStdString().c_str() );
|
||||
|
||||
#endif
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void LuaControlDialog_t::startLuaScript(void)
|
||||
{
|
||||
#ifdef _S9XLUA_H
|
||||
luaOutputText.clear();
|
||||
fceuWrapperLock();
|
||||
if ( 0 == FCEU_LoadLuaCode( scriptPath->text().toStdString().c_str(), scriptArgs->text().toStdString().c_str() ) )
|
||||
{
|
||||
printf("Error: Could not open the selected lua script: '%s'\n", scriptPath->text().toStdString().c_str() );
|
||||
}
|
||||
fceuWrapperUnLock();
|
||||
#endif
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void LuaControlDialog_t::stopLuaScript(void)
|
||||
{
|
||||
#ifdef _S9XLUA_H
|
||||
fceuWrapperLock();
|
||||
FCEU_LuaStop();
|
||||
fceuWrapperUnLock();
|
||||
#endif
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void LuaControlDialog_t::refreshState(void)
|
||||
{
|
||||
if ( luaScriptRunning )
|
||||
{
|
||||
stopButton->setEnabled( true );
|
||||
startButton->setText( tr("Restart") );
|
||||
}
|
||||
else
|
||||
{
|
||||
stopButton->setEnabled( false );
|
||||
startButton->setText( tr("Start") );
|
||||
}
|
||||
luaOutput->setText( luaOutputText.c_str() );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void updateLuaWindows( void )
|
||||
{
|
||||
std::list <LuaControlDialog_t*>::iterator it;
|
||||
|
||||
for (it = winList.begin(); it != winList.end(); it++)
|
||||
{
|
||||
(*it)->refreshState();
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void WinLuaOnStart(intptr_t hDlgAsInt)
|
||||
{
|
||||
luaScriptRunning = true;
|
||||
|
||||
//printf("Lua Script Running: %i \n", luaScriptRunning );
|
||||
|
||||
updateLuaWindows();
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void WinLuaOnStop(intptr_t hDlgAsInt)
|
||||
{
|
||||
luaScriptRunning = false;
|
||||
|
||||
//printf("Lua Script Running: %i \n", luaScriptRunning );
|
||||
|
||||
updateLuaWindows();
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void PrintToWindowConsole(intptr_t hDlgAsInt, const char* str)
|
||||
{
|
||||
//printf("%s\n", str );
|
||||
|
||||
luaOutputText.append( str );
|
||||
|
||||
updateLuaWindows();
|
||||
}
|
||||
//----------------------------------------------------
|
|
@ -0,0 +1,47 @@
|
|||
// LuaControl.h
|
||||
//
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QWidget>
|
||||
#include <QDialog>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QComboBox>
|
||||
#include <QCheckBox>
|
||||
#include <QPushButton>
|
||||
#include <QLabel>
|
||||
#include <QFrame>
|
||||
#include <QGroupBox>
|
||||
#include <QLineEdit>
|
||||
#include <QTextEdit>
|
||||
|
||||
#include "Qt/main.h"
|
||||
|
||||
class LuaControlDialog_t : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
LuaControlDialog_t(QWidget *parent = 0);
|
||||
~LuaControlDialog_t(void);
|
||||
|
||||
void refreshState(void);
|
||||
|
||||
protected:
|
||||
QLineEdit *scriptPath;
|
||||
QLineEdit *scriptArgs;
|
||||
QPushButton *browseButton;
|
||||
QPushButton *stopButton;
|
||||
QPushButton *startButton;
|
||||
QTextEdit *luaOutput;
|
||||
private:
|
||||
|
||||
public slots:
|
||||
void closeWindow(void);
|
||||
private slots:
|
||||
void openLuaScriptFile(void);
|
||||
void startLuaScript(void);
|
||||
void stopLuaScript(void);
|
||||
|
||||
};
|
|
@ -287,21 +287,22 @@ void PaletteConfDialog_t::clearPalette(void)
|
|||
//----------------------------------------------------
|
||||
void PaletteConfDialog_t::openPaletteFile(void)
|
||||
{
|
||||
int ret;
|
||||
int ret, useNativeFileDialogVal;
|
||||
QString filename;
|
||||
QFileDialog dialog(this, tr("Open NES Palette") );
|
||||
|
||||
dialog.setFileMode(QFileDialog::ExistingFile);
|
||||
|
||||
dialog.setNameFilter(tr("NES Palettes (*.pal)(*.PAL) ;; All files (*)"));
|
||||
dialog.setNameFilter(tr("NES Palettes (*.pal *.PAL) ;; All files (*)"));
|
||||
|
||||
dialog.setViewMode(QFileDialog::List);
|
||||
|
||||
dialog.setDirectory( tr("/usr/share/fceux/palettes") );
|
||||
|
||||
// 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);
|
||||
// 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();
|
||||
|
|
|
@ -293,6 +293,8 @@ InitConfig()
|
|||
config->addOption("_lastsavestateas", "SDL.LastSaveStateAs", home_dir);
|
||||
config->addOption("_lastloadlua", "SDL.LastLoadLua", "");
|
||||
|
||||
config->addOption("_useNativeFileDialog", "SDL.UseNativeFileDialog", false);
|
||||
|
||||
// fcm -> fm2 conversion
|
||||
config->addOption("fcmconvert", "SDL.FCMConvert", "");
|
||||
|
||||
|
|
|
@ -77,6 +77,8 @@ int pal_emulation;
|
|||
int dendy;
|
||||
bool swapDuty;
|
||||
|
||||
static bool luaScriptRunning = false;
|
||||
|
||||
// -Video Modes Tag- : See --special
|
||||
static const char *DriverUsage=
|
||||
"Option Value Description\n"
|
||||
|
@ -1002,6 +1004,27 @@ void FCEUD_PrintError(const char *errormsg)
|
|||
fprintf(stderr, "%s\n", errormsg);
|
||||
}
|
||||
|
||||
//----------------------------------------------------
|
||||
void WinLuaOnStart(intptr_t hDlgAsInt)
|
||||
{
|
||||
luaScriptRunning = true;
|
||||
|
||||
//printf("Lua Script Running: %i \n", luaScriptRunning );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void WinLuaOnStop(intptr_t hDlgAsInt)
|
||||
{
|
||||
luaScriptRunning = false;
|
||||
|
||||
//printf("Lua Script Running: %i \n", luaScriptRunning );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
void PrintToWindowConsole(intptr_t hDlgAsInt, const char* str)
|
||||
{
|
||||
printf("Lua Output: %s\n", str );
|
||||
}
|
||||
//----------------------------------------------------
|
||||
|
||||
|
||||
// dummy functions
|
||||
|
||||
|
|
|
@ -170,11 +170,11 @@ static intptr_t info_uid;
|
|||
#ifdef WIN32
|
||||
extern HWND LuaConsoleHWnd;
|
||||
extern INT_PTR CALLBACK DlgLuaScriptDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam);
|
||||
void TaseditorDisableManualFunctionIfNeeded();
|
||||
#endif
|
||||
extern void PrintToWindowConsole(intptr_t hDlgAsInt, const char* str);
|
||||
extern void WinLuaOnStart(intptr_t hDlgAsInt);
|
||||
extern void WinLuaOnStop(intptr_t hDlgAsInt);
|
||||
void TaseditorDisableManualFunctionIfNeeded();
|
||||
#endif
|
||||
|
||||
static lua_State *L;
|
||||
|
||||
|
@ -6249,9 +6249,10 @@ int FCEU_LoadLuaCode(const char *filename, const char *arg) {
|
|||
LuaConsoleHWnd = CreateDialog(fceu_hInstance, MAKEINTRESOURCE(IDD_LUA), hAppWnd, DlgLuaScriptDialog);
|
||||
info_uid = (intptr_t)LuaConsoleHWnd;
|
||||
#else
|
||||
info_print = NULL;
|
||||
info_onstart = NULL;
|
||||
info_onstop = NULL;
|
||||
info_print = PrintToWindowConsole;
|
||||
info_onstart = WinLuaOnStart;
|
||||
info_onstop = WinLuaOnStop;
|
||||
info_uid = (intptr_t)0;
|
||||
#endif
|
||||
if (info_onstart)
|
||||
info_onstart(info_uid);
|
||||
|
|
Loading…
Reference in New Issue