literaldraw
clone your own copy | download snapshot

Snapshots | iceberg

Inside this repository

literal.cpp
text/x-c++src

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();
}