Many improvements
PermGen can be tweaked from the settings menu Groups are saved on change/exit Install target is no longer completely broken All the deplibs are now static Added notes dialog Fixed ini file format support (can save strings with newlines, tabs. UTF-8 is explicitly used!) Rename button now uses line breaks so it doesn't grow ever wider (Added a custom tool button subclass) There is now a CAT button. Meow.
This commit is contained in:
@ -71,6 +71,7 @@ BaseInstance::BaseInstance( BaseInstancePrivate* d_in,
|
||||
settings().registerSetting(new Setting("OverrideMemory", false));
|
||||
settings().registerSetting(new OverrideSetting("MinMemAlloc", globalSettings->getSetting("MinMemAlloc")));
|
||||
settings().registerSetting(new OverrideSetting("MaxMemAlloc", globalSettings->getSetting("MaxMemAlloc")));
|
||||
settings().registerSetting(new OverrideSetting("PermGen", globalSettings->getSetting("PermGen")));
|
||||
|
||||
// Auto login
|
||||
settings().registerSetting(new Setting("OverrideLogin", false));
|
||||
@ -187,12 +188,20 @@ void BaseInstance::setLastLaunch ( qint64 val )
|
||||
emit propertiesChanged ( this );
|
||||
}
|
||||
|
||||
void BaseInstance::setGroup ( QString val )
|
||||
void BaseInstance::setGroupInitial ( QString val )
|
||||
{
|
||||
I_D(BaseInstance);
|
||||
d->m_group = val;
|
||||
emit propertiesChanged ( this );
|
||||
}
|
||||
|
||||
void BaseInstance::setGroupPost ( QString val )
|
||||
{
|
||||
setGroupInitial(val);
|
||||
emit groupChanged();
|
||||
}
|
||||
|
||||
|
||||
QString BaseInstance::group() const
|
||||
{
|
||||
I_D(BaseInstance);
|
||||
|
@ -70,7 +70,9 @@ public:
|
||||
void setNotes(QString val);
|
||||
|
||||
QString group() const;
|
||||
void setGroup(QString val);
|
||||
void setGroupInitial(QString val);
|
||||
void setGroupPost(QString val);
|
||||
|
||||
|
||||
virtual QString intendedVersionId() const = 0;
|
||||
virtual bool setIntendedVersionId(QString version) = 0;
|
||||
@ -157,12 +159,16 @@ public:
|
||||
|
||||
/// FIXME: this really should be elsewhere...
|
||||
virtual QString instanceConfigFolder() const = 0;
|
||||
|
||||
signals:
|
||||
/*!
|
||||
* \brief Signal emitted when properties relevant to the instance view change
|
||||
*/
|
||||
void propertiesChanged(BaseInstance * inst);
|
||||
|
||||
/*!
|
||||
* \brief Signal emitted when groups are affected in any way
|
||||
*/
|
||||
void groupChanged();
|
||||
protected:
|
||||
QSharedPointer<BaseInstancePrivate> inst_d;
|
||||
};
|
||||
|
@ -68,6 +68,7 @@ MinecraftProcess* LegacyInstance::prepareForLaunch(QString user, QString session
|
||||
// launcher arguments
|
||||
args << QString("-Xms%1m").arg(settings().get("MinMemAlloc").toInt());
|
||||
args << QString("-Xmx%1m").arg(settings().get("MaxMemAlloc").toInt());
|
||||
args << QString("-XX:MaxPermSize=%1m").arg(settings().get("PermGen").toInt());
|
||||
args << "-jar" << LAUNCHER_FILE;
|
||||
args << user;
|
||||
args << session;
|
||||
|
@ -113,6 +113,7 @@ MinecraftProcess* OneSixInstance::prepareForLaunch ( QString user, QString sessi
|
||||
args.append(Util::Commandline::splitArgs(settings().get("JvmArgs").toString()));
|
||||
args << QString("-Xms%1m").arg(settings().get("MinMemAlloc").toInt());
|
||||
args << QString("-Xmx%1m").arg(settings().get("MaxMemAlloc").toInt());
|
||||
args << QString("-XX:MaxPermSize=%1m").arg(settings().get("PermGen").toInt());
|
||||
QDir natives_dir(natives_dir_raw);
|
||||
args << QString("-Djava.library.path=%1").arg( natives_dir.absolutePath() );
|
||||
QString classPath;
|
||||
|
@ -14,6 +14,7 @@
|
||||
*/
|
||||
|
||||
#include <QDir>
|
||||
#include <QSet>
|
||||
#include <QFile>
|
||||
#include <QDirIterator>
|
||||
#include <QThread>
|
||||
@ -36,6 +37,73 @@ InstanceList::InstanceList(const QString &instDir, QObject *parent) :
|
||||
|
||||
}
|
||||
|
||||
InstanceList::~InstanceList()
|
||||
{
|
||||
saveGroupList();
|
||||
}
|
||||
|
||||
|
||||
void InstanceList::groupChanged()
|
||||
{
|
||||
// save the groups. save all of them.
|
||||
saveGroupList();
|
||||
}
|
||||
|
||||
void InstanceList::saveGroupList()
|
||||
{
|
||||
QString groupFileName = m_instDir + "/instgroups.json";
|
||||
QFile groupFile(groupFileName);
|
||||
|
||||
// if you can't open the file, fail
|
||||
if (!groupFile.open(QIODevice::WriteOnly| QIODevice::Truncate))
|
||||
{
|
||||
// An error occurred. Ignore it.
|
||||
qDebug("Failed to read instance group file.");
|
||||
return;
|
||||
}
|
||||
QTextStream out(&groupFile);
|
||||
QMap<QString, QSet<QString> > groupMap;
|
||||
for(auto instance: m_instances)
|
||||
{
|
||||
QString id = instance->id();
|
||||
QString group = instance->group();
|
||||
if(group.isEmpty())
|
||||
continue;
|
||||
if(!groupMap.count(group))
|
||||
{
|
||||
QSet<QString> set;
|
||||
set.insert(id);
|
||||
groupMap[group] = set;
|
||||
}
|
||||
else
|
||||
{
|
||||
QSet<QString> &set = groupMap[group];
|
||||
set.insert(id);
|
||||
}
|
||||
}
|
||||
QJsonObject toplevel;
|
||||
toplevel.insert("formatVersion",QJsonValue(QString("1")));
|
||||
QJsonObject groupsArr;
|
||||
for(auto iter = groupMap.begin(); iter != groupMap.end(); iter++)
|
||||
{
|
||||
auto list = iter.value();
|
||||
auto name = iter.key();
|
||||
QJsonObject groupObj;
|
||||
QJsonArray instanceArr;
|
||||
groupObj.insert("hidden",QJsonValue(QString("false")));
|
||||
for(auto item: list)
|
||||
{
|
||||
instanceArr.append(QJsonValue(item));
|
||||
}
|
||||
groupObj.insert("instances",instanceArr);
|
||||
groupsArr.insert(name,groupObj);
|
||||
}
|
||||
toplevel.insert("groups",groupsArr);
|
||||
QJsonDocument doc(toplevel);
|
||||
groupFile.write(doc.toJson(QJsonDocument::Indented));
|
||||
groupFile.close();
|
||||
}
|
||||
|
||||
void InstanceList::loadGroupList(QMap<QString, QString> & groupMap)
|
||||
{
|
||||
QString groupFileName = m_instDir + "/instgroups.json";
|
||||
@ -176,12 +244,13 @@ InstanceList::InstListError InstanceList::loadList()
|
||||
auto iter = groupMap.find(inst->id());
|
||||
if(iter != groupMap.end())
|
||||
{
|
||||
inst->setGroup((*iter));
|
||||
inst->setGroupInitial((*iter));
|
||||
}
|
||||
qDebug(QString("Loaded instance %1").arg(inst->name()).toUtf8());
|
||||
inst->setParent(this);
|
||||
m_instances.append(inst);
|
||||
connect(instPtr, SIGNAL(propertiesChanged(BaseInstance*)),this, SLOT(propertiesChanged(BaseInstance*)));
|
||||
connect(instPtr, SIGNAL(groupChanged()),this, SLOT(groupChanged()));
|
||||
}
|
||||
}
|
||||
emit invalidated();
|
||||
@ -191,6 +260,7 @@ InstanceList::InstListError InstanceList::loadList()
|
||||
/// Clear all instances. Triggers notifications.
|
||||
void InstanceList::clear()
|
||||
{
|
||||
saveGroupList();
|
||||
m_instances.clear();
|
||||
emit invalidated();
|
||||
};
|
||||
|
@ -26,13 +26,12 @@ class InstanceList : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
/*!
|
||||
* \brief Get the instance groups
|
||||
*/
|
||||
void loadGroupList(QMap<QString, QString> & groupList);
|
||||
void saveGroupList();
|
||||
|
||||
public:
|
||||
explicit InstanceList(const QString &instDir, QObject *parent = 0);
|
||||
virtual ~InstanceList();
|
||||
|
||||
/*!
|
||||
* \brief Error codes returned by functions in the InstanceList class.
|
||||
@ -84,7 +83,7 @@ signals:
|
||||
|
||||
private slots:
|
||||
void propertiesChanged(BaseInstance * inst);
|
||||
|
||||
void groupChanged();
|
||||
protected:
|
||||
QString m_instDir;
|
||||
QList< InstancePtr > m_instances;
|
||||
|
Reference in New Issue
Block a user