Remove support for icon sets

This commit is contained in:
David Hrdlička
2025-03-28 23:13:23 +01:00
parent c00c432398
commit ed4a312f4f
13 changed files with 57 additions and 179 deletions

View File

@@ -192,12 +192,6 @@ load_general(void)
else if (mouse_sensitivity > 2.0)
mouse_sensitivity = 2.0;
p = ini_section_get_string(cat, "iconset", NULL);
if (p != NULL)
strcpy(icon_set, p);
else
strcpy(icon_set, "");
enable_discord = !!ini_section_get_int(cat, "enable_discord", 0);
open_dir_usr_path = ini_section_get_int(cat, "open_dir_usr_path", 0);
@@ -2038,11 +2032,6 @@ save_general(void)
ini_section_set_string(cat, "language", buffer);
}
if (!strcmp(icon_set, ""))
ini_section_delete_var(cat, "iconset");
else
ini_section_set_string(cat, "iconset", icon_set);
if (enable_discord)
ini_section_set_int(cat, "enable_discord", enable_discord);
else

View File

@@ -118,7 +118,6 @@ extern int vid_resize; /* (C) allow resizing */
extern int invert_display; /* (C) invert the display */
extern int suppress_overscan; /* (C) suppress overscans */
extern uint32_t lang_id; /* (C) language code identifier */
extern char icon_set[256]; /* (C) iconset identifier */
extern int scale; /* (C) screen scale factor */
extern int dpi_scale; /* (C) DPI scaling of the emulated screen */
extern int vid_api; /* (C) video renderer */

View File

