Implement flash functions context menu
This commit is contained in:
@@ -1080,11 +1080,22 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
|||||||
if (!customMenu)
|
if (!customMenu)
|
||||||
customMenu = new TripletCLUTQMenu(false, this);
|
customMenu = new TripletCLUTQMenu(false, this);
|
||||||
|
|
||||||
for (int m=0; m<32; m++) {
|
for (int i=0; i<32; i++) {
|
||||||
static_cast<TripletCLUTQMenu *>(customMenu)->setColour(m, m_parentMainWidget->document()->currentSubPage()->CLUTtoQColor(m));
|
static_cast<TripletCLUTQMenu *>(customMenu)->setColour(i, m_parentMainWidget->document()->currentSubPage()->CLUTtoQColor(i));
|
||||||
connect(static_cast<TripletCLUTQMenu *>(customMenu)->action(m), &QAction::triggered, [=]() { updateModelFromCookedWidget(m, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
connect(static_cast<TripletCLUTQMenu *>(customMenu)->action(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 0x27: // Additional flash functions
|
||||||
|
customMenu = new TripletFlashQMenu(this);
|
||||||
|
|
||||||
|
static_cast<TripletFlashQMenu *>(customMenu)->setModeChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+1).toInt());
|
||||||
|
static_cast<TripletFlashQMenu *>(customMenu)->setRatePhaseChecked(index.model()->data(index.model()->index(index.row(), 0), Qt::UserRole+2).toInt());
|
||||||
|
|
||||||
|
for (int i=0; i<4; i++)
|
||||||
|
connect(static_cast<TripletFlashQMenu *>(customMenu)->modeAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||||
|
for (int i=0; i<6; i++)
|
||||||
|
connect(static_cast<TripletFlashQMenu *>(customMenu)->ratePhaseAction(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i, Qt::UserRole+2); updateAllCookedTripletWidgets(index); });
|
||||||
|
break;
|
||||||
case 0x21: // G1 mosaic character
|
case 0x21: // G1 mosaic character
|
||||||
case 0x22: // G3 mosaic character at level 1.5
|
case 0x22: // G3 mosaic character at level 1.5
|
||||||
case 0x2b: // G3 mosaic character at level >=2.5
|
case 0x2b: // G3 mosaic character at level >=2.5
|
||||||
@@ -1108,8 +1119,8 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
|||||||
case 0x3f: // G0 character with diacritical
|
case 0x3f: // G0 character with diacritical
|
||||||
customMenu = new TripletCharacterQMenu(m_x26Model->data(index.model()->index(index.row(), 2), Qt::UserRole+2).toInt(), this);
|
customMenu = new TripletCharacterQMenu(m_x26Model->data(index.model()->index(index.row(), 2), Qt::UserRole+2).toInt(), this);
|
||||||
|
|
||||||
for (int m=0; m<96; m++)
|
for (int i=0; i<96; i++)
|
||||||
connect(static_cast<TripletCharacterQMenu *>(customMenu)->action(m), &QAction::triggered, [=]() { updateModelFromCookedWidget(m+32, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
connect(static_cast<TripletCharacterQMenu *>(customMenu)->action(i), &QAction::triggered, [=]() { updateModelFromCookedWidget(i+32, Qt::UserRole+1); updateAllCookedTripletWidgets(index); });
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1119,7 +1130,7 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
|||||||
customMenu = new QMenu(this);
|
customMenu = new QMenu(this);
|
||||||
|
|
||||||
TripletModeQMenu *modeChangeMenu = new TripletModeQMenu(this);
|
TripletModeQMenu *modeChangeMenu = new TripletModeQMenu(this);
|
||||||
modeChangeMenu->setTitle(tr("Change mode"));
|
modeChangeMenu->setTitle(tr("Change triplet mode"));
|
||||||
customMenu->addMenu(modeChangeMenu);
|
customMenu->addMenu(modeChangeMenu);
|
||||||
|
|
||||||
customMenu->addSeparator();
|
customMenu->addSeparator();
|
||||||
@@ -1132,10 +1143,10 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
|||||||
insertAfterQMenu->setTitle(tr("Insert after"));
|
insertAfterQMenu->setTitle(tr("Insert after"));
|
||||||
customMenu->addMenu(insertAfterQMenu);
|
customMenu->addMenu(insertAfterQMenu);
|
||||||
|
|
||||||
for (int m=0; m<64; m++) {
|
for (int i=0; i<64; i++) {
|
||||||
connect(static_cast<TripletModeQMenu *>(modeChangeMenu)->action(m), &QAction::triggered, [=]() { cookedModeMenuSelected(m); });
|
connect(static_cast<TripletModeQMenu *>(modeChangeMenu)->action(i), &QAction::triggered, [=]() { cookedModeMenuSelected(i); });
|
||||||
connect(static_cast<TripletModeQMenu *>(insertBeforeQMenu)->action(m), &QAction::triggered, [=]() { insertTriplet(m, false); });
|
connect(static_cast<TripletModeQMenu *>(insertBeforeQMenu)->action(i), &QAction::triggered, [=]() { insertTriplet(i, false); });
|
||||||
connect(static_cast<TripletModeQMenu *>(insertAfterQMenu)->action(m), &QAction::triggered, [=]() { insertTriplet(m, true); });
|
connect(static_cast<TripletModeQMenu *>(insertAfterQMenu)->action(i), &QAction::triggered, [=]() { insertTriplet(i, true); });
|
||||||
}
|
}
|
||||||
|
|
||||||
QAction *insertCopyAct = new QAction(tr("Insert copy"), this);
|
QAction *insertCopyAct = new QAction(tr("Insert copy"), this);
|
||||||
@@ -1152,8 +1163,8 @@ void X26DockWidget::customMenuRequested(QPoint pos)
|
|||||||
appendModeMenu->setTitle(tr("Append"));
|
appendModeMenu->setTitle(tr("Append"));
|
||||||
customMenu->addMenu(appendModeMenu);
|
customMenu->addMenu(appendModeMenu);
|
||||||
|
|
||||||
for (int m=0; m<64; m++)
|
for (int i=0; i<64; i++)
|
||||||
connect(static_cast<TripletModeQMenu *>(appendModeMenu)->action(m), &QAction::triggered, [=]() { insertTriplet(m, m_x26Model->rowCount()); });
|
connect(static_cast<TripletModeQMenu *>(appendModeMenu)->action(i), &QAction::triggered, [=]() { insertTriplet(i, m_x26Model->rowCount()); });
|
||||||
}
|
}
|
||||||
|
|
||||||
customMenu->popup(m_x26View->viewport()->mapToGlobal(pos));
|
customMenu->popup(m_x26View->viewport()->mapToGlobal(pos));
|
||||||
|
|||||||
39
x26menus.cpp
39
x26menus.cpp
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "x26menus.h"
|
#include "x26menus.h"
|
||||||
|
|
||||||
|
#include <QActionGroup>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
@@ -140,3 +141,41 @@ TripletCharacterQMenu::TripletCharacterQMenu(int charSet, QWidget *parent): QMen
|
|||||||
m_actions[r*16+c] = charRange[r]->addAction(QIcon(m_fontBitmap.charBitmap(r*16+c+32, charSet)), QString("0x%1").arg(r*16+c+32, 2, 16, QChar('0')));
|
m_actions[r*16+c] = charRange[r]->addAction(QIcon(m_fontBitmap.charBitmap(r*16+c+32, charSet)), QString("0x%1").arg(r*16+c+32, 2, 16, QChar('0')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
TripletFlashQMenu::TripletFlashQMenu(QWidget *parent): QMenu(parent)
|
||||||
|
{
|
||||||
|
QMenu *flashModeMenu = this->addMenu(tr("Flash mode"));
|
||||||
|
m_actions[0] = flashModeMenu->addAction(tr("Steady"));
|
||||||
|
m_actions[1] = flashModeMenu->addAction(tr("Normal"));
|
||||||
|
m_actions[2] = flashModeMenu->addAction(tr("Invert"));
|
||||||
|
m_actions[3] = flashModeMenu->addAction(tr("Adjacent CLUT"));
|
||||||
|
m_modeActionGroup = new QActionGroup(this);
|
||||||
|
for (int i=0; i<4; i++) {
|
||||||
|
m_actions[i]->setCheckable(true);
|
||||||
|
m_modeActionGroup->addAction(m_actions[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenu *flashRatePhaseMenu = this->addMenu(tr("Flash rate/phase"));
|
||||||
|
m_actions[4] = flashRatePhaseMenu->addAction(tr("Slow 1Hz"));
|
||||||
|
m_actions[5] = flashRatePhaseMenu->addAction(tr("Fast 2Hz phase 1"));
|
||||||
|
m_actions[6] = flashRatePhaseMenu->addAction(tr("Fast 2Hz phase 2"));
|
||||||
|
m_actions[7] = flashRatePhaseMenu->addAction(tr("Fast 2Hz phase 3"));
|
||||||
|
m_actions[8] = flashRatePhaseMenu->addAction(tr("Fast 2Hz inc/right"));
|
||||||
|
m_actions[9] = flashRatePhaseMenu->addAction(tr("Fast 2Hz dec/left"));
|
||||||
|
m_ratePhaseActionGroup = new QActionGroup(this);
|
||||||
|
for (int i=4; i<10; i++) {
|
||||||
|
m_actions[i]->setCheckable(true);
|
||||||
|
m_ratePhaseActionGroup->addAction(m_actions[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TripletFlashQMenu::setModeChecked(int n)
|
||||||
|
{
|
||||||
|
m_actions[n]->setChecked(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TripletFlashQMenu::setRatePhaseChecked(int n)
|
||||||
|
{
|
||||||
|
m_actions[n+4]->setChecked(true);
|
||||||
|
}
|
||||||
|
|||||||
17
x26menus.h
17
x26menus.h
@@ -20,6 +20,7 @@
|
|||||||
#ifndef X26MENUS_H
|
#ifndef X26MENUS_H
|
||||||
#define X26MENUS_H
|
#define X26MENUS_H
|
||||||
|
|
||||||
|
#include <QActionGroup>
|
||||||
#include <QColor>
|
#include <QColor>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
#include <QString>
|
#include <QString>
|
||||||
@@ -155,4 +156,20 @@ private:
|
|||||||
TeletextFontBitmap m_fontBitmap;
|
TeletextFontBitmap m_fontBitmap;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class TripletFlashQMenu : public QMenu
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
TripletFlashQMenu(QWidget *parent = nullptr);
|
||||||
|
QAction *modeAction(int n) const { return m_actions[n]; };
|
||||||
|
QAction *ratePhaseAction(int n) const { return m_actions[n+4]; };
|
||||||
|
void setModeChecked(int n);
|
||||||
|
void setRatePhaseChecked(int n);
|
||||||
|
|
||||||
|
private:
|
||||||
|
QAction *m_actions[10];
|
||||||
|
QActionGroup *m_modeActionGroup, *m_ratePhaseActionGroup;
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user