kivio

stenciltexteditor.cpp
1/*
2 * Kivio - Visual Modelling and Flowcharting
3 * Copyright (C) 2005 Peter Simonsson <psn@linux.se>
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU General Public License
7 * as published by the Free Software Foundation; either version 2
8 * of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19#include "stenciltexteditor.h"
20
21#include <tqtoolbutton.h>
22#include <tqfont.h>
23#include <tqcolor.h>
24#include <tqpopupmenu.h>
25
26#include <kiconloader.h>
27#include <ktextedit.h>
28#include <tdefontcombo.h>
29#include <kcolorbutton.h>
30#include <kdebug.h>
31#include <tdelocale.h>
32#include <karrowbutton.h>
33
34#include "kivio_stenciltexteditorui.h"
35
36namespace Kivio {
37
38StencilTextEditor::StencilTextEditor(const TQString& caption, TQWidget *parent, const char *name)
39 : KDialogBase(parent, name, true, caption, KDialogBase::Ok|KDialogBase::Cancel)
40{
41 m_hAlign = -1;
42 m_vAlign = -1;
43 m_mainWidget = new StencilTextEditorUI(this);
44 setMainWidget(m_mainWidget);
45
46 m_mainWidget->m_boldButton->setIconSet(SmallIconSet("format-text-bold", 16));
47 m_mainWidget->m_italicsButton->setIconSet(SmallIconSet("format-text-italic", 16));
48 m_mainWidget->m_underLineButton->setIconSet(SmallIconSet("format-text-underline", 16));
49
50 TQPopupMenu* menu = new TQPopupMenu(m_mainWidget->m_hAlignButton, "hAlignMenu");
51 menu->setCheckable(true);
52 menu->insertItem(SmallIconSet("format-text-direction-ltr", 16), i18n("Align Left"), TQt::AlignLeft);
53 menu->insertItem(SmallIconSet("text_center", 16), i18n("Align Center"), TQt::AlignHCenter);
54 menu->insertItem(SmallIconSet("format-text-direction-rtl", 16), i18n("Align Right"), TQt::AlignRight);
55 m_mainWidget->m_hAlignButton->setPopup(menu);
56 connect(menu, TQ_SIGNAL(activated(int)), this, TQ_SLOT(setHorizontalAlign(int)));
57 connect(m_mainWidget->m_hAlignButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(showHAlignPopup()));
58
59 menu = new TQPopupMenu(m_mainWidget->m_vAlignButton, "hAlignMenu");
60 menu->setCheckable(true);
61 menu->insertItem(SmallIconSet("align_top", 16), i18n("Align Top"), TQt::AlignTop);
62 menu->insertItem(SmallIconSet("align_vcenter", 16), i18n("Align Vertical Center"), TQt::AlignVCenter);
63 menu->insertItem(SmallIconSet("align_bottom", 16), i18n("Align Bottom"), TQt::AlignBottom);
64 m_mainWidget->m_vAlignButton->setPopup(menu);
65 connect(menu, TQ_SIGNAL(activated(int)), this, TQ_SLOT(setVerticalAlign(int)));
66 connect(m_mainWidget->m_vAlignButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(showVAlignPopup()));
67
68 connect(m_mainWidget->m_fontCombo, TQ_SIGNAL(activated(int)), this, TQ_SLOT(updateFormating()));
69 connect(m_mainWidget->m_fontSizeCombo, TQ_SIGNAL(activated(int)), this, TQ_SLOT(updateFormating()));
70 connect(m_mainWidget->m_boldButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(updateFormating()));
71 connect(m_mainWidget->m_italicsButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(updateFormating()));
72 connect(m_mainWidget->m_underLineButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(updateFormating()));
73 connect(m_mainWidget->m_textColorButton, TQ_SIGNAL(clicked()), this, TQ_SLOT(updateFormating()));
74
75 m_mainWidget->m_textArea->setFocus();
76}
77
78StencilTextEditor::~StencilTextEditor()
79{
80}
81
82void StencilTextEditor::setFont(const TQFont& font)
83{
84 m_mainWidget->m_textArea->setFont(font);
85 m_mainWidget->m_fontCombo->setCurrentFont(font.family());
86 m_mainWidget->m_fontSizeCombo->setCurrentText(TQString::number(font.pointSize()));
87 m_mainWidget->m_boldButton->setOn(font.bold());
88 m_mainWidget->m_italicsButton->setOn(font.italic());
89 m_mainWidget->m_underLineButton->setOn(font.underline());
90}
91
92void StencilTextEditor::setFontColor(const TQColor& color)
93{
94 m_mainWidget->m_textArea->setPaletteForegroundColor(color);
95 m_mainWidget->m_textColorButton->setColor(color);
96}
97
98void StencilTextEditor::setBackgroundColor(const TQColor& color)
99{
100 m_mainWidget->m_textArea->setPaletteBackgroundColor(color);
101}
102
103void StencilTextEditor::setHorizontalAlign(int flag)
104{
105 if(m_hAlign >= 0) {
106 m_mainWidget->m_hAlignButton->popup()->setItemChecked(m_hAlign, false);
107 }
108
109 m_mainWidget->m_hAlignButton->popup()->setItemChecked(flag, true);
110 m_mainWidget->m_hAlignButton->setIconSet(*(m_mainWidget->m_hAlignButton->popup()->iconSet(flag)));
111 m_mainWidget->m_textArea->setAlignment(flag|verticalAlignment());
112 m_hAlign = flag;
113}
114
115void StencilTextEditor::setVerticalAlign(int flag)
116{
117 if(m_vAlign >= 0) {
118 m_mainWidget->m_vAlignButton->popup()->setItemChecked(m_vAlign, false);
119 }
120
121 m_mainWidget->m_vAlignButton->popup()->setItemChecked(flag, true);
122 m_mainWidget->m_vAlignButton->setIconSet(*(m_mainWidget->m_vAlignButton->popup()->iconSet(flag)));
123 m_mainWidget->m_textArea->setAlignment(flag|horizontalAlignment());
124 m_vAlign = flag;
125}
126
127TQFont StencilTextEditor::font() const
128{
129 TQFont font;
130 font.setFamily(m_mainWidget->m_fontCombo->currentFont());
131 font.setPointSize(m_mainWidget->m_fontSizeCombo->currentText().toInt());
132 font.setBold(m_mainWidget->m_boldButton->isOn());
133 font.setItalic(m_mainWidget->m_italicsButton->isOn());
134 font.setUnderline(m_mainWidget->m_underLineButton->isOn());
135
136 return font;
137}
138
139TQColor StencilTextEditor::fontColor() const
140{
141 return m_mainWidget->m_textColorButton->color();
142}
143
144TQt::AlignmentFlags StencilTextEditor::horizontalAlignment() const
145{
146 return static_cast<TQt::AlignmentFlags>(m_hAlign);
147}
148
149TQt::AlignmentFlags StencilTextEditor::verticalAlignment() const
150{
151 return static_cast<TQt::AlignmentFlags>(m_vAlign);
152}
153
154void StencilTextEditor::setText(const TQString& text)
155{
156 m_mainWidget->m_textArea->setText(text);
157}
158
159TQString StencilTextEditor::text() const
160{
161 return m_mainWidget->m_textArea->text();
162}
163
164void StencilTextEditor::updateFormating()
165{
166 m_mainWidget->m_textArea->setFont(font());
167
168 m_mainWidget->m_textArea->setPaletteForegroundColor(fontColor());
169
170
171 m_mainWidget->m_textArea->selectAll(true);
172 m_mainWidget->m_textArea->setAlignment(horizontalAlignment()|verticalAlignment());
173 m_mainWidget->m_textArea->selectAll(false);
174
175 m_mainWidget->m_textArea->setFocus();
176}
177
178void StencilTextEditor::showHAlignPopup()
179{
180 m_mainWidget->m_hAlignButton->openPopup();
181}
182
183void StencilTextEditor::showVAlignPopup()
184{
185 m_mainWidget->m_vAlignButton->openPopup();
186}
187
188}
189
190#include "stenciltexteditor.moc"