34 textEdit =
new QPlainTextEdit(&dialog);
41 textEdit->setStyleSheet(
textEdit->styleSheet() +
"QPlainTextEdit { font-family: Monaco; font-size: 10pt; } ");
55 textEdit->viewport()->installEventFilter(
this);
98 int scrollbarWidth = 15;
99 int textEditWidth = ((baselineWidth > 0)? baselineWidth : (
isCodeEditor ? 600 : 270)) - scrollbarWidth;
101 QTextDocument *document =
textEdit->document();
102 qreal margin = document->documentMargin() +
textEdit->frameWidth();
105 if (textEditWidth-2*margin-scrollbarWidth <= 0)
106 textEditWidth -= (textEditWidth-2*margin-scrollbarWidth);
108 int textWidth = textEditWidth - 2*margin;
109 document->setTextWidth(textWidth);
111 int textHeight = document->lineCount() * (fm.lineSpacing() + 1);
112 int textEditHeight = textHeight + 2*margin;
114 QRect screenRect = QApplication::desktop()->availableGeometry(
textEdit);
115 QRect textEditRect(
textEdit->mapToGlobal(
textEdit->pos()), QSize(textEditWidth, textEditHeight));
116 QRect textEditInScreenRect = textEditRect.intersected(screenRect);
117 int minTextEditHeight = fm.lineSpacing() + 2*margin;
118 minTextEditHeight = max(minTextEditHeight, baselineHeight);
119 textEditHeight = qMax(textEditInScreenRect.height(), minTextEditHeight);
121 textEdit->viewport()->setFixedSize(textEditWidth, textEditHeight - 1);
122 textEdit->setFixedSize(textEditWidth + scrollbarWidth, textEditHeight + 3);
140 (
event->type() == QEvent::DragEnter ||
141 event->type() == QEvent::DragMove ||
142 event->type() == QEvent::DragLeave)) ||
144 (
event->type() == QEvent::Drop)))
146 QApplication::sendEvent(
this,
event);
155 QKeyEvent *keyEvent =
static_cast<QKeyEvent *
>(
event);
156 if (keyEvent->key() == Qt::Key_Return || keyEvent->key() == Qt::Key_Enter)
158 bool optionKeyPressed = (keyEvent->modifiers() & Qt::AltModifier);
159 bool commandKeyPressed = (keyEvent->modifiers() & Qt::ControlModifier);
161 ! commandKeyPressed :
163 if (shouldInsertLinebreak)
164 textEdit->textCursor().insertText(
"\n");
175 int spacesPerTab = 4;
176 QFontMetricsF fontMetrics(
textEdit->font());
177 textEdit->setTabStopDistance(spacesPerTab * fontMetrics.horizontalAdvance(
' '));
182 if (
textEdit->document()->lineCount() > 1)
185 textEdit->moveCursor(QTextCursor::Start);
205 if (
event->type() == QEvent::Drop)
217 QTextCursor cursor =
textEdit->textCursor();
218 if (cursor.selectionStart() == 0 && cursor.selectionEnd() ==
textEdit->toPlainText().length())
221 textEdit->viewport()->removeEventFilter(
this);
223 textEdit->viewport()->installEventFilter(
this);
228 return VuoInputEditorWithDialog::event(
event);
240 if (json_object_object_get_ex(details,
"isCodeEditor", &o))
241 return json_object_get_boolean(o);