NOISSUE allow using icon themes for instances and instance badges
@ -25,15 +25,23 @@
|
|||||||
|
|
||||||
#define MAX_SIZE 1024
|
#define MAX_SIZE 1024
|
||||||
|
|
||||||
IconList::IconList(QString builtinPath, QString path, QObject *parent) : QAbstractListModel(parent)
|
IconList::IconList(const QStringList &builtinPaths, QString path, QObject *parent) : QAbstractListModel(parent)
|
||||||
{
|
{
|
||||||
|
QSet<QString> builtinNames;
|
||||||
|
|
||||||
// add builtin icons
|
// add builtin icons
|
||||||
|
for(auto & builtinPath: builtinPaths)
|
||||||
|
{
|
||||||
QDir instance_icons(builtinPath);
|
QDir instance_icons(builtinPath);
|
||||||
auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name);
|
auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name);
|
||||||
for (auto file_info : file_info_list)
|
for (auto file_info : file_info_list)
|
||||||
{
|
{
|
||||||
QString key = file_info.baseName();
|
builtinNames.insert(file_info.baseName());
|
||||||
addIcon(key, key, file_info.absoluteFilePath(), IconType::Builtin);
|
}
|
||||||
|
}
|
||||||
|
for(auto & builtinName : builtinNames)
|
||||||
|
{
|
||||||
|
addThemeIcon(builtinName);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_watcher.reset(new QFileSystemWatcher());
|
m_watcher.reset(new QFileSystemWatcher());
|
||||||
@ -292,6 +300,33 @@ bool IconList::deleteIcon(const QString &key)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool IconList::addThemeIcon(const QString& key)
|
||||||
|
{
|
||||||
|
auto iter = name_index.find(key);
|
||||||
|
if (iter != name_index.end())
|
||||||
|
{
|
||||||
|
auto &oldOne = icons[*iter];
|
||||||
|
oldOne.replace(Builtin, key);
|
||||||
|
dataChanged(index(*iter), index(*iter));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// add a new icon
|
||||||
|
beginInsertRows(QModelIndex(), icons.size(), icons.size());
|
||||||
|
{
|
||||||
|
MMCIcon mmc_icon;
|
||||||
|
mmc_icon.m_name = key;
|
||||||
|
mmc_icon.m_key = key;
|
||||||
|
mmc_icon.replace(Builtin, key);
|
||||||
|
icons.push_back(mmc_icon);
|
||||||
|
name_index[key] = icons.size() - 1;
|
||||||
|
}
|
||||||
|
endInsertRows();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool IconList::addIcon(const QString &key, const QString &name, const QString &path, const IconType type)
|
bool IconList::addIcon(const QString &key, const QString &name, const QString &path, const IconType type)
|
||||||
{
|
{
|
||||||
// replace the icon even? is the input valid?
|
// replace the icon even? is the input valid?
|
||||||
|
@ -34,7 +34,7 @@ class MULTIMC_GUI_EXPORT IconList : public QAbstractListModel, public IIconList
|
|||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit IconList(QString builtinPath, QString path, QObject *parent = 0);
|
explicit IconList(const QStringList &builtinPaths, QString path, QObject *parent = 0);
|
||||||
virtual ~IconList() {};
|
virtual ~IconList() {};
|
||||||
|
|
||||||
QIcon getIcon(const QString &key) const;
|
QIcon getIcon(const QString &key) const;
|
||||||
@ -44,6 +44,7 @@ public:
|
|||||||
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
|
||||||
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override;
|
||||||
|
|
||||||
|
bool addThemeIcon(const QString &key);
|
||||||
bool addIcon(const QString &key, const QString &name, const QString &path, const IconType type) override;
|
bool addIcon(const QString &key, const QString &name, const QString &path, const IconType type) override;
|
||||||
void saveIcon(const QString &key, const QString &path, const char * format) const override;
|
void saveIcon(const QString &key, const QString &path, const char * format) const override;
|
||||||
bool deleteIcon(const QString &key) override;
|
bool deleteIcon(const QString &key) override;
|
||||||
|
@ -15,6 +15,7 @@
|
|||||||
|
|
||||||
#include "MMCIcon.h"
|
#include "MMCIcon.h"
|
||||||
#include <QFileInfo>
|
#include <QFileInfo>
|
||||||
|
#include <xdgicon.h>
|
||||||
|
|
||||||
IconType operator--(IconType &t, int)
|
IconType operator--(IconType &t, int)
|
||||||
{
|
{
|
||||||
@ -58,7 +59,11 @@ QIcon MMCIcon::icon() const
|
|||||||
{
|
{
|
||||||
if (m_current_type == IconType::ToBeDeleted)
|
if (m_current_type == IconType::ToBeDeleted)
|
||||||
return QIcon();
|
return QIcon();
|
||||||
return m_images[m_current_type].icon;
|
auto & icon = m_images[m_current_type].icon;
|
||||||
|
if(!icon.isNull())
|
||||||
|
return icon;
|
||||||
|
// FIXME: inject this.
|
||||||
|
return XdgIcon::fromTheme(m_images[m_current_type].key);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MMCIcon::remove(IconType rm_type)
|
void MMCIcon::remove(IconType rm_type)
|
||||||
@ -78,12 +83,22 @@ void MMCIcon::remove(IconType rm_type)
|
|||||||
|
|
||||||
void MMCIcon::replace(IconType new_type, QIcon icon, QString path)
|
void MMCIcon::replace(IconType new_type, QIcon icon, QString path)
|
||||||
{
|
{
|
||||||
QFileInfo foo(path);
|
|
||||||
if (new_type > m_current_type || m_current_type == IconType::ToBeDeleted)
|
if (new_type > m_current_type || m_current_type == IconType::ToBeDeleted)
|
||||||
{
|
{
|
||||||
m_current_type = new_type;
|
m_current_type = new_type;
|
||||||
}
|
}
|
||||||
m_images[new_type].icon = icon;
|
m_images[new_type].icon = icon;
|
||||||
m_images[new_type].changed = foo.lastModified();
|
|
||||||
m_images[new_type].filename = path;
|
m_images[new_type].filename = path;
|
||||||
|
m_images[new_type].key = QString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MMCIcon::replace(IconType new_type, const QString& key)
|
||||||
|
{
|
||||||
|
if (new_type > m_current_type || m_current_type == IconType::ToBeDeleted)
|
||||||
|
{
|
||||||
|
m_current_type = new_type;
|
||||||
|
}
|
||||||
|
m_images[new_type].icon = QIcon();
|
||||||
|
m_images[new_type].filename = QString();
|
||||||
|
m_images[new_type].key = key;
|
||||||
}
|
}
|
||||||
|
@ -24,11 +24,11 @@
|
|||||||
struct MULTIMC_GUI_EXPORT MMCImage
|
struct MULTIMC_GUI_EXPORT MMCImage
|
||||||
{
|
{
|
||||||
QIcon icon;
|
QIcon icon;
|
||||||
|
QString key;
|
||||||
QString filename;
|
QString filename;
|
||||||
QDateTime changed;
|
|
||||||
bool present() const
|
bool present() const
|
||||||
{
|
{
|
||||||
return !icon.isNull();
|
return !icon.isNull() && !key.isEmpty();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -45,4 +45,5 @@ struct MULTIMC_GUI_EXPORT MMCIcon
|
|||||||
QIcon icon() const;
|
QIcon icon() const;
|
||||||
void remove(IconType rm_type);
|
void remove(IconType rm_type);
|
||||||
void replace(IconType new_type, QIcon icon, QString path = QString());
|
void replace(IconType new_type, QIcon icon, QString path = QString());
|
||||||
|
void replace(IconType new_type, const QString &key);
|
||||||
};
|
};
|
||||||
|
@ -304,7 +304,6 @@ set(MULTIMC_QRCS
|
|||||||
resources/pe_blue/pe_blue.qrc
|
resources/pe_blue/pe_blue.qrc
|
||||||
resources/OSX/OSX.qrc
|
resources/OSX/OSX.qrc
|
||||||
resources/iOS/iOS.qrc
|
resources/iOS/iOS.qrc
|
||||||
resources/instances/instances.qrc
|
|
||||||
resources/versions/versions.qrc
|
resources/versions/versions.qrc
|
||||||
resources/certs/certs.qrc
|
resources/certs/certs.qrc
|
||||||
)
|
)
|
||||||
|
@ -411,7 +411,13 @@ void MultiMC::initTranslations()
|
|||||||
void MultiMC::initIcons()
|
void MultiMC::initIcons()
|
||||||
{
|
{
|
||||||
auto setting = MMC->settings()->getSetting("IconsDir");
|
auto setting = MMC->settings()->getSetting("IconsDir");
|
||||||
m_icons.reset(new IconList(QString(":/icons/instances/"), setting->get().toString()));
|
QStringList instFolders =
|
||||||
|
{
|
||||||
|
":/icons/multimc/32x32/instances/",
|
||||||
|
":/icons/multimc/50x50/instances/",
|
||||||
|
":/icons/multimc/128x128/instances/"
|
||||||
|
};
|
||||||
|
m_icons.reset(new IconList(instFolders, setting->get().toString()));
|
||||||
connect(setting.get(), &Setting::SettingChanged,[&](const Setting &, QVariant value)
|
connect(setting.get(), &Setting::SettingChanged,[&](const Setting &, QVariant value)
|
||||||
{
|
{
|
||||||
m_icons->directoryChanged(value.toString());
|
m_icons->directoryChanged(value.toString());
|
||||||
|
@ -23,8 +23,7 @@
|
|||||||
#include "GroupView.h"
|
#include "GroupView.h"
|
||||||
#include "BaseInstance.h"
|
#include "BaseInstance.h"
|
||||||
#include "InstanceList.h"
|
#include "InstanceList.h"
|
||||||
|
#include <xdgicon.h>
|
||||||
QCache<QString, QPixmap> ListViewDelegate::m_pixmapCache;
|
|
||||||
|
|
||||||
// Origin: Qt
|
// Origin: Qt
|
||||||
static void viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height,
|
static void viewItemTextLayout(QTextLayout &textLayout, int lineWidth, qreal &height,
|
||||||
@ -110,47 +109,22 @@ void drawProgressOverlay(QPainter *painter, const QStyleOptionViewItemV4 &option
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawBadges(QPainter *painter, const QStyleOptionViewItemV4 &option, BaseInstance *instance)
|
void drawBadges(QPainter *painter, const QStyleOptionViewItemV4 &option, BaseInstance *instance, QIcon::Mode mode, QIcon::State state)
|
||||||
{
|
{
|
||||||
QList<QString> pixmaps;
|
QList<QString> pixmaps;
|
||||||
if (instance->isRunning())
|
if (instance->isRunning())
|
||||||
{
|
{
|
||||||
pixmaps.append("status-running");
|
pixmaps.append("status-running");
|
||||||
}
|
}
|
||||||
else if (instance->hasCrashed())
|
else if (instance->hasCrashed() || instance->hasVersionBroken())
|
||||||
{
|
{
|
||||||
pixmaps.append("status-bad");
|
pixmaps.append("status-bad");
|
||||||
}
|
}
|
||||||
if (instance->hasVersionBroken())
|
|
||||||
{
|
|
||||||
pixmaps.append("broken");
|
|
||||||
}
|
|
||||||
if (instance->hasUpdateAvailable())
|
if (instance->hasUpdateAvailable())
|
||||||
{
|
{
|
||||||
pixmaps.append("updateavailable");
|
pixmaps.append("checkupdate");
|
||||||
}
|
}
|
||||||
|
|
||||||
// begin easter eggs
|
|
||||||
if (instance->name().contains("btw", Qt::CaseInsensitive) ||
|
|
||||||
instance->name().contains("better then wolves", Qt::CaseInsensitive) ||
|
|
||||||
instance->name().contains("better than wolves", Qt::CaseInsensitive))
|
|
||||||
{
|
|
||||||
pixmaps.append("herobrine");
|
|
||||||
}
|
|
||||||
if (instance->name().contains("direwolf", Qt::CaseInsensitive))
|
|
||||||
{
|
|
||||||
pixmaps.append("enderman");
|
|
||||||
}
|
|
||||||
if (instance->name().contains("kitten", Qt::CaseInsensitive))
|
|
||||||
{
|
|
||||||
pixmaps.append("kitten");
|
|
||||||
}
|
|
||||||
if (instance->name().contains("derp", Qt::CaseInsensitive))
|
|
||||||
{
|
|
||||||
pixmaps.append("derp");
|
|
||||||
}
|
|
||||||
// end easter eggs
|
|
||||||
|
|
||||||
static const int itemSide = 24;
|
static const int itemSide = 24;
|
||||||
static const int spacing = 1;
|
static const int spacing = 1;
|
||||||
const int itemsPerRow = qMax(1, qFloor(double(option.rect.width() + spacing) / double(itemSide + spacing)));
|
const int itemsPerRow = qMax(1, qFloor(double(option.rect.width() + spacing) / double(itemSide + spacing)));
|
||||||
@ -165,11 +139,18 @@ void drawBadges(QPainter *painter, const QStyleOptionViewItemV4 &option, BaseIns
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const QPixmap pixmap = ListViewDelegate::requestBadgePixmap(it.next()).scaled(
|
// FIXME: inject this.
|
||||||
itemSide, itemSide, Qt::KeepAspectRatio, Qt::FastTransformation);
|
auto icon = XdgIcon::fromTheme(it.next());
|
||||||
painter->drawPixmap(option.rect.width() - x * itemSide + qMax(x - 1, 0) * spacing - itemSide,
|
// opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state);
|
||||||
y * itemSide + qMax(y - 1, 0) * spacing, itemSide, itemSide,
|
const QPixmap pixmap;
|
||||||
pixmap);
|
// itemSide
|
||||||
|
QRect badgeRect(
|
||||||
|
option.rect.width() - x * itemSide + qMax(x - 1, 0) * spacing - itemSide,
|
||||||
|
y * itemSide + qMax(y - 1, 0) * spacing,
|
||||||
|
itemSide,
|
||||||
|
itemSide
|
||||||
|
);
|
||||||
|
icon.paint(painter, badgeRect, Qt::AlignCenter, mode, state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
painter->translate(-option.rect.topLeft());
|
painter->translate(-option.rect.topLeft());
|
||||||
@ -274,8 +255,7 @@ void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
|
|||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
// draw the icon
|
// icon mode and state, also used for badges
|
||||||
{
|
|
||||||
QIcon::Mode mode = QIcon::Normal;
|
QIcon::Mode mode = QIcon::Normal;
|
||||||
if (!(opt.state & QStyle::State_Enabled))
|
if (!(opt.state & QStyle::State_Enabled))
|
||||||
mode = QIcon::Disabled;
|
mode = QIcon::Disabled;
|
||||||
@ -283,6 +263,8 @@ void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
|
|||||||
mode = QIcon::Selected;
|
mode = QIcon::Selected;
|
||||||
QIcon::State state = opt.state & QStyle::State_Open ? QIcon::On : QIcon::Off;
|
QIcon::State state = opt.state & QStyle::State_Open ? QIcon::On : QIcon::Off;
|
||||||
|
|
||||||
|
// draw the icon
|
||||||
|
{
|
||||||
iconbox.setHeight(iconSize);
|
iconbox.setHeight(iconSize);
|
||||||
opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state);
|
opt.icon.paint(painter, iconbox, Qt::AlignCenter, mode, state);
|
||||||
}
|
}
|
||||||
@ -329,7 +311,7 @@ void ListViewDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti
|
|||||||
.value<void *>();
|
.value<void *>();
|
||||||
if (instance)
|
if (instance)
|
||||||
{
|
{
|
||||||
drawBadges(painter, opt, instance);
|
drawBadges(painter, opt, instance, mode, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
drawProgressOverlay(painter, opt, index.data(GroupViewRoles::ProgressValueRole).toInt(),
|
drawProgressOverlay(painter, opt, index.data(GroupViewRoles::ProgressValueRole).toInt(),
|
||||||
@ -359,11 +341,3 @@ QSize ListViewDelegate::sizeHint(const QStyleOptionViewItem &option,
|
|||||||
return sz;
|
return sz;
|
||||||
}
|
}
|
||||||
|
|
||||||
QPixmap ListViewDelegate::requestBadgePixmap(const QString &key)
|
|
||||||
{
|
|
||||||
if (!m_pixmapCache.contains(key))
|
|
||||||
{
|
|
||||||
m_pixmapCache.insert(key, new QPixmap(":/icons/badges/" + key + ".png"));
|
|
||||||
}
|
|
||||||
return *m_pixmapCache.object(key);
|
|
||||||
}
|
|
||||||
|
@ -23,13 +23,8 @@ class ListViewDelegate : public QStyledItemDelegate
|
|||||||
public:
|
public:
|
||||||
explicit ListViewDelegate(QObject *parent = 0);
|
explicit ListViewDelegate(QObject *parent = 0);
|
||||||
|
|
||||||
static QPixmap requestBadgePixmap(const QString &key);
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
void paint(QPainter *painter, const QStyleOptionViewItem &option,
|
||||||
const QModelIndex &index) const;
|
const QModelIndex &index) const;
|
||||||
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const;
|
||||||
|
|
||||||
private:
|
|
||||||
static QCache<QString, QPixmap> m_pixmapCache;
|
|
||||||
};
|
};
|
||||||
|
@ -13,7 +13,6 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
case MultiMC::Initialized:
|
case MultiMC::Initialized:
|
||||||
{
|
{
|
||||||
Q_INIT_RESOURCE(instances);
|
|
||||||
Q_INIT_RESOURCE(multimc);
|
Q_INIT_RESOURCE(multimc);
|
||||||
Q_INIT_RESOURCE(backgrounds);
|
Q_INIT_RESOURCE(backgrounds);
|
||||||
Q_INIT_RESOURCE(versions);
|
Q_INIT_RESOURCE(versions);
|
||||||
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 5.1 KiB |
@ -1,51 +0,0 @@
|
|||||||
<!DOCTYPE RCC>
|
|
||||||
<RCC version="1.0">
|
|
||||||
<qresource prefix="/icons/instances">
|
|
||||||
<!-- Source: Mojang -->
|
|
||||||
<file alias="brick">brick.png</file>
|
|
||||||
<file alias="diamond">diamond.png</file>
|
|
||||||
<file alias="dirt">dirt.png</file>
|
|
||||||
<file alias="gold">gold.png</file>
|
|
||||||
<file alias="grass">grass.png</file>
|
|
||||||
<file alias="stone">stone.png</file>
|
|
||||||
<file alias="tnt">tnt.png</file>
|
|
||||||
<file alias="iron">iron.png</file>
|
|
||||||
<file alias="planks">planks.png</file>
|
|
||||||
|
|
||||||
<!-- Source: Unknown -->
|
|
||||||
<file alias="derp">derp.png</file>
|
|
||||||
<file alias="enderman">enderman.png</file>
|
|
||||||
|
|
||||||
<!-- Our own. -->
|
|
||||||
<file alias="chicken">chicken128.png</file>
|
|
||||||
<file alias="creeper">creeper128.png</file>
|
|
||||||
<file alias="enderpearl">enderpearl128.png</file>
|
|
||||||
<file alias="ftb-glow">ftb_glow128.png</file>
|
|
||||||
<file alias="ftb-logo">ftb_logo128.png</file>
|
|
||||||
<file alias="gear">gear128.png</file>
|
|
||||||
<file alias="herobrine">herobrine128.png</file>
|
|
||||||
<file alias="infinity">infinity128.png</file>
|
|
||||||
<file alias="magitech">magitech128.png</file>
|
|
||||||
<file alias="meat">meat128.png</file>
|
|
||||||
<file alias="netherstar">netherstar128.png</file>
|
|
||||||
<file alias="skeleton">skeleton128.png</file>
|
|
||||||
<file alias="squarecreeper">squarecreeper128.png</file>
|
|
||||||
<file alias="steve">steve128.png</file>
|
|
||||||
</qresource>
|
|
||||||
<qresource prefix="/icons/badges">
|
|
||||||
<!-- Source: see above -->
|
|
||||||
<file>enderman.png</file>
|
|
||||||
<file>herobrine.png</file>
|
|
||||||
<file>derp.png</file>
|
|
||||||
<file>status-running.png</file>
|
|
||||||
<file>status-bad.png</file>
|
|
||||||
|
|
||||||
<!-- Update. GPLv2, https://code.google.com/p/gnome-colors/ -->
|
|
||||||
<file>updateavailable.png</file>
|
|
||||||
|
|
||||||
<!-- Source: http://www.iconarchive.com/show/cat-icons-by-fasticon/Cat-Brown-icon.html -->
|
|
||||||
<file>kitten.png</file>
|
|
||||||
<!-- Source: http://www.iconarchive.com/show/crystal-clear-icons-by-everaldo/Filesystem-file-broken-icon.html -->
|
|
||||||
<file>broken.png</file>
|
|
||||||
</qresource>
|
|
||||||
</RCC>
|
|
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 8.8 KiB After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 7.7 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.0 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 3.6 KiB After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
Before Width: | Height: | Size: 713 B After Width: | Height: | Size: 713 B |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 708 B |
Before Width: | Height: | Size: 482 B After Width: | Height: | Size: 482 B |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 978 B After Width: | Height: | Size: 978 B |
Before Width: | Height: | Size: 618 B After Width: | Height: | Size: 618 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 532 B After Width: | Height: | Size: 532 B |
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 461 B |
Before Width: | Height: | Size: 696 B After Width: | Height: | Size: 696 B |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 969 B After Width: | Height: | Size: 969 B |
Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 438 B |
Before Width: | Height: | Size: 378 B After Width: | Height: | Size: 378 B |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
@ -2,14 +2,7 @@
|
|||||||
Name=multimc
|
Name=multimc
|
||||||
Comment=MultiMC Default Icons
|
Comment=MultiMC Default Icons
|
||||||
Inherits=default
|
Inherits=default
|
||||||
Directories=scalable/apps,8x8,16x16,22x22,24x24,32x32,48x48,scalable
|
Directories=8x8,16x16,22x22,24x24,32x32,32x32/instances,48x48,50x50/instances,64x64,128x128/instances,256x256,scalable
|
||||||
|
|
||||||
[scalable/apps]
|
|
||||||
Size=48
|
|
||||||
Type=scalable
|
|
||||||
MinSize=1
|
|
||||||
MaxSize=512
|
|
||||||
Context=Applications
|
|
||||||
|
|
||||||
[8x8]
|
[8x8]
|
||||||
Size=8
|
Size=8
|
||||||
@ -26,12 +19,25 @@ Size=24
|
|||||||
[32x32]
|
[32x32]
|
||||||
Size=32
|
Size=32
|
||||||
|
|
||||||
|
[32x32/instances]
|
||||||
|
Size=32
|
||||||
|
MinSize=1
|
||||||
|
MaxSize=32
|
||||||
|
|
||||||
[48x48]
|
[48x48]
|
||||||
Size=48
|
Size=48
|
||||||
|
|
||||||
|
[50x50/instances]
|
||||||
|
Size=50
|
||||||
|
|
||||||
[64x64]
|
[64x64]
|
||||||
Size=64
|
Size=64
|
||||||
|
|
||||||
|
[128x128/instances]
|
||||||
|
Size=128
|
||||||
|
MinSize=33
|
||||||
|
MaxSize=128
|
||||||
|
|
||||||
[256x256]
|
[256x256]
|
||||||
Size=256
|
Size=256
|
||||||
|
|
||||||
|
@ -233,5 +233,59 @@
|
|||||||
<!-- discord logo icon thing. from discord. traced from bitmap -->
|
<!-- discord logo icon thing. from discord. traced from bitmap -->
|
||||||
<file>scalable/discord.svg</file>
|
<file>scalable/discord.svg</file>
|
||||||
|
|
||||||
|
<!-- instance icons -->
|
||||||
|
<file>32x32/instances/chicken.png</file>
|
||||||
|
<file>128x128/instances/chicken.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/creeper.png</file>
|
||||||
|
<file>128x128/instances/creeper.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/enderpearl.png</file>
|
||||||
|
<file>128x128/instances/enderpearl.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/ftb_glow.png</file>
|
||||||
|
<file>128x128/instances/ftb_glow.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/ftb_logo.png</file>
|
||||||
|
<file>128x128/instances/ftb_logo.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/gear.png</file>
|
||||||
|
<file>128x128/instances/gear.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/herobrine.png</file>
|
||||||
|
<file>128x128/instances/herobrine.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/infinity.png</file>
|
||||||
|
<file>128x128/instances/infinity.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/magitech.png</file>
|
||||||
|
<file>128x128/instances/magitech.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/meat.png</file>
|
||||||
|
<file>128x128/instances/meat.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/netherstar.png</file>
|
||||||
|
<file>128x128/instances/netherstar.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/skeleton.png</file>
|
||||||
|
<file>128x128/instances/skeleton.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/squarecreeper.png</file>
|
||||||
|
<file>128x128/instances/squarecreeper.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/steve.png</file>
|
||||||
|
<file>128x128/instances/steve.png</file>
|
||||||
|
|
||||||
|
<file>32x32/instances/brick.png</file>
|
||||||
|
<file>32x32/instances/diamond.png</file>
|
||||||
|
<file>32x32/instances/dirt.png</file>
|
||||||
|
<file>32x32/instances/gold.png</file>
|
||||||
|
<file>32x32/instances/grass.png</file>
|
||||||
|
<file>32x32/instances/iron.png</file>
|
||||||
|
<file>32x32/instances/planks.png</file>
|
||||||
|
<file>32x32/instances/stone.png</file>
|
||||||
|
<file>32x32/instances/tnt.png</file>
|
||||||
|
|
||||||
|
<file>50x50/instances/enderman.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|