Workaround for DRCS menu sections on Windows

This commit is contained in:
Gavin MacGregor
2025-06-10 12:45:53 +01:00
parent e1ba67484f
commit e574526ca4
2 changed files with 20 additions and 9 deletions

View File

@@ -685,8 +685,14 @@ void MainWindow::createActions()
viewMenu->addSeparator(); viewMenu->addSeparator();
QMenu *drcsSubMenu = viewMenu->addMenu(tr("DRCS pages")); QMenu *drcsSubMenu = viewMenu->addMenu(tr("DRCS pages"));
m_drcsSeparator[1] = drcsSubMenu->addSeparator(); // Apparently Qt on non-Unix GUIs won't show text on separators or sections
m_drcsSeparator[1]->setText("Global DRCS"); // so use a disabled menu entry instead
#ifndef Q_OS_UNIX
m_drcsSection[1] = drcsSubMenu->addAction("Global DRCS");
m_drcsSection[1]->setEnabled(false);
#else
m_drcsSection[1] = drcsSubMenu->addSection("Global DRCS");
#endif
QAction *gDrcsFileSelect = drcsSubMenu->addAction(tr("Load file...")); QAction *gDrcsFileSelect = drcsSubMenu->addAction(tr("Load file..."));
gDrcsFileSelect->setStatusTip(tr("Load a file to use for Global DRCS definitions")); gDrcsFileSelect->setStatusTip(tr("Load a file to use for Global DRCS definitions"));
connect(gDrcsFileSelect, &QAction::triggered, [=]() { loadDRCSFile(1); }); connect(gDrcsFileSelect, &QAction::triggered, [=]() { loadDRCSFile(1); });
@@ -695,8 +701,13 @@ void MainWindow::createActions()
m_drcsClear[1]->setEnabled(false); m_drcsClear[1]->setEnabled(false);
connect(m_drcsClear[1], &QAction::triggered, [=]() { clearDRCSFile(1); }); connect(m_drcsClear[1], &QAction::triggered, [=]() { clearDRCSFile(1); });
m_drcsSeparator[0] = drcsSubMenu->addSeparator(); #ifndef Q_OS_UNIX
m_drcsSeparator[0]->setText("Normal DRCS"); QAction *separator = drcsSubMenu->addSeparator();
m_drcsSection[0] = drcsSubMenu->addAction("Normal DRCS");
m_drcsSection[0]->setEnabled(false);
#else
m_drcsSection[0] = drcsSubMenu->addSection("Normal DRCS");
#endif
QAction *nDrcsFileSelect = drcsSubMenu->addAction(tr("Load file...")); QAction *nDrcsFileSelect = drcsSubMenu->addAction(tr("Load file..."));
nDrcsFileSelect->setStatusTip(tr("Load a file to use for Normal DRCS definitions")); nDrcsFileSelect->setStatusTip(tr("Load a file to use for Normal DRCS definitions"));
connect(nDrcsFileSelect, &QAction::triggered, [=]() { loadDRCSFile(0); }); connect(nDrcsFileSelect, &QAction::triggered, [=]() { loadDRCSFile(0); });
@@ -981,7 +992,7 @@ void MainWindow::loadDRCSFile(int drcsType, QString fileName)
m_fileWatcher.addPath(fileName); m_fileWatcher.addPath(fileName);
m_drcsFileName[drcsType] = fileName; m_drcsFileName[drcsType] = fileName;
m_drcsSeparator[drcsType]->setText(QString("%1: %2").arg(drcsTypeName).arg(QFileInfo(fileName).fileName())); m_drcsSection[drcsType]->setText(QString("%1: %2").arg(drcsTypeName).arg(QFileInfo(fileName).fileName()));
m_drcsClear[drcsType]->setEnabled(true); m_drcsClear[drcsType]->setEnabled(true);
m_drcsSwap->setEnabled(true); m_drcsSwap->setEnabled(true);
} else { } else {
@@ -1005,7 +1016,7 @@ void MainWindow::clearDRCSFile(int drcsType)
m_textWidget->refreshPage(); m_textWidget->refreshPage();
m_drcsFileName[drcsType].clear(); m_drcsFileName[drcsType].clear();
m_drcsSeparator[drcsType]->setText(drcsType == 1 ? "Global DRCS" : "Normal DRCS"); m_drcsSection[drcsType]->setText(drcsType == 1 ? "Global DRCS" : "Normal DRCS");
m_drcsClear[drcsType]->setEnabled(false); m_drcsClear[drcsType]->setEnabled(false);
m_drcsSwap->setEnabled(m_drcsClear[0]->isEnabled() || m_drcsClear[1]->isEnabled()); m_drcsSwap->setEnabled(m_drcsClear[0]->isEnabled() || m_drcsClear[1]->isEnabled());
} }
@@ -1020,10 +1031,10 @@ void MainWindow::swapDRCS()
if (m_drcsPage[i].isEmpty()) { if (m_drcsPage[i].isEmpty()) {
m_textWidget->pageDecode()->clearDRCSPage((TeletextPageDecode::DRCSPageType)i); m_textWidget->pageDecode()->clearDRCSPage((TeletextPageDecode::DRCSPageType)i);
m_drcsSeparator[i]->setText(drcsTypeName); m_drcsSection[i]->setText(drcsTypeName);
} else { } else {
m_textWidget->pageDecode()->setDRCSPage((TeletextPageDecode::DRCSPageType)i, &m_drcsPage[i]); m_textWidget->pageDecode()->setDRCSPage((TeletextPageDecode::DRCSPageType)i, &m_drcsPage[i]);
m_drcsSeparator[i]->setText(QString("%1: %2").arg(drcsTypeName).arg(QFileInfo(m_drcsFileName[i]).fileName())); m_drcsSection[i]->setText(QString("%1: %2").arg(drcsTypeName).arg(QFileInfo(m_drcsFileName[i]).fileName()));
} }
m_drcsClear[i]->setEnabled(!m_drcsPage[i].isEmpty()); m_drcsClear[i]->setEnabled(!m_drcsPage[i].isEmpty());

View File

@@ -145,7 +145,7 @@ private:
QAction *m_borderActs[3]; QAction *m_borderActs[3];
QAction *m_aspectRatioActs[4]; QAction *m_aspectRatioActs[4];
QAction *m_smoothTransformAction; QAction *m_smoothTransformAction;
QAction *m_drcsSeparator[2], *m_drcsClear[2], *m_drcsSwap; QAction *m_drcsSection[2], *m_drcsClear[2], *m_drcsSwap;
QLabel *m_subPageLabel, *m_cursorPositionLabel; QLabel *m_subPageLabel, *m_cursorPositionLabel;
QToolButton *m_previousSubPageButton, *m_nextSubPageButton; QToolButton *m_previousSubPageButton, *m_nextSubPageButton;