Download raw (1.5 KB)
#include "literal.h"
#include "ui_literal.h"
#include <QPointF>
#include <QTransform>
#include <QStringList>
#include "command.h"
#include "literalmodel.h"
Literal::Literal(QWidget *parent) :
QWidget(parent),
ui(new Ui::Literal)
{
ui->setupUi(this);
connect(ui->literalEdit, SIGNAL(textChanged()), this, SIGNAL(textChanged()));
connect(ui->literalEdit, SIGNAL(cursorPositionChanged()), this, SIGNAL(posChanged()));
}
Literal::~Literal()
{
delete ui;
}
void Literal::setModel(LiteralModel *m)
{
ui->table->setModel(m);
}
QString Literal::text()
{
return ui->literalEdit->toPlainText();
}
QStringList Literal::lines()
{
return ui->literalEdit->toPlainText().split(QChar('\n'));
}
int Literal::currentLine()
{
QStringList l(ui->literalEdit->toPlainText().split(QChar('\n')));
int ccounter(0);
int lcounter(0);
int c(ui->literalEdit->textCursor().position());
foreach(const QString& s, l)
{
foreach(const QChar& ch, s)
{
if(c == ccounter)
return lcounter;
++ccounter;
}
++lcounter;
++ccounter; // newline character
}
return -1;
}
void Literal::setText(const QString &text)
{
ui->literalEdit->setPlainText(text);
emit textChanged();
}
void Literal::insertPoint(double x, double y)
{
QPointF p(x,y);
QList<QTransform> trans(Command::getInstance()->getTrans());
foreach(QTransform t, trans)
{
p = t.inverted().map(p);
}
QString s(" %1 %2 ");
ui->literalEdit->insertPlainText(s.arg(p.x(), 0, 'f', 2).arg(p.y(), 0, 'f', 2));
}
void Literal::updateNamesView()
{
ui->table->reset();
}