00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
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"