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); });
|
connect(static_cast<TripletCLUTQMenu *>(customMenu)->action(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||||
}
|
}
|
||||||
break;
|
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
|
case 0x27: // Additional flash functions
|
||||||
customMenu = new TripletFlashQMenu(this);
|
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); });
|
connect(static_cast<TripletDisplayAttrsQMenu *>(customMenu)->otherAttrAction(i), &QAction::toggled, [=](const int checked) { updateModelFromCookedWidget(checked, Qt::UserRole+i+2); updateAllCookedTripletWidgets(index); });
|
||||||
}
|
}
|
||||||
break;
|
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
|
case 0x2e: // Font style
|
||||||
customMenu = new TripletFontStyleQMenu(this);
|
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)
|
TripletFontStyleQMenu::TripletFontStyleQMenu(QWidget *parent): QMenu(parent)
|
||||||
{
|
{
|
||||||
m_actions[0] = this->addAction(tr("Proportional"));
|
m_actions[0] = this->addAction(tr("Proportional"));
|
||||||
|
|||||||
@@ -188,6 +188,39 @@ private:
|
|||||||
QActionGroup *m_sizeActionGroup, *m_otherActionGroup;
|
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
|
class TripletFontStyleQMenu : public QMenu
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|||||||
Reference in New Issue
Block a user