Move cursor from widget to scene
This commit is contained in:
@@ -109,8 +109,6 @@ void TeletextWidget::paintEvent(QPaintEvent *event)
|
|||||||
widgetPainter.drawPixmap(0, 0, *m_pageRender.pagePixmap(m_flashPhase), 864-m_pageRender.leftSidePanelColumns()*12, 0, m_pageRender.leftSidePanelColumns()*12, 250);
|
widgetPainter.drawPixmap(0, 0, *m_pageRender.pagePixmap(m_flashPhase), 864-m_pageRender.leftSidePanelColumns()*12, 0, m_pageRender.leftSidePanelColumns()*12, 250);
|
||||||
if (m_pageRender.rightSidePanelColumns())
|
if (m_pageRender.rightSidePanelColumns())
|
||||||
widgetPainter.drawPixmap(480+m_pageRender.leftSidePanelColumns()*12, 0, *m_pageRender.pagePixmap(m_flashPhase), 480, 0, m_pageRender.rightSidePanelColumns()*12, 250);
|
widgetPainter.drawPixmap(480+m_pageRender.leftSidePanelColumns()*12, 0, *m_pageRender.pagePixmap(m_flashPhase), 480, 0, m_pageRender.rightSidePanelColumns()*12, 250);
|
||||||
if (this->hasFocus())
|
|
||||||
widgetPainter.fillRect((m_teletextDocument->cursorColumn()+m_pageRender.leftSidePanelColumns())*12, m_teletextDocument->cursorRow()*10, 12, 10, QColor(128, 128, 128, 192));
|
|
||||||
if (m_teletextDocument->selectionActive()) {
|
if (m_teletextDocument->selectionActive()) {
|
||||||
widgetPainter.setPen(QPen(QColor(192, 192, 192, 224), 1, Qt::DashLine));
|
widgetPainter.setPen(QPen(QColor(192, 192, 192, 224), 1, Qt::DashLine));
|
||||||
widgetPainter.setBrush(QBrush(QColor(255, 255, 255, 64)));
|
widgetPainter.setBrush(QBrush(QColor(255, 255, 255, 64)));
|
||||||
@@ -347,19 +345,15 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
|
|||||||
|
|
||||||
case Qt::Key_Up:
|
case Qt::Key_Up:
|
||||||
m_teletextDocument->cursorUp();
|
m_teletextDocument->cursorUp();
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Down:
|
case Qt::Key_Down:
|
||||||
m_teletextDocument->cursorDown();
|
m_teletextDocument->cursorDown();
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Left:
|
case Qt::Key_Left:
|
||||||
m_teletextDocument->cursorLeft();
|
m_teletextDocument->cursorLeft();
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Right:
|
case Qt::Key_Right:
|
||||||
m_teletextDocument->cursorRight();
|
m_teletextDocument->cursorRight();
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
case Qt::Key_Return:
|
case Qt::Key_Return:
|
||||||
case Qt::Key_Enter:
|
case Qt::Key_Enter:
|
||||||
@@ -367,11 +361,9 @@ void TeletextWidget::keyPressEvent(QKeyEvent *event)
|
|||||||
// fall through
|
// fall through
|
||||||
case Qt::Key_Home:
|
case Qt::Key_Home:
|
||||||
m_teletextDocument->moveCursor(m_teletextDocument->cursorRow(), 0);
|
m_teletextDocument->moveCursor(m_teletextDocument->cursorRow(), 0);
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
case Qt::Key_End:
|
case Qt::Key_End:
|
||||||
m_teletextDocument->moveCursor(m_teletextDocument->cursorRow(), 39);
|
m_teletextDocument->moveCursor(m_teletextDocument->cursorRow(), 39);
|
||||||
update();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Qt::Key_PageUp:
|
case Qt::Key_PageUp:
|
||||||
@@ -504,6 +496,12 @@ LevelOneScene::LevelOneScene(QWidget *levelOneWidget, QObject *parent) : QGraphi
|
|||||||
m_levelOneProxyWidget->setPos(60, 19);
|
m_levelOneProxyWidget->setPos(60, 19);
|
||||||
m_levelOneProxyWidget->setAutoFillBackground(false);
|
m_levelOneProxyWidget->setAutoFillBackground(false);
|
||||||
|
|
||||||
|
// Cursor
|
||||||
|
m_cursorRectItem = new QGraphicsRectItem(0, 0, 12, 10);
|
||||||
|
m_cursorRectItem->setPen(Qt::NoPen);
|
||||||
|
m_cursorRectItem->setBrush(QBrush(QColor(128, 128, 128, 192)));
|
||||||
|
addItem(m_cursorRectItem);
|
||||||
|
|
||||||
// Optional grid overlay for text widget
|
// Optional grid overlay for text widget
|
||||||
m_mainGridItemGroup = new QGraphicsItemGroup;
|
m_mainGridItemGroup = new QGraphicsItemGroup;
|
||||||
m_mainGridItemGroup->setVisible(false);
|
m_mainGridItemGroup->setVisible(false);
|
||||||
@@ -545,6 +543,9 @@ void LevelOneScene::setBorderDimensions(int sceneWidth, int sceneHeight, int wid
|
|||||||
|
|
||||||
// Position grid to cover central 40 columns
|
// Position grid to cover central 40 columns
|
||||||
m_mainGridItemGroup->setPos(leftRightBorders + leftSidePanelColumns*12, topBottomBorders);
|
m_mainGridItemGroup->setPos(leftRightBorders + leftSidePanelColumns*12, topBottomBorders);
|
||||||
|
|
||||||
|
updateCursor();
|
||||||
|
|
||||||
// Grid for right side panel
|
// Grid for right side panel
|
||||||
for (int c=0; c<16; c++)
|
for (int c=0; c<16; c++)
|
||||||
if (rightSidePanelColumns > c) {
|
if (rightSidePanelColumns > c) {
|
||||||
@@ -576,6 +577,11 @@ void LevelOneScene::setBorderDimensions(int sceneWidth, int sceneHeight, int wid
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LevelOneScene::updateCursor()
|
||||||
|
{
|
||||||
|
m_cursorRectItem->setPos(m_mainGridItemGroup->pos().x() + static_cast<TeletextWidget *>(m_levelOneProxyWidget->widget())->document()->cursorColumn()*12, m_mainGridItemGroup->pos().y() + static_cast<TeletextWidget *>(m_levelOneProxyWidget->widget())->document()->cursorRow()*10);
|
||||||
|
}
|
||||||
|
|
||||||
void LevelOneScene::toggleGrid(bool gridOn)
|
void LevelOneScene::toggleGrid(bool gridOn)
|
||||||
{
|
{
|
||||||
m_grid = gridOn;
|
m_grid = gridOn;
|
||||||
|
|||||||
@@ -109,6 +109,7 @@ public:
|
|||||||
void setBorderDimensions(int, int, int, int, int);
|
void setBorderDimensions(int, int, int, int, int);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
void updateCursor();
|
||||||
void toggleGrid(bool);
|
void toggleGrid(bool);
|
||||||
void setFullScreenColour(const QColor &);
|
void setFullScreenColour(const QColor &);
|
||||||
void setFullRowColour(int, const QColor &);
|
void setFullRowColour(int, const QColor &);
|
||||||
@@ -117,6 +118,7 @@ private:
|
|||||||
QGraphicsRectItem *m_fullScreenTopRectItem, *m_fullScreenBottomRectItem;
|
QGraphicsRectItem *m_fullScreenTopRectItem, *m_fullScreenBottomRectItem;
|
||||||
QGraphicsRectItem *m_fullRowLeftRectItem[25], *m_fullRowRightRectItem[25];
|
QGraphicsRectItem *m_fullRowLeftRectItem[25], *m_fullRowRightRectItem[25];
|
||||||
QGraphicsProxyWidget *m_levelOneProxyWidget;
|
QGraphicsProxyWidget *m_levelOneProxyWidget;
|
||||||
|
QGraphicsRectItem *m_cursorRectItem;
|
||||||
QGraphicsItemGroup *m_mainGridItemGroup, *m_sidePanelGridItemGroup[32];
|
QGraphicsItemGroup *m_mainGridItemGroup, *m_sidePanelGridItemGroup[32];
|
||||||
bool m_grid, m_sidePanelGridNeeded[32];
|
bool m_grid, m_sidePanelGridNeeded[32];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -926,6 +926,7 @@ MainWindow *MainWindow::findMainWindow(const QString &fileName) const
|
|||||||
void MainWindow::updateCursorPosition()
|
void MainWindow::updateCursorPosition()
|
||||||
{
|
{
|
||||||
m_cursorPositionLabel->setText(QString("Row %1 Column %2").arg(m_textWidget->document()->cursorRow()).arg(m_textWidget->document()->cursorColumn()));
|
m_cursorPositionLabel->setText(QString("Row %1 Column %2").arg(m_textWidget->document()->cursorRow()).arg(m_textWidget->document()->cursorColumn()));
|
||||||
|
m_textScene->updateCursor();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updatePageWidgets()
|
void MainWindow::updatePageWidgets()
|
||||||
|
|||||||
Reference in New Issue
Block a user