Skip to content

Commit 440ac70

Browse files
committed
ticket:3414 Allow zoom in & out in text view from toolbar, keys and mouse.
1 parent 4e6c9ec commit 440ac70

File tree

4 files changed

+108
-24
lines changed

4 files changed

+108
-24
lines changed

OMEdit/OMEditGUI/Editors/BaseEditor.cpp

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1123,6 +1123,43 @@ void BaseEditor::PlainTextEdit::ensureCursorVisible()
11231123
QPlainTextEdit::ensureCursorVisible();
11241124
}
11251125

1126+
/*!
1127+
* \brief BaseEditor::PlainTextEdit::resetZoom
1128+
* Resets the document font size.
1129+
*/
1130+
void BaseEditor::PlainTextEdit::resetZoom()
1131+
{
1132+
QFont font = document()->defaultFont();
1133+
font.setPointSizeF(OptionsDialog::instance()->getTextEditorPage()->getFontSizeSpinBox()->value());
1134+
document()->setDefaultFont(font);
1135+
}
1136+
1137+
/*!
1138+
* \brief BaseEditor::PlainTextEdit::zoomIn
1139+
* Increases the document font size.
1140+
*/
1141+
void BaseEditor::PlainTextEdit::zoomIn()
1142+
{
1143+
QFont font = document()->defaultFont();
1144+
qreal fontSize = font.pointSizeF();
1145+
fontSize = fontSize + 1;
1146+
font.setPointSizeF(fontSize);
1147+
document()->setDefaultFont(font);
1148+
}
1149+
1150+
/*!
1151+
* \brief BaseEditor::PlainTextEdit::zoomOut
1152+
* Decreases the document font size.
1153+
*/
1154+
void BaseEditor::PlainTextEdit::zoomOut()
1155+
{
1156+
QFont font = document()->defaultFont();
1157+
qreal fontSize = font.pointSizeF();
1158+
fontSize = fontSize <= 6 ? fontSize : fontSize - 1;
1159+
font.setPointSizeF(fontSize);
1160+
document()->setDefaultFont(font);
1161+
}
1162+
11261163
/*!
11271164
* \brief BaseEditor::PlainTextEdit::highlightCurrentLine
11281165
* Hightlights the current line.
@@ -1227,6 +1264,18 @@ void BaseEditor::PlainTextEdit::keyPressEvent(QKeyEvent *pEvent)
12271264
// ctrl+k is pressed.
12281265
mpBaseEditor->toggleCommentSelection();
12291266
return;
1267+
// } else if (pEvent->modifiers().testFlag(Qt::ControlModifier) && pEvent->key() == Qt::Key_Plus) {
1268+
// // ctrl++ is pressed.
1269+
// zoomIn();
1270+
// return;
1271+
// } else if (pEvent->modifiers().testFlag(Qt::ControlModifier) && pEvent->key() == Qt::Key_Underscore) {
1272+
// // ctrl+- is pressed.
1273+
// zoomOut();
1274+
// return;
1275+
// } else if (pEvent->modifiers().testFlag(Qt::ControlModifier) && pEvent->key() == Qt::Key_0) {
1276+
// // ctrl+0 is pressed.
1277+
// resetZoom();
1278+
// return;
12301279
} else if (pEvent->modifiers().testFlag(Qt::ShiftModifier) && (pEvent->key() == Qt::Key_Enter || pEvent->key() == Qt::Key_Return)) {
12311280
/* Ticket #2273. Change shift+enter to enter. */
12321281
pEvent->setModifiers(Qt::NoModifier);
@@ -1442,6 +1491,22 @@ void BaseEditor::PlainTextEdit::paintEvent(QPaintEvent *e)
14421491
}
14431492
}
14441493

