You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
7.9 KiB
230 lines
7.9 KiB
/***************************************************************************
|
|
textedit.cpp - Rich text editing widget
|
|
-------------------
|
|
copyright : (C) 2002-2003 Marc Britton <consume@optusnet.com.au>
|
|
(C) 2004 Michal Rudolf <mrudolf@kdewebdev.org>
|
|
email : consume@optusnet.com.au
|
|
***************************************************************************/
|
|
|
|
/***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
/* QT INCLUDES */
|
|
#include <qlayout.h>
|
|
#include <qlineedit.h>
|
|
#include <qstringlist.h>
|
|
#include <qevent.h>
|
|
|
|
/* OTHER INCLUDES */
|
|
#include <specials.h>
|
|
#include "textedit.h"
|
|
#include <klocale.h>
|
|
#include <kommanderplugin.h>
|
|
|
|
enum Functions {
|
|
FirstFunction = 450, //CHANGE THIS NUMBER TO AN UNIQUE ONE!!!
|
|
TE_setModified,
|
|
TE_selectText,
|
|
TE_paragraphs,
|
|
TE_length,
|
|
// TE_getCursorPosition,
|
|
TE_paragraphLength,
|
|
TE_linesOfParagraph,
|
|
TE_findText,
|
|
TE_VAsuperScript,
|
|
TE_VAnormalScript,
|
|
LastFunction
|
|
};
|
|
|
|
TextEdit::TextEdit(QWidget * a_parent, const char *a_name):KTextEdit(a_parent, a_name),
|
|
KommanderWidget((QObject *) this)
|
|
{
|
|
QStringList states;
|
|
states << "default";
|
|
setStates(states);
|
|
setDisplayStates(states);
|
|
|
|
connect(this, SIGNAL(textChanged()), this, SLOT(setTextChanged()));
|
|
|
|
KommanderPlugin::setDefaultGroup(Group::DCOP);
|
|
KommanderPlugin::registerFunction(TE_setModified, "setModified(QString widget, bool Modified)", i18n("Set widget modified status."), 1);
|
|
KommanderPlugin::registerFunction(TE_selectText, "selectText(QString widget, int paraFrom, int indexFrom, int paraTo, int indexTo)", i18n("Select a block of text using the paragraph number and character index of the line. You can use the cursorPositionChanged(int, int) signal to get this data in real time into a script."), 5);
|
|
KommanderPlugin::registerFunction(TE_findText, "findText(QString widget, QString Text, bool Case-Sensitive, bool Forward)", i18n("Search for text from the cursor or a specified position. You can specifiy case sensitive search and forward or backward."), 5);
|
|
// KommanderPlugin::registerFunction(TE_findText, "findText(QString widget, QString Text, bool Case-Sensitive, bool Forward, int Paragraph, int Index)", i18n("Search for text from the cursor or a specified position. You can specifiy case sensitive search and forward or backward."), 5, 7);
|
|
KommanderPlugin::registerFunction(TE_paragraphs, "paragraphs(QString widget)", i18n("Get the number of paragraphs in the widget."), 1);
|
|
KommanderPlugin::registerFunction(TE_length, "length(QString widget)", i18n("Get the total length of all text."), 1);
|
|
// KommanderPlugin::registerFunction(TE_getCursorPosition, "getCursorPosition(QString widget)", i18n("Get the cursor postion in the form of paragraph and postion integers."), 1);
|
|
KommanderPlugin::registerFunction(TE_paragraphLength, "paragraphLength(QString widget, int Paragraph)", i18n("Get the length of the paragraph."), 2);
|
|
KommanderPlugin::registerFunction(TE_linesOfParagraph, "linesOfParagraph(QString widget, int Paragraph)", i18n("Get the number of lines in the paragraph."), 2);
|
|
KommanderPlugin::registerFunction(TE_VAsuperScript, "setSuperScript(QString widget)", i18n("Use to set superscript."), 1);
|
|
KommanderPlugin::registerFunction(TE_VAnormalScript, "setNormalScript(QString widget)", i18n("Use to revert from superscript to normal script."), 1);
|
|
}
|
|
|
|
QString TextEdit::currentState() const
|
|
{
|
|
return QString("default");
|
|
}
|
|
|
|
TextEdit::~TextEdit()
|
|
{
|
|
}
|
|
|
|
bool TextEdit::isKommanderWidget() const
|
|
{
|
|
return true;
|
|
}
|
|
|
|
QStringList TextEdit::associatedText() const
|
|
{
|
|
return KommanderWidget::associatedText();
|
|
}
|
|
|
|
void TextEdit::setAssociatedText(const QStringList & a_at)
|
|
{
|
|
KommanderWidget::setAssociatedText(a_at);
|
|
}
|
|
|
|
void TextEdit::setPopulationText(const QString & a_text)
|
|
{
|
|
KommanderWidget::setPopulationText(a_text);
|
|
}
|
|
|
|
QString TextEdit::populationText() const
|
|
{
|
|
return KommanderWidget::populationText();
|
|
}
|
|
|
|
void TextEdit::populate()
|
|
{
|
|
setWidgetText(KommanderWidget::evalAssociatedText(populationText()));
|
|
}
|
|
|
|
void TextEdit::setWidgetText(const QString & a_text)
|
|
{
|
|
setText(a_text);
|
|
emit widgetTextChanged(text());
|
|
}
|
|
|
|
void TextEdit::setTextChanged()
|
|
{
|
|
emit widgetTextChanged(text());
|
|
}
|
|
|
|
void TextEdit::focusOutEvent( QFocusEvent * e)
|
|
{
|
|
QTextEdit::focusOutEvent(e);
|
|
emit lostFocus();
|
|
}
|
|
|
|
void TextEdit::focusInEvent( QFocusEvent * e)
|
|
{
|
|
QTextEdit::focusInEvent(e);
|
|
emit gotFocus();
|
|
}
|
|
|
|
void TextEdit::showEvent(QShowEvent * e)
|
|
{
|
|
QTextEdit::showEvent(e);
|
|
emit widgetOpened();
|
|
}
|
|
|
|
void TextEdit::contextMenuEvent( QContextMenuEvent * e )
|
|
{
|
|
e->accept();
|
|
QPoint p = e->globalPos();
|
|
emit contextMenuRequested(p.x(), p.y());
|
|
}
|
|
|
|
bool TextEdit::isFunctionSupported(int f)
|
|
{
|
|
return f == DCOP::text || f == DCOP::setText || f == DCOP::selection || f == DCOP::setSelection || f == DCOP::clear || f == DCOP::setEditable || f == DCOP::geometry || f == DCOP::hasFocus || f == DCOP::getBackgroundColor || f == DCOP::setBackgroundColor || f == DCOP::isModified || (f >= FirstFunction && f <= LastFunction);
|
|
}
|
|
|
|
QString TextEdit::handleDCOP(int function, const QStringList& args)
|
|
{
|
|
switch (function) {
|
|
case DCOP::text:
|
|
return text();
|
|
case DCOP::setText:
|
|
setWidgetText(args[0]);
|
|
break;
|
|
case DCOP::selection:
|
|
return selectedText();
|
|
case DCOP::setSelection:
|
|
insert(args[0]);
|
|
break;
|
|
case DCOP::clear:
|
|
setWidgetText(QString());
|
|
break;
|
|
case DCOP::setEditable:
|
|
setReadOnly(args[0] == "false" || args[0] == "0");
|
|
break;
|
|
case DCOP::getBackgroundColor:
|
|
return this->paletteBackgroundColor().name();
|
|
break;
|
|
case DCOP::setBackgroundColor:
|
|
{
|
|
QColor color;
|
|
color.setNamedColor(args[0]);
|
|
this->setPaletteBackgroundColor(color);
|
|
break;
|
|
}
|
|
case DCOP::isModified:
|
|
return isModified() ? "1" : "0";
|
|
break;
|
|
case TE_setModified:
|
|
this->setModified(args[0].toInt());
|
|
break;
|
|
case TE_selectText:
|
|
QTextEdit::setSelection(args[0].toInt(), args[1].toInt(), args[2].toInt(), args[3].toInt());
|
|
break;
|
|
case TE_length:
|
|
return QString::number(QTextEdit::length() );
|
|
break;
|
|
/*case TE_getCursorPosition:
|
|
return QString::number(QTextEdit::getCursorPosition() );
|
|
break;*/
|
|
case TE_paragraphLength:
|
|
return QString::number(QTextEdit::paragraphLength(args[0].toInt() ) );
|
|
break;
|
|
case TE_linesOfParagraph:
|
|
return QString::number(QTextEdit::linesOfParagraph(args[0].toInt() ) );
|
|
break;
|
|
case TE_findText:
|
|
{
|
|
// int para = args[3].toInt();
|
|
// int idx = args[4].toInt();
|
|
// return QString::number(QTextEdit::find(args[0], args[1].toUInt(), false, args[2].toUInt(), para, idx ));
|
|
return QString::number(QTextEdit::find(args[0], args[1].toUInt(), false ));
|
|
break;
|
|
}
|
|
case TE_VAsuperScript:
|
|
break;
|
|
QTextEdit::setVerticalAlignment(AlignSuperScript);
|
|
case TE_VAnormalScript:
|
|
QTextEdit::setVerticalAlignment(AlignNormal);
|
|
break;
|
|
case DCOP::geometry:
|
|
{
|
|
QString geo = QString::number(this->x())+" "+QString::number(this->y())+" "+QString::number(this->width())+" "+QString::number(this->height());
|
|
return geo;
|
|
break;
|
|
}
|
|
case DCOP::hasFocus:
|
|
return QString::number(this->hasFocus());
|
|
break;
|
|
default:
|
|
return KommanderWidget::handleDCOP(function, args);
|
|
}
|
|
return QString();
|
|
}
|
|
|
|
|
|
#include "textedit.moc"
|