@@ -35,8 +35,6 @@ qt_nvr_save(void)
return nvr_save();
}
char icon_set[256] = ""; /* name of the iconset to be used */
int
plat_vidapi(const char *api)
{

View File

@@ -176,24 +176,24 @@ static const QString pixmap_empty_active = QStringLiteral("_empty_active");
void
PixmapSetEmpty::load(const QString &basePath)
{
normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
}
void
PixmapSetActive::load(const QString &basePath)
{
normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
}
void
PixmapSetEmptyActive::load(QString basePath)
{
normal = ProgSettings::loadIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = ProgSettings::loadIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
empty = ProgSettings::loadIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
empty_active = ProgSettings::loadIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size);
normal = QIcon(basePath.arg(QStringLiteral(""))).pixmap(pixmap_size);
active = QIcon(basePath.arg(pixmap_active)).pixmap(pixmap_size);
empty = QIcon(basePath.arg(pixmap_empty)).pixmap(pixmap_size);
empty_active = QIcon(basePath.arg(pixmap_empty_active)).pixmap(pixmap_size);
}
}
@@ -202,21 +202,21 @@ struct MachineStatus::States {
States(QObject *parent)
{
pixmaps.cartridge.load("/cartridge%1.ico");
pixmaps.cassette.load("/cassette%1.ico");
pixmaps.floppy_disabled.normal = ProgSettings::loadIcon(QStringLiteral("/floppy_disabled.ico")).pixmap(pixmap_size);
pixmaps.cartridge.load(":/settings/qt/icons/cartridge%1.ico");
pixmaps.cassette.load(":/settings/qt/icons/cassette%1.ico");
pixmaps.floppy_disabled.normal = QIcon(":/settings/qt/icons/floppy_disabled.ico").pixmap(pixmap_size);
pixmaps.floppy_disabled.active = pixmaps.floppy_disabled.normal;
pixmaps.floppy_disabled.empty = pixmaps.floppy_disabled.normal;
pixmaps.floppy_disabled.empty_active = pixmaps.floppy_disabled.normal;
pixmaps.floppy_525.load("/floppy_525%1.ico");
pixmaps.floppy_35.load("/floppy_35%1.ico");
pixmaps.cdrom.load("/cdrom%1.ico");
pixmaps.zip.load("/zip%1.ico");
pixmaps.mo.load("/mo%1.ico");
pixmaps.hd.load("/hard_disk%1.ico");
pixmaps.net.load("/network%1.ico");
pixmaps.sound = ProgSettings::loadIcon("/sound.ico").pixmap(pixmap_size);
pixmaps.soundMuted = ProgSettings::loadIcon("/sound_mute.ico").pixmap(pixmap_size);
pixmaps.floppy_525.load(":/settings/qt/icons/floppy_525%1.ico");
pixmaps.floppy_35.load(":/settings/qt/icons/floppy_35%1.ico");
pixmaps.cdrom.load(":/settings/qt/icons/cdrom%1.ico");
pixmaps.zip.load(":/settings/qt/icons/zip%1.ico");
pixmaps.mo.load(":/settings/qt/icons/mo%1.ico");
pixmaps.hd.load(":/settings/qt/icons/hard_disk%1.ico");
pixmaps.net.load(":/settings/qt/icons/network%1.ico");
pixmaps.sound = QIcon(":/settings/qt/icons/sound.ico").pixmap(pixmap_size);
pixmaps.soundMuted = QIcon(":/settings/qt/icons/sound_mute.ico").pixmap(pixmap_size);
cartridge[0].pixmaps = &pixmaps.cartridge;
cartridge[1].pixmaps = &pixmaps.cartridge;

View File

@@ -154,10 +154,10 @@ MediaMenu::refresh(QMenu *parentMenu)
MachineStatus::iterateCDROM([this, parentMenu](int i) {
auto *menu = parentMenu->addMenu("");
cdromMutePos = menu->children().count();
menu->addAction(ProgSettings::loadIcon("/cdrom_mute.ico"), tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true);
menu->addAction(QIcon(":/settings/qt/icons/cdrom_mute.ico"), tr("&Mute"), [this, i]() { cdromMute(i); })->setCheckable(true);
menu->addSeparator();
menu->addAction(ProgSettings::loadIcon("/cdrom_image.ico"), tr("&Image..."), [this, i]() { cdromMount(i, 0, nullptr); })->setCheckable(false);
menu->addAction(ProgSettings::loadIcon("/cdrom_folder.ico"), tr("&Folder..."), [this, i]() { cdromMount(i, 1, nullptr); })->setCheckable(false);
menu->addAction(QIcon(":/settings/qt/icons/cdrom_image.ico"), tr("&Image..."), [this, i]() { cdromMount(i, 0, nullptr); })->setCheckable(false);
menu->addAction(QIcon(":/settings/qt/icons/cdrom_folder.ico"), tr("&Folder..."), [this, i]() { cdromMount(i, 1, nullptr); })->setCheckable(false);
menu->addSeparator();
for (int slot = 0; slot < MAX_PREV_IMAGES; slot++) {
cdromImageHistoryPos[slot] = menu->children().count();
@@ -170,7 +170,7 @@ MediaMenu::refresh(QMenu *parentMenu)
for (const auto &letter : driveLetters) {
auto drive = QString("%1:\\").arg(letter);
if (GetDriveType(drive.toUtf8().constData()) == DRIVE_CDROM)
menu->addAction(ProgSettings::loadIcon("/cdrom_host.ico"), tr("Host CD/DVD Drive (%1:)").arg(letter), [this, i, letter] { cdromMount(i, 2, QString(R"(\\.\%1:)").arg(letter)); })->setCheckable(false);
menu->addAction(QIcon(":/settings/qt/icons/cdrom_host.ico"), tr("Host CD/DVD Drive (%1:)").arg(letter), [this, i, letter] { cdromMount(i, 2, QString(R"(\\.\%1:)").arg(letter)); })->setCheckable(false);
}
menu->addSeparator();
#endif // Q_OS_WINDOWS
@@ -666,7 +666,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type)
children = menu->children();
imageHistoryUpdatePos = dynamic_cast<QAction *>(children[cdromImageHistoryPos[slot]]);
if (fn.left(8) == "ioctl://") {
menu_icon = ProgSettings::loadIcon("/cdrom_host.ico");
menu_icon = QIcon(":/settings/qt/icons/cdrom_host.ico");
#ifdef Q_OS_WINDOWS
menu_item_name = tr("Host CD/DVD Drive (%1)").arg(fn.right(2)).toUtf8().constData();
#else
@@ -674,7 +674,7 @@ MediaMenu::updateImageHistory(int index, int slot, ui::MediaType type)
#endif
} else {
fi.setFile(fn);
menu_icon = fi.isDir() ? ProgSettings::loadIcon("/cdrom_folder.ico") : ProgSettings::loadIcon("/cdrom_image.ico");
menu_icon = fi.isDir() ? QIcon(":/settings/qt/icons/cdrom_folder.ico") : QIcon(":/settings/qt/icons/cdrom_image.ico");
menu_item_name = fn.isEmpty() ? tr("previous image").toUtf8().constData() : fn.toUtf8().constData();
}
imageHistoryUpdatePos->setIcon(menu_icon);
@@ -727,7 +727,7 @@ MediaMenu::cdromUpdateMenu(int i)
auto childs = menu->children();
auto *muteMenu = dynamic_cast<QAction *>(childs[cdromMutePos]);
muteMenu->setIcon(ProgSettings::loadIcon((cdrom[i].sound_on == 0) ? "/cdrom_unmute.ico" : "/cdrom_mute.ico"));
muteMenu->setIcon(QIcon((cdrom[i].sound_on == 0) ? ":/settings/qt/icons/cdrom_unmute.ico" : ":/settings/qt/icons/cdrom_mute.ico"));
muteMenu->setText((cdrom[i].sound_on == 0) ? tr("&Unmute") : tr("&Mute"));
auto *imageMenu = dynamic_cast<QAction *>(childs[cdromImagePos]);
@@ -740,13 +740,13 @@ MediaMenu::cdromUpdateMenu(int i)
menu_item_name = tr("Host CD/DVD Drive (%1)").arg(name.right(name.length() - 8));
#endif
name2 = menu_item_name;
menu_icon = ProgSettings::loadIcon("/cdrom_host.ico");
menu_icon = QIcon(":/settings/qt/icons/cdrom_host.ico");
} else {
QFileInfo fi(cdrom[i].image_path);
menu_item_name = name.isEmpty() ? QString().toUtf8().constData() : name.toUtf8().constData();
name2 = name;
menu_icon = fi.isDir() ? ProgSettings::loadIcon("/cdrom_folder.ico") : ProgSettings::loadIcon("/cdrom_image.ico");
menu_icon = fi.isDir() ? QIcon(":/settings/qt/icons/cdrom_folder.ico") : QIcon(":/settings/qt/icons/cdrom_image.ico");
}
imageMenu->setIcon(menu_icon);
imageMenu->setText(QString::asprintf(tr("Eject %s").toUtf8().constData(), menu_item_name.toUtf8().constData()));

View File

@@ -36,71 +36,16 @@ extern "C" {
#include <86box/rom.h>
}
static QMap<QString, QString> iconset_to_qt;
extern MainWindow *main_window;
ProgSettings::CustomTranslator *ProgSettings::translator = nullptr;
QTranslator *ProgSettings::qtTranslator = nullptr;
QString
ProgSettings::getIconSetPath()
{
if (iconset_to_qt.isEmpty()) {
// Always include default bundled icons
iconset_to_qt.insert("", ":/settings/qt/icons");
// Walk rom_paths to get the candidates
for (rom_path_t *emu_rom_path = &rom_paths; emu_rom_path != nullptr; emu_rom_path = emu_rom_path->next) {
// Check for icons subdir in each candidate
QDir roms_icons_dir(QString(emu_rom_path->path) + "/icons");
if (roms_icons_dir.isReadable()) {
auto dirList = roms_icons_dir.entryList(QDir::AllDirs | QDir::Executable | QDir::Readable);
for (auto &curIconSet : dirList) {
if (curIconSet == "." || curIconSet == "..") {
continue;
}
iconset_to_qt.insert(curIconSet, (roms_icons_dir.canonicalPath() + '/') + curIconSet);
}
}
}
}
return iconset_to_qt[icon_set];
}
QIcon
ProgSettings::loadIcon(QString file)
{
(void) getIconSetPath();
if (!QFile::exists(iconset_to_qt[icon_set] + file))
return QIcon(iconset_to_qt[""] + file);
return QIcon(iconset_to_qt[icon_set] + file);
}
ProgSettings::ProgSettings(QWidget *parent)
: QDialog(parent)
, ui(new Ui::ProgSettings)
{
ui->setupUi(this);
(void) getIconSetPath();
ui->comboBox->setItemData(0, "");
ui->comboBox->setCurrentIndex(0);
for (auto i = iconset_to_qt.begin(); i != iconset_to_qt.end(); i++) {
if (i.key() == "")
continue;
QFile iconfile(i.value() + "/iconinfo.txt");
iconfile.open(QFile::ReadOnly);
QString friendlyName;
QString iconsetinfo(iconfile.readAll());
iconfile.close();
if (iconsetinfo.isEmpty())
friendlyName = i.key();
else
friendlyName = iconsetinfo.split('\n')[0];
ui->comboBox->addItem(friendlyName, i.key());
if (strcmp(icon_set, i.key().toUtf8().data()) == 0) {
ui->comboBox->setCurrentIndex(ui->comboBox->findData(i.key()));
}
}
ui->comboBox->setItemData(0, '(' + tr("Default") + ')', Qt::DisplayRole);
ui->comboBoxLanguage->setItemData(0, 0xFFFF);
for (auto i = lcid_langcode.begin(); i != lcid_langcode.end(); i++) {
if (i.key() == 0xFFFF)
@@ -129,7 +74,6 @@ ProgSettings::ProgSettings(QWidget *parent)
void
ProgSettings::accept()
{
strcpy(icon_set, ui->comboBox->currentData().toString().toUtf8().data());
lang_id = ui->comboBoxLanguage->currentData().toUInt();
open_dir_usr_path = ui->openDirUsrPath->isChecked() ? 1 : 0;
confirm_exit = ui->checkBoxConfirmExit->isChecked() ? 1 : 0;
@@ -161,12 +105,6 @@ ProgSettings::~ProgSettings()
delete ui;
}
void
ProgSettings::on_pushButton_released()
{
ui->comboBox->setCurrentIndex(0);
}
#ifdef Q_OS_WINDOWS
/* Return the standard font name on Windows, which is overridden per-language
to prevent CJK fonts with embedded bitmaps being chosen as a fallback. */

View File

@@ -14,8 +14,6 @@ class ProgSettings : public QDialog {
public:
explicit ProgSettings(QWidget *parent = nullptr);
~ProgSettings();
static QString getIconSetPath();
static QIcon loadIcon(QString file);
#ifdef Q_OS_WINDOWS
static QString getFontName(uint32_t lcid);
#endif
@@ -56,7 +54,6 @@ public:
protected slots:
void accept() override;
private slots:
void on_pushButton_released();
void on_pushButtonLanguage_released();
void on_horizontalSlider_valueChanged(int value);

View File

@@ -29,21 +29,14 @@
<property name="sizeConstraint">
<enum>QLayout::SizeConstraint::SetFixedSize</enum>
</property>
<item row="5" column="1">
<item row="2" column="1">
<widget class="QPushButton" name="pushButtonLanguage">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label">
<property name="text">
<string>Icon set:</string>
</property>
</widget>
</item>
<item row="8" column="0">
<item row="5" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
@@ -56,7 +49,7 @@
</property>
</spacer>
</item>
<item row="4" column="0" colspan="2">
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBoxLanguage">
<property name="maxVisibleItems">
<number>30</number>
@@ -68,7 +61,7 @@
</item>
</widget>
</item>
<item row="9" column="0">
<item row="6" column="0">
<widget class="QCheckBox" name="openDirUsrPath">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;When selecting media images (CD-ROM, floppy, etc.) the open dialog will start in the same directory as the 86Box configuration file. This setting will likely only make a difference on macOS.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
@@ -78,14 +71,7 @@
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="5" column="0">
<item row="2" column="0">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
@@ -98,14 +84,14 @@
</property>
</spacer>
</item>
<item row="8" column="1">
<item row="5" column="1">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>Default</string>
</property>
</widget>
</item>
<item row="7" column="0" colspan="3">
<item row="4" column="0" colspan="3">
<widget class="QSlider" name="horizontalSlider">
<property name="minimum">
<number>10</number>
@@ -127,21 +113,21 @@
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
<item row="11" column="0">
<item row="8" column="0">
<widget class="QCheckBox" name="checkBoxConfirmSave">
<property name="text">
<string>Ask for confirmation before saving settings</string>
</property>
</widget>
</item>
<item row="16" column="0" colspan="2">
<item row="13" column="0" colspan="2">
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
@@ -151,63 +137,35 @@
</property>
</widget>
</item>
<item row="10" column="0">
<item row="7" column="0">
<widget class="QCheckBox" name="checkBoxMultimediaKeys">
<property name="text">
<string>Inhibit multimedia keys on Windows</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QComboBox" name="comboBox">
<property name="editable">
<bool>false</bool>
</property>
<property name="maxVisibleItems">
<number>30</number>
</property>
<item>
<property name="text">
<string>(Default)</string>
</property>
</item>
</widget>
</item>
<item row="2" column="0">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="6" column="0">
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>Mouse sensitivity:</string>
</property>
</widget>
</item>
<item row="13" column="0">
<item row="10" column="0">
<widget class="QCheckBox" name="checkBoxConfirmHardReset">
<property name="text">
<string>Ask for confirmation before hard resetting</string>
</property>
</widget>
</item>
<item row="12" column="0">
<item row="9" column="0">
<widget class="QCheckBox" name="checkBoxConfirmExit">
<property name="text">
<string>Ask for confirmation before quitting</string>
</property>
</widget>
</item>
<item row="14" column="0">
<item row="11" column="0">
<widget class="QCheckBox" name="checkBoxFullscreenFirst">
<property name="text">
<string>Display hotkey message when entering full-screen mode</string>

View File

@@ -95,7 +95,7 @@ SettingsModel::data(const QModelIndex &index, int role) const
case Qt::DisplayRole:
return tr(pages.at(index.row()).toUtf8().data());
case Qt::DecorationRole:
return QIcon(QString("%1/%2.ico").arg(ProgSettings::getIconSetPath(), page_icons[index.row()]));
return QIcon(QString(":/settings/qt/icons/%1.ico").arg(page_icons[index.row()]));
case Qt::SizeHintRole:
return QSize(-1, fontHeight * 2);
default:

View File

@@ -46,11 +46,11 @@ setFloppyType(QAbstractItemModel *model, const QModelIndex &idx, int type)
{
QIcon icon;
if (type == 0)
icon = ProgSettings::loadIcon("/floppy_disabled.ico");
icon = QIcon(":/settings/qt/icons/floppy_disabled.ico");
else if (type >= 1 && type <= 6)
icon = ProgSettings::loadIcon("/floppy_525.ico");
icon = QIcon(":/settings/qt/icons/floppy_525.ico");
else
icon = ProgSettings::loadIcon("/floppy_35.ico");
icon = QIcon(":/settings/qt/icons/floppy_35.ico");
model->setData(idx, QObject::tr(fdd_getname(type)));
model->setData(idx, type, Qt::UserRole);
@@ -64,12 +64,12 @@ setCDROMBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint
switch (bus) {
case CDROM_BUS_DISABLED:
icon = ProgSettings::loadIcon("/cdrom_disabled.ico");
icon = QIcon(":/settings/qt/icons/cdrom_disabled.ico");
break;
case CDROM_BUS_ATAPI:
case CDROM_BUS_SCSI:
case CDROM_BUS_MITSUMI:
icon = ProgSettings::loadIcon("/cdrom.ico");
icon = QIcon(":/settings/qt/icons/cdrom.ico");
break;
}

View File

@@ -81,7 +81,7 @@ addRow(QAbstractItemModel *model, hard_disk_t *hd)
QString busName = Harddrives::BusChannelName(hd->bus_type, hd->channel);
model->setData(model->index(row, ColumnBus), busName);
model->setData(model->index(row, ColumnBus), ProgSettings::loadIcon("/hard_disk.ico"), Qt::DecorationRole);
model->setData(model->index(row, ColumnBus), QIcon(":/settings/qt/icons/hard_disk.ico"), Qt::DecorationRole);
model->setData(model->index(row, ColumnBus), hd->bus_type, DataBus);
model->setData(model->index(row, ColumnBus), hd->bus_type, DataBusPrevious);
model->setData(model->index(row, ColumnBus), hd->channel, DataBusChannel);

View File

@@ -46,11 +46,11 @@ setMOBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_t
QIcon icon;
switch (bus) {
case MO_BUS_DISABLED:
icon = ProgSettings::loadIcon("/mo_disabled.ico");
icon = QIcon(":/settings/qt/icons/mo_disabled.ico");
break;
case MO_BUS_ATAPI:
case MO_BUS_SCSI:
icon = ProgSettings::loadIcon("/mo.ico");
icon = QIcon(":/settings/qt/icons/mo.ico");
break;
default:
@@ -81,11 +81,11 @@ setZIPBus(QAbstractItemModel *model, const QModelIndex &idx, uint8_t bus, uint8_
QIcon icon;
switch (bus) {
case ZIP_BUS_DISABLED:
icon = ProgSettings::loadIcon("/zip_disabled.ico");
icon = QIcon(":/settings/qt/icons/zip_disabled.ico");
break;
case ZIP_BUS_ATAPI:
case ZIP_BUS_SCSI:
icon = ProgSettings::loadIcon("/zip.ico");
icon = QIcon(":/settings/qt/icons/zip.ico");
break;
default:

View File

@@ -73,7 +73,6 @@ static int exit_event = 0;
static int fullscreen_pending = 0;
uint32_t lang_id = 0x0409; // Multilangual UI variables, for now all set to LCID of en-US
uint32_t lang_sys = 0x0409; // Multilangual UI variables, for now all set to LCID of en-US
char icon_set[256] = ""; /* name of the iconset to be used */
static const uint16_t sdl_to_xt[0x200] = {
[SDL_SCANCODE_ESCAPE] = 0x01,