Implement indent/unindent and comment/uncomment.

master
Torsten Paul 2014-08-24 23:46:26 +02:00
parent 99bc04c9ab
commit c5c5a02163
3 changed files with 40 additions and 8 deletions

View File

@ -176,10 +176,6 @@ MainWindow::MainWindow(const QString &filename)
#ifdef USE_SCINTILLA_EDITOR
if (useScintilla) {
editor = new ScintillaEditor(editorDockContents);
this->editActionIndent->setVisible(false);
this->editActionUnindent->setVisible(false);
this->editActionComment->setVisible(false);
this->editActionUncomment->setVisible(false);
}
else
#endif

View File

@ -269,24 +269,57 @@ void ScintillaEditor::replaceSelectedText(const QString &newText)
if (qsci->selectedText() != newText) qsci->replaceSelectedText(newText);
}
void ScintillaEditor::get_range(int *lineFrom, int *lineTo)
{
int indexFrom, indexTo;
if (qsci->hasSelectedText()) {
qsci->getSelection(lineFrom, &indexFrom, lineTo, &indexTo);
} else {
qsci->getCursorPosition(lineFrom, &indexFrom);
*lineTo = *lineFrom;
}
}
void ScintillaEditor::indentSelection()
{
// FIXME: Implement
int lineFrom, lineTo;
get_range(&lineFrom, &lineTo);
for (int line = lineFrom;line <= lineTo;line++) {
qsci->indent(line);
}
}
void ScintillaEditor::unindentSelection()
{
// FIXME: Implement
int lineFrom, lineTo;
get_range(&lineFrom, &lineTo);
for (int line = lineFrom;line <= lineTo;line++) {
qsci->unindent(line);
}
}
void ScintillaEditor::commentSelection()
{
// FIXME: Implement
int lineFrom, lineTo;
get_range(&lineFrom, &lineTo);
for (int line = lineFrom;line <= lineTo;line++) {
qsci->insertAt("//", line, 0);
}
qsci->setSelection(lineFrom, 0, lineTo, std::max(0, qsci->lineLength(lineTo) - 1));
}
void ScintillaEditor::uncommentSelection()
{
// FIXME: Implement
int lineFrom, lineTo;
get_range(&lineFrom, &lineTo);
for (int line = lineFrom;line <= lineTo;line++) {
QString lineText = qsci->text(line);
if (lineText.startsWith("//")) {
qsci->setSelection(line, 0, line, 2);
qsci->removeSelectedText();
}
}
qsci->setSelection(lineFrom, 0, lineTo, std::max(0, qsci->lineLength(lineTo) - 1));
}
QString ScintillaEditor::selectedText()

View File

@ -26,6 +26,9 @@ public:
QString selectedText();
bool find(const QString &, bool findNext = false, bool findBackwards = false);
void replaceSelectedText(const QString&);
private:
void get_range(int *lineFrom, int *lineTo);
public slots:
void zoomIn();