|
|
|
import QtQuick 2.0
|
|
|
|
import QtQuick.Window 2.0
|
|
|
|
import QtQuick.Layouts 1.0
|
|
|
|
import QtQuick.Controls 1.0
|
|
|
|
import QtQuick.Controls.Styles 1.1
|
|
|
|
import "."
|
|
|
|
|
|
|
|
Item {
|
|
|
|
signal editorTextChanged
|
|
|
|
|
|
|
|
function setText(text) {
|
|
|
|
codeEditor.text = text;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getText() {
|
|
|
|
return codeEditor.text;
|
|
|
|
}
|
|
|
|
|
|
|
|
function setFocus() {
|
|
|
|
codeEditor.forceActiveFocus();
|
|
|
|
}
|
|
|
|
|
|
|
|
anchors.fill: parent
|
|
|
|
id: contentView
|
|
|
|
width: parent.width
|
|
|
|
height: parent.height * 0.7
|
|
|
|
|
|
|
|
CodeEditorStyle {
|
|
|
|
id: style
|
|
|
|
}
|
|
|
|
|
|
|
|
Rectangle {
|
|
|
|
id: lineColumn
|
|
|
|
property int rowHeight: codeEditor.font.pixelSize + 3
|
|
|
|
color: "#202020"
|
|
|
|
width: 50
|
|
|
|
height: parent.height
|
|
|
|
Column {
|
|
|
|
y: -codeEditor.flickableItem.contentY + 4
|
|
|
|
width: parent.width
|
|
|
|
Repeater {
|
|
|
|
model: Math.max(codeEditor.lineCount + 2, (lineColumn.height/lineColumn.rowHeight))
|
|
|
|
delegate: Text {
|
|
|
|
id: text
|
|
|
|
color: codeEditor.textColor
|
|
|
|
font: codeEditor.font
|
|
|
|
width: lineColumn.width - 4
|
|
|
|
horizontalAlignment: Text.AlignRight
|
|
|
|
verticalAlignment: Text.AlignVCenter
|
|
|
|
height: lineColumn.rowHeight
|
|
|
|
renderType: Text.NativeRendering
|
|
|
|
text: index + 1
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
TextArea {
|
|
|
|
id: codeEditor
|
|
|
|
textColor: "#EEE8D5"
|
|
|
|
style: TextAreaStyle {
|
|
|
|
backgroundColor: "#002B36"
|
|
|
|
}
|
|
|
|
|
|
|
|
anchors.left: lineColumn.right
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
wrapMode: TextEdit.NoWrap
|
|
|
|
frameVisible: false
|
|
|
|
|
|
|
|
height: parent.height
|
|
|
|
font.family: "Monospace"
|
|
|
|
font.pointSize: style.general.basicFontSize
|
|
|
|
width: parent.width
|
|
|
|
|
|
|
|
tabChangesFocus: false
|
|
|
|
Keys.onPressed: {
|
|
|
|
if (event.key === Qt.Key_Tab) {
|
|
|
|
codeEditor.insert(codeEditor.cursorPosition, "\t");
|
|
|
|
event.accepted = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
onTextChanged: {
|
|
|
|
editorTextChanged();
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|