kivio

stenciltexteditor.cpp

00001 /*
00002  * Kivio - Visual Modelling and Flowcharting
00003  * Copyright (C) 2005 Peter Simonsson <psn@linux.se>
00004  *
00005  * This program is free software; you can redistribute it and/or
00006  * modify it under the terms of the GNU General Public License
00007  * as published by the Free Software Foundation; either version 2
00008  * of the License, or (at your option) any later version.
00009  *
00010  * This program is distributed in the hope that it will be useful,
00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00013  * GNU General Public License for more details.
00014  *
00015  * You should have received a copy of the GNU General Public License
00016  * along with this program; if not, write to the Free Software
00017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
00018  */
00019 #include "stenciltexteditor.h"
00020 
00021 #include <qtoolbutton.h>
00022 #include <qfont.h>
00023 #include <qcolor.h>
00024 #include <qpopupmenu.h>
00025 
00026 #include <kiconloader.h>
00027 #include <ktextedit.h>
00028 #include <kfontcombo.h>
00029 #include <kcolorbutton.h>
00030 #include <kdebug.h>
00031 #include <klocale.h>
00032 #include <karrowbutton.h>
00033 
00034 #include "kivio_stenciltexteditorui.h"
00035 
00036 namespace Kivio {
00037 
00038 StencilTextEditor::StencilTextEditor(const QString& caption, QWidget *parent, const char *name)
00039   : KDialogBase(parent, name, true, caption, KDialogBase::Ok|KDialogBase::Cancel)
00040 {
00041   m_hAlign = -1;
00042   m_vAlign = -1;
00043   m_mainWidget = new StencilTextEditorUI(this);
00044   setMainWidget(m_mainWidget);
00045 
00046   m_mainWidget->m_boldButton->setIconSet(SmallIconSet("text_bold", 16));
00047   m_mainWidget->m_italicsButton->setIconSet(SmallIconSet("text_italic", 16));
00048   m_mainWidget->m_underLineButton->setIconSet(SmallIconSet("text_under", 16));
00049 
00050   QPopupMenu* menu = new QPopupMenu(m_mainWidget->m_hAlignButton, "hAlignMenu");
00051   menu->setCheckable(true);
00052   menu->insertItem(SmallIconSet("text_left", 16), i18n("Align Left"), Qt::AlignLeft);
00053   menu->insertItem(SmallIconSet("text_center", 16), i18n("Align Center"), Qt::AlignHCenter);
00054   menu->insertItem(SmallIconSet("text_right", 16), i18n("Align Right"), Qt::AlignRight);
00055   m_mainWidget->m_hAlignButton->setPopup(menu);
00056   connect(menu, SIGNAL(activated(int)), this, SLOT(setHorizontalAlign(int)));
00057   connect(m_mainWidget->m_hAlignButton, SIGNAL(clicked()), this, SLOT(showHAlignPopup()));
00058 
00059   menu = new QPopupMenu(m_mainWidget->m_vAlignButton, "hAlignMenu");
00060   menu->setCheckable(true);
00061   menu->insertItem(SmallIconSet("align_top", 16), i18n("Align Top"), Qt::AlignTop);
00062   menu->insertItem(SmallIconSet("align_vcenter", 16), i18n("Align Vertical Center"), Qt::AlignVCenter);
00063   menu->insertItem(SmallIconSet("align_bottom", 16), i18n("Align Bottom"), Qt::AlignBottom);
00064   m_mainWidget->m_vAlignButton->setPopup(menu);
00065   connect(menu, SIGNAL(activated(int)), this, SLOT(setVerticalAlign(int)));
00066   connect(m_mainWidget->m_vAlignButton, SIGNAL(clicked()), this, SLOT(showVAlignPopup()));
00067 
00068   connect(m_mainWidget->m_fontCombo, SIGNAL(activated(int)), this, SLOT(updateFormating()));
00069   connect(m_mainWidget->m_fontSizeCombo, SIGNAL(activated(int)), this, SLOT(updateFormating()));
00070   connect(m_mainWidget->m_boldButton, SIGNAL(clicked()), this, SLOT(updateFormating()));
00071   connect(m_mainWidget->m_italicsButton, SIGNAL(clicked()), this, SLOT(updateFormating()));
00072   connect(m_mainWidget->m_underLineButton, SIGNAL(clicked()), this, SLOT(updateFormating()));
00073   connect(m_mainWidget->m_textColorButton, SIGNAL(clicked()), this, SLOT(updateFormating()));
00074 
00075   m_mainWidget->m_textArea->setFocus();
00076 }
00077 
00078 StencilTextEditor::~StencilTextEditor()
00079 {
00080 }
00081 
00082 void StencilTextEditor::setFont(const QFont& font)
00083 {
00084   m_mainWidget->m_textArea->setFont(font);
00085   m_mainWidget->m_fontCombo->setCurrentFont(font.family());
00086   m_mainWidget->m_fontSizeCombo->setCurrentText(QString::number(font.pointSize()));
00087   m_mainWidget->m_boldButton->setOn(font.bold());
00088   m_mainWidget->m_italicsButton->setOn(font.italic());
00089   m_mainWidget->m_underLineButton->setOn(font.underline());
00090 }
00091 
00092 void StencilTextEditor::setFontColor(const QColor& color)
00093 {
00094   m_mainWidget->m_textArea->setPaletteForegroundColor(color);
00095   m_mainWidget->m_textColorButton->setColor(color);
00096 }
00097 
00098 void StencilTextEditor::setBackgroundColor(const QColor& color)
00099 {
00100   m_mainWidget->m_textArea->setPaletteBackgroundColor(color);
00101 }
00102 
00103 void StencilTextEditor::setHorizontalAlign(int flag)
00104 {
00105   if(m_hAlign >= 0) {
00106     m_mainWidget->m_hAlignButton->popup()->setItemChecked(m_hAlign, false);
00107   }
00108 
00109   m_mainWidget->m_hAlignButton->popup()->setItemChecked(flag, true);
00110   m_mainWidget->m_hAlignButton->setIconSet(*(m_mainWidget->m_hAlignButton->popup()->iconSet(flag)));
00111   m_mainWidget->m_textArea->setAlignment(flag|verticalAlignment());
00112   m_hAlign = flag;
00113 }
00114 
00115 void StencilTextEditor::setVerticalAlign(int flag)
00116 {
00117   if(m_vAlign >= 0) {
00118     m_mainWidget->m_vAlignButton->popup()->setItemChecked(m_vAlign, false);
00119   }
00120 
00121   m_mainWidget->m_vAlignButton->popup()->setItemChecked(flag, true);
00122   m_mainWidget->m_vAlignButton->setIconSet(*(m_mainWidget->m_vAlignButton->popup()->iconSet(flag)));
00123   m_mainWidget->m_textArea->setAlignment(flag|horizontalAlignment());
00124   m_vAlign = flag;
00125 }
00126 
00127 QFont StencilTextEditor::font() const
00128 {
00129   QFont font;
00130   font.setFamily(m_mainWidget->m_fontCombo->currentFont());
00131   font.setPointSize(m_mainWidget->m_fontSizeCombo->currentText().toInt());
00132   font.setBold(m_mainWidget->m_boldButton->isOn());
00133   font.setItalic(m_mainWidget->m_italicsButton->isOn());
00134   font.setUnderline(m_mainWidget->m_underLineButton->isOn());
00135 
00136   return font;
00137 }
00138 
00139 QColor StencilTextEditor::fontColor() const
00140 {
00141   return m_mainWidget->m_textColorButton->color();
00142 }
00143 
00144 Qt::AlignmentFlags StencilTextEditor::horizontalAlignment() const
00145 {
00146   return static_cast<Qt::AlignmentFlags>(m_hAlign);
00147 }
00148 
00149 Qt::AlignmentFlags StencilTextEditor::verticalAlignment() const
00150 {
00151   return static_cast<Qt::AlignmentFlags>(m_vAlign);
00152 }
00153 
00154 void StencilTextEditor::setText(const QString& text)
00155 {
00156   m_mainWidget->m_textArea->setText(text);
00157 }
00158 
00159 QString StencilTextEditor::text() const
00160 {
00161   return m_mainWidget->m_textArea->text();
00162 }
00163 
00164 void StencilTextEditor::updateFormating()
00165 {
00166   m_mainWidget->m_textArea->setFont(font());
00167 
00168   m_mainWidget->m_textArea->setPaletteForegroundColor(fontColor());
00169 
00170 
00171   m_mainWidget->m_textArea->selectAll(true);
00172   m_mainWidget->m_textArea->setAlignment(horizontalAlignment()|verticalAlignment());
00173   m_mainWidget->m_textArea->selectAll(false);
00174 
00175   m_mainWidget->m_textArea->setFocus();
00176 }
00177 
00178 void StencilTextEditor::showHAlignPopup()
00179 {
00180   m_mainWidget->m_hAlignButton->openPopup();
00181 }
00182 
00183 void StencilTextEditor::showVAlignPopup()
00184 {
00185   m_mainWidget->m_vAlignButton->openPopup();
00186 }
00187 
00188 }
00189 
00190 #include "stenciltexteditor.moc"
KDE Home | KDE Accessibility Home | Description of Access Keys