Allow header row editing

This commit is contained in:
Gavin MacGregor
2025-03-18 14:48:03 +00:00
parent 1d462f4355
commit 0493f0e270
8 changed files with 89 additions and 15 deletions

View File

@@ -543,8 +543,10 @@ QPair<int, int> TeletextWidget::mouseToRowAndColumn(const QPoint &mousePosition)
{
int row = mousePosition.y() / 10;
int column = mousePosition.x() / 12 - m_pageDecode.leftSidePanelColumns();
if (row < 1)
row = 1;
const int topRow = (int)!m_teletextDocument->rowZeroAllowed();
if (row < topRow)
row = topRow;
if (row > 24)
row = 24;
if (column < 0)
@@ -647,6 +649,9 @@ LevelOneScene::LevelOneScene(QWidget *levelOneWidget, QObject *parent) : QGraphi
m_mainGridItemGroup = new QGraphicsItemGroup;
m_mainGridItemGroup->setVisible(false);
addItem(m_mainGridItemGroup);
m_rowZeroGridItemGroup = new QGraphicsItemGroup;
m_rowZeroGridItemGroup->setVisible(false);
addItem(m_rowZeroGridItemGroup);
// Additional vertical pieces of grid for side panels
for (int i=0; i<32; i++) {
m_sidePanelGridNeeded[i] = false;
@@ -654,14 +659,17 @@ LevelOneScene::LevelOneScene(QWidget *levelOneWidget, QObject *parent) : QGraphi
m_sidePanelGridItemGroup[i]->setVisible(false);
addItem(m_sidePanelGridItemGroup[i]);
}
for (int r=1; r<25; r++) {
for (int r=0; r<25; r++) {
for (int c=0; c<40; c++) {
QGraphicsRectItem *gridPiece = new QGraphicsRectItem(c*12, r*10, 12, 10);
gridPiece->setPen(QPen(QBrush(QColor(128, 128, 128, r<24 ? 192 : 128)), 0));
m_mainGridItemGroup->addToGroup(gridPiece);
gridPiece->setPen(QPen(QBrush(QColor(128, 128, 128, (r != 0 && r != 24) ? 192 : 128)), 0));
if (r == 0)
m_rowZeroGridItemGroup->addToGroup(gridPiece);
else
m_mainGridItemGroup->addToGroup(gridPiece);
}
if (r < 24)
if (r != 0 && r != 24)
for (int c=0; c<32; c++) {
QGraphicsRectItem *gridPiece = new QGraphicsRectItem(0, r*10, 12, 10);
gridPiece->setPen(QPen(QBrush(QColor(128, 128, 128, 64)), 0));
@@ -686,6 +694,7 @@ void LevelOneScene::setBorderDimensions(int sceneWidth, int sceneHeight, int wid
// Position grid to cover central 40 columns
m_mainGridItemGroup->setPos(leftRightBorders + leftSidePanelColumns*12, topBottomBorders);
m_rowZeroGridItemGroup->setPos(leftRightBorders + leftSidePanelColumns*12, topBottomBorders);
updateCursor();
updateSelection();
@@ -772,12 +781,23 @@ void LevelOneScene::setRenderMode(TeletextPageRender::RenderMode renderMode)
void LevelOneScene::toggleGrid(bool gridOn)
{
m_grid = gridOn;
m_mainGridItemGroup->setVisible(gridOn);
if (static_cast<TeletextWidget *>(m_levelOneProxyWidget->widget())->document()->rowZeroAllowed())
m_rowZeroGridItemGroup->setVisible(gridOn);
for (int i=0; i<32; i++)
if (m_sidePanelGridNeeded[i])
m_sidePanelGridItemGroup[i]->setVisible(gridOn);
}
void LevelOneScene::toggleRowZeroAllowed(bool allowed)
{
static_cast<TeletextWidget *>(m_levelOneProxyWidget->widget())->document()->setRowZeroAllowed(allowed);
if (m_grid)
m_rowZeroGridItemGroup->setVisible(allowed);
}
void LevelOneScene::hideGUIElements(bool hidden)
{
if (hidden) {