1494+
/*!
1495+
* \brief BaseEditor::PlainTextEdit::wheelEvent
1496+
* \param event
1497+
*/
1498+
void BaseEditor::PlainTextEdit::wheelEvent(QWheelEvent *event)
1499+
{
1500+
if (event->modifiers() & Qt::ControlModifier) {
1501+
if (event->delta() > 0) {
1502+
zoomIn();
1503+
} else {
1504+
zoomOut();
1505+
}
1506+
}
1507+
QPlainTextEdit::wheelEvent(event);
1508+
}
1509+
14451510
/*!
14461511
* \class BaseEditor
14471512
* Base class for all editors.

OMEdit/OMEditGUI/Editors/BaseEditor.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -219,6 +219,9 @@ class BaseEditor : public QWidget
219219
void indentOrUnindent(bool doIndent);
220220
void moveCursorVisible(bool ensureVisible = true);
221221
void ensureCursorVisible();
222+
void resetZoom();
223+
void zoomIn();
224+
void zoomOut();
222225
private:
223226
BaseEditor *mpBaseEditor;
224227
LineNumberArea *mpLineNumberArea;
@@ -236,6 +239,7 @@ class BaseEditor : public QWidget
236239
virtual void focusInEvent(QFocusEvent *event);
237240
virtual void focusOutEvent(QFocusEvent *event);
238241
void paintEvent(QPaintEvent *e);
242+
void wheelEvent(QWheelEvent *event);
239243
};
240244
public:
241245
BaseEditor(QWidget *pParent);

OMEdit/OMEditGUI/MainWindow.cpp

Lines changed: 36 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,48 +1488,63 @@ void MainWindow::setShowGridLines(bool showLines)
14881488
}
14891489
}
14901490

1491-
//! Tells the current model to reset zoom to 100%.
1492-
//! @see zoomIn()
1493-
//! @see zoomOut()
1491+
/*!
1492+
* \brief MainWindow::resetZoom
1493+
* Tells the current model to reset zoom to 100%.
1494+
* \sa MainWindow::zoomIn()
1495+
* \sa MainWindow::zoomOut()
1496+
*/
14941497
void MainWindow::resetZoom()
14951498
{
14961499
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
1497-
if (pModelWidget)
1498-
{
1499-
if (pModelWidget->getDiagramGraphicsView()->isVisible())
1500+
if (pModelWidget) {
1501+
if (pModelWidget->getDiagramGraphicsView()->isVisible()) {
15001502
pModelWidget->getDiagramGraphicsView()->resetZoom();
1501-
else if (pModelWidget->getIconGraphicsView()->isVisible())
1503+
} else if (pModelWidget->getIconGraphicsView()->isVisible()) {
15021504
pModelWidget->getIconGraphicsView()->resetZoom();
1505+
} else if (pModelWidget->getEditor()->isVisible()) {
1506+
pModelWidget->getEditor()->getPlainTextEdit()->resetZoom();
1507+
}
15031508
}
15041509
}
15051510

1506-
//! Tells the current model to increase its zoom factor.
1507-
//! @see resetZoom()
1508-
//! @see zoomOut()
1511+
/*!
1512+
* \brief MainWindow::zoomIn
1513+
* Tells the current model to increase its zoom factor.
1514+
* \sa MainWindow::resetZoom()
1515+
* \sa MainWindow::zoomOut()
1516+
*/
15091517
void MainWindow::zoomIn()
15101518
{
15111519
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
1512-
if (pModelWidget)
1513-
{
1514-
if (pModelWidget->getDiagramGraphicsView()->isVisible())
1520+
if (pModelWidget) {
1521+
if (pModelWidget->getDiagramGraphicsView()->isVisible()) {
15151522
pModelWidget->getDiagramGraphicsView()->zoomIn();
1516-
else if (pModelWidget->getIconGraphicsView()->isVisible())
1523+
} else if (pModelWidget->getIconGraphicsView()->isVisible()) {
15171524
pModelWidget->getIconGraphicsView()->zoomIn();
1525+
} else if (pModelWidget->getEditor()->isVisible()) {
1526+
pModelWidget->getEditor()->getPlainTextEdit()->zoomIn();
1527+
}
15181528
}
15191529
}
15201530

1521-
//! Tells the current model to decrease its zoom factor.
1522-
//! @see resetZoom()
1523-
//! @see zoomIn()
1531+
/*!
1532+
* \brief MainWindow::zoomOut
1533+
* Tells the current model to decrease its zoom factor.
1534+
* \sa MainWindow::resetZoom()
1535+
* \sa MainWindow::zoomIn()
1536+
*/
15241537
void MainWindow::zoomOut()
15251538
{
15261539
ModelWidget *pModelWidget = mpModelWidgetContainer->getCurrentModelWidget();
1527-
if (pModelWidget)
1528-
{
1529-
if (pModelWidget->getDiagramGraphicsView()->isVisible())
1540+
if (pModelWidget) {
1541+
if (pModelWidget->getDiagramGraphicsView()->isVisible()) {
15301542
pModelWidget->getDiagramGraphicsView()->zoomOut();
1531-
else if (pModelWidget->getIconGraphicsView()->isVisible())
1543+
} else if (pModelWidget->getIconGraphicsView()->isVisible()) {
15321544
pModelWidget->getIconGraphicsView()->zoomOut();
1545+
} else if (pModelWidget->getEditor()->isVisible()) {
1546+
pModelWidget->getEditor()->getPlainTextEdit()->zoomOut();
1547+
}
15331548
}
15341549
}
15351550

OMEdit/OMEditGUI/Modeling/ModelWidgetContainer.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5152,9 +5152,9 @@ void ModelWidgetContainer::currentModelWidgetChanged(QMdiSubWindow *pSubWindow)
51525152
// MainWindow::instance()->getSaveAllAction()->setEnabled(enabled);
51535153
MainWindow::instance()->getSaveTotalAction()->setEnabled(enabled && modelica);
51545154
MainWindow::instance()->getShowGridLinesAction()->setEnabled(enabled && (modelica || compositeModel) && !pModelWidget->getTextViewToolButton()->isChecked() && !pModelWidget->getLibraryTreeItem()->isSystemLibrary());
5155-
MainWindow::instance()->getResetZoomAction()->setEnabled(enabled && (modelica || compositeModel) && !pModelWidget->getTextViewToolButton()->isChecked());
5156-
MainWindow::instance()->getZoomInAction()->setEnabled(enabled && (modelica || compositeModel) && !pModelWidget->getTextViewToolButton()->isChecked());
5157-
MainWindow::instance()->getZoomOutAction()->setEnabled(enabled && (modelica || compositeModel) && !pModelWidget->getTextViewToolButton()->isChecked());
5155+
MainWindow::instance()->getResetZoomAction()->setEnabled(enabled && (modelica || compositeModel));
5156+
MainWindow::instance()->getZoomInAction()->setEnabled(enabled && (modelica || compositeModel));
5157+
MainWindow::instance()->getZoomOutAction()->setEnabled(enabled && (modelica || compositeModel));
51585158
MainWindow::instance()->getLineShapeAction()->setEnabled(enabled && modelica && !pModelWidget->getTextViewToolButton()->isChecked());
51595159
MainWindow::instance()->getPolygonShapeAction()->setEnabled(enabled && modelica && !pModelWidget->getTextViewToolButton()->isChecked());
51605160
MainWindow::instance()->getRectangleShapeAction()->setEnabled(enabled && modelica && !pModelWidget->getTextViewToolButton()->isChecked());

0 commit comments

Comments
 (0)