fix merge issues, make console window work again
This commit is contained in:
parent
cd1fdbbbc2
commit
e4f86893a8
@ -266,7 +266,7 @@ IF(DEFINED MMC_KEYRING_TEST)
|
|||||||
# test.cpp
|
# test.cpp
|
||||||
ADD_EXECUTABLE(Test test.cpp)
|
ADD_EXECUTABLE(Test test.cpp)
|
||||||
QT5_USE_MODULES(Test Core)
|
QT5_USE_MODULES(Test Core)
|
||||||
TARGET_LINK_LIBRARIES(Test libmmcutil libmmcsettings)
|
TARGET_LINK_LIBRARIES(Test libUtil libSettings)
|
||||||
ENDIF()
|
ENDIF()
|
||||||
|
|
||||||
################################ INSTALLATION AND PACKAGING ################################
|
################################ INSTALLATION AND PACKAGING ################################
|
||||||
|
@ -4,70 +4,71 @@
|
|||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
|
|
||||||
ConsoleWindow::ConsoleWindow(QWidget *parent) :
|
ConsoleWindow::ConsoleWindow(QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::ConsoleWindow),
|
ui(new Ui::ConsoleWindow),
|
||||||
m_mayclose(true)
|
m_mayclose(true)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
ConsoleWindow::~ConsoleWindow()
|
ConsoleWindow::~ConsoleWindow()
|
||||||
{
|
{
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::writeColor(QString text, const char *color)
|
void ConsoleWindow::writeColor(QString text, const char *color)
|
||||||
{
|
{
|
||||||
// append a paragraph
|
// append a paragraph
|
||||||
if (color != nullptr)
|
if (color != nullptr)
|
||||||
ui->text->appendHtml(QString("<font color=%1>%2</font>").arg(color).arg(text));
|
ui->text->appendHtml(QString("<font color=%1>%2</font>").arg(color).arg(text));
|
||||||
else
|
else
|
||||||
ui->text->appendPlainText(text);
|
ui->text->appendPlainText(text);
|
||||||
// scroll down
|
// scroll down
|
||||||
QScrollBar *bar = ui->text->verticalScrollBar();
|
QScrollBar *bar = ui->text->verticalScrollBar();
|
||||||
bar->setValue(bar->maximum());
|
bar->setValue(bar->maximum());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::write(QString data, WriteMode mode)
|
void ConsoleWindow::write(QString data, MessageLevel::Enum mode)
|
||||||
{
|
{
|
||||||
if (data.endsWith('\n'))
|
if (data.endsWith('\n'))
|
||||||
data = data.left(data.length()-1);
|
data = data.left(data.length()-1);
|
||||||
QStringList paragraphs = data.split('\n');
|
QStringList paragraphs = data.split('\n');
|
||||||
QListIterator<QString> iter(paragraphs);
|
QListIterator<QString> iter(paragraphs);
|
||||||
if (mode == MULTIMC)
|
if (mode == MessageLevel::MultiMC)
|
||||||
while(iter.hasNext())
|
while(iter.hasNext())
|
||||||
writeColor(iter.next(), "blue");
|
writeColor(iter.next(), "blue");
|
||||||
else if (mode == ERROR)
|
else if (mode == MessageLevel::Error)
|
||||||
while(iter.hasNext())
|
while(iter.hasNext())
|
||||||
writeColor(iter.next(), "red");
|
writeColor(iter.next(), "red");
|
||||||
else
|
// TODO: implement other MessageLevels
|
||||||
while(iter.hasNext())
|
else
|
||||||
writeColor(iter.next());
|
while(iter.hasNext())
|
||||||
|
writeColor(iter.next());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::clear()
|
void ConsoleWindow::clear()
|
||||||
{
|
{
|
||||||
ui->text->clear();
|
ui->text->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::on_closeButton_clicked()
|
void ConsoleWindow::on_closeButton_clicked()
|
||||||
{
|
{
|
||||||
close();
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::setMayClose(bool mayclose)
|
void ConsoleWindow::setMayClose(bool mayclose)
|
||||||
{
|
{
|
||||||
m_mayclose = mayclose;
|
m_mayclose = mayclose;
|
||||||
if (mayclose)
|
if (mayclose)
|
||||||
ui->closeButton->setEnabled(true);
|
ui->closeButton->setEnabled(true);
|
||||||
else
|
else
|
||||||
ui->closeButton->setEnabled(false);
|
ui->closeButton->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ConsoleWindow::closeEvent(QCloseEvent * event)
|
void ConsoleWindow::closeEvent(QCloseEvent * event)
|
||||||
{
|
{
|
||||||
if(!m_mayclose)
|
if(!m_mayclose)
|
||||||
event->ignore();
|
event->ignore();
|
||||||
else
|
else
|
||||||
QDialog::closeEvent(event);
|
QDialog::closeEvent(event);
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#define CONSOLEWINDOW_H
|
#define CONSOLEWINDOW_H
|
||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
#include "minecraftprocess.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class ConsoleWindow;
|
class ConsoleWindow;
|
||||||
@ -9,61 +10,51 @@ class ConsoleWindow;
|
|||||||
|
|
||||||
class ConsoleWindow : public QDialog
|
class ConsoleWindow : public QDialog
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
/**
|
explicit ConsoleWindow(QWidget *parent = 0);
|
||||||
* @brief The WriteMode enum
|
~ConsoleWindow();
|
||||||
* defines how stuff is displayed
|
|
||||||
*/
|
|
||||||
enum WriteMode {
|
|
||||||
DEFAULT,
|
|
||||||
ERROR,
|
|
||||||
MULTIMC
|
|
||||||
};
|
|
||||||
|
|
||||||
explicit ConsoleWindow(QWidget *parent = 0);
|
/**
|
||||||
~ConsoleWindow();
|
* @brief specify if the window is allowed to close
|
||||||
|
* @param mayclose
|
||||||
/**
|
* used to keep it alive while MC runs
|
||||||
* @brief specify if the window is allowed to close
|
*/
|
||||||
* @param mayclose
|
void setMayClose(bool mayclose);
|
||||||
* used to keep it alive while MC runs
|
|
||||||
*/
|
|
||||||
void setMayClose(bool mayclose);
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
/**
|
/**
|
||||||
* @brief write a string
|
* @brief write a string
|
||||||
* @param data the string
|
* @param data the string
|
||||||
* @param mode the WriteMode
|
* @param mode the WriteMode
|
||||||
* lines have to be put through this as a whole!
|
* lines have to be put through this as a whole!
|
||||||
*/
|
*/
|
||||||
void write(QString data, WriteMode mode=MULTIMC);
|
void write(QString data, MessageLevel::Enum level=MessageLevel::MultiMC);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief write a colored paragraph
|
* @brief write a colored paragraph
|
||||||
* @param data the string
|
* @param data the string
|
||||||
* @param color the css color name
|
* @param color the css color name
|
||||||
* this will only insert a single paragraph.
|
* this will only insert a single paragraph.
|
||||||
* \n are ignored. a real \n is always appended.
|
* \n are ignored. a real \n is always appended.
|
||||||
*/
|
*/
|
||||||
void writeColor(QString data, const char *color=nullptr);
|
void writeColor(QString data, const char *color=nullptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief clear the text widget
|
* @brief clear the text widget
|
||||||
*/
|
*/
|
||||||
void clear();
|
void clear();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void on_closeButton_clicked();
|
void on_closeButton_clicked();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *);
|
void closeEvent(QCloseEvent *);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ConsoleWindow *ui;
|
Ui::ConsoleWindow *ui;
|
||||||
bool m_mayclose;
|
bool m_mayclose;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // CONSOLEWINDOW_H
|
#endif // CONSOLEWINDOW_H
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
* You may obtain a copy of the License at
|
* You may obtain a copy of the License at
|
||||||
*
|
*
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
*
|
*
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
@ -23,74 +23,96 @@
|
|||||||
|
|
||||||
#include "libmmc_config.h"
|
#include "libmmc_config.h"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief the MessageLevel Enum
|
||||||
|
* defines what level a message is
|
||||||
|
*/
|
||||||
|
namespace MessageLevel {
|
||||||
|
enum LIBMULTIMC_EXPORT Enum {
|
||||||
|
MultiMC, /**< MultiMC Messages */
|
||||||
|
Debug, /**< Debug Messages */
|
||||||
|
Info, /**< Info Messages */
|
||||||
|
Message, /**< Standard Messages */
|
||||||
|
Warning, /**< Warnings */
|
||||||
|
Error, /**< Errors */
|
||||||
|
Fatal /**< Fatal Errors */
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file data/minecraftprocess.h
|
* @file data/minecraftprocess.h
|
||||||
* @brief The MinecraftProcess class
|
* @brief The MinecraftProcess class
|
||||||
*/
|
*/
|
||||||
class LIBMULTIMC_EXPORT MinecraftProcess : public QProcess
|
class LIBMULTIMC_EXPORT MinecraftProcess : public QProcess
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief MinecraftProcess constructor
|
* @brief MinecraftProcess constructor
|
||||||
* @param inst the Instance pointer to launch
|
* @param inst the Instance pointer to launch
|
||||||
* @param user the minecraft username
|
* @param user the minecraft username
|
||||||
* @param session the minecraft session id
|
* @param session the minecraft session id
|
||||||
* @param console the instance console window
|
* @param console the instance console window
|
||||||
*/
|
*/
|
||||||
MinecraftProcess(InstancePtr inst, QString user, QString session);
|
MinecraftProcess(InstancePtr inst, QString user, QString session);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief launch minecraft
|
* @brief launch minecraft
|
||||||
*/
|
*/
|
||||||
void launch();
|
void launch();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief extract the instance icon
|
* @brief extract the instance icon
|
||||||
* @param inst the instance
|
* @param inst the instance
|
||||||
* @param destination the destination path
|
* @param destination the destination path
|
||||||
*/
|
*/
|
||||||
static inline void extractIcon(InstancePtr inst, QString destination);
|
static inline void extractIcon(InstancePtr inst, QString destination);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief extract the MultiMC launcher.jar
|
* @brief extract the MultiMC launcher.jar
|
||||||
* @param destination the destination path
|
* @param destination the destination path
|
||||||
*/
|
*/
|
||||||
static inline void extractLauncher(QString destination);
|
static inline void extractLauncher(QString destination);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief prepare the launch by extracting icon and launcher
|
* @brief prepare the launch by extracting icon and launcher
|
||||||
* @param inst the instance
|
* @param inst the instance
|
||||||
*/
|
*/
|
||||||
static void prepare(InstancePtr inst);
|
static void prepare(InstancePtr inst);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief split a string into argv items like a shell would do
|
* @brief split a string into argv items like a shell would do
|
||||||
* @param args the argument string
|
* @param args the argument string
|
||||||
* @return a QStringList containing all arguments
|
* @return a QStringList containing all arguments
|
||||||
*/
|
*/
|
||||||
static QStringList splitArgs(QString args);
|
static QStringList splitArgs(QString args);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
/**
|
/**
|
||||||
* @brief emitted when mc has finished and the PostLaunchCommand was run
|
* @brief emitted when mc has finished and the PostLaunchCommand was run
|
||||||
*/
|
*/
|
||||||
void ended();
|
void ended();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief emitted when we want to log something
|
||||||
|
* @param text the text to log
|
||||||
|
* @param level the level to log at
|
||||||
|
*/
|
||||||
|
void log(QString text, MessageLevel::Enum level=MessageLevel::MultiMC);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
InstancePtr m_instance;
|
InstancePtr m_instance;
|
||||||
QString m_user;
|
QString m_user;
|
||||||
QString m_session;
|
QString m_session;
|
||||||
QProcess m_prepostlaunchprocess;
|
QProcess m_prepostlaunchprocess;
|
||||||
QStringList m_arguments;
|
QStringList m_arguments;
|
||||||
|
|
||||||
void genArgs();
|
void genArgs();
|
||||||
void log(QString text, ConsoleWindow::WriteMode mode = ConsoleWindow::MULTIMC);
|
|
||||||
|
|
||||||
protected slots:
|
protected slots:
|
||||||
void finish(int, QProcess::ExitStatus status);
|
void finish(int, QProcess::ExitStatus status);
|
||||||
void on_stdErr();
|
void on_stdErr();
|
||||||
void on_stdOut();
|
void on_stdOut();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -125,22 +125,12 @@ MinecraftProcess::MinecraftProcess(InstancePtr inst, QString user, QString sessi
|
|||||||
// console window
|
// console window
|
||||||
void MinecraftProcess::on_stdErr()
|
void MinecraftProcess::on_stdErr()
|
||||||
{
|
{
|
||||||
// if (m_console != nullptr)
|
emit log(readAllStandardError(), MessageLevel::Error);
|
||||||
// m_console->write(readAllStandardError(), ConsoleWindow::ERROR);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MinecraftProcess::on_stdOut()
|
void MinecraftProcess::on_stdOut()
|
||||||
{
|
{
|
||||||
// if (m_console != nullptr)
|
emit log(readAllStandardOutput(), MessageLevel::Message);
|
||||||
// m_console->write(readAllStandardOutput(), ConsoleWindow::DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
void MinecraftProcess::log(QString text)
|
|
||||||
{
|
|
||||||
// if (m_console != nullptr)
|
|
||||||
// m_console->write(text);
|
|
||||||
// else
|
|
||||||
qDebug(qPrintable(text));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// exit handler
|
// exit handler
|
||||||
@ -151,7 +141,7 @@ void MinecraftProcess::finish(int code, ExitStatus status)
|
|||||||
//TODO: error handling
|
//TODO: error handling
|
||||||
}
|
}
|
||||||
|
|
||||||
log("Minecraft exited.");
|
emit log("Minecraft exited.");
|
||||||
|
|
||||||
m_prepostlaunchprocess.processEnvironment().insert("INST_EXITCODE", QString(code));
|
m_prepostlaunchprocess.processEnvironment().insert("INST_EXITCODE", QString(code));
|
||||||
|
|
||||||
@ -191,13 +181,13 @@ void MinecraftProcess::launch()
|
|||||||
|
|
||||||
genArgs();
|
genArgs();
|
||||||
|
|
||||||
log(QString("Minecraft folder is: '%1'").arg(workingDirectory()));
|
emit log(QString("Minecraft folder is: '%1'").arg(workingDirectory()));
|
||||||
log(QString("Instance launched with arguments: '%1'").arg(m_arguments.join("' '")));
|
emit log(QString("Instance launched with arguments: '%1'").arg(m_arguments.join("' '")));
|
||||||
|
|
||||||
start(m_instance->settings().get("JavaPath").toString(), m_arguments);
|
start(m_instance->settings().get("JavaPath").toString(), m_arguments);
|
||||||
if (!waitForStarted())
|
if (!waitForStarted())
|
||||||
{
|
{
|
||||||
log("Could not launch minecraft!", ConsoleWindow::ERROR);
|
emit log("Could not launch minecraft!");
|
||||||
return;
|
return;
|
||||||
//TODO: error handling
|
//TODO: error handling
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,12 @@ include/overridesetting.h
|
|||||||
|
|
||||||
include/basicsettingsobject.h
|
include/basicsettingsobject.h
|
||||||
include/inisettingsobject.h
|
include/inisettingsobject.h
|
||||||
|
|
||||||
|
include/keyring.h
|
||||||
|
)
|
||||||
|
|
||||||
|
SET(LIBSETTINGS_HEADERS_PRIVATE
|
||||||
|
src/stubkeyring.h
|
||||||
)
|
)
|
||||||
|
|
||||||
SET(LIBSETTINGS_SOURCES
|
SET(LIBSETTINGS_SOURCES
|
||||||
@ -29,6 +35,9 @@ src/overridesetting.cpp
|
|||||||
|
|
||||||
src/basicsettingsobject.cpp
|
src/basicsettingsobject.cpp
|
||||||
src/inisettingsobject.cpp
|
src/inisettingsobject.cpp
|
||||||
|
|
||||||
|
src/keyring.cpp
|
||||||
|
src/stubkeyring.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Set the include dir path.
|
# Set the include dir path.
|
||||||
@ -37,6 +46,6 @@ include_directories(${LIBSETTINGS_INCLUDE_DIR})
|
|||||||
|
|
||||||
add_definitions(-DLIBSETTINGS_LIBRARY)
|
add_definitions(-DLIBSETTINGS_LIBRARY)
|
||||||
|
|
||||||
add_library(libSettings SHARED ${LIBSETTINGS_SOURCES} ${LIBSETTINGS_HEADERS})
|
add_library(libSettings SHARED ${LIBSETTINGS_SOURCES} ${LIBSETTINGS_HEADERS} ${LIBSETTINGS_HEADERS_PRIVATE})
|
||||||
qt5_use_modules(libSettings Core)
|
qt5_use_modules(libSettings Core)
|
||||||
target_link_libraries(libSettings)
|
target_link_libraries(libSettings)
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
#ifndef KEYRING_H
|
#ifndef KEYRING_H
|
||||||
#define KEYRING_H
|
#define KEYRING_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QString>
|
||||||
|
|
||||||
#include "libsettings_config.h"
|
#include "libsettings_config.h"
|
||||||
|
|
||||||
@ -31,9 +31,8 @@
|
|||||||
* @brief The Keyring class
|
* @brief The Keyring class
|
||||||
* the System Keyring/Keychain/Wallet/Vault/etc
|
* the System Keyring/Keychain/Wallet/Vault/etc
|
||||||
*/
|
*/
|
||||||
class LIBMMCSETTINGS_EXPORT Keyring : public QObject
|
class LIBSETTINGS_EXPORT Keyring
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief the System Keyring instance
|
* @brief the System Keyring instance
|
||||||
|
@ -24,7 +24,6 @@
|
|||||||
|
|
||||||
class StubKeyring : public Keyring
|
class StubKeyring : public Keyring
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
|
||||||
public:
|
public:
|
||||||
virtual bool storePassword(QString service, QString username, QString password);
|
virtual bool storePassword(QString service, QString username, QString password);
|
||||||
virtual QString getPassword(QString service, QString username);
|
virtual QString getPassword(QString service, QString username);
|
||||||
|
1
main.cpp
1
main.cpp
@ -72,6 +72,7 @@ private slots:
|
|||||||
//if (instance->getShowConsole())
|
//if (instance->getShowConsole())
|
||||||
console->show();
|
console->show();
|
||||||
connect(proc, SIGNAL(ended()), SLOT(onTerminated()));
|
connect(proc, SIGNAL(ended()), SLOT(onTerminated()));
|
||||||
|
connect(proc, SIGNAL(log(QString,MessageLevel::Enum)), console, SLOT(write(QString,MessageLevel::Enum)));
|
||||||
proc->launch();
|
proc->launch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user