diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | e9ae80694875f869892f13f4fcaf1170a00dea41 (patch) | |
tree | aa2f8d8a217e2d376224c8d46b7397b68d35de2d /kommander/widgets/richtexteditor.cpp | |
download | tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.tar.gz tdewebdev-e9ae80694875f869892f13f4fcaf1170a00dea41.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdewebdev@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kommander/widgets/richtexteditor.cpp')
-rw-r--r-- | kommander/widgets/richtexteditor.cpp | 249 |
1 files changed, 249 insertions, 0 deletions
diff --git a/kommander/widgets/richtexteditor.cpp b/kommander/widgets/richtexteditor.cpp new file mode 100644 index 00000000..eea0b0d6 --- /dev/null +++ b/kommander/widgets/richtexteditor.cpp @@ -0,0 +1,249 @@ +/*************************************************************************** + richtexteditor.cpp - Widget providing simple rich text editing + ------------------- + copyright : (C) 2002 by Marc Britton + 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. * + * * + ***************************************************************************/ +/* KDE INCLUDES */ +#include <klocale.h> + +/* QT INCLUDES */ +#include <qlayout.h> +#include <qevent.h> +#include <qtextedit.h> +#include <qframe.h> +#include <qwidget.h> +#include <qlayout.h> +#include <qtoolbutton.h> +#include <qpixmap.h> +#include <qhbuttongroup.h> +#include <qfont.h> +#include <qstringlist.h> +#include <qevent.h> + +/* OTHER INCLUDES */ +#include <specials.h> +#include "richtexteditor.h" + +/* Pixmaps */ +#include "pixmaps/textbold.xpm" +#include "pixmaps/textunder.xpm" +#include "pixmaps/textitalic.xpm" +#include "pixmaps/textcenter.xpm" +#include "pixmaps/textleft.xpm" +#include "pixmaps/textright.xpm" + +RichTextEditor::RichTextEditor(QWidget *a_parent, const char *a_name) + : QWidget(a_parent, a_name), KommanderWidget((QObject *)this) +{ + + QStringList states; + states << "default"; + setStates(states); + setDisplayStates(states); + + // setup toolbar + m_toolbar = new QFrame(this, "buttonBar"); + m_toolbar->setMinimumSize(0, 32); + m_toolbar->setFrameShape(QFrame::NoFrame); + m_toolbar->setFrameShadow(QFrame::Plain); + + //setup textedit + m_textedit = new QTextEdit(this, "editor"); + m_textedit->setTextFormat(RichText); + + // layout the widgets + QVBoxLayout *layout = new QVBoxLayout(this); + layout->addWidget(m_toolbar); + layout->addWidget(m_textedit); + layout->setSpacing(1); + + // setup buttons + QHBoxLayout *tbLayout = new QHBoxLayout(m_toolbar); + + //bold italic underline left right center link + m_formatGroup = new QHButtonGroup(m_toolbar, "formatGroup"); + //m_formatGroup->setFlat(true); + m_alignGroup = new QHButtonGroup(m_toolbar, "alignGroup"); + //m_alignGroup->setFlat(true); + m_alignGroup->setExclusive(true); + tbLayout->insertStretch(0); + tbLayout->addWidget(m_formatGroup); + tbLayout->addWidget(m_alignGroup); + tbLayout->insertStretch(3); + + m_buttonTextBold = new QToolButton(m_formatGroup, "textBold"); + m_buttonTextBold->setPixmap(QPixmap((const char **)bold_xpm)); + m_buttonTextBold->setToggleButton(true); + connect(m_buttonTextBold, SIGNAL(toggled(bool)), this, SLOT(textBold(bool))); + m_buttonTextItalic = new QToolButton(m_formatGroup, "textItalic"); + m_buttonTextItalic->setPixmap(QPixmap((const char **)italic_xpm)); + m_buttonTextItalic->setToggleButton(true); + connect(m_buttonTextItalic, SIGNAL(toggled(bool)), this, SLOT(textItalic(bool))); + m_buttonTextUnder = new QToolButton(m_formatGroup, "textUnder"); + m_buttonTextUnder->setPixmap(QPixmap((const char **)under_xpm)); + m_buttonTextUnder->setToggleButton(true); + connect(m_buttonTextUnder, SIGNAL(toggled(bool)), this, SLOT(textUnder(bool))); + + m_buttonTextLeft = new QToolButton(m_alignGroup, "textLeft"); + m_buttonTextLeft->setPixmap(QPixmap((const char **)left_xpm)); + m_buttonTextLeft->setToggleButton(true); + m_buttonTextCenter = new QToolButton(m_alignGroup, "textCenter"); + m_buttonTextCenter->setPixmap(QPixmap((const char **)center_xpm)); + m_buttonTextCenter->setToggleButton(true); + m_buttonTextRight = new QToolButton(m_alignGroup, "textRight"); + m_buttonTextRight->setPixmap(QPixmap((const char **)right_xpm)); + m_buttonTextRight->setToggleButton(true); + + connect(m_alignGroup, SIGNAL(clicked(int)), this, SLOT(textAlign(int))); + connect(m_textedit, SIGNAL(currentFontChanged(const QFont &)), this, SLOT(fontChanged(const QFont &))); + connect(m_textedit, SIGNAL(currentAlignmentChanged(int)), this, SLOT(alignmentChanged(int))); + + connect(m_textedit, SIGNAL(textChanged()), this, SLOT(setTextChanged())); + +} + +QString RichTextEditor::currentState() const +{ + return QString("default"); +} + +RichTextEditor::~RichTextEditor() +{ +} + +bool RichTextEditor::isKommanderWidget() const +{ + return true; +} + +QStringList RichTextEditor::associatedText() const +{ + return KommanderWidget::associatedText(); +} + +void RichTextEditor::setAssociatedText(const QStringList& a_at) +{ + KommanderWidget::setAssociatedText(a_at); +} + +void RichTextEditor::setPopulationText(const QString& a_text) +{ + KommanderWidget::setPopulationText( a_text ); +} + +QString RichTextEditor::populationText() const +{ + return KommanderWidget::populationText(); +} + +void RichTextEditor::populate() +{ + QString txt = KommanderWidget::evalAssociatedText( populationText() ); + setWidgetText( txt ); +} + +void RichTextEditor::setWidgetText(const QString &a_text) +{ + m_textedit->setText(a_text); + emit widgetTextChanged(a_text); +} + +void RichTextEditor::setTextChanged() +{ + emit widgetTextChanged(m_textedit->text()); +} + +void RichTextEditor::textBold(bool a_isOn) +{ + m_textedit->setBold(a_isOn); +} + +void RichTextEditor::textUnder(bool a_isOn) +{ + m_textedit->setUnderline(a_isOn); +} + +void RichTextEditor::textItalic(bool a_isOn) +{ + m_textedit->setItalic(a_isOn); +} + +void RichTextEditor::textAlign(int a_id) +{ + QToolButton *b = (QToolButton *)m_alignGroup->find(a_id); + if(b == m_buttonTextLeft) + m_textedit->setAlignment(Qt::AlignLeft); + else if(b == m_buttonTextCenter) + m_textedit->setAlignment(Qt::AlignCenter); + else if(b == m_buttonTextRight) + m_textedit->setAlignment(Qt::AlignRight); +} + +void RichTextEditor::fontChanged(const QFont &a_font) +{ + m_buttonTextBold->setOn(a_font.bold()); + m_buttonTextItalic->setOn(a_font.italic()); + m_buttonTextUnder->setOn(a_font.underline()); +} + +void RichTextEditor::alignmentChanged(int a_alignment) +{ + if((a_alignment == AlignAuto) || (a_alignment & AlignLeft)) + m_buttonTextLeft->setOn(true); + else if(a_alignment & AlignHCenter) + m_buttonTextCenter->setOn(true); + else if(a_alignment & AlignRight) + m_buttonTextRight->setOn(true); +} + +void RichTextEditor::showEvent( QShowEvent *e ) +{ + QWidget::showEvent(e); + emit widgetOpened(); +} + +void RichTextEditor::contextMenuEvent( QContextMenuEvent * e ) +{ + e->accept(); + QPoint p = e->globalPos(); + emit contextMenuRequested(p.x(), p.y()); +} + +bool RichTextEditor::isFunctionSupported(int f) +{ + return f == DCOP::text || f == DCOP::setText || f == DCOP::clear || f == DCOP::selection || f == DCOP::setEditable; +} + +QString RichTextEditor::handleDCOP(int function, const QStringList& args) +{ + switch (function) { + case DCOP::text: + return m_textedit->text(); + case DCOP::setText: + setWidgetText(args[0]); + break; + case DCOP::selection: + return m_textedit->selectedText(); + case DCOP::clear: + setWidgetText(""); + break; + case DCOP::setEditable: + m_textedit->setReadOnly(args[0] == "false" || args[0] == "0"); + break; + default: + return KommanderWidget::handleDCOP(function, args); + } + return QString(); +} + +#include "richtexteditor.moc" |