Screenshot upload dialog(s) now have the console window as parent.

This commit is contained in:
Petr Mrázek
2014-05-18 19:07:01 +02:00
parent 7f2a16917e
commit 911ac19a56
11 changed files with 64 additions and 74 deletions

View File

@ -163,7 +163,7 @@ public:
virtual std::shared_ptr<Task> doUpdate() = 0;
/// returns a valid minecraft process, ready for launch with the given account.
virtual MinecraftProcess *prepareForLaunch(AuthSessionPtr account) = 0;
virtual bool prepareForLaunch(AuthSessionPtr account, QString & launchScript) = 0;
/// do any necessary cleanups after the instance finishes. also runs before
/// 'prepareForLaunch'

View File

@ -50,16 +50,13 @@ std::shared_ptr<Task> LegacyInstance::doUpdate()
return std::shared_ptr<Task>(new LegacyUpdate(this, this));
}
MinecraftProcess *LegacyInstance::prepareForLaunch(AuthSessionPtr account)
bool LegacyInstance::prepareForLaunch(AuthSessionPtr account, QString & launchScript)
{
MinecraftProcess *proc = new MinecraftProcess(this);
QIcon icon = MMC->icons()->getIcon(iconKey());
auto pixmap = icon.pixmap(128, 128);
pixmap.save(PathCombine(minecraftRoot(), "icon.png"), "PNG");
// create the launch script
QString launchScript;
{
// window size
QString windowParams;
@ -79,12 +76,7 @@ MinecraftProcess *LegacyInstance::prepareForLaunch(AuthSessionPtr account)
launchScript += "lwjgl " + lwjgl + "\n";
launchScript += "launcher legacy\n";
}
proc->setLaunchScript(launchScript);
// set the process work path
proc->setWorkdir(minecraftRoot());
return proc;
return true;
}
void LegacyInstance::cleanupAfterRun()

View File

@ -79,7 +79,7 @@ public:
virtual void setShouldUpdate(bool val) override;
virtual std::shared_ptr<Task> doUpdate() override;
virtual MinecraftProcess *prepareForLaunch(AuthSessionPtr account) override;
virtual bool prepareForLaunch(AuthSessionPtr account, QString & launchScript) override;
virtual void cleanupAfterRun() override;
virtual QDialog *createModEditDialog(QWidget *parent) override;

View File

@ -34,7 +34,7 @@
#define IBUS "@im=ibus"
// constructor
MinecraftProcess::MinecraftProcess(BaseInstance *inst) : m_instance(inst)
MinecraftProcess::MinecraftProcess(InstancePtr inst) : m_instance(inst)
{
connect(this, SIGNAL(finished(int, QProcess::ExitStatus)),
SLOT(finish(int, QProcess::ExitStatus)));

View File

@ -52,8 +52,13 @@ public:
* @brief MinecraftProcess constructor
* @param inst the Instance pointer to launch
*/
MinecraftProcess(BaseInstance *inst);
MinecraftProcess(InstancePtr inst);
virtual ~MinecraftProcess()
{
};
/**
* @brief start the launcher part with the provided launch script
*/
@ -69,7 +74,7 @@ public:
*/
void abort();
BaseInstance *instance()
InstancePtr instance()
{
return m_instance;
}
@ -97,22 +102,22 @@ signals:
/**
* @brief emitted when Minecraft immediately fails to run
*/
void launch_failed(BaseInstance *);
void launch_failed(InstancePtr);
/**
* @brief emitted when the PreLaunchCommand fails
*/
void prelaunch_failed(BaseInstance *, int code, QProcess::ExitStatus status);
void prelaunch_failed(InstancePtr, int code, QProcess::ExitStatus status);
/**
* @brief emitted when the PostLaunchCommand fails
*/
void postlaunch_failed(BaseInstance *, int code, QProcess::ExitStatus status);
void postlaunch_failed(InstancePtr, int code, QProcess::ExitStatus status);
/**
* @brief emitted when mc has finished and the PostLaunchCommand was run
*/
void ended(BaseInstance *, int code, QProcess::ExitStatus status);
void ended(InstancePtr, int code, QProcess::ExitStatus status);
/**
* @brief emitted when we want to log something
@ -122,7 +127,7 @@ signals:
void log(QString text, MessageLevel::Enum level = MessageLevel::MultiMC);
protected:
BaseInstance *m_instance = nullptr;
InstancePtr m_instance;
QString m_err_leftover;
QString m_out_leftover;
QProcess m_prepostlaunchprocess;

View File

@ -189,7 +189,7 @@ QStringList OneSixInstance::processMinecraftArgs(AuthSessionPtr session)
return parts;
}
MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
bool OneSixInstance::prepareForLaunch(AuthSessionPtr account, QString &launchScript)
{
I_D(OneSixInstance);
@ -200,7 +200,6 @@ MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
auto version = d->version;
if (!version)
return nullptr;
QString launchScript;
{
auto libs = version->getActiveNormalLibs();
for (auto lib : libs)
@ -212,7 +211,7 @@ MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
}
launchScript += "mainClass " + version->mainClass + "\n";
for (auto param : processMinecraftArgs(session))
for (auto param : processMinecraftArgs(account))
{
launchScript += "param " + param + "\n";
}
@ -240,13 +239,7 @@ MinecraftProcess *OneSixInstance::prepareForLaunch(AuthSessionPtr session)
}
launchScript += "natives " + natives_dir.absolutePath() + "\n";
launchScript += "launcher onesix\n";
// create the process and set its parameters
MinecraftProcess *proc = new MinecraftProcess(this);
proc->setWorkdir(minecraftRoot());
proc->setLaunchScript(launchScript);
// proc->setNativeFolder(natives_dir.absolutePath());
return proc;
return true;
}
void OneSixInstance::cleanupAfterRun()

View File

@ -40,7 +40,7 @@ public:
virtual QString instanceConfigFolder() const override;
virtual std::shared_ptr<Task> doUpdate() override;
virtual MinecraftProcess *prepareForLaunch(AuthSessionPtr session) override;
virtual bool prepareForLaunch(AuthSessionPtr account, QString & launchScript) override;
virtual void cleanupAfterRun() override;