summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/editexecutablesdialog.cpp40
-rw-r--r--src/mainwindow.cpp16
-rw-r--r--src/nexusdialog.cpp5
3 files changed, 51 insertions, 10 deletions
diff --git a/src/editexecutablesdialog.cpp b/src/editexecutablesdialog.cpp
index 42f29d83..e0d1994d 100644
--- a/src/editexecutablesdialog.cpp
+++ b/src/editexecutablesdialog.cpp
@@ -21,6 +21,8 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#include "ui_editexecutablesdialog.h"
#include "filedialogmemory.h"
#include <QMessageBox>
+#include <Shellapi.h>
+#include <utility.h>
using namespace MOBase;
@@ -87,6 +89,7 @@ void EditExecutablesDialog::resetInput()
{
ui->binaryEdit->setText("");
ui->titleEdit->setText("");
+ ui->workingDirEdit->clear();
ui->argumentsEdit->setText("");
ui->closeCheckBox->setChecked(false);
}
@@ -113,11 +116,42 @@ void EditExecutablesDialog::on_addButton_clicked()
void EditExecutablesDialog::on_browseButton_clicked()
{
QString binaryName = FileDialogMemory::getOpenFileName("editExecutableBinary", this,
- tr("Select a binary"), QString(), tr("Executable (%1)").arg("*.exe *.bat"));
+ tr("Select a binary"), QString(), tr("Executable (%1)").arg("*.exe *.bat *.jar"));
- QLineEdit *binaryEdit = findChild<QLineEdit*>("binaryEdit");
+ if (binaryName.endsWith(".jar", Qt::CaseInsensitive)) {
+ QString binaryPath;
+ { // try to find java automatically
+ std::wstring binaryNameW = ToWString(binaryName);
+ WCHAR buffer[MAX_PATH];
+ if (::FindExecutableW(binaryNameW.c_str(), NULL, buffer) > (HINSTANCE)32) {
+ DWORD binaryType = 0UL;
+ if (!::GetBinaryTypeW(binaryNameW.c_str(), &binaryType)) {
+ qDebug("failed to determine binary type: %lu", ::GetLastError());
+ } else if (binaryType == SCS_32BIT_BINARY) {
+ binaryPath = ToQString(buffer);
+ }
+ }
+ }
+ if (binaryPath.isEmpty()) {
+ QSettings javaReg("HKEY_LOCAL_MACHINE\\Software\\JavaSoft\\Java Runtime Environment", QSettings::NativeFormat);
+ if (javaReg.contains("CurrentVersion")) {
+ QString currentVersion = javaReg.value("CurrentVersion").toString();
+ binaryPath = javaReg.value(QString("%1/JavaHome").arg(currentVersion)).toString().append("\\bin\\javaw.exe");
+ }
+ }
+ if (binaryPath.isEmpty()) {
+ QMessageBox::information(this, tr("Java (32-bit) required"),
+ tr("MO requires 32-bit java to run this application. If you already have it installed, select javaw.exe "
+ "from that installation as the binary."));
+ } else {
+ ui->binaryEdit->setText(binaryPath);
+ }
- binaryEdit->setText(QDir::toNativeSeparators(binaryName));
+ ui->workingDirEdit->setText(QDir::toNativeSeparators(QFileInfo(binaryName).absolutePath()));
+ ui->argumentsEdit->setText("-jar \"" + QDir::toNativeSeparators(binaryName) + "\"");
+ } else {
+ ui->binaryEdit->setText(QDir::toNativeSeparators(binaryName));
+ }
}
void EditExecutablesDialog::on_browseDirButton_clicked()
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ac368719..4e3fa296 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -441,10 +441,12 @@ void MainWindow::createHelpWidget()
typedef std::vector<std::pair<int, QAction*> > ActionList;
ActionList tutorials;
- QDirIterator dirIter("tutorials", QStringList("*.js"), QDir::Files);
+
+ QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files);
while (dirIter.hasNext()) {
dirIter.next();
QString fileName = dirIter.fileName();
+
QFile file(dirIter.filePath());
if (!file.open(QIODevice::ReadOnly)) {
qCritical() << "Failed to open " << fileName;
@@ -547,7 +549,7 @@ bool MainWindow::addProfile()
void MainWindow::hookUpWindowTutorials()
{
- QDirIterator dirIter("tutorials", QStringList("*.js"), QDir::Files);
+ QDirIterator dirIter(QApplication::applicationDirPath() + "/tutorials", QStringList("*.js"), QDir::Files);
while (dirIter.hasNext()) {
dirIter.next();
QString fileName = dirIter.fileName();
@@ -2666,9 +2668,9 @@ void MainWindow::savePrimaryCategory()
void MainWindow::checkModsForUpdates()
{
+ statusBar()->show();
if (NexusInterface::instance()->getAccessManager()->loggedIn()) {
m_ModsToUpdate = ModInfo::checkAllForUpdate(this);
- statusBar()->show();
m_RefreshProgress->setRange(0, m_ModsToUpdate);
} else {
QString username, password;
@@ -3298,7 +3300,7 @@ int MainWindow::getBinaryExecuteInfo(const QFileInfo &targetInfo,
{ // try to find java automatically
WCHAR buffer[MAX_PATH];
- if (FindExecutableW(targetPathW.c_str(), NULL, buffer) > (HINSTANCE)32) {
+ if (::FindExecutableW(targetPathW.c_str(), NULL, buffer) > (HINSTANCE)32) {
DWORD binaryType = 0UL;
if (!::GetBinaryTypeW(targetPathW.c_str(), &binaryType)) {
qDebug("failed to determine binary type: %lu", ::GetLastError());
@@ -3682,8 +3684,12 @@ void MainWindow::loginFailed(const QString &message)
foreach (QString url, m_PendingDownloads) {
downloadRequestedNXM(url);
}
+ m_PendingDownloads.clear();
+ } else {
+ MessageDialog::showMessage(tr("login failed: %1").arg(message), this);
+ m_PostLoginTasks.clear();
+ statusBar()->hide();
}
- m_PendingDownloads.clear();
}
diff --git a/src/nexusdialog.cpp b/src/nexusdialog.cpp
index 91c0caf8..6d8e850b 100644
--- a/src/nexusdialog.cpp
+++ b/src/nexusdialog.cpp
@@ -142,8 +142,8 @@ void NexusDialog::login(const QString &username, const QString &password)
{
m_AccessManager->login(username, password);
- connect(m_AccessManager, SIGNAL(loginSuccessful(bool)), this, SLOT(loginFinished(bool)));
- connect(m_AccessManager, SIGNAL(loginFailed(QString)), this, SLOT(loginFailed(QString)));
+ connect(m_AccessManager, SIGNAL(loginSuccessful(bool)), this, SLOT(loginFinished(bool)), Qt::UniqueConnection);
+ connect(m_AccessManager, SIGNAL(loginFailed(QString)), this, SLOT(loginFailed(QString)), Qt::UniqueConnection);
}
@@ -160,6 +160,7 @@ void NexusDialog::loginFinished(bool necessary)
if (necessary && this->isVisible()) {
MessageDialog::showMessage(tr("login successful"), this);
}
+
loadNexus();
emit loginSuccessful(necessary);
}