fixed disabled/enabled for cassette, cartridge and floppy submenus
This commit is contained in:
@@ -41,11 +41,16 @@ void MediaMenu::refresh(QMenu *parentMenu) {
|
|||||||
cassetteMenu->addAction("Existing Image", [this]() { cassetteSelectImage(false); });
|
cassetteMenu->addAction("Existing Image", [this]() { cassetteSelectImage(false); });
|
||||||
cassetteMenu->addAction("Existing Image (Write Protected)", [this]() { cassetteSelectImage(true); });
|
cassetteMenu->addAction("Existing Image (Write Protected)", [this]() { cassetteSelectImage(true); });
|
||||||
cassetteMenu->addSeparator();
|
cassetteMenu->addSeparator();
|
||||||
cassetteMenu->addAction("Record")->setCheckable(true);
|
cassetteRecordPos = cassetteMenu->children().count();
|
||||||
cassetteMenu->addAction("Play")->setCheckable(true);
|
cassetteMenu->addAction("Record", [this] { pc_cas_set_mode(cassette, 1); cassetteUpdateMenu(); })->setCheckable(true);
|
||||||
cassetteMenu->addAction("Rewing");
|
cassettePlayPos = cassetteMenu->children().count();
|
||||||
cassetteMenu->addAction("Fast Forward");
|
cassetteMenu->addAction("Play", [this] { pc_cas_set_mode(cassette, 0); cassetteUpdateMenu(); })->setCheckable(true);
|
||||||
|
cassetteRewindPos = cassetteMenu->children().count();
|
||||||
|
cassetteMenu->addAction("Rewind", [] { pc_cas_rewind(cassette); });
|
||||||
|
cassetteFastFwdPos = cassetteMenu->children().count();
|
||||||
|
cassetteMenu->addAction("Fast Forward", [] { pc_cas_append(cassette); });
|
||||||
cassetteMenu->addSeparator();
|
cassetteMenu->addSeparator();
|
||||||
|
cassetteEjectPos = cassetteMenu->children().count();
|
||||||
cassetteMenu->addAction("Eject", [this]() { cassetteEject(); });
|
cassetteMenu->addAction("Eject", [this]() { cassetteEject(); });
|
||||||
cassetteUpdateMenu();
|
cassetteUpdateMenu();
|
||||||
}
|
}
|
||||||
@@ -56,6 +61,7 @@ void MediaMenu::refresh(QMenu *parentMenu) {
|
|||||||
auto* menu = parentMenu->addMenu("");
|
auto* menu = parentMenu->addMenu("");
|
||||||
menu->addAction("Image", [this, i]() { cartridgeSelectImage(i); });
|
menu->addAction("Image", [this, i]() { cartridgeSelectImage(i); });
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
|
cartridgeEjectPos = menu->children().count();
|
||||||
menu->addAction("Eject", [this, i]() { cartridgeEject(i); });
|
menu->addAction("Eject", [this, i]() { cartridgeEject(i); });
|
||||||
cartridgeMenus.append(menu);
|
cartridgeMenus.append(menu);
|
||||||
cartridgeUpdateMenu(i);
|
cartridgeUpdateMenu(i);
|
||||||
@@ -70,8 +76,10 @@ void MediaMenu::refresh(QMenu *parentMenu) {
|
|||||||
menu->addAction("Existing Image", [this, i]() { floppySelectImage(i, false); });
|
menu->addAction("Existing Image", [this, i]() { floppySelectImage(i, false); });
|
||||||
menu->addAction("Existing Image (Write Protected)", [this, i]() { floppySelectImage(i, true); });
|
menu->addAction("Existing Image (Write Protected)", [this, i]() { floppySelectImage(i, true); });
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
|
floppyExportPos = menu->children().count();
|
||||||
menu->addAction("Export to 86F", [this, i]() { floppyExportTo86f(i); });
|
menu->addAction("Export to 86F", [this, i]() { floppyExportTo86f(i); });
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
|
floppyEjectPos = menu->children().count();
|
||||||
menu->addAction("Eject", [this, i]() { floppyEject(i); });
|
menu->addAction("Eject", [this, i]() { floppyEject(i); });
|
||||||
floppyMenus.append(menu);
|
floppyMenus.append(menu);
|
||||||
floppyUpdateMenu(i);
|
floppyUpdateMenu(i);
|
||||||
@@ -169,6 +177,24 @@ void MediaMenu::cassetteEject() {
|
|||||||
|
|
||||||
void MediaMenu::cassetteUpdateMenu() {
|
void MediaMenu::cassetteUpdateMenu() {
|
||||||
QString name = cassette_fname;
|
QString name = cassette_fname;
|
||||||
|
QString mode = cassette_mode;
|
||||||
|
auto childs = cassetteMenu->children();
|
||||||
|
auto* recordMenu = dynamic_cast<QAction*>(childs[cassetteRecordPos]);
|
||||||
|
auto* playMenu = dynamic_cast<QAction*>(childs[cassettePlayPos]);
|
||||||
|
auto* rewindMenu = dynamic_cast<QAction*>(childs[cassetteRewindPos]);
|
||||||
|
auto* fastFwdMenu = dynamic_cast<QAction*>(childs[cassetteFastFwdPos]);
|
||||||
|
auto* ejectMenu = dynamic_cast<QAction*>(childs[cassetteEjectPos]);
|
||||||
|
|
||||||
|
recordMenu->setEnabled(!name.isEmpty());
|
||||||
|
playMenu->setEnabled(!name.isEmpty());
|
||||||
|
rewindMenu->setEnabled(!name.isEmpty());
|
||||||
|
fastFwdMenu->setEnabled(!name.isEmpty());
|
||||||
|
ejectMenu->setEnabled(!name.isEmpty());
|
||||||
|
|
||||||
|
bool isSaving = mode == QStringLiteral("save");
|
||||||
|
recordMenu->setChecked(isSaving);
|
||||||
|
playMenu->setChecked(! isSaving);
|
||||||
|
|
||||||
cassetteMenu->setTitle(QString("Cassette: %1").arg(name.isEmpty() ? "(empty)" : name));
|
cassetteMenu->setTitle(QString("Cassette: %1").arg(name.isEmpty() ? "(empty)" : name));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,7 +223,11 @@ void MediaMenu::cartridgeEject(int i) {
|
|||||||
|
|
||||||
void MediaMenu::cartridgeUpdateMenu(int i) {
|
void MediaMenu::cartridgeUpdateMenu(int i) {
|
||||||
QString name = cart_fns[i];
|
QString name = cart_fns[i];
|
||||||
cartridgeMenus[i]->setTitle(QString("Cartridge %1: %2").arg(QString::number(i+1), name.isEmpty() ? "(empty)" : name));
|
auto* menu = cartridgeMenus[i];
|
||||||
|
auto childs = menu->children();
|
||||||
|
auto* ejectMenu = dynamic_cast<QAction*>(childs[cartridgeEjectPos]);
|
||||||
|
ejectMenu->setEnabled(!name.isEmpty());
|
||||||
|
menu->setTitle(QString("Cartridge %1: %2").arg(QString::number(i+1), name.isEmpty() ? "(empty)" : name));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MediaMenu::floppyNewImage(int i) {
|
void MediaMenu::floppyNewImage(int i) {
|
||||||
@@ -250,6 +280,15 @@ void MediaMenu::floppyExportTo86f(int i) {
|
|||||||
|
|
||||||
void MediaMenu::floppyUpdateMenu(int i) {
|
void MediaMenu::floppyUpdateMenu(int i) {
|
||||||
QString name = floppyfns[i];
|
QString name = floppyfns[i];
|
||||||
|
|
||||||
|
auto* menu = floppyMenus[i];
|
||||||
|
auto childs = menu->children();
|
||||||
|
|
||||||
|
auto* ejectMenu = dynamic_cast<QAction*>(childs[floppyEjectPos]);
|
||||||
|
auto* exportMenu = dynamic_cast<QAction*>(childs[floppyExportPos]);
|
||||||
|
ejectMenu->setEnabled(!name.isEmpty());
|
||||||
|
exportMenu->setEnabled(!name.isEmpty());
|
||||||
|
|
||||||
int type = fdd_get_type(i);
|
int type = fdd_get_type(i);
|
||||||
floppyMenus[i]->setTitle(QString("Floppy %1 (%2): %3").arg(QString::number(i+1), fdd_getname(type), name.isEmpty() ? "(empty)" : name));
|
floppyMenus[i]->setTitle(QString("Floppy %1 (%2): %3").arg(QString::number(i+1), fdd_getname(type), name.isEmpty() ? "(empty)" : name));
|
||||||
}
|
}
|
||||||
|
@@ -63,6 +63,17 @@ private:
|
|||||||
QList<QMenu*> zipMenus;
|
QList<QMenu*> zipMenus;
|
||||||
QList<QMenu*> moMenus;
|
QList<QMenu*> moMenus;
|
||||||
|
|
||||||
|
int cassetteRecordPos;
|
||||||
|
int cassettePlayPos;
|
||||||
|
int cassetteRewindPos;
|
||||||
|
int cassetteFastFwdPos;
|
||||||
|
int cassetteEjectPos;
|
||||||
|
|
||||||
|
int cartridgeEjectPos;
|
||||||
|
|
||||||
|
int floppyExportPos;
|
||||||
|
int floppyEjectPos;
|
||||||
|
|
||||||
int cdromMutePos;
|
int cdromMutePos;
|
||||||
int cdromEmptyPos;
|
int cdromEmptyPos;
|
||||||
int cdromReloadPos;
|
int cdromReloadPos;
|
||||||
|
Reference in New Issue
Block a user