mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-03-16 07:20:59 +00:00
Qt: Add rrc capture replay per drag and drop
This commit is contained in:
parent
60a276e9ce
commit
8bfe4c908c
@ -354,30 +354,42 @@ void main_window::BootGame()
|
|||||||
Boot(path);
|
Boot(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_window::BootRsxCapture()
|
void main_window::BootRsxCapture(std::string path)
|
||||||
{
|
{
|
||||||
bool stopped = false;
|
if (path.empty())
|
||||||
if (Emu.IsRunning())
|
|
||||||
{
|
{
|
||||||
Emu.Pause();
|
bool is_stopped = false;
|
||||||
stopped = true;
|
|
||||||
|
if (Emu.IsRunning())
|
||||||
|
{
|
||||||
|
Emu.Pause();
|
||||||
|
is_stopped = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString filePath = QFileDialog::getOpenFileName(this, tr("Select RSX Capture"), "", tr("RRC files (*.rrc);;All files (*.*)"));
|
||||||
|
|
||||||
|
if (filePath.isEmpty())
|
||||||
|
{
|
||||||
|
if (is_stopped)
|
||||||
|
{
|
||||||
|
Emu.Resume();
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
path = sstr(filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString filePath = QFileDialog::getOpenFileName(this, tr("Select RSX Capture"), "", tr("RRC files (*.rrc);;All files (*.*)"));
|
|
||||||
if (filePath.isEmpty())
|
|
||||||
{
|
|
||||||
if (stopped) Emu.Resume();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Emu.SetForceBoot(true);
|
Emu.SetForceBoot(true);
|
||||||
Emu.Stop();
|
Emu.Stop();
|
||||||
|
|
||||||
const std::string path = sstr(filePath);
|
|
||||||
|
|
||||||
if (!Emu.BootRsxCapture(path))
|
if (!Emu.BootRsxCapture(path))
|
||||||
LOG_ERROR(GENERAL, "Capture Boot Failed");
|
{
|
||||||
|
LOG_ERROR(GENERAL, "Capture Boot Failed. path: %s", path);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
LOG_SUCCESS(LOADER, "Capture Boot Success");
|
{
|
||||||
|
LOG_SUCCESS(LOADER, "Capture Boot Success. path: %s", path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void main_window::InstallPkg(const QString& dropPath, bool is_bulk)
|
void main_window::InstallPkg(const QString& dropPath, bool is_bulk)
|
||||||
@ -1149,7 +1161,7 @@ void main_window::CreateConnects()
|
|||||||
{
|
{
|
||||||
connect(ui->bootElfAct, &QAction::triggered, this, &main_window::BootElf);
|
connect(ui->bootElfAct, &QAction::triggered, this, &main_window::BootElf);
|
||||||
connect(ui->bootGameAct, &QAction::triggered, this, &main_window::BootGame);
|
connect(ui->bootGameAct, &QAction::triggered, this, &main_window::BootGame);
|
||||||
connect(ui->actionopen_rsx_capture, &QAction::triggered, this, &main_window::BootRsxCapture);
|
connect(ui->actionopen_rsx_capture, &QAction::triggered, [this](){ BootRsxCapture(); });
|
||||||
|
|
||||||
connect(ui->bootRecentMenu, &QMenu::aboutToShow, [=]
|
connect(ui->bootRecentMenu, &QMenu::aboutToShow, [=]
|
||||||
{
|
{
|
||||||
@ -1718,7 +1730,14 @@ int main_window::IsValidFile(const QMimeData& md, QStringList* dropPaths)
|
|||||||
}
|
}
|
||||||
else if (list.size() == 1)
|
else if (list.size() == 1)
|
||||||
{
|
{
|
||||||
dropType = drop_type::drop_game;
|
if (info.suffix() == "rrc")
|
||||||
|
{
|
||||||
|
dropType = drop_type::drop_rrc;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dropType = drop_type::drop_game;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1782,6 +1801,11 @@ void main_window::dropEvent(QDropEvent* event)
|
|||||||
}
|
}
|
||||||
m_gameListFrame->Refresh(true);
|
m_gameListFrame->Refresh(true);
|
||||||
break;
|
break;
|
||||||
|
case drop_type::drop_rrc: // replay a rsx capture file
|
||||||
|
if (Emu.BootRsxCapture(sstr(dropPaths.first())))
|
||||||
|
{
|
||||||
|
LOG_SUCCESS(GENERAL, "rcc Boot from drag and drop done: %s", sstr(dropPaths.first()));
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(GENERAL, "Invalid dropType in gamelist dropEvent");
|
LOG_WARNING(GENERAL, "Invalid dropType in gamelist dropEvent");
|
||||||
break;
|
break;
|
||||||
|
@ -64,7 +64,8 @@ class main_window : public QMainWindow
|
|||||||
drop_pup,
|
drop_pup,
|
||||||
drop_rap,
|
drop_rap,
|
||||||
drop_dir,
|
drop_dir,
|
||||||
drop_game
|
drop_game,
|
||||||
|
drop_rrc
|
||||||
};
|
};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@ -91,7 +92,7 @@ private Q_SLOTS:
|
|||||||
void Boot(const std::string& path, bool direct = false, bool add_only = false);
|
void Boot(const std::string& path, bool direct = false, bool add_only = false);
|
||||||
void BootElf();
|
void BootElf();
|
||||||
void BootGame();
|
void BootGame();
|
||||||
void BootRsxCapture();
|
void BootRsxCapture(std::string path = "");
|
||||||
void DecryptSPRXLibraries();
|
void DecryptSPRXLibraries();
|
||||||
|
|
||||||
void SaveWindowState();
|
void SaveWindowState();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user