mainwindow.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. #include "ff7DataInstaller.h"
  4. #include <QProcess>
  5. #include <QFileDialog>
  6. #include <QDir>
  7. #include <QMessageBox>
  8. MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent), ui(new Ui::MainWindow)
  9. {
  10. ui->setupUi(this);
  11. //set default paths.
  12. #ifdef Q_OS_WIN
  13. //on windows
  14. ui->lineConfigDir->setText(QString("%1/q-gears").arg(QDir::homePath()));
  15. ui->lineQGearsExe->setText(QDir::currentPath() + "/q-gears.exe");
  16. ui->lineOutput->setText(QString("%1/q-gears/data").arg(QDir::homePath()));
  17. #else
  18. //on linux
  19. ui->lineConfigDir->setText(QString("%1/.q-gears").arg(QDir::homePath()));
  20. ui->lineQGearsExe->setText(QString("/usr/games/q-gears"));
  21. ui->lineOutput->setText(QString("%1/.q-gears/data").arg(QDir::homePath()));
  22. #endif
  23. #ifdef _DEBUG
  24. // Hard coded prebaked paths for debugging to save time
  25. ui->lineInput->setText("C:\\Games\\FF7\\data");
  26. ui->lineOutput->setText("C:\\Users\\paul\\Desktop\\q-gears\\output\\_data");
  27. #endif
  28. }
  29. MainWindow::~MainWindow()
  30. {
  31. delete ui;
  32. }
  33. void MainWindow::on_btnConfigDir_clicked()
  34. {
  35. QString temp = QFileDialog::getExistingDirectory(this,tr("Select Location of QGears Configuration Data,"),QDir::homePath());
  36. ui->lineConfigDir->setText(temp);
  37. }
  38. void MainWindow::on_btnLaunch_clicked()
  39. {
  40. QString configDir(ui->lineConfigDir->text());
  41. QString exe(ui->lineQGearsExe->text());
  42. QStringList args;
  43. args.append(QString("--resources-file=%1/resources.cfg").arg(ui->lineConfigDir->text()));
  44. args.append(QString("--config-file=%1/q-gears.cfg").arg(ui->lineConfigDir->text()));
  45. args.append(QString("--plugins-file=/%1/plugins.cfg").arg(ui->lineConfigDir->text()));
  46. // Check that the config dir is set up correctly
  47. QProcess qGears;
  48. qGears.startDetached(exe,args,configDir);
  49. }
  50. void MainWindow::on_btnQGearsExe_clicked()
  51. {
  52. QString temp = QFileDialog::getOpenFileName(this,tr("Location of QGears Executable,"),QDir::rootPath());
  53. ui->lineQGearsExe->setText(temp);
  54. }
  55. void MainWindow::on_btnInput_clicked()
  56. {
  57. QString temp = QFileDialog::getExistingDirectory(this,tr("Location of Game Data),"),QDir::homePath());
  58. ui->lineInput->setText(temp);
  59. }
  60. void MainWindow::on_btnOutput_clicked()
  61. {
  62. QString temp = QFileDialog::getExistingDirectory(this,tr("Location of QGears Data),"),QDir::homePath());
  63. ui->lineOutput->setText(temp);
  64. }
  65. void MainWindow::on_btnGO_clicked()
  66. {
  67. if (ui->lineInput->text().isEmpty())
  68. {
  69. QMessageBox::critical(this,tr("Input Error"),tr("No Input Provided"));
  70. }
  71. else if(ui->lineOutput->text().isEmpty())
  72. {
  73. QMessageBox::critical(this,tr("Output Error"),tr("No Output Path Provided"));
  74. }
  75. else
  76. {
  77. QMessageBox::information(this,tr("Converting Data"),tr("Attempt to convert with \n Input: %1 \n Output: %2").arg(ui->lineInput->text(),ui->lineOutput->text()));
  78. QString input = QDir::fromNativeSeparators(ui->lineInput->text());
  79. if (!input.endsWith("/"))
  80. {
  81. input += "/";
  82. }
  83. QString output = QDir::fromNativeSeparators(ui->lineOutput->text());
  84. if (!output.endsWith("/"))
  85. {
  86. output += "/";
  87. }
  88. // TODO: Enumerate files or find some better way to do this :)
  89. std::vector<std::string> vec;
  90. vec.push_back(QDir::toNativeSeparators("field/char.lgp").toStdString());
  91. vec.push_back(QDir::toNativeSeparators("field/flevel.lgp").toStdString());
  92. FF7DataInstaller conversion;
  93. conversion.Convert(QDir::toNativeSeparators(input).toStdString(), QDir::toNativeSeparators(output).toStdString(), vec);
  94. }
  95. }