Implement DRCS context menus
This commit is contained in:
@@ -1156,6 +1156,19 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
||||
connect(static_cast<TripletCLUTQMenu *>(customMenu)->action(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||
}
|
||||
break;
|
||||
case 0x18: // DRCS mode
|
||||
customMenu = new TripletDRCSModeQMenu(this);
|
||||
|
||||
static_cast<TripletDRCSModeQMenu *>(customMenu)->setSourceChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+3).toInt());
|
||||
static_cast<TripletDRCSModeQMenu *>(customMenu)->setSubTableChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+4).toInt());
|
||||
static_cast<TripletDRCSModeQMenu *>(customMenu)->setLevelsChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
|
||||
for (int i=0; i<2; i++)
|
||||
connect(static_cast<TripletDRCSModeQMenu *>(customMenu)->sourceAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+3); updateAllCookedTripletWidgets(index); });
|
||||
for (int i=0; i<16; i++)
|
||||
connect(static_cast<TripletDRCSModeQMenu *>(customMenu)->subTableAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+4); updateAllCookedTripletWidgets(index); });
|
||||
for (int i=0; i<3; i++)
|
||||
connect(static_cast<TripletDRCSModeQMenu *>(customMenu)->levelsAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||
break;
|
||||
case 0x27: // Additional flash functions
|
||||
customMenu = new TripletFlashQMenu(this);
|
||||
|
||||
@@ -1177,6 +1190,16 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
||||
connect(static_cast<TripletDisplayAttrsQMenu *>(customMenu)->otherAttrAction(i), &QAction::toggled, [=](const int checked) { updateModelFromCookedWidget(checked, Qt::UserRole+i+2); updateAllCookedTripletWidgets(index); });
|
||||
}
|
||||
break;
|
||||
case 0x2d: // DRCS character
|
||||
customMenu = new TripletDRCSCharacterQMenu(this);
|
||||
|
||||
static_cast<TripletDRCSCharacterQMenu *>(customMenu)->setSourceChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
|
||||
for (int i=0; i<50; i++)
|
||||
if (i < 48)
|
||||
connect(static_cast<TripletDRCSCharacterQMenu *>(customMenu)->characterAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+2); updateAllCookedTripletWidgets(index); });
|
||||
else
|
||||
connect(static_cast<TripletDRCSCharacterQMenu *>(customMenu)->sourceAction(i-48), &QAction::triggered, [=]() { updateModelFromCookedWidget(i-48, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||
break;
|
||||
case 0x2e: // Font style
|
||||
customMenu = new TripletFontStyleQMenu(this);
|
||||
|
||||
|
||||
@@ -219,6 +219,78 @@ void TripletDisplayAttrsQMenu::setOtherAttrChecked(int n, bool b)
|
||||
}
|
||||
|
||||
|
||||
TripletDRCSModeQMenu::TripletDRCSModeQMenu(QWidget *parent): QMenu(parent)
|
||||
{
|
||||
m_actions[16] = this->addAction(tr("Global DRCS"));
|
||||
m_actions[17] = this->addAction(tr("Normal DRCS"));
|
||||
m_sourceActionGroup = new QActionGroup(this);
|
||||
for (int i=0; i<2; i++) {
|
||||
m_actions[16+i]->setCheckable(true);
|
||||
m_sourceActionGroup->addAction(m_actions[16+i]);
|
||||
}
|
||||
|
||||
QMenu *subTable = this->addMenu(tr("Subtable"));
|
||||
m_subTableActionGroup = new QActionGroup(this);
|
||||
for (int i=0; i<16; i++) {
|
||||
m_actions[i] = subTable->addAction(QString("%1").arg(i));
|
||||
m_actions[i]->setCheckable(true);
|
||||
m_subTableActionGroup->addAction(m_actions[i]);
|
||||
}
|
||||
|
||||
QMenu *levels = this->addMenu(tr("Required at"));
|
||||
m_actions[18] = levels->addAction("Level 2.5 only");
|
||||
m_actions[19] = levels->addAction("Level 3.5 only");
|
||||
m_actions[20] = levels->addAction("Level 2.5 and 3.5");
|
||||
m_levelsActionGroup = new QActionGroup(this);
|
||||
for (int i=0; i<3; i++) {
|
||||
m_actions[18+i]->setCheckable(true);
|
||||
m_levelsActionGroup->addAction(m_actions[18+i]);
|
||||
}
|
||||
}
|
||||
|
||||
void TripletDRCSModeQMenu::setSubTableChecked(int n)
|
||||
{
|
||||
m_actions[n]->setChecked(true);
|
||||
}
|
||||
|
||||
void TripletDRCSModeQMenu::setSourceChecked(int n)
|
||||
{
|
||||
m_actions[16+n]->setChecked(true);
|
||||
}
|
||||
|
||||
void TripletDRCSModeQMenu::setLevelsChecked(int n)
|
||||
{
|
||||
m_actions[18+n]->setChecked(true);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TripletDRCSCharacterQMenu::TripletDRCSCharacterQMenu(QWidget *parent): QMenu(parent)
|
||||
{
|
||||
QMenu *charRange[4];
|
||||
|
||||
m_actions[48] = this->addAction(tr("Global DRCS"));
|
||||
m_actions[49] = this->addAction(tr("Normal DRCS"));
|
||||
m_sourceActionGroup = new QActionGroup(this);
|
||||
for (int i=0; i<2; i++) {
|
||||
m_actions[48+i]->setCheckable(true);
|
||||
m_sourceActionGroup->addAction(m_actions[48+i]);
|
||||
}
|
||||
|
||||
for (int r=0; r<4; r++) {
|
||||
charRange[r] = this->addMenu(QString("%1-%2").arg(r*12).arg(r*12+11));
|
||||
|
||||
for (int c=0; c<12; c++)
|
||||
m_actions[r*12+c] = charRange[r]->addAction(QString("%1").arg(r*12+c));
|
||||
}
|
||||
}
|
||||
|
||||
void TripletDRCSCharacterQMenu::setSourceChecked(int n)
|
||||
{
|
||||
m_actions[48+n]->setChecked(true);
|
||||
}
|
||||
|
||||
|
||||
TripletFontStyleQMenu::TripletFontStyleQMenu(QWidget *parent): QMenu(parent)
|
||||
{
|
||||
m_actions[0] = this->addAction(tr("Proportional"));
|
||||
|
||||
@@ -188,6 +188,39 @@ private:
|
||||
QActionGroup *m_sizeActionGroup, *m_otherActionGroup;
|
||||
};
|
||||
|
||||
class TripletDRCSModeQMenu : public QMenu
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TripletDRCSModeQMenu(QWidget *parent = nullptr);
|
||||
QAction *subTableAction(int n) const { return m_actions[n]; }
|
||||
QAction *sourceAction(int n) const { return m_actions[n+16]; }
|
||||
QAction *levelsAction(int n) const { return m_actions[n+18]; }
|
||||
void setSubTableChecked(int n);
|
||||
void setSourceChecked(int n);
|
||||
void setLevelsChecked(int n);
|
||||
|
||||
private:
|
||||
QAction *m_actions[21];
|
||||
QActionGroup *m_subTableActionGroup, *m_sourceActionGroup, *m_levelsActionGroup;
|
||||
};
|
||||
|
||||
class TripletDRCSCharacterQMenu : public QMenu
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
TripletDRCSCharacterQMenu(QWidget *parent = nullptr);
|
||||
QAction *characterAction(int n) const { return m_actions[n]; };
|
||||
QAction *sourceAction(int n) const { return m_actions[n+48]; };
|
||||
void setSourceChecked(int n);
|
||||
|
||||
private:
|
||||
QAction *m_actions[50];
|
||||
QActionGroup *m_sourceActionGroup;
|
||||
};
|
||||
|
||||
class TripletFontStyleQMenu : public QMenu
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
Reference in New Issue
Block